前言
对于经常要下载或更新外区 APP 的 iPhone 用户来说,每次都要去设置里面更换 Apple ID 真的是一件很麻烦的事情。AssppWeb 是一个可自托管的 App Store IPA 获取与安装工具,可以部署在自己的 VPS 上,它能实现直接在浏览器里面获取并安装外区的 APP,而不需要更换手机当前的 Apple ID,十分方便。
这篇文章仅做搭建教程,使用方法可以去作者的仓库查看。
环境准备
域名解析
将你准备使用的域名,例如 asspp.example.com 解析到你 VPS 的 IP。
如果你使用 Cloudflare,第一次部署时记得把小黄云关闭。
开放端口
将 VPS 的 80、443 端口或你想要自定义的端口开放。
搭建 AssppWeb
创建 AssppWeb 目录
SSH 登录你的 VPS,然后输入:
mkdir -p /opt/assppweb进入该目录:
cd /opt/assppweb以后 AssppWeb 的所有东西都放这里。你也可以自己换一个目录。
创建访问密码
AssppWeb 官方现在支持使用访问密码来保护 Web UI 和 API,官方明确提供了这个环境变量,建议创建一个以提高安全性。 生成一个随机密码:
openssl rand -hex 24会得到类似:
e8d3b1706eae5b6872e4c7b3c2fca51f9a................把它保存下来。 然后创建:
nano /opt/assppweb/.env写入:
ACCESS_PASSWORD=你刚才生成的密码保存后设置权限:
chmod 600 /opt/assppweb/.env检查权限:
ls -la /opt/assppweb/.env输出类似:
-rw------- 1 root root ...这样访问密码就配置好了。这个密码后续登录网页需要用到,需要保存好。
创建 Docker Compose
在刚才的目录创建:
nano /opt/assppweb/compose.yml在里面写入:
services: asspp: image: ghcr.io/lakr233/assppweb:latest
ports: - "127.0.0.1:18080:8080"
volumes: - ./data:/data
environment: - DATA_DIR=/data - PORT=8080 - ACCESS_PASSWORD=${ACCESS_PASSWORD}
restart: unless-stopped
logging: driver: "json-file" options: max-size: "128m" max-file: "5"这里我将容器 8080 映射到宿主机本地的 18080,不暴露在公网。 如有需要你可以自行配置其他端口。
启动 AssppWeb
拉取镜像:
docker compose pull然后启动:
docker compose up -d查看:
docker compose ps输出应该类似:
NAME IMAGE STATUSassppweb ghcr.io/lakr233/assppweb:latest Up到这里 AssppWeb 已经成功启动。接下来要配置 Nginx。
配置 Nginx
创建 Nginx 配置文件
在你的 Nginx 配置文件目录创建:
nano /etc/nginx/conf.d/assppweb.conf在里面输入:
server { listen 80; server_name asspp.example.com;
location / { proxy_pass http://127.0.0.1:18080;
proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_read_timeout 3600; proxy_send_timeout 3600; }
location /wisp/ { proxy_pass http://127.0.0.1:18080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_read_timeout 3600; proxy_send_timeout 3600; }}记得把里面的域名和端口改为你自己的。 由于 AssppWeb 和 Apple 服务器之间使用 Wisp WebSocket 通信,所以 Nginx 需要正确转发 WebSocket。
启用 Nginx 配置
检查配置:
nginx -t应该显示:
syntax is oktest is successful然后:
systemctl reload nginx这样就成功反代了 AssppWeb。
申请 SSL 证书
AssppWeb 必须有 HTTPS 才能在 iOS 上正常 OTA 安装 IPA。这是因为 itms-services:// 安装流程要求有效 HTTPS。
如何申请 SSL 证书可以看 这篇文章 ,这里就不展开了。
检查最终 Nginx 配置
申请完 SSL 证书需要将证书写入配置文件中,最终配置类似:
server { listen 443 ssl http2; server_name asspp.example.com; ssl_certificate /etc/letsencrypt/live/asspp.mice.cc.cd/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/asspp.mice.cc.cd/privkey.pem;
location / { proxy_pass http://127.0.0.1:18080;
proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_read_timeout 3600; proxy_send_timeout 3600; }
location /wisp/ { proxy_pass http://127.0.0.1:18080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_read_timeout 3600; proxy_send_timeout 3600; }}server { listen 80; server_name asspp.example.com; return 301 https://$host$request_uri;}检查配置文件并重启:
nginx -t && nginx -s reload打开 AssppWeb
到这里 AssppWeb 就完全搭建好了。 打开浏览器访问:
https://asspp.example.com不出意外的话就能看到 AssppWeb 了:
前面我们设置了 ACCESS_PASSWORD,这里输入访问密码就可以正常使用了。
后续更新 AssppWeb
进入目录:
cd /opt/assppweb查看当前运行状态:
docker compose ps拉取新镜像:
docker compose pull重新启动:
docker compose up -d清理不用的旧镜像:
docker image prune这样就更新完成了。