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