今年圣诞特惠,我用这个价格在DMIT淘到了一台 AMD EPYC 9654 的高性能 VPS。经过几天的折腾,我在这台机器上搭建了属于自己的私人网盘、密码管理器和科学网络节点。
仅仅占用 300MB 内存,我就拥有了一个高速节点、一个私人网盘和密码管理器。
01. 硬件
先来看看这台机器的参数,看到 AMD EPYC 9654 的那一刻,我就知道赚到了。Debian 12 系统极其纯净,开机内存占用极低。
1 | _,met$$$$$gg. root@j |
虽然只有 1G 内存,但对于 Go 和 Rust 编写的现代化轻量级应用来说,简直是豪宅。
02. 架构设计:Docker + Caddy
为了保证系统的干净和可维护性,我选择了 全 Docker 化 部署,并使用 Caddy 作为反向代理网关。
我的“数字堡垒”包含三个核心服务:
- Filebrowser: 文件中转站。
- Vaultwarden: Bitwarden 的 Rust 轻量版,管理所有密码。
- 基于X-ray的3x-ui: 通向自由世界的钥匙。
域名规划
为了看起来更优雅,我使用了子域名隔离:
file.woftom.online-> 私人网盘flag.woftom.online-> 密码库vps.woftom.online-> X-ray 服务
03. 搭建实录:核心指令备份
为了方便复现,这里记录下核心服务的部署指令。环境基于 Debian 12 + Docker。
0. 3x-ui
创建 docker-compose.yml
使用 Host 网络模式 (network_mode: host)。
为什么要用 Host 模式?
代理面板需要开放多个端口(面板端口、不同节点的代理端口等)。如果使用默认的 Bridge 模式,每次添加新节点都需要修改 docker-compose 文件并重启容器来映射端口,非常麻烦。Host 模式让容器直接共享宿主机的网络,所有端口随开随用,效率最高。
创建配置文件:
1 | vim docker-compose.yml |
1 | services: |
启动容器
1 | docker compose up -d |
up: 启动-d: 后台运行 (Detached mode)
搭建 Reality 节点
这部分步骤与非 Docker 版本完全一致,因为我们使用了 host 网络模式。
- 添加入站:
- 协议:
vless - 端口:
443 - 安全:
reality - 流控 (Flow):
xtls-rprx-vision - 目标网站 (Dest):
www.microsoft.com:443 - SNI:
www.microsoft.com - uTLS:
chrome
- 协议:
- 生成密钥:点击 “Get New Cert”。
- 添加:保存节点。
- 使用:复制链接到客户端。
1. Filebrowser:私人网盘 (端口 8080)
Filebrowser 官方镜像极其精简。为了避免权限问题,我采用了“先创建目录并放开权限,再启动容器”的策略。
1 | # 1. 准备目录和空的数据库文件 |
部署完成后,使用 docker logs filebrowser 查看初始随机密码,登录后务必修改。
2. Vaultwarden:密码管理器 (端口 8081)
考虑到安全,我在启动时直接加入了环境变量 SIGNUPS_ALLOWED=false,这样我自己注册完之后,别人就无法注册了。
1 | # 1. 创建数据目录 |
3. Caddy:反向代理与自动 HTTPS
直接修改 /etc/caddy/Caddyfile,将域名请求转发给本地 Docker 端口。这使得我可以通过浏览器输入域名优雅的访问!
1 | # /etc/caddy/Caddyfile |
配置完成后,重载服务即刻生效:
1 | systemctl reload caddy |
特别注意:由于我的 443 端口原本被 X-ray 占用,导致 Caddy 启动失败。解决方案是将 X-ray 配置文件中的 port 修改为 444,让出 443 给 Caddy 处理 Web 流量。
04. 成果展示
X-ray Proxy


vaultWarden

File browser

05. 总结
这一通折腾下来,不仅省了网盘会员费和密码管理软件的订阅费,更重要的是学到了 Linux 权限管理、Docker 容器化部署以及网络端口规划的知识。
Merry Christmas! 🎄