Sign inSign up

hoya0803/ipaes

By hoya0803

Updated 7 days ago

iOS IPA 自托管私有源 | Esign/AltStore 兼容 | 单容器部署 | TG 自动下载

Image
0

3.3K

hoya0803/ipaes repository overview

IPAes

GitHub Docker Pulls Docker Image Size

iOS IPA 自托管私有源 | Esign/AltStore 兼容 | 单容器部署 | TG 自动下载

把家里 NAS 变成 iOS 私有签名源,配合 Esign / AltStore 订阅安装 IPA。一个容器、一份 compose、零依赖。


✨ 特性

  • 🎯 单镜像单容器 — 集成 nginx + 文件监听 + TG下载,不再维护三套
  • 📦 AltStore/Esign 兼容 — 自动生成标准 repo.json
  • 🤖 Telegram 自动下载 — 监听指定群,按白名单关键词自动下载 IPA
  • 🔔 实时刷新 — inotify 监听 IPA 目录,5 秒内自动入源
  • 🖼️ 自动提取图标 — 从 IPA 解析 Info.plist 取最大尺寸 AppIcon
  • 📊 同 App 智能去重 — 多版本仅保留最新版(按版本号比较)
  • 🌐 代理支持 — 内置 socks5 代理,墙内 NAS 也能扫 TG
  • 内置 cron — 定时扫描时间通过环境变量配置
  • 🔑 可热更换鉴权码 — WebUI 一键随机生成订阅地址末段,nginx 自动 reload
  • 📝 破解点说明 — 自动从 TG 消息提取破解要点写入订阅源,WebUI 可手动覆写

🚀 一分钟部署

mkdir -p ipaes && cd ipaes
curl -O https://raw.githubusercontent.com/chinahhy/ipaes/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/chinahhy/ipaes/main/.env.example
cp .env.example .env
# 编辑 .env,至少设置 REPO_BASE_URL
docker compose up -d

📋 完整 docker-compose.yml

services:
  ipaes:
    image: hoya0803/ipaes:${IPAES_TAG:-latest}
    container_name: ipaes
    restart: unless-stopped
    ports:
      - "${HOST_PORT_NGINX:-8080}:80"
      - "${HOST_PORT_WEBUI:-8085}:8085"
    volumes:
      - "${IPA_DIR:-./data/ipa}:/data/ipa"
      - "${ICONS_DIR:-./data/icons}:/data/icons"
      - ./config:/config
      - ./session:/session
      - ./logs:/logs
      - ./data:/data
    environment:
      - REPO_BASE_URL=${REPO_BASE_URL}
      - REPO_NAME=${REPO_NAME:-Private IPA Repo}
      - REPO_IDENTIFIER=${REPO_IDENTIFIER:-com.private.ipa.repo}
      - TG_PROXY=${TG_PROXY:-}
      - "TG_SCAN_CRON=${TG_SCAN_CRON:-0 1 * * *}"
      - TG_SCAN_HOURS=${TG_SCAN_HOURS:-25}
      - TG_DOWNLOAD_TIMEOUT=${TG_DOWNLOAD_TIMEOUT:-3600}
      - TG_MAX_CONCURRENT=${TG_MAX_CONCURRENT:-1}
      - TZ=${TZ:-Asia/Shanghai}

⚙️ 环境变量

变量说明默认值
REPO_BASE_URL源的公网 URL- (必填)
REPO_NAME源名称(Esign 显示)Private IPA Repo
REPO_IDENTIFIER源 BundleIdcom.private.ipa.repo
TG_PROXYTG 代理(socks5://host:port)空(直连)
TG_SCAN_CRONTG 扫描 cron 表达式0 1 * * *
TG_SCAN_HOURS回溯小时数25
TG_DOWNLOAD_TIMEOUT单个 IPA 下载超时秒数3600
TG_MAX_CONCURRENT同时下载数1
TZ容器时区Asia/Shanghai
IPAES_TAG镜像标签,可固定稳定版latest
HOST_PORT_NGINX订阅源宿主端口8080
HOST_PORT_WEBUIWebUI 宿主端口8085
IPA_DIRIPA 宿主目录./data/ipa
ICONS_DIR图标宿主目录./data/icons

📁 配置文件

容器首次启动会自动生成 ./config/config.json 模板,编辑填入:

{
  "api_id": 12345678,
  "api_hash": "your_api_hash",
  "phone": "+8613800138000",
  "groups": ["https://t.me/your_group"],
  "priority_groups": ["https://t.me/priority_group"],
  "whitelist": [
    {"name": "App名", "keywords": ["关键词1", "关键词2"]}
  ],
  "rate_limit": {
    "min_interval_sec": 30,
    "max_interval_sec": 120,
    "max_per_day": 50
  }
}

🔐 Telegram 首次登录

docker exec -it ipaes /app/tg-login.sh

按提示输入验证码完成登录,session 持久化到 ./session/

🛠️ 常用命令

# 拉取最新镜像并重启
docker compose pull && docker compose up -d

# 手动触发 TG 扫描(不等 cron)
docker exec ipaes /app/run-tg-scan.sh

# 手动重建 repo.json
docker exec ipaes /app/scanner.py

# 查看实时日志
docker logs -f ipaes
tail -f logs/scanner.log
tail -f logs/tg-cron.log

🏗️ 架构

公网用户/iPhone Esign 订阅
       ↓ HTTPS
   [反向代理 nginx/Lucky/Traefik]
       ↓ HTTP :8080
┌──────────────────────────────┐
│ 容器 ipaes           │
│ ├─ nginx (对外服务)          │
│ ├─ scanner-watcher (inotify) │
│ └─ cron (TG 定时扫描)        │
└──────────────────────────────┘

🏷️ 镜像 Tags

Tag说明
latest主分支最新构建(推荐)
main同 latest
sha-xxxxxxx特定 commit 的镜像
vX.Y.Z语义化版本(如有发布)

支持架构:linux/amd64linux/arm64

📜 License

MIT

🔗 链接

Tag summary

Content type

Image

Digest

sha256:bd2bb78d8

Size

62.4 MB

Last updated

7 days ago

docker pull hoya0803/ipaes