1055 字
5 分钟
AssppWeb 自托管教程

前言#

对于经常要下载或更新外区 APP 的 iPhone 用户来说,每次都要去设置里面更换 Apple ID 真的是一件很麻烦的事情。AssppWeb 是一个可自托管的 App Store IPA 获取与安装工具,可以部署在自己的 VPS 上,它能实现直接在浏览器里面获取并安装外区的 APP,而不需要更换手机当前的 Apple ID,十分方便。

这篇文章仅做搭建教程,使用方法可以去作者的仓库查看。

Lakr233
/
AssppWeb
Waiting for api.github.com...
00K
0K
0K
Waiting...

环境准备#

域名解析#

将你准备使用的域名,例如 asspp.example.com 解析到你 VPS 的 IP。 如果你使用 Cloudflare,第一次部署时记得把小黄云关闭。

开放端口#

将 VPS 的 80、443 端口或你想要自定义的端口开放。

搭建 AssppWeb#

创建 AssppWeb 目录#

SSH 登录你的 VPS,然后输入:

Terminal window
mkdir -p /opt/assppweb

进入该目录:

Terminal window
cd /opt/assppweb

以后 AssppWeb 的所有东西都放这里。你也可以自己换一个目录。

创建访问密码#

AssppWeb 官方现在支持使用访问密码来保护 Web UI 和 API,官方明确提供了这个环境变量,建议创建一个以提高安全性。 生成一个随机密码:

Terminal window
openssl rand -hex 24

会得到类似:

e8d3b1706eae5b6872e4c7b3c2fca51f9a................

把它保存下来。 然后创建:

Terminal window
nano /opt/assppweb/.env

写入:

ACCESS_PASSWORD=你刚才生成的密码

保存后设置权限:

Terminal window
chmod 600 /opt/assppweb/.env

检查权限:

Terminal window
ls -la /opt/assppweb/.env

输出类似:

-rw------- 1 root root ...

这样访问密码就配置好了。这个密码后续登录网页需要用到,需要保存好。

创建 Docker Compose#

在刚才的目录创建:

Terminal window
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#

拉取镜像:

Terminal window
docker compose pull

然后启动:

Terminal window
docker compose up -d

查看:

Terminal window
docker compose ps

输出应该类似:

NAME IMAGE STATUS
assppweb ghcr.io/lakr233/assppweb:latest Up

到这里 AssppWeb 已经成功启动。接下来要配置 Nginx。

配置 Nginx#

创建 Nginx 配置文件#

在你的 Nginx 配置文件目录创建:

Terminal window
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 配置#

检查配置:

Terminal window
nginx -t

应该显示:

syntax is ok
test is successful

然后:

Terminal window
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;
}

检查配置文件并重启:

Terminal window
nginx -t && nginx -s reload

打开 AssppWeb#

到这里 AssppWeb 就完全搭建好了。 打开浏览器访问:

https://asspp.example.com

不出意外的话就能看到 AssppWeb 了: AssppWeb 界面 前面我们设置了 ACCESS_PASSWORD,这里输入访问密码就可以正常使用了。

后续更新 AssppWeb#

进入目录:

Terminal window
cd /opt/assppweb

查看当前运行状态:

Terminal window
docker compose ps

拉取新镜像:

Terminal window
docker compose pull

重新启动:

Terminal window
docker compose up -d

清理不用的旧镜像:

Terminal window
docker image prune

这样就更新完成了。

AssppWeb 自托管教程
https://www.smaritron.com/posts/assppweb-guide/
作者
Smaritron
发布于
2026-08-28
许可协议
CC BY-NC-SA 4.0