020 docker 对接通用教程 - Pinxz/soga GitHub Wiki
安装 docker
CentOS
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker
systemctl enable docker
Ubuntu / Debian
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
systemctl start docker
systemctl enable docker
启动参数说明
熟悉 soga 配置文件的可以直接翻到最后
通用参数
参数名 | 默认值 | 说明 |
---|---|---|
type | sspanel-uim | 对接的面板,可选:sspanel-uim,v2board,vnetpanel |
server_type | v2ray | 后端类型,可选:v2ray,trojan |
api | webapi | 对接方式,可选: webapi,db |
webapi_url | 无 | 面板webapi地址,一般就是主页地址 |
webapi_mukey | 无 | webapi通信密钥 |
db_host | 无 | 数据库地址 |
db_port | 3306 | 数据库端口 |
db_name | 无 | 数据库名 |
db_user | root | 数据库用户名 |
db_password | 无 | 数据库密码 |
node_id | 0 | 节点id |
soga_key | 无 | 授权码,社区版无需填写 |
user_conn_limit | 0 | 限制单个用户连接数,0表示无限制,sspanel优先从面板获取 |
user_speed_limit | 0 | 限制单个用户速度,0表示无限制,单位Mbps,sspanel优先从面板获取 |
check_interval | 100 | 后端上报、检查间隔时间,单位秒 |
force_close_ssl | false | v2ray有效,设为true可强制关闭tls,即使前端开启tls,soga也不会开启tls,方便用户自行使用nginx、caddy等反代 |
forbidden_bit_torrent | false | 设为true可禁用bt下载 |
default_dns | 无 | 默认dns,可在此配置流媒体解锁的dns,以逗号分隔。例如:8.8.8.8,1.1.1.1 |
dns_cache_time | 10 | 自定义dns缓存时间,单位分钟,仅在设置了default_dns时有效,或者v2board设置了dns规则时也有效 |
trojan_remote_addr | 无 | trojan配置,trojan反代地址 |
trojan_remote_port | 0 | trojan配置,trojan反代端口 |
v2ray_reduce_memory | false | v2ray配置,在已降低内存的基础上进一步降低内存使用,启用后客户端时间误差要求不超过15秒 |
tls_alpn | h2,http/1.1 | tls ALPN 配置,不懂的话保持默认即可,以逗号分隔 |
证书配置参数
若未开启 tls,则无需配置证书
trojan 必须配置证书
soga 支持三种方式配置证书,任选其一即可
① 自定义证书文件路径
- 需自行申请证书,并挂载目录 -v /path/to/:/etc/soga/,/path/to/为证书和密钥所在的目录
- 并按照以下配置:--cert_file=/etc/soga/文件名,--key_file=/etc/soga/文件名
参数名 | 默认值 | 说明 |
---|---|---|
cert_file | 无 | 证书文件路径 |
key_file | 无 | 密钥文件路径 |
② http 验证自动申请证书
- 需要配置 -p 80:80,且宿主机的 80 端口未被占用,防火墙也要放行
- 确保域名已解析到本服务器的IP
- 若开启CDN,则必须确保CDN不会跳转https,否则推荐dns验证
参数名 | 默认值 | 说明 |
---|---|---|
cert_domain | 无 | 域名 |
cert_mode | 无 | 必填:http |
cert_key_length | 无 | 留空则申请RSA证书,填写ec-256或ec-384则申请ECC证书 |
③ dns 验证自动申请证书
- 支持一百多种 DNS 服务商
- 此配置方式较复杂,但最通用
- 该页面列出了所有支持的 DNS 服务商:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
参数名 | 默认值 | 说明 |
---|---|---|
cert_domain | 无 | 域名 |
cert_mode | 无 | 必填:dns |
cert_key_length | 无 | 留空则申请RSA证书,填写ec-256或ec-384则申请ECC证书 |
dns_provider | 无 | DNS服务商名称 |
DNS_xxx | 无 | 需要配置的邮箱、密钥等 |
DNS_xxx | 无 | 需要配置的邮箱、密钥等 |
... | 无 | 需要配置的邮箱、密钥等 |
CloudFlare 配置示例
--cert_domain=xxx.com \
--cert_mode=dns \
--cert_key_length=ec-256 \
--dns_provider=dns_cf \
[email protected] \
--DNS_CF_Key=xxxxx \
DNSPod 配置示例
--cert_domain=xxx.com \
--cert_mode=dns \
--cert_key_length=ec-256 \
--dns_provider=dns_dp \
--DNS_DP_Id=111 \
--DNS_DP_Key=xxxxx \
其它的 DNS 服务商都能在这个页面找到:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
配置要点:
- 找到 DNS 提供商的名称,以 dns_ 开头,后面跟提供商的缩写
- 找到 DNS 提供商所需要配置的内容,区分大小写,一般都是 API 密钥之类的,注意要在参数名中加上 DNS_ 前缀,防止配置冲突
运行命令示例
一定要根据自己的实际情况增加、删除或修改配置项
请自行学习你不熟悉的 docker 参数的具体含义,这里不是 docker 新手教程
--name 可以为容器起一个名字(可选),随意起名,运行多个 docker 实例不要同名
-d 表示后台运行,若只是想测试,建议去掉 -d,可及时看得到日志
使用 -v 挂载一个路径(可选),建议挂载,主要存储证书文件。冒号左边的路径随意,运行多个 docker 实例可以相同,右边的路径必须是 /etc/soga/
根据你自己的实际情况使用 -p 映射端口,-p 80:80 -p 443:443 可能是多数人的映射端口配置,请自行理解这些端口映射的含义,并确保防火墙放行,端口未被占用等
程序参数以 --name=value 的形式跟在最后,配置的参数上面说过了
实际上与配置文件配置的内容完全相同
docker run --restart=on-failure --name soga -d -v /etc/soga/:/etc/soga/ -p 80:80 -p 443:443 sprov065/soga \
--type=sspanel-uim \
--server_type=v2ray \
--api=webapi \
--webapi_url=https://xxx.com/ \
--webapi_mukey=asdasd \
--node_id=1 \
--cert_domain=aaaa.com \
--cert_mode=http \
docker 常用命令
docker pull sprov065/soga # 更新 soga 镜像,更新后记得删除原镜像并重新启动soga
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器,包括已运行和未运行的
docker logs name_or_id # 查看容器日志
docker restart name_or_id # 重启容器
docker stop name_or_id # 停止容器
docker start name_or_id # 启动容器
docker rm name_or_id -f # 强制删除容器
docker 更新 soga 操作
# 拉取最新镜像
docker pull sprov065/soga:latest
# 或者指定版本,拉取前自行确认指定版本是否存在
docker pull sprov065/soga:1.4.5
# 强制删除当前正在运行的soga容器,name是你启动时设置的名称
docker rm name -f
# 然后再按照你原来的启动命令启动soga,此处省略
docker-compose.yml
请自行学习 docker-compose 的基本使用方法
可用环境变量的方式传参数,注意区分大小写
添加、修改你自己需要的参数
安装 docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose.yml
version: "3"
services:
soga:
image: sprov065/soga:latest
restart: on-failure
ports:
- "80:80"
- "443:443"
environment:
type: sspanel-uim
server_type: v2ray
api: webapi
webapi_url: https://xxx.com/
webapi_mukey: xxxxxx
node_id: 0
cert_domain: aaa.com
cert_mode: http
force_close_ssl: 'false' # 填写 false 或 true 参数值时需要加引号
forbidden_bit_torrent: 'true' # 填写 false 或 true 参数值时需要加引号
volumes:
- "/etc/soga/:/etc/soga/"
docker-compose 常用命令
以下命令均需要在docker-compose.yml文件所在的目录下执行
docker-compose up # 前台启动soga,主要观察日志使用
docker-compose up -d # 后台启动soga,长期运行
docker-compose logs --tail=500 # 截取输出最后500行日志
docker-compose down # 停止并删除容器
docker-compose restart # 重启
docker-compose pull # 更新
docker-compose 更新流程
以下命令均需要在docker-compose.yml文件所在的目录下执行
# 首先更新
docker-compose pull
# 然后重启即可,docker-compose 会自动删除旧容器并启动新更新的镜像
docker-compose restart