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
🌟 Ü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 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