VpnHood!

使用 Docker 安装 VpnHood! SERVER

在任何装有 Docker 的 Linux 机器上,以容器形式运行服务器。只需一条命令,即可将其安装为受管服务器或独立服务器;容器会让服务器持续运行并保持最新版本。

准备工作

  • 一台拥有公网 IP 地址的 Linux 设备,支持 x64 或 arm64 架构(镜像已兼容两者)。服务器支持的系统见系统要求。
  • Root 权限。
  • Docker 及其 Compose 插件。在 Ubuntu、Debian 及基于它们的发行版上,安装程序可自动为您安装。
  • 确保本机的防火墙和云服务商的安全组已放行 TCP 端口 443。由于容器共享宿主机网络,服务端将直接监听宿主机的对应端口。

安装独立服务端

运行此命令。系统会询问是否安装 Docker,随后自动下载 Compose 文件并启动服务器容器。

sudo bash -c 'u=https://github.com/vpnhood/VpnHood.App.Server/releases/latest/download/VpnHoodServer.docker.sh; bash <(wget -qO- $u 2>/dev/null || curl -fsSL $u)'

如需在脚本中免交互自动安装,请参阅安装程序选项。

服务端会将配置、密钥和日志保存在宿主机的 /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 容器。

卸载

若要移除服务器,请删除其容器和镜像。相关配置、访问密钥和证书仍会保留在宿主机的 /opt/VpnHoodServer/storage 中,方便日后重新安装。

sudo docker rm -f VpnHoodServer && sudo docker rmi vpnhood/vpnhoodserver

同时彻底删除配置与密钥:持有旧密钥的设备将无法连接,重新安装后也无法恢复

sudo rm -rf /opt/VpnHoodServer

手动创建容器

如果您习惯手动管理容器,以下是安装程序所创建的容器配置。请与安装程序一样,使用 host 网络模式运行它。

sudo docker run -d --name VpnHoodServer --network host --restart always --stop-timeout 30 -v /opt/VpnHoodServer/storage:/app/storage vpnhood/vpnhoodserver

如需升级至新镜像,只需拉取 vpnhood/vpnhoodserver 并重新创建容器即可。

后续步骤