sub2api自部署记录
本文由AI生成,仅作部分细节修改。
1.下载 sub2api
进入需要安装的目录:
cd /opt
创建目录:
sudo mkdir sub2api
sudo chown $USER:$USER sub2api
进入:
cd /opt/sub2api
下载源码:
git clone https://github.com/Wei-Shaw/sub2api.git
进入:
cd sub2api
2.配置 sub2api
进入部署目录:
cd deploy
查看:
ls
应该有:
docker-compose.local.yml
.env.example
复制配置:
cp .env.example .env
编辑:
nano .env
3.修改关键密码
找到:
POSTGRES_PASSWORD=
设置:
例如:
POSTGRES_PASSWORD=Abc123456789!!
找到:
JWT_SECRET=
生成随机:
另开窗口:
openssl rand -hex 32
复制结果。
例如:
JWT_SECRET=7a8cxxxxxxxx
找到:
TOTP_ENCRYPTION_KEY=
同样生成:
openssl rand -hex 32
填写。
保存:
nano:
Ctrl + O
回车
Ctrl + X
4.配置env地址
在.env中配置BIND_HOST为127.0.0.1,可以防止docker端口直接对外
5.第一次启动测试
启动:
docker compose -f docker-compose.local.yml up -d
等待。
查看:
docker ps
应该看到类似:
sub2api
postgres
redis
查看日志:
docker compose -f docker-compose.local.yml logs -f
注意此处有初始生成的管理员密码,仅会在这第一次日志中打印,后续不会再出现,记得保存。如果没有保存,则需要通过数据库重新设置
Generated admin password (one-time): xxxxxx
看到:
Server running on port 8080
说明成功。
退出日志:
Ctrl+C
6.本机测试
服务器执行:
curl localhost:8080
如果返回 HTML 或 JSON:
成功。
现在不要访问:
http://服务器IP:8080
不要开放。
7.限制 Docker 端口
现在修改 compose。
打开:
nano docker-compose.local.yml
找到:
类似:
ports:
- "8080:8080"
改成:
ports:
- "${BIND_HOST:-127.0.0.1}:${SERVER_PORT:-8080}:8080"
意思:
以前:
公网IP:8080
|
Docker
现在:
只有服务器自己
|
localhost:8080
|
Docker
保存。
重启:
docker compose -f docker-compose.local.yml down
然后:
docker compose -f docker-compose.local.yml up -d
测试:
curl localhost:8080
可以。
外网:
IP:8080
打不开。
8.防火墙最终设置
查看:
sudo ufw status
关闭:
sudo ufw deny 8080/tcp
启用:
sudo ufw enable
最终:
sudo ufw status
应该类似:
8080/tcp DENY
完成后的安全状态
你的服务器:
| 端口 | 状态 |
|---|---|
| 8080 | 关闭 |
公网:
服务器IP
无法访问。
只有:
https://api.example.com
可以访问。
9.日常使用
因为用的是 docker-compose.local.yml,所以在 deploy 目录下操作。
进入目录:
cd /opt/sub2api/sub2api/deploy
启动 Sub2API:
docker compose -f docker-compose.local.yml up -d
关闭 Sub2API:
docker compose -f docker-compose.local.yml down
重启:
docker compose -f docker-compose.local.yml restart
只重启主程序:
docker compose -f docker-compose.local.yml restart sub2api
查看运行状态:
docker compose -f docker-compose.local.yml ps
查看日志:
docker compose -f docker-compose.local.yml logs -f sub2api
所以完整上线通常就是:
cd /opt/sub2api/sub2api/deploy
docker compose -f docker-compose.local.yml up -d
sudo systemctl start cloudflared
完整关闭:
sudo systemctl stop cloudflared
cd /opt/sub2api/sub2api/deploy
docker compose -f docker-compose.local.yml down
10.更新sub2api
拉取仓库
cd /opt/sub2api/sub2api
git pull --ff-only
拉取新容器
cd deploy
docker compose -f docker-compose.local.yml pull
重启容器
docker compose -f docker-compose.local.yml down
docker compose -f docker-compose.local.yml up -d