想自己搭一条节点,但连 SSH 是什么都不知道?这篇只做一件事:让你从一台空白 VPS 开始,跟着复制粘贴,搭好一条 Marzban + VLESS TCP REALITY 节点,再导入手机或电脑使用。
本文核对时间为 2026 年 5 月 25 日。Marzban 官方最新正式版为 v0.8.4(发布于 2025 年 1 月 9 日)。Reality 是当前比较适合抗干扰场景的配置之一,但请记住:不存在保证永久不被干扰、永久不失效的节点方案。
本教程用于合法的个人网络连接与隐私保护用途。请遵守所在地法律法规和 VPS 服务商规则,不要公开分享后台账号、节点链接或备份文件。
这篇教程最终能做出什么?
跟着做完,你会得到:
- 一台自己控制的 VPS;
- 一个可以在网页里创建用户的 Marzban 面板;
- 一条使用 443 端口的 VLESS TCP REALITY 节点;
- 一个可以导入到手机、Windows 或 Mac 客户端的连接链接。
为了让第一次搭建尽量少踩坑,本篇不让你先买域名、不让你先申请证书,也不让你理解一大堆术语。你只需要按顺序做,不要跳步骤。
开始前只准备 3 样东西
1. 一台 VPS
购买 VPS 时,选择一台有独立 IPv4 的服务器,并安装纯净系统。系统建议选择:
- Ubuntu 22.04 或 Ubuntu 24.04;
- 或 Debian 12。
新手购买后,只需要在商家后台找到并记下这 3 项:
服务器 IP:例如 123.123.123.123
用户名:通常是 root
密码:商家发给你的 root 密码2. 一台电脑
第一次搭建推荐用 Windows 或 Mac 电脑完成,因为复制命令和打开面板更简单。
3. 一个导入节点的软件
最省事的选择是 Hiddify App,一个软件可覆盖 Windows、macOS、Android 与 iOS:
- 官方网站:https://hiddify.com/
- 官方开源项目与下载:https://github.com/hiddify/hiddify-app
- 官方发布页:https://github.com/hiddify/hiddify-app/releases
VPS 怎么选?给新手的两个入口
下面两个链接是本站推荐链接,购买可能为本站带来推广收益。价格、库存、线路名称和实际体验请以下单页面为准。
- 想把线路体验与长期使用放在前面,可以看看 DMIT:https://1024bit.cc/dmit
- 想先用较低成本练习搭建,可以看看 RackNerd:https://1024bit.cc/racknerd
官方主页也一并附上,便于核对品牌信息:
- DMIT 官方网站:https://www.dmit.io/
- RackNerd 官方网站:https://www.racknerd.com/
买好 VPS 并重装成纯净系统后,继续下一步。
第 1 步:确认服务器开放了两个端口
在 VPS 商家的防火墙或安全组页面中,确认下面两个 TCP 端口允许访问:
22 用来连接服务器
443 用来运行节点本教程不会把面板的 8000 端口直接开放到公网。我们会用一条更安全、也能直接抄的命令打开面板。
第 2 步:第一次用 SSH 连接服务器
Windows 用户
- 点击开始菜单,搜索并打开 PowerShell 或终端。
- 把下面命令中的 123.123.123.123 换成你的服务器 IP,然后回车:
ssh -L 8000:127.0.0.1:8000 root@123.123.123.123Mac 用户
- 打开终端应用。
- 把下面命令中的 IP 换成你的服务器 IP,然后回车:
ssh -L 8000:127.0.0.1:8000 root@123.123.123.123第一次连接时会看到什么?
如果窗口询问是否继续连接,输入:
yes接着输入商家提供的 root 密码。输入密码时屏幕不会显示星号,也不会显示字符,这是正常现象,输入完按回车即可。
当你看到类似 root@服务器名称:~# 的文字,就代表成功进入服务器了。后面所有命令都粘贴在这个窗口里执行。
喜欢图形界面的读者,也可以使用 Termius 连接 SSH。官方地址:https://termius.com/download。不过首次搭建仍建议使用电脑终端,方便使用本文的面板安全访问方式。
第 3 步:复制命令安装 Marzban
在刚刚连上的黑色窗口中,依次粘贴下面两段命令。第一段准备下载工具:
apt update -y && apt install -y curl如果你看到131 packages can be upgraded,或者 Debian 12 出现stable变为oldstable的提示,不代表命令失败。只要最后出现Setting up curl,就可以继续下一段。Debian 12 被 Debian 13 接替后显示oldstable属于正常现象。
第二段调用 Marzban 官方安装脚本。由于本文第 2 步使用的是 root 登录,请复制下面这条不带 sudo 的命令:
bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install如果你曾按带sudo的命令执行,并看到-bash: sudo: command not found,原因是你已经使用 root 账号登录,而纯净系统没有预装sudo。不用单独安装sudo,直接重新执行上面不带sudo的命令即可。
等待安装跑完。当窗口不断显示日志时,按键盘上的 Ctrl + C 退出日志查看即可,不会卸载面板。
然后创建有管理权限的后台管理员账号。下面命令中的 --sudo 是 Marzban 面板管理员权限选项,并不是 Linux 的 sudo 命令,请保留:
marzban cli admin create --sudo根据提示填写用户名和密码。这个密码是面板后台密码,请单独保存,不要和别人共享。
第 4 步:安全打开 Marzban 面板
不要关闭刚才的终端窗口。现在在同一台电脑的浏览器中打开:
http://127.0.0.1:8000/dashboard/输入你刚创建的管理员账号和密码登录。
这里使用的是你电脑到服务器之间的 SSH 安全通道,所以不需要把 8000 面板端口暴露给全网。以后想再次管理面板时,先重新执行第 2 步的 SSH 命令,再访问这个地址即可。
第 5 步:生成 Reality 需要的两串内容
回到 SSH 终端窗口,先粘贴下面命令:
docker exec marzban-marzban-1 xray x25519窗口会返回两行内容,大致如下:
Private key: 一长串字符
Public key: 一长串字符只复制并暂存 Private key 后面那串字符,下一步会用到。Public key 不需要手动填写,Marzban 会自动处理。
再执行下面命令:
openssl rand -hex 8它会输出一串短字符,把它也暂存下来。这串内容下文叫作 shortId。
第 6 步:把面板切换成 VLESS Reality 节点
回到 Marzban 网页面板:
- 点击右上角的设置按钮,进入 Core Settings。
- 先把编辑框中原来的全部内容复制到本地记事本保存一份,出错时可以还原。
- 本步骤只适合刚安装、还没有正式用户的新面板。选中编辑框全部原内容,替换为下方整段配置。
- 把配置里的 替换成你的PrivateKey 换成第 5 步得到的 Private key。
- 把 替换成你的shortId 换成第 5 步得到的 shortId。
{
"log": {
"loglevel": "warning"
},
"routing": {
"rules": [
{
"ip": ["geoip:private"],
"outboundTag": "BLOCK",
"type": "field"
}
]
},
"inbounds": [
{
"tag": "VLESS TCP REALITY",
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"tcpSettings": {},
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.microsoft.com:443",
"xver": 0,
"serverNames": ["www.microsoft.com"],
"privateKey": "替换成你的PrivateKey",
"shortIds": ["替换成你的shortId"]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "DIRECT"
},
{
"protocol": "blackhole",
"tag": "BLOCK"
}
]
}确认两个替换位置不再保留中文占位文字后,点击保存,并按页面提示重启 Core 或重启服务。
如果需要用命令重启,在 SSH 窗口输入:
marzban restart第 7 步:在面板中创建自己的连接
回到 Marzban 首页,按下面内容创建用户:
- 点击 Create User 或创建用户按钮。
- 用户名随便取一个容易认的名字,例如 myphone。
- 选择 VLESS TCP REALITY 这个入站。
- 如果页面显示 Flow 选项,选择 xtls-rprx-vision。
- 流量限制和到期时间自己需要时再填写;只给自己测试可以先不限制。
- 点击创建或保存。
创建成功后,打开这个用户的分享信息,复制以 vless:// 开头的链接,或者显示二维码让手机扫描。
请检查连接链接中是否包含:
服务器IP:443
security=reality如果链接里的地址意外显示成 127.0.0.1,把它改成你的服务器公网 IP 再导入客户端。
第 8 步:导入 Hiddify 并测试连接
- 从官方地址安装 Hiddify App:https://github.com/hiddify/hiddify-app/releases
- 打开应用,点击添加配置或加号。
- 选择从剪贴板导入,把刚复制的 vless 链接导入;手机也可以直接扫二维码。
- 点击连接按钮。
- 打开一个网页测试是否可以正常访问。
如果你更习惯其他客户端,下面是常见开源客户端的官方项目页:
- Windows:v2rayN 官方项目 https://github.com/2dust/v2rayN
- Android:v2rayNG 官方项目 https://github.com/2dust/v2rayNG
不要从不明网盘或群文件下载安装包,优先从官方项目或官方商店下载。
连不上时,只按这 5 条排查
1. SSH 根本连不上
核对服务器 IP、用户名 root 和密码;再到商家防火墙页面确认 TCP 22 已开放。如果新服务器密码已经混乱,最省时间的做法通常是重装纯净系统后重新开始。
2. 浏览器打不开面板
确认第 2 步的 SSH 窗口没有关闭,然后在 SSH 窗口执行:
marzban status仍打不开时执行:
marzban restart再刷新面板地址。
3. 客户端导入了,但一直超时
先到 VPS 商家防火墙页面确认 TCP 443 已开放。然后核对配置中两处内容是否粘贴正确:Private key 与 shortId。最后检查创建用户时是否选择了 VLESS TCP REALITY 和 xtls-rprx-vision。
4. 保存 Core Settings 后面板报错
把第 6 步提前备份的原始配置粘回去保存,然后重新检查 JSON 是否少了逗号、引号,或者还保留着中文占位内容。
5. 以后想登录面板却忘了地址
重新连接 SSH:
ssh -L 8000:127.0.0.1:8000 root@你的服务器IP保持窗口开启,然后访问:
http://127.0.0.1:8000/dashboard/搭好以后至少做两件事
1. 先做一次备份
在 SSH 窗口执行:
marzban backup备份文件可能包含你的节点资料,不要公开上传或发给陌生人。
2. 更新前先备份,再更新
以后要更新面板时,依次执行:
marzban backup
marzban update遇到问题可以查看日志:
marzban logs进阶升级:搭好之后怎么更安全、更方便?
前面的基础方案已经能用,而且面板只通过 SSH 隧道访问,适合只给自己使用的读者。下面的升级项不是必须一次做完,请先确认基础节点已成功连接,再选择需要的项目逐一操作。
先选路线:保留 443 节点,还是公开 HTTPS 面板?
这一步非常重要,因为同一台服务器的同一个端口不能同时交给两个程序使用。
| 方案 | 节点端口 | 面板访问方式 | 适合谁 |
|---|---|---|---|
| A. 保持基础方案(推荐先用) | Reality 使用 443 | SSH 隧道访问本机地址 | 自用、希望最少改动、优先保留 443 节点 |
| B. 域名 HTTPS 面板 | Reality 改用 8443,Caddy 使用 80/443 | 直接打开 HTTPS 域名 | 需要多设备管理面板或使用 HTTPS 订阅入口 |
不要在 Reality 仍占用 443 的情况下,直接照抄 Caddy 监听 443 的配置;服务会因为抢占端口而无法正常启动。
升级 1:只开放真正需要的端口
无论选择哪条路线,都建议在 VPS 防火墙中只放行所需端口。本节以 Ubuntu/Debian 常用的 UFW 为例。
先安装并放行 SSH,务必把这一步放在启用防火墙之前:
apt update -y && apt install -y ufw
ufw allow 22/tcp如果选择 方案 A:Reality 继续使用 443,面板继续走 SSH 隧道,执行:
ufw allow 443/tcp
ufw enable
ufw status verbose如果选择 方案 B:Caddy 公开 HTTPS 面板,Reality 改到 8443,执行:
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8443/tcp
ufw enable
ufw status verbose这里不需要开放 8000。如果你之前在服务商安全组里放行了 8000,确认新访问方式可用后将它关闭。
升级 2:给面板配置域名和 HTTPS(选择方案 B 才操作)
这一步的效果是:你可以从 https://panel.example.com/dashboard/ 登录面板,订阅地址也能使用 HTTPS。这里的 SSL 是保护面板与订阅入口;Reality 节点自身不依靠这个证书工作。
你需要先准备一个域名,例如 panel.example.com,并在域名解析处创建一条 A 记录,指向你的 VPS 公网 IP。等待解析生效后再继续。
2.1 先把 Reality 节点从 443 改到 8443
在 Marzban 面板的 Core Settings 中找到之前粘贴的 VLESS TCP REALITY 配置,将这一行:
"port": 443,改为:
"port": 8443,保存并重启 Core。随后重新打开用户的分享链接并重新导入客户端,因为节点端口已经变化。确认客户端还能连接后,再继续配置面板 HTTPS。
2.2 在服务器上备份当前面板文件
在 SSH 窗口执行:
cd /opt/marzban
cp docker-compose.yml docker-compose.yml.bak.$(date +%F)
cp .env .env.bak.$(date +%F)2.3 添加 Caddy 自动申请证书
官方文档推荐的新手 SSL 做法是 Caddy,它会自动申请和维护证书。打开 Docker 配置文件:
nano /opt/marzban/docker-compose.yml把原有 marzban 服务保留,并参考下方结构添加 Caddy 服务与底部的共享数据卷。如果你的原文件里已有额外设置,不要直接删掉:
services:
marzban:
image: gozargah/marzban:latest
restart: always
env_file: .env
network_mode: host
volumes:
- /var/lib/marzban:/var/lib/marzban
depends_on:
- caddy
caddy:
image: caddy
restart: always
ports:
- 80:80
- 443:443
volumes:
- /var/lib/marzban:/var/lib/marzban
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_volume:/data
- caddy_volume:/config
volumes:
caddy_volume:按 Ctrl + O、回车保存,再按 Ctrl + X 退出。
新建 Caddy 配置文件,把域名改成你自己的真实域名:
nano /opt/marzban/Caddyfile粘贴:
panel.example.com {
reverse_proxy unix//var/lib/marzban/marzban.socket
}保存退出。注意文件名必须是大写 C 开头的 Caddyfile。
2.4 设置 HTTPS 订阅地址并重启
编辑环境文件:
nano /opt/marzban/.env添加或修改下面两行,将域名换为自己的域名:
UVICORN_UDS=/var/lib/marzban/marzban.socket
XRAY_SUBSCRIPTION_URL_PREFIX=https://panel.example.com同时确认下面两个设置保持关闭状态;如文件中没有,可添加:
DEBUG=false
DOCS=false保存后运行:
marzban restart
marzban status
marzban logs然后访问:
https://panel.example.com/dashboard/若能看到安全锁标志并成功登录,HTTPS 面板就配置完成了。确认 HTTPS 可用后,不要再对公网开放面板的 8000 端口。
2.5 HTTPS 无法打开时先查这三项
- 域名 A 记录是否确实指向你的服务器 IP。
- 服务商防火墙与 UFW 是否都允许 TCP 80 和 TCP 443。
- Reality 节点是否已经改为 8443,没有继续和 Caddy 抢占 443。
官方还提供了手动证书、Uvicorn 和 HAProxy 的方式,但对第一次升级的读者而言,Caddy 步骤更少,建议先把这一种跑通。
升级 3:强化 SSH 登录,防止密码被反复尝试
SSH 是你管理服务器的入口。最稳妥的方向是使用 SSH 密钥登录,并在确认密钥成功后关闭密码登录。
3.1 在自己的电脑生成密钥
在你自己的电脑终端中执行,不是在 VPS 里执行:
ssh-keygen -t ed25519一路按回车即可。Mac 或 Linux 用户可用下方命令上传公钥:
ssh-copy-id root@你的服务器IPWindows 用户可以在 Termius 中创建并添加 SSH Key,官方入口:https://termius.com/download。
3.2 必须先测试密钥能否登录
保留当前已经连上的 SSH 窗口不要关闭,再打开第二个终端窗口测试:
ssh root@你的服务器IP只有在新窗口不需要 root 密码也能登录成功时,才继续下一步。测试失败就先停在这里,不要关闭密码登录。
3.3 关闭密码登录
在 VPS 中先备份 SSH 配置:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
nano /etc/ssh/sshd_config找到或新增下面两行:
PermitRootLogin prohibit-password
PasswordAuthentication no保存后先检测配置,再重载 SSH:
sshd -t && systemctl reload ssh不要马上关闭当前终端,再开一个新窗口确认仍能用密钥登录。确认成功后,服务器就不再接受 root 密码直接登录。
升级 4:安装 Fail2Ban,自动临时屏蔽暴力尝试
Fail2Ban 会根据 SSH 失败登录日志,暂时封禁反复尝试密码的来源 IP。它不能替代强密码或 SSH 密钥,但可以减少反复扫描。
apt install -y fail2ban
cat > /etc/fail2ban/jail.local <<'EOF'
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
EOF
systemctl enable --now fail2ban
fail2ban-client status sshd升级 5:备份、更新和敏感信息保护
至少在第一次配置完成后和每次更新前各做一次备份:
marzban backup需要定期备份时,可以查看官方脚本提供的备份服务命令:
marzban backup-service必须注意:备份里可能包含数据库、订阅信息、证书和配置。备份文件不要公开上传,也不要发送到公共群组。
更新面板和 Xray 前,建议按这个顺序操作:
marzban backup
marzban update
marzban core-update
marzban status更新后重新测试后台登录、自己的客户端连接与订阅链接。个人使用不要安装官方标记为开发中的 dev 版本。
升级 6:多设备、多用户和流量限制
即便只有自己使用,也建议不同设备创建不同用户,例如 iphone、windows、ipad。这样其中一台设备的链接泄露时,只需要停用一个用户,不会影响其他设备。
在面板里可以继续为每个用户设置:
- 流量额度;
- 到期时间;
- 单独停用或重新生成连接。
不要把自己的节点链接发到公开频道、评论区或截图中;一条连接链接被别人拿到,就相当于别人也拿到了你的节点使用权。
升级 7:用户多了再考虑 MySQL 与多节点
只给自己或少量家人使用时,官方默认的 SQLite 已经够用。只有当你开始管理很多用户或多个节点时,再考虑 MySQL:
bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install --database mysql这条命令适合新安装;已有数据的面板不要直接重装覆盖,应先完整备份并查阅迁移方案。
如果要在不同地区增加节点,可继续阅读官方 Marzban-node 文档:
初学者建议先稳定维护好一台服务器,再扩展第二台。
进阶完成后的检查单
- [ ] 只放行当前方案需要的端口,公网没有开放面板 8000。
- [ ] 选择 HTTPS 面板时,域名访问正常,节点已从 443 改为 8443 并重新导入测试。
- [ ] 环境文件中 DEBUG 与 DOCS 都设置为 false。
- [ ] SSH 密钥登录经过第二个窗口验证后,才关闭密码登录。
- [ ] Fail2Ban 已运行,并可以看到 SSH 防护状态。
- [ ] 每次更新前备份,且备份不会公开泄露。
- [ ] 每台设备使用独立用户,泄露时可以单独撤销。
所用项目与工具的官方地址
最后提醒
如果你只是第一次自建,不要一上来研究几十种协议和脚本。先按本文完成一条 VLESS TCP REALITY,确认电脑和手机都能连接,再考虑域名、HTTPS 面板、多节点与定期维护。
- DMIT 推荐入口:https://1024bit.cc/dmit
- RackNerd 推荐入口:https://1024bit.cc/racknerd
本文版本核对日期为 2026 年 5 月 25 日。如果你在更晚时间阅读,正式动手前请先查看 Marzban 官方发布页:https://github.com/Gozargah/Marzban/releases。
相关阅读
- 3x-ui 面板安装说明(纯净系统版):想换一种面板方案,可参考直接在纯净 VPS 上部署 3x-ui 的教程。
- 3x-ui 面板安装说明(1Panel Docker 版):希望图形化管理 Docker 与端口的读者,可选择 1Panel 路线。
- VPS 检测脚本大全:NodeQuality、融合怪、YABS、NextTrace 怎么选:买到服务器后,先检测性能、线路与解锁情况再部署。
- 全平台代理客户端速查:节点创建完成后,可按设备选择合适的导入客户端。