APKPipe
📦 APKPipe
Автоматизированный конвейер выпуска APK и RSS, объединяющий разблокировку Real-Debrid, резервный headless JDownloader, приём файлов в Nextcloud, уведомления Apprise, веб-панель и нативный MCP-сервер.
📖 Содержание
🌟 Обзор
Поддержание актуальной, самостоятельно размещённой библиотеки Android-приложений на Nextcloud или локальном сетевом хранилище традиционно требует утомительной ручной работы: просмотр форумов с релизами (например, Mobilism), проверка строк версий, обход зеркальных ссылок мультихостингов (Rapidgator, Uploady, DropGalaxy), распаковка архивов, переименование APK, перемещение файлов в нужные каталоги, запуск индексации файлов Nextcloud и отслеживание истории выпусков.
APKPipe полностью автоматизирует этот жизненный цикл от начала до конца:
Периодически отслеживает RSS-каналы на предмет новых выпусков приложений.
Сопоставляет выпуски с настраиваемым списком отслеживания с помощью regex-шаблонов, белых списков релизеров (
[Balatan],[derrin],[RockMODS]) и проверки версий по SemVer.Разрешает ссылки на загрузку с помощью трёхуровневой стратегии (Real-Debrid API $\rightarrow$ JDownloader 2 $\rightarrow$ Playwright Scraper).
Загружает и распаковывает архивы (
.zip,.rar,.7z,.tar) для извлечения APK-бинарников.Упорядочивает бинарники в чистую, стандартизированную структуру каталогов (
{DOWNLOAD_DIR}/{AppName}/{AppName} v{Version} [{Releaser}].apk).Запускает команды сканирования Nextcloud OCC (
occ files:scan), чтобы файлы немедленно появлялись в вашем мобильном приложении Nextcloud.Отправляет подробные уведомления о статусе в Discord, Telegram, Pushover или Ntfy через Apprise.
Предоставляет нативные инструменты MCP-сервера и веб-панель для управления человеком и автономных операций AI-агентов.
📐 Архитектура
flowchart TD
subgraph Sources["Feeds & Control Interfaces"]
RSS["Mobilism RSS Feeds\n(Apps, Games, Custom)"]
WebUI["FastAPI Web Dashboard\n(Alpine.js + Tailwind)"]
MCP["MCP Server Tools\n(AI Agents / mcp-router)"]
end
subgraph APKPipeCore["APKPipe Core Engine"]
Scheduler["AsyncIO / Periodic Poller"]
Parser["Feed & Post Parser"]
Matcher["Watchlist Matcher\n(Regex, Releaser Filter, SemVer)"]
DB[("SQLite Database\n(Watchlist, Feeds, Tasks, History)")]
Resolver["Tiered Link Resolver"]
Downloader["Stream Downloader & Extractor"]
Organizer["File Organizer & Sanitizer"]
Notifier["Apprise / Ntfy Client"]
end
subgraph Resolvers["Download Engines"]
RD["Real-Debrid API (Tier 1)\n(/unrestrict/link)"]
JD["Headless JDownloader 2 (Tier 2)\n(MyJDownloader API / Watch Dir)"]
Scraper["playwright-csharp-scraper (Tier 3)\n(Captcha / Browser Evaluator)"]
end
subgraph StorageNotify["Homelab Storage & Alerts"]
NextcloudFS["Nextcloud Storage\n(/downloads/{AppName}/...)"]
AppriseAPI["Apprise API (8000) / Ntfy"]
NextcloudOCC["Nextcloud OCC Scan\n(docker exec occ files:scan)"]
end
RSS --> Scheduler
Scheduler --> Parser
Parser --> Matcher
Matcher <--> DB
WebUI <--> DB
MCP <--> DB
Matcher --> Resolver
Resolver -->|RD Supported Link| RD
Resolver -->|RD Unsupported / Direct| JD
Resolver -->|JS / Captcha Protected| Scraper
RD --> Downloader
JD --> Downloader
Scraper --> Downloader
Downloader --> Organizer
Organizer --> NextcloudFS
Organizer --> NextcloudOCC
Organizer --> Notifier
Notifier --> AppriseAPI✨ Ключевые возможности
🔄 Автономный приём каналов: Периодический опрос нескольких источников RSS / ATOM с дедупликацией.
🎯 Точный сопоставитель: Нацеливание на конкретные приложения по имени или regex, требование минимальных порогов версий и фильтрация по доверенным тегам релизеров.
⚡ Многоуровневое разблокирование ссылок:
Уровень 1 (Real-Debrid): Прямое высокоскоростное разблокирование через API для 50+ файлообменников.
Уровень 2 (JDownloader 2): Headless MyJDownloader Cloud API или локальный linkgrabber по каталогу.
Уровень 3 (Playwright Scraper): Резервный headless-браузерный скрапер для динамических целевых страниц.
📦 Автоматическое извлечение архивов: Прозрачная обработка архивов
.zip,.rar,.7zи.tar.gzс извлечением вложенных APK-бинарников.📂 Интеграция с Nextcloud OCC: Бесшовное размещение файлов в пользовательских каталогах Nextcloud с автоматическим вызовом
occ files:scan.🔔 Многоканальные уведомления для Homelab: Push-уведомления через Apprise API и Ntfy с метаданными выпуска, размерами файлов и длительностью загрузки.
🤖 Нативный Model Context Protocol (MCP): 8 встроенных инструментов, совместимых с Claude Desktop, Cursor и
mcp-router.💻 Адаптивная веб-панель: Чистая тёмная/светлая тема на базе Alpine.js и Tailwind CSS.
🚀 Быстрый старт
Развёртывание через Docker Compose
Рекомендуемый способ запуска APKPipe в производственной среде — использование Docker Compose.
Создайте файл
docker-compose.yaml:
services:
apkpipe:
image: ghcr.io/spelech/apkpipe:latest
container_name: apkpipe
restart: unless-stopped
ports:
- "8429:8000"
environment:
- APKPIPE_APP_NAME=APKPipe
- APKPIPE_HOST=0.0.0.0
- APKPIPE_PORT=8000
- APKPIPE_DATABASE_URL=sqlite+aiosqlite:////data/apkpipe.db
- APKPIPE_DOWNLOAD_DIR=/downloads
- APKPIPE_STAGING_DIR=/data/staging
- APKPIPE_POLL_INTERVAL_SECONDS=900
- APKPIPE_REAL_DEBRID_API_TOKEN=your_real_debrid_token_here
- APKPIPE_NEXTCLOUD_URL=http://nextcloud:80
- APKPIPE_NEXTCLOUD_OCC_COMMAND=docker exec nextcloud-aio-nextcloud sudo -u www-data php /var/www/html/occ files:scan --path="{path}"
- APKPIPE_APPRISE_URL=http://apprise:8000/notify/apprise
- APKPIPE_NTFY_TOPIC=apkpipe-alerts
volumes:
- ./data:/data
- /drives/storage/Nextcloud/APKs:/downloads
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- "caddy=apk.wileyriley.com"
- "caddy.reverse_proxy={{upstreams 8000}}"
- "caddy.import=tinyauth"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
networks:
- default
- caddy
networks:
default:
name: apkpipe_net
caddy:
external: trueЗапустите стек:
docker compose up -dОткройте браузер по адресу
http://localhost:8429(илиhttps://apk.wileyriley.com, если маршрутизация через Caddy).
Переменные окружения
Переменная | Значение по умолчанию | Описание |
|
| Строка подключения к асинхронной SQLAlchemy SQLite-базе |
|
| Базовый целевой путь для упорядоченной библиотеки APK |
|
| Временная рабочая папка для активных потоков и извлечения |
|
| Частота опроса каналов в секундах (по умолчанию: 15 минут) |
|
| API-токен Real-Debrid (с real-debrid.com/apitoken) |
|
| Email аккаунта MyJDownloader (необязательно, уровень 2) |
|
| Пароль аккаунта MyJDownloader |
|
| Имя целевого устройства MyJDownloader |
|
| Каталог наблюдения для файлов |
|
| URL сервиса headless-скрапера Playwright |
|
| Базовый URL сервера Nextcloud |
|
| Токен аутентификации Nextcloud WebDAV / API |
|
| Шаблон команды сканирования OCC (подставляется |
|
| Конечная точка уведомлений Apprise API |
|
| Идентификатор темы Ntfy для push-уведомлений |
⚡ Движки загрузки и резолверы
Уровень 1: Real-Debrid API
APKPipe нативно аутентифицируется с REST API Real-Debrid /unrestrict/link. Когда сообщение на форуме содержит зеркала (Rapidgator, Uploady, DropGalaxy, Mega, Katfile и т. д.), Real-Debrid разблокирует ссылку в высокоскоростной прямой URL CDN.
Для настройки Real-Debrid:
Сгенерируйте API-токен на real-debrid.com/apitoken.
Установите
APKPIPE_REAL_DEBRID_API_TOKEN=your_tokenв вашем окружении или через вкладку «Настройки» веб-интерфейса.
Уровень 2: Headless JDownloader 2
Для хостингов, не поддерживаемых Real-Debrid, или требующих специализированных дешифраторов, APKPipe подключается к headless-экземплярам JDownloader 2 через:
MyJDownloader Cloud API: Отправляет пакеты загрузки напрямую на ваше подключённое устройство.
Каталог наблюдения Linkgrabber: Помещает инструкции
.crawljobв общую папку.
Уровень 3: Playwright Scraper Client
Когда целевые страницы загрузки защищены JavaScript-редиректами или облачной защитой, APKPipe отправляет задачи оценки страницы в playwright-csharp-scraper (http://scraper:8080), который оценивает DOM и извлекает финальные прямые зеркала загрузки.
🔗 Интеграции для Homelab
Хранилище Nextcloud и автосканирование OCC
APKPipe форматирует и размещает файлы в вашем каталоге хранилища Nextcloud:
/downloads/
├── Spotify/
│ └── Spotify v8.9.18.534 [Balatan].apk
└── Nova Launcher/
└── Nova Launcher v8.0.18 [Prime].apkЧтобы сообщить Nextcloud о недавно загруженных файлах, не дожидаясь фоновых задач Nextcloud, APKPipe выполняет occ files:scan:
Docker Exec (рекомендуется): Передайте Docker-сокет
/var/run/docker.sockи установите:APKPIPE_NEXTCLOUD_OCC_COMMAND=docker exec nextcloud-aio-nextcloud sudo -u www-data php /var/www/html/occ files:scan --path="{path}"CLI / Host Exec: Прямой вызов команды, если APKPipe запущен непосредственно на хосте.
Push-уведомления Apprise и Ntfy
APKPipe отправляет структурированные уведомления о событиях:
🔍
feed_matched: Обнаружен выпуск, соответствующий правилу списка отслеживания.⬇️
download_started: Разблокирование ссылки и запуск потоковой загрузки.✅
download_completed: Архив извлечён, файл размещён, сканирование OCC завершено.❌
download_failed: Детали ошибки и причина сбоя.
Поддерживаемые конечные точки уведомлений:
Apprise API:
http://apprise:8000/notify/appriseNtfy:
https://ntfy.sh/your-topicили собственный сервер Ntfy.
🤖 Сервер Model Context Protocol (MCP)
APKPipe предоставляет нативный MCP-сервер 2024-11-05, позволяющий AI-ассистентам (Claude Desktop, Cursor, Antigravity mcp-router) автономно управлять списками отслеживания, просматривать каналы, запускать опросы и загружать выпуски.
Доступные MCP-инструменты
Имя инструмента | Описание | Ключевые параметры |
| Список отслеживаемых приложений |
|
| Добавить новое приложение для отслеживания |
|
| Отключить или удалить запись списка |
|
| Поиск по кэшированным или живым RSS-каналам |
|
| Запустить цикл опроса каналов вручную |
|
| Вручную отправить ссылку на загрузку |
|
| Получить историю загрузок и журналы аудита |
|
| Запрос состояния, статистики БД, использования хранилища | Нет |
Настройка AI-агента
Добавьте APKPipe в ваш claude_desktop_config.json или mcp-router:
{
"mcpServers": {
"apkpipe": {
"command": "python",
"args": ["-m", "apkpipe.mcp.server"],
"env": {
"APKPIPE_DATABASE_URL": "sqlite+aiosqlite:////data/apkpipe.db",
"APKPIPE_DOWNLOAD_DIR": "/downloads"
}
}
}
}Или подключитесь через конечную точку Streamable HTTP / SSE:
http://localhost:8429/mcp/sse🌐 Справочник REST API
Интерактивный интерфейс OpenAPI / Swagger доступен по адресу http://localhost:8429/docs.
Конечные точки списка отслеживания
GET /api/watchlist— Список всех элементов списка отслеживания с необязательным поиском/фильтрацией.POST /api/watchlist— Добавить новое приложение в список отслеживания.GET /api/watchlist/{id}— Получить конкретную запись списка отслеживания.PUT /api/watchlist/{id}— Обновить элемент списка отслеживания.DELETE /api/watchlist/{id}— Удалить запись списка отслеживания.
Конечные точки источников каналов
GET /api/feeds— Список всех настроенных источников RSS-лент.POST /api/feeds— Добавить новый источник RSS-ленты.POST /api/feeds/{id}/poll— Запустить немедленный опрос конкретной ленты.POST /api/feeds/poll-all— Запустить опрос всех активных источников лент.
Конечные точки загрузок и истории
GET /api/downloads/queue— Список активных задач в конвейере загрузок.GET /api/downloads/history— Список завершённых, неудачных и исторических загрузок.POST /api/downloads/manual— Запустить немедленную загрузку по прямой/зеркальной ссылке.POST /api/downloads/{task_id}/retry— Повторить неудачную задачу загрузки.
Конечные точки системы и состояния
GET /health— Проверка состояния системы.GET /api/settings— Получить текущие настройки приложения.POST /api/settings— Обновить конфигурацию во время выполнения.
🖥️ Веб-интерфейс панели управления
APKPipe включает встроенный веб-интерфейс, доступный на порту 8429:
Панель управления (
/): Обзор метрик, статус активного опроса, последние загрузки и системное хранилище.Список отслеживания (
/watchlist): Добавление, редактирование, фильтрация и удаление отслеживаемых приложений.Источники лент (
/feeds): Управление RSS-ссылками, частотой опроса и запуск ручной синхронизации.История (
/history): Журнал аудита завершённых загрузок, времени выполнения, размеров файлов и следов ошибок.Настройки (
/settings): Настройка токенов Real-Debrid, путей Nextcloud OCC и хуков уведомлений.
🛠️ Разработка и тестирование
Локальная настройка
# Clone repository
git clone https://github.com/spelech/apkpipe.git
cd apkpipe
# Create and activate Python virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install development dependencies and editable package
pip install -r requirements-dev.txt
pip install -e .Запуск набора тестов и покрытия
Обеспечение покрытия строк ≥ 80%:
# Run pytest with coverage report
pytest --cov=src/apkpipe --cov-report=term-missing tests/Запуск локального сервера
# Start FastAPI application with live reloading
uvicorn apkpipe.main:app --host 0.0.0.0 --port 8000 --reload📄 Лицензия
Этот проект лицензирован под лицензией MIT. Подробности см. в LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for Google Veo AI video generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/spelech/apkpipe'
If you have feedback or need assistance with the MCP directory API, please join our Discord server