25
0
0

一台服务器部署多个服务:Dockge + Nginx Proxy Manager + 3X-UI 端口复用与 HTTPS 教程

文章摘要
|
SELF-HOSTING FIELD GUIDE · 2026

一台服务器部署多个服务

用 Dockge 管理 Compose 栈,让 Nginx Proxy Manager 统一接管 80/443,再把 MyIP、IT-Tools 与 3X-UI 通过不同域名暴露出去。核心目标只有一个:一台 VPS,不抢端口,也能同时跑多个服务。

DockgeNginx Proxy ManagerMyIPIT-Tools3X-UIHTTPS / Reverse Proxy
这篇教程怎么整理的?
前半部分按你提供的 HTML 原文重构,包括准备工作、Dockge、NPM、MyIP、IT-Tools 与 3X-UI 安装命令;原文标题虽然提到“3X-UI 反向代理和 SSL 证书调用”,但正文只写到了 3X-UI 安装,所以后半部分的反向代理/TLS 流程根据当前项目官方文档补齐,并单独标注为“官方文档补充”。
00

先理解端口复用的思路

多服务部署最容易踩的坑,就是每个 Web 项目都想占用 80 或 443。正确做法是只让一个入口服务占住公网 HTTP/HTTPS 端口,其余项目全部使用自己的内部端口,然后根据域名转发。

公网入口app.example.comip.example.comtools.example.companel.example.com
->
Nginx Proxy Manager80 / 443:公网入口81:NPM 管理后台18966:MyIP8088:IT-Tools2053:3X-UI 示例端口
核心原则每个项目使用独立域名或子域名,DNS 都指向同一台服务器;NPM 根据 Host 域名决定把请求转到哪个端口。
01

准备工作

原教程要求准备一台 VPS、远程 SSH 工具和 Cloudflare 域名解析,并强调“每一个项目解析一个域名”。原文写的是 Debian 10+ / Ubuntu 22.04+;如果现在重新搭建,建议直接使用 Debian 11/12 或 Ubuntu 22.04/24.04。

服务器

建议至少 2 vCPU / 2 GB RAM,系统使用较新的 Debian / Ubuntu。

域名

准备多个子域名,例如 npm、ip、tools、panel,全部解析到同一台 VPS。

Docker

本文后续的 Dockge、NPM、MyIP、IT-Tools 都基于 Docker。还没安装可以先看站内 Docker 安装教程。

SSH

FinalShell、Termius、Windows Terminal + OpenSSH 都可以,不影响后续步骤。

当前 Dockge 官方兼容性提醒Dockge 官方目前要求 Docker 20+ / Podman,并明确不支持 Debian/Raspbian Buster 及更旧版本;所以不建议再使用过老系统做新部署。
02

部署 Dockge 面板

原教程使用的是一个第三方 Dockge 一键脚本:

bash · 原教程命令
sudo apt install git -y && \
git clone https://github.com/slobys/dockge.git && \
cd dockge && \
chmod +x dockge.sh && \
./dockge.sh

如果你更希望跟随 Dockge 当前官方仓库,官方标准安装方式如下,默认栈目录是 /opt/stacks,Web 端口为 5001

bash · Dockge 官方安装方式
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge

curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml \
  --output compose.yaml

docker compose up -d
访问地址安装完成后通常通过 http://服务器IP:5001 打开 Dockge。后续新建 NPM、MyIP、IT-Tools 都可以直接在 Dockge 里创建 Stack。
03

在 Dockge 中部署 Nginx Proxy Manager

这是整套架构最关键的入口服务。原教程给出的 Compose 与 NPM 当前官方 Quick Setup 基本一致:

yaml · Nginx Proxy Manager
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
端口用途
80HTTP 公网入口
81NPM 管理后台
443HTTPS 公网入口

在 Dockge 中如果把这个 Stack 命名为 npm,并且栈目录沿用默认 /opt/stacks,那么宿主机证书数据通常位于 /opt/stacks/npm/letsencrypt。原教程特别记录了证书目录:

text · 原教程记录
/opt/stacks/npm/letsencrypt/archive
不要把 archive 目录当成固定证书文件archive 是证书历史文件所在位置,实际证书文件名会随续期变化。对于 3X-UI,优先建议让 NPM 负责 HTTPS,3X-UI 本身走内部 HTTP,这样最省心。
04

部署 MyIP IP 查询工具

原教程把 MyIP 映射到宿主机 18966

yaml · MyIP
services:
  myip:
    image: jason5ng32/myip:latest
    container_name: myip
    restart: always
    ports:
      - "18966:18966"
    environment:
      ALLOWED_DOMAINS: "ip.example.com"
      # GOOGLE_MAP_API_KEY: "你的GoogleMapKey"
2026 配置提醒MyIP 当前官方文档明确要求:通过真实域名访问时要正确设置 ALLOWED_DOMAINS,否则非 localhost 请求可能返回 403;完整地理位置/ASN 功能还需要配置 MaxMind GeoLite2 凭据。
05

部署 IT-Tools 工具箱

原教程将 IT-Tools 的容器 80 映射到宿主机 8088

yaml · IT-Tools
services:
  it-tools:
    image: corentinth/it-tools:latest
    container_name: it-tools
    restart: unless-stopped
    ports:
      - "8088:80"

这和 IT-Tools 官方自托管方式一致,只是官方示例通常使用宿主机 8080;端口左侧可以按你的服务器实际情况自由调整。

06

在 NPM 中为多个服务添加反向代理

进入 NPM 后依次创建 Proxy Host。原教程特别提醒:Forward Port 必须填写对应项目的映射端口。

域名示例目标服务Forward Port
ip.example.comMyIP18966
tools.example.comIT-Tools8088
panel.example.com3X-UI以面板实际端口为准

NPM 的基本配置流程:

  • Domain Names 填对应子域名。
  • Scheme 如果后端本身没有 TLS,一般选 http
  • Forward Hostname / IP 填后端可以被 NPM 容器访问到的地址。
  • Forward Port 填项目实际端口。
  • SSL 页面申请 Let's Encrypt 证书,并开启 Force SSL。
Docker 容器里的 127.0.0.1 不是宿主机如果 NPM 跑在 Docker、而 3X-UI 直接装在宿主机,那么 NPM 的 Forward Host 不要写 127.0.0.1。可以给 NPM 增加 Linux 的 host-gateway 映射,然后使用 host.docker.internal
yaml · 可选 host-gateway
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    extra_hosts:
      - "host.docker.internal:host-gateway"
07

部署 3X-UI 面板

原 HTML 正文在这一段只提供了官方安装脚本,没有继续写面板反向代理与证书设置:

bash · 3X-UI 安装
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

安装完成后先运行:

bash · 查看和管理 3X-UI
x-ui

通过菜单查看当前面板端口、Web Base Path 等设置。当前 3X-UI 官方文档中的默认 webPort2053,但实际安装后应以你的当前设置为准。

不要长期把面板明文暴露在公网3X-UI 官方文档明确建议使用 TLS、非默认端口以及较长的随机 Web Base Path。
08

官方文档补充:用 NPM 反向代理 3X-UI

3X-UI 当前官方文档明确支持把面板放到 Nginx / Caddy 等反向代理后面,并让代理层负责 HTTPS。面板使用 WebSocket 做实时更新,所以代理需要正确处理 WebSocket Upgrade。

在 NPM 新建 Proxy Host,例如:

配置项示例
Domain Namespanel.example.com
Schemehttp
Forward Hostname / IPhost.docker.internal
Forward Port2053(示例,以实际为准)
Websockets Support开启

SSL 页面选择 Request a new SSL Certificate,申请成功后开启 Force SSL。这样公网访问链路就是:

text · 推荐链路
浏览器 HTTPS :443
        |
        v
Nginx Proxy Manager
        |
        | HTTP(服务器内部)
        v
3X-UI :2053
为什么推荐这种方式?证书申请、续期和 HTTPS 都交给 NPM;3X-UI 不需要读取 NPM 的证书文件,也不会因为 Let's Encrypt 文件名变化导致证书路径失效。
09

官方文档补充:让 3X-UI 自己使用 SSL 证书

如果你不想让 NPM 终结 TLS,也可以让 3X-UI 直接读取证书。当前官方文档提供的方式是进入 x-ui 菜单,选择 SSL 相关功能申请证书。域名证书会保存到:

text · 3X-UI 自有证书目录
/root/cert/<你的域名>/fullchain.pem
/root/cert/<你的域名>/privkey.pem

然后在 Panel Settings 里把:

3X-UI 设置对应文件
webCertFilefullchain.pem
webKeyFileprivkey.pem

两个路径都设置后,3X-UI 面板自身就会提供 HTTPS。

关于原教程中的 NPM 证书目录原文记录了 /opt/stacks/npm/letsencrypt/archive。如果你确实打算复用 NPM 证书,需要自己确认具体 fullchainprivkey 文件以及权限;相比之下,直接让 NPM 负责 TLS 或使用 3X-UI 自己的证书管理更稳定。
10

上线前的端口与安全检查

端口建议
80 / 443作为 NPM 公网入口,需要开放
81NPM 后台,不建议对全网开放
5001Dockge 后台,不建议对全网开放
18966 / 8088已经有 NPM 域名后,不应作为主要公网入口
3X-UI 面板端口建议仅由 NPM/受信任网络访问
  • 每个服务使用独立域名,DNS 都指向同一台服务器。
  • NPM 是唯一主要的公网 Web 入口。
  • NPM、Dockge、3X-UI 管理后台使用强密码和非默认访问路径。
  • 3X-UI 的 WebSocket 代理工作正常。
  • HTTPS 证书已经生效,并确认自动续期方案。
  • Compose 数据目录已经做持久化和备份。

资料来源与版本说明

本文前半部分根据你提供的“一机多用”HTML 教程重构;3X-UI 反向代理、TLS、Dockge 当前官方安装方式、MyIP 当前域名配置要求等内容根据项目现行官方文档补充。这样既保留原教程的实际部署路线,也避免把已经变化的项目细节继续当成固定配置。

Dockge:github.com/louislam/dockge

Nginx Proxy Manager:github.com/NginxProxyManager/nginx-proxy-manager

MyIP:github.com/jason5ng32/MyIP

IT-Tools:github.com/CorentinTh/it-tools

3X-UI:github.com/MHSanaei/3x-ui

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

一台服务器部署多个服务:Dockge + Nginx Proxy Manager + 3X-UI 端口复用与 HTTPS 教程
/archives/one-server-multi-services-dockge-npm-3xui
作者
X
发布于
2026-08-30
许可协议
CC BY-NC-SA 4.0

评论

欢迎来到我的博客!