APKPipe
📦 APKPipe
APKとRSSリリースパイプラインを自動化。Real-Debridのアンリストリクト、ヘッドレスJDownloaderフォールバック、Nextcloudストレージ取り込み、Appriseアラート、Webダッシュボード、ネイティブMCPサーバーを統合。
📖 目次
🌟 概要
Nextcloudやローカルネットワークストレージ上で最新のセルフホスト型Androidアプリライブラリを維持するには、従来は手間のかかる手作業が必要でした。リリースフォーラム(Mobilismなど)の閲覧、バージョン文字列の確認、マルチホスターのミラーリンク(Rapidgator、Uploady、DropGalaxy)の回避、アーカイブの解凍、APKのリネーム、適切なディレクトリへの移動、Nextcloudのファイルインデックスのトリガー、リリース履歴の追跡などです。
APKPipe はこのライフサイクルを完全に自動化します。
RSSフィードを定期的に監視し、新しいアプリのリリースを検出します。
カスタマイズ可能なウォッチリストと照合し、正規表現パターン、リリーサーのホワイトリスト(
[Balatan]、[derrin]、[RockMODS])、SemVerバージョンゲートを使用します。3層戦略(Real-Debrid API $\rightarrow$ JDownloader 2 $\rightarrow$ Playwrightスクレイパー)でダウンロードリンクを解決します。
アーカイブをダウンロードして解凍し(
.zip、.rar、.7z、.tar)、APKバイナリを抽出します。バイナリを整理し、クリーンで標準化されたディレクトリ構造(
{DOWNLOAD_DIR}/{AppName}/{AppName} v{Version} [{Releaser}].apk)に配置します。Nextcloud OCCスキャンコマンド(
occ files:scan)を実行し、ファイルがモバイルNextcloudアプリに即座に表示されるようにします。Appriseを介してDiscord、Telegram、Pushover、Ntfyにリッチなステータスアラートをプッシュします。
ネイティブMCPサーバーツールとWebダッシュボードを公開し、人間による管理と自律的な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フィードソースを定期的にポーリングし、重複を排除します。
🎯 細粒度マッチャー: 名前または正規表現で特定のアプリをターゲットにし、最小バージョンしきい値を要求し、信頼できるリリーサータグでフィルタリングします。
⚡ マルチティアリンクアンリストリクト:
ティア1 (Real-Debrid): 50以上のファイルホスター向けの直接高速APIアンリストリクト。
ティア2 (JDownloader 2): ヘッドレスMyJDownloaderクラウドAPIまたはローカルフォルダーリンクグラバー。
ティア3 (Playwrightスクレイパー): 動的ランディングページ向けのヘッドレスブラウザスクレイパーフォールバック。
📦 自動アーカイブ抽出:
.zip、.rar、.7z、.tar.gzアーカイブを透過的に処理し、ネストされた.apkバイナリを抽出します。📂 Nextcloud OCC統合: Nextcloudユーザーディレクトリへのシームレスな配置と、自動
occ files:scan呼び出し。🔔 マルチチャネルホームラボ通知: Apprise APIとNtfyを介したプッシュ通知。リリースメタデータ、ファイルサイズ、ダウンロード時間を含みます。
🤖 ネイティブModel Context Protocol (MCP): Claude Desktop、Cursor、
mcp-routerと互換性のある8つの組み込みツール。💻 レスポンシブWebダッシュボード: 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(Caddy経由でルーティングする場合はhttps://apk.wileyriley.com)を開きます。
環境変数
変数 | デフォルト | 説明 |
|
| 非同期SQLAlchemy SQLiteデータベース接続文字列 |
|
| 整理されたAPKライブラリのベースターゲットパス |
|
| アクティブなストリームと抽出用の一時スクラッチフォルダー |
|
| フィードポーラーの頻度(秒)(デフォルト: 15分) |
|
| Real-Debrid APIトークン(real-debrid.com/apitokenから) |
|
| MyJDownloaderアカウントメール(オプションのティア2) |
|
| MyJDownloaderアカウントパスワード |
|
| MyJDownloaderターゲットデバイス名 |
|
| ヘッドレスJDownloader |
|
| PlaywrightヘッドレススクレイパーサービスのURL |
|
| NextcloudサーバーのベースURL |
|
| Nextcloud WebDAV / API認証トークン |
|
| OCCスキャンコマンドテンプレート( |
|
| Apprise API通知エンドポイント |
|
| プッシュ通知用のNtfyトピック識別子 |
⚡ ダウンロードエンジンとリゾルバー
ティア1: Real-Debrid API
APKPipeはReal-DebridのREST API /unrestrict/linkとネイティブに認証します。フォーラム投稿にミラー(Rapidgator、Uploady、DropGalaxy、Mega、Katfileなど)が含まれている場合、Real-Debridはリンクを高速な直接CDN URLにアンリストリクトします。
Real-Debridの設定方法:
real-debrid.com/apitokenでAPIトークンを生成します。
環境変数またはWeb UIの設定タブで
APKPIPE_REAL_DEBRID_API_TOKEN=your_tokenを設定します。
ティア2: ヘッドレスJDownloader 2
Real-Debridがサポートしていないホスターや、特殊なデクリプターが必要な場合、APKPipeはヘッドレスJDownloader 2インスタンスに接続します:
MyJDownloaderクラウドAPI: 接続されたデバイスにダウンロードパッケージを直接送信します。
リンクグラバー監視ディレクトリ: 共有フォルダーに
.crawljob命令をドロップします。
ティア3: Playwrightスクレイパークライアント
ダウンロードランディングページがJavaScriptリダイレクトやクラウド保護で保護されている場合、APKPipeはページ評価タスクをplaywright-csharp-scraper(http://scraper:8080)にディスパッチし、DOMを評価して最終的な直接ダウンロードミラーを抽出します。
🔗 ホームラボ統合
NextcloudストレージとOCC自動スキャン
APKPipeはファイルをNextcloudストレージディレクトリにフォーマットして配置します:
/downloads/
├── Spotify/
│ └── Spotify v8.9.18.534 [Balatan].apk
└── Nova Launcher/
└── Nova Launcher v8.0.18 [Prime].apkNextcloudのバックグラウンドジョブを待たずに、新しくダウンロードされたファイルを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 / ホスト実行: APKPipeがホスト上で直接実行される場合の直接コマンド呼び出し。
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 UIはhttp://localhost:8429/docsで利用できます。
ウォッチリストエンドポイント
GET /api/watchlist- オプションの検索/フィルタリング付きで全ウォッチリスト項目を一覧表示。POST /api/watchlist- ウォッチリストに新しいアプリを追加。GET /api/watchlist/{id}- 特定のウォッチリストエントリを取得。PUT /api/watchlist/{id}- ウォッチリスト項目を更新。DELETE /api/watchlist/{id}- ウォッチリストエントリを削除。
フィードソースエンドポイント
APIエンドポイント
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- ダイレクト/ミラーURLからの即時ダウンロードをトリガーします。POST /api/downloads/{task_id}/retry- 失敗したダウンロードタスクを再試行します。
システムとヘルスのエンドポイント
GET /health- システムのヘルスチェックプローブ。GET /api/settings- 現在のアプリケーション設定を取得します。POST /api/settings- ランタイム設定を更新します。
🖥️ WebダッシュボードUI
APKPipeには、ポート8429でアクセス可能な組み込みのWeb UIが含まれています:
ダッシュボード(
/):概要メトリクス、アクティブなポーリングステータス、最近のダウンロード、システムストレージ。ウォッチリスト(
/watchlist):監視対象アプリケーションの追加、編集、フィルタリング、削除。フィードソース(
/feeds):RSS URL、ポーリング頻度の管理、手動同期のトリガー。履歴(
/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