APKPipe
📦 APKPipe
Automatisierte APK- & RSS-Release-Pipeline mit Real-Debrid-Entsperrung, Headless-JDownloader-Fallback, Nextcloud-Speicher-Integration, Apprise-Benachrichtigungen, Web-Dashboard und nativem MCP-Server.
📖 Inhaltsverzeichnis
Related MCP server: project-hub-mcp
🌟 Überblick
Die Pflege einer aktuellen, selbst gehosteten Android-Anwendungsbibliothek auf Nextcloud oder lokalem Netzwerkspeicher erfordert traditionell mühsame Handarbeit: das Durchsuchen von Release-Foren (wie Mobilism), das Prüfen von Versionszeichenfolgen, das Umgehen von Multi-Hoster-Mirror-Links (Rapidgator, Uploady, DropGalaxy), das Entpacken von Archiven, das Umbenennen von APKs, das Verschieben von Dateien in die richtigen Verzeichnisse, das Auslösen der Nextcloud-Dateiindizierung und das Verfolgen der Release-Historie.
APKPipe automatisiert diesen Lebenszyklus vollständig von Anfang bis Ende:
Überwacht RSS-Feeds regelmäßig auf neue Anwendungs-Releases.
Gleicht Releases mit einer anpassbaren Watchlist ab mit Regex-Mustern, Releaser-Whitelists (
[Balatan],[derrin],[RockMODS]) und SemVer-Versionsprüfung.Löst Download-Links auf über eine 3-stufige Strategie (Real-Debrid-API $\rightarrow$ JDownloader 2 $\rightarrow$ Playwright-Scraper).
Lädt Archive herunter und entpackt sie (
.zip,.rar,.7z,.tar), um APK-Binärdateien zu extrahieren.Organisiert Binärdateien in saubere, standardisierte Verzeichnisstrukturen (
{DOWNLOAD_DIR}/{AppName}/{AppName} v{Version} [{Releaser}].apk).Sendet Nextcloud-OCC-Scan-Befehle (
occ files:scan), sodass Dateien sofort in Ihrer mobilen Nextcloud-App erscheinen.Sendet umfangreiche Status-Benachrichtigungen an Discord, Telegram, Pushover oder Ntfy über Apprise.
Stellt native MCP-Server-Tools und ein Web-Dashboard bereit für menschliche Verwaltung und autonome KI-Agenten-Operationen.
📐 Architektur
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✨ Hauptfunktionen
🔄 Autonome Feed-Erfassung: Periodisches Abrufen mehrerer RSS-/ATOM-Feed-Quellen mit Deduplizierung.
🎯 Fein abgestimmter Matcher: Zielgenaue Auswahl bestimmter Apps nach Name oder Regex, Mindestversions-Schwellenwerte und Filterung nach vertrauenswürdigen Releaser-Tags.
⚡ Mehrstufige Link-Entsperrung:
Stufe 1 (Real-Debrid): Direkte High-Speed-API-Entsperrung für über 50 Filehoster.
Stufe 2 (JDownloader 2): Headless-MyJDownloader-Cloud-API oder lokaler Linkgrabber.
Stufe 3 (Playwright-Scraper): Headless-Browser-Scraper als Fallback für dynamische Landingpages.
📦 Automatische Archiv-Extraktion: Transparente Verarbeitung von
.zip,.rar,.7z- und.tar.gz-Archiven mit Extraktion verschachtelter.apk-Binärdateien.📂 Nextcloud-OCC-Integration: Nahtlose Ablage in Nextcloud-Benutzerverzeichnissen mit automatischem
occ files:scan-Aufruf.🔔 Multi-Kanal-Homelab-Benachrichtigungen: Push-Benachrichtigungen über Apprise-API und Ntfy mit Release-Metadaten, Dateigrößen und Download-Dauer.
🤖 Natives Model Context Protocol (MCP): 8 integrierte Tools, kompatibel mit Claude Desktop, Cursor und
mcp-router.💻 Responsives Web-Dashboard: Sauberes Dark-/Light-Theme mit Alpine.js und Tailwind CSS.
🚀 Schnellstart
Docker-Compose-Bereitstellung
Die empfohlene Methode, APKPipe in Produktion auszuführen, ist Docker Compose.
Erstellen Sie eine
docker-compose.yaml-Datei:
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: trueStarten Sie den Stack:
docker compose up -dÖffnen Sie Ihren Browser unter
http://localhost:8429(oderhttps://apk.wileyriley.com, wenn über Caddy geroutet).
Umgebungsvariablen
Variable | Standard | Beschreibung |
|
| Async-SQLAlchemy-SQLite-Datenbank-Verbindungszeichenfolge |
|
| Basis-Zielpfad für die organisierte APK-Bibliothek |
|
| Temporärer Arbeitsordner für aktive Streams & Extraktion |
|
| Feed-Poller-Frequenz in Sekunden (Standard: 15 Min.) |
|
| Real-Debrid-API-Token (von real-debrid.com/apitoken) |
|
| MyJDownloader-Konto-E-Mail (optional Stufe 2) |
|
| MyJDownloader-Konto-Passwort |
|
| MyJDownloader-Zielgerätename |
|
| Überwachungsverzeichnis für Headless-JDownloader- |
|
| URL für den Playwright-Headless-Scraper-Dienst |
|
| Nextcloud-Server-Basis-URL |
|
| Nextcloud-WebDAV-/API-Authentifizierungstoken |
|
| OCC-Scan-Befehlsvorlage ( |
|
| Apprise-API-Benachrichtigungs-Endpunkt |
|
| Ntfy-Topic-Kennung für Push-Benachrichtigungen |
⚡ Download-Engines & Resolver
Stufe 1: Real-Debrid-API
APKPipe authentifiziert sich nativ mit der Real-Debrid-REST-API /unrestrict/link. Wenn ein Forenbeitrag Mirrors enthält (Rapidgator, Uploady, DropGalaxy, Mega, Katfile usw.), entsperrt Real-Debrid den Link in eine High-Speed-Direkt-CDN-URL.
So konfigurieren Sie Real-Debrid:
Generieren Sie einen API-Token unter real-debrid.com/apitoken.
Setzen Sie
APKPIPE_REAL_DEBRID_API_TOKEN=your_tokenin Ihrer Umgebung oder über den Einstellungen-Tab der Web-Oberfläche.
Stufe 2: Headless JDownloader 2
Für Hoster, die von Real-Debrid nicht unterstützt werden oder spezielle Decrypter erfordern, verbindet sich APKPipe mit Headless-JDownloader-2-Instanzen über:
MyJDownloader-Cloud-API: Übermittelt Download-Pakete direkt an Ihr verbundenes Gerät.
Linkgrabber-Überwachungsverzeichnis: Legt
.crawljob-Anweisungen in einen gemeinsamen Ordner.
Stufe 3: Playwright-Scraper-Client
Wenn Download-Landingpages durch JavaScript-Umleitung oder Cloud-Schutz geschützt sind, sendet APKPipe Seitenauswertungsaufgaben an playwright-csharp-scraper (http://scraper:8080), das das DOM auswertet und die endgültigen direkten Download-Mirrors extrahiert.
🔗 Homelab-Integrationen
Nextcloud-Speicher & OCC-Auto-Scanning
APKPipe formatiert und platziert Dateien in Ihrem Nextcloud-Speicherverzeichnis:
/downloads/
├── Spotify/
│ └── Spotify v8.9.18.534 [Balatan].apk
└── Nova Launcher/
└── Nova Launcher v8.0.18 [Prime].apkUm Nextcloud über neu heruntergeladene Dateien zu informieren, ohne auf Nextcloud-Hintergrundjobs zu warten, führt APKPipe occ files:scan aus:
Docker Exec (empfohlen): Docker-Socket
/var/run/docker.sockübergeben und setzen:APKPIPE_NEXTCLOUD_OCC_COMMAND=docker exec nextcloud-aio-nextcloud sudo -u www-data php /var/www/html/occ files:scan --path="{path}"CLI-/Host-Ausführung: Direkter Befehlsaufruf, wenn APKPipe direkt auf dem Host läuft.
Apprise- & Ntfy-Push-Benachrichtigungen
APKPipe sendet strukturierte Ereignisbenachrichtigungen bei:
🔍
feed_matched: Release gefunden, das einer Watchlist-Regel entspricht.⬇️
download_started: Link wird entsperrt und Streaming-Download gestartet.✅
download_completed: Archiv extrahiert, Datei platziert, OCC-Scan abgeschlossen.❌
download_failed: Fehlerdetails und Fehlerursache.
Unterstützte Benachrichtigungs-Endpunkte:
Apprise-API:
http://apprise:8000/notify/appriseNtfy:
https://ntfy.sh/your-topicoder selbst gehosteter Ntfy-Server.
🤖 Model Context Protocol (MCP)-Server
APKPipe stellt einen nativen MCP-2024-11-05-Server bereit, der KI-Assistenten (Claude Desktop, Cursor, Antigravity mcp-router) ermöglicht, Watchlists zu verwalten, Feeds zu prüfen, Abfragen auszulösen und Releases autonom herunterzuladen.
Verfügbare MCP-Tools
Tool-Name | Beschreibung | Wichtige Parameter |
| Überwachte Apps in der Watchlist auflisten |
|
| Neue Anwendung zur Überwachung hinzufügen |
|
| Watchlist-Eintrag deaktivieren oder löschen |
|
| Gecachte oder Live-RSS-Feeds durchsuchen |
|
| Feed-Abfragezyklus manuell ausführen |
|
| Download-Link manuell übermitteln |
|
| Download-Verlauf und Audit-Logs abrufen |
|
| Health, Datenbankstatistiken, Speichernutzung abfragen | Keine |
KI-Agenten-Konfiguration
Fügen Sie APKPipe zu Ihrer claude_desktop_config.json oder mcp-router hinzu:
{
"mcpServers": {
"apkpipe": {
"command": "python",
"args": ["-m", "apkpipe.mcp.server"],
"env": {
"APKPIPE_DATABASE_URL": "sqlite+aiosqlite:////data/apkpipe.db",
"APKPIPE_DOWNLOAD_DIR": "/downloads"
}
}
}
}Oder verbinden Sie sich über den Streamable-HTTP-/SSE-Endpunkt:
http://localhost:8429/mcp/sse🌐 REST-API-Referenz
Die interaktive OpenAPI-/Swagger-Oberfläche ist unter http://localhost:8429/docs verfügbar.
Watchlist-Endpunkte
GET /api/watchlist- Alle Watchlist-Einträge mit optionaler Suche/Filterung auflisten.POST /api/watchlist- Neue Anwendung zur Watchlist hinzufügen.GET /api/watchlist/{id}- Bestimmten Watchlist-Eintrag abrufen.PUT /api/watchlist/{id}- Watchlist-Eintrag aktualisieren.DELETE /api/watchlist/{id}- Watchlist-Eintrag entfernen.
Feed-Quellen-Endpunkte
GET /api/feeds- Alle konfigurierten RSS-Feed-Quellen auflisten.POST /api/feeds- Eine neue RSS-Feed-Quelle hinzufügen.POST /api/feeds/{id}/poll- Sofortiges Abrufen eines bestimmten Feeds auslösen.POST /api/feeds/poll-all- Abrufen über alle aktiven Feed-Quellen auslösen.
Downloads- und Verlaufs-Endpunkte
GET /api/downloads/queue- Aktive Aufgaben in der Download-Pipeline auflisten.GET /api/downloads/history- Abgeschlossene, fehlgeschlagene und historische Downloads auflisten.POST /api/downloads/manual- Sofortigen Download von direkter/Mirror-URL auslösen.POST /api/downloads/{task_id}/retry- Einen fehlgeschlagenen Download-Auftrag erneut versuchen.
System- und Health-Endpunkte
GET /health- System-Health-Check-Sonde.GET /api/settings- Aktuelle Anwendungseinstellungen abrufen.POST /api/settings- Laufzeitkonfiguration aktualisieren.
🖥️ Web-Dashboard-UI
APKPipe enthält eine integrierte Web-UI, die auf Port 8429 erreichbar ist:
Dashboard (
/): Übersichtsmetriken, aktiver Polling-Status, letzte Downloads und Systemspeicher.Watchlist (
/watchlist): Überwachte Anwendungen hinzufügen, bearbeiten, filtern und entfernen.Feed-Quellen (
/feeds): RSS-URLs verwalten, Polling-Häufigkeiten festlegen und manuelle Synchronisierungen auslösen.Verlauf (
/history): Prüfpfad abgeschlossener Downloads, Ausführungszeiten, Dateigrößen und Fehlerabläufe.Einstellungen (
/settings): Real-Debrid-Tokens, Nextcloud-OCC-Pfade und Benachrichtigungs-Hooks konfigurieren.
🛠️ Entwicklung und Testen
Lokale Einrichtung
# 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 .Testsuite und Abdeckung ausführen
Erzwingen von ≥ 80 % Zeilenabdeckung:
# Run pytest with coverage report
pytest --cov=src/apkpipe --cov-report=term-missing tests/Lokalen Server starten
# Start FastAPI application with live reloading
uvicorn apkpipe.main:app --host 0.0.0.0 --port 8000 --reload📄 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe LICENSE für Details.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Devopness MCP server for DevOps happiness! Empower AI Agents to deploy apps and infra, to any cloud.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Related MCP Servers
- FlicenseBqualityDmaintenanceMCP server integrating Nextcloud services (tasks, calendar, notes, email, files, Deck) for AI assistant interaction.201-
- FlicenseAqualityCmaintenanceMCP server that enables AI assistants to run multi-step agent pipelines (e.g., Issue Analyst → Code Writer → Test Runner → PR Opener) from conversations, with support for Devin, shell, Python, and HTTP agents.7-
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to watch and analyze videos from 1800+ sources, with persistent indexing, OCR, transcription, and a self-verification loop for debugging.MIT
- AlicenseNot gradedqualityBmaintenanceUnified MCP server for media acquisition, subtitle automation, and agent-run media workflows, enabling downloads via Prowlarr/qBittorrent and subtitle translation/sidecar creation.1MIT