在 Docker 中运行 VpnHood! SERVER
在任何安装了 Docker 的 Linux 设备上以容器形式运行服务端。仅需一行命令,即可部署为集中管理或独立运行的服务端,容器将确保服务端持续稳定运行并自动保持最新。
准备工作
- 一台拥有公网 IP 地址的 Linux 设备,支持 x64 或 arm64 架构(镜像已兼容两者)。
- Root 权限。
- Docker 及其 Compose 插件。在 Ubuntu、Debian 及基于它们的发行版上,安装程序可自动为您安装。
- 确保本机的防火墙和云服务商的安全组已放行 TCP 端口
443。由于容器共享宿主机网络,服务端将直接监听宿主机的对应端口。
安装受管服务端
在 VpnHood! MANAGER 中,打开 Servers,选择 Add,为服务端命名并选择 Create。在安装方式中选择 Install on Linux manually by running a command。在 MANAGER 显示的命令中,将 VpnHoodServer-linux.sh 替换为 VpnHoodServer.docker.sh,然后在服务器上运行。该命令会应用连接 MANAGER 的配置来安装容器,并提示下方独立安装中出现的相同问题。
对于已经创建的容器,请改选 Install Manually by configuring appsettings。将 MANAGER 显示的配置在宿主机上保存为 /opt/VpnHoodServer/storage/appsettings.json,然后使用 sudo docker restart VpnHoodServer 重启容器即可。
接着在 MANAGER 的 Access Tokens 下为您的设备创建访问密钥。
安装独立服务端
运行此命令。它将自动下载 Compose 文件,启动服务端容器,并提示一个确认问题。
sudo su -c "bash <( wget -qO- https://github.com/vpnhood/VpnHood.App.Server/releases/latest/download/VpnHoodServer.docker.sh)"
当出现提示 Install Docker (y/n)? 时,若需自动安装 Docker 请输入 y,若已安装请输入 n。
在脚本中实现免交互安装。如果已安装 Docker,可省略 -install-docker 参数。
sudo su -c "bash <( wget -qO- https://github.com/vpnhood/VpnHood.App.Server/releases/latest/download/VpnHoodServer.docker.sh) -install-docker -q"
服务端会将配置、密钥和日志保存在宿主机的 /opt/VpnHoodServer/storage 中,即使重建容器数据也不会丢失。
创建访问密钥
在服务器上运行此命令。密钥将在服务端容器内部生成,直接继承服务端的自身配置。
sudo docker exec VpnHoodServer /app/vhsupervisor gen
例如:仅限一台手机使用的密钥
sudo docker exec VpnHoodServer /app/vhsupervisor gen -name Phone -maxClient 1
输出内容与配置选项与非 Docker 独立安装的服务器完全一致:复制 --- AccessKey --- 下方的内容,并参阅创建首个访问密钥了解限制密钥的详细选项。
连接
在各设备上安装 VpnHood! CLIENT,添加密钥即可一键连接。
启动、停止与检查服务器
容器名称为 VpnHoodServer。主机重启时 Docker 会自动拉起它;容器内服务若发生崩溃也会自动重启。
sudo docker logs VpnHoodServer
sudo docker stop VpnHoodServer
sudo docker start VpnHoodServer
同一日志也会同步写入宿主机的 /opt/VpnHoodServer/storage/logs/server.log。
更改设置
服务器从 /opt/VpnHoodServer/storage/appsettings.json 读取配置。修改该文件后,运行 sudo docker restart VpnHoodServer 重启容器即可生效。
如果无法直接编辑文件,可将 appsettings.json 的全部内容传入环境变量 VH_APPSETTINGS,服务器将优先使用该配置。
请参阅设置服务器 IP 地址与通过域名连接,了解最常用的配置选项。
更新
服务器会在容器内部自动更新。它在启动时以及每隔 12 小时都会检查新版本,并自动重启切换至最新版。
如需固定当前版本,请在容器环境变量中设置 VH_AUTO_UPDATE=0。
某些版本更新需要升级底层镜像。此时服务器会保持当前版本,并在日志中提示 Pull the latest image!。只需重新运行安装命令,即可拉取最新镜像并重建容器,同时完整保留您的设置与密钥。
如果您是通过旧版脚本安装的,只需重新运行安装命令即可平滑迁移至新镜像,并自动清理旧的 VpnHoodUpdater 容器。
手动创建容器
如果您习惯手动管理容器,以下是安装程序所创建的容器配置。请与安装程序一样,使用 host 网络模式运行它。
sudo docker run -d --name VpnHoodServer --network host --restart always --stop-timeout 30 -v /opt/VpnHoodServer/storage:/app/storage vpnhood/vpnhoodserver
如需升级至新镜像,只需拉取 vpnhood/vpnhoodserver 并重新创建容器即可。