我的 VPS 容器全览:22 个 Docker 服务搭建的数字堡垒

前言

大家好,我是 anna。今天想给大家分享一下我的 VPS 上运行的 Docker 服务清单。说来有趣,这台服务器从最初只想跑个博客,到现在已经变成了一个「数字堡垒」——22个容器各司其职,几乎涵盖了日常开发、运维、娱乐、隐私的方方面面。

如果你也在考虑如何充分利用 VPS 的资源,或者想参考一些实用的 Docker 服务部署方案,这篇文章或许能给你一些启发。闲话少说,让我们直接开始吧!

---

核心基础设施

OpenResty - Nginx 反代网关

如果把所有服务比作一个小区,OpenResty 就是小区的门禁和保安。它运行在 80 和 443 端口,负责所有 HTTP/HTTPS 请求的路由分发。

有了它,我不需要记住每个服务的具体端口,直接通过域名解析就能访问——博客走 blog.xxx.com,音乐走 music.xxx.com,全部由 OpenResty 统一管理和配置 SSL 证书。这东西比普通 Nginx 更灵活,支持 Lua 脚本,我甚至用它做了一些简单的限流和防爬逻辑。

MySQL (3306) - 数据库服务

MySQL 不用多说,几乎所有需要持久化存储的服务都离不开它。Halo 博客、Alist 的元数据、Typesense 的配置……全都靠它。

我给 MySQL 分配了独立的数据卷,做了定期备份。毕竟数据无价,容器可以重建,数据丢了可就是真的丢了。

Halo 博客 (8090) - 基于 Java 的博客系统

Halo 是我博客的核心,选择它的原因很简单:功能强大、插件丰富、界面美观。我使用了 ZhihaiHub 主题,简洁大气,阅读体验很棒。

虽然我可以通过 OpenResty 反代用域名直接访问,但 8090 端口我一直保留着,方便本地调试和紧急维护。Halo 生态很活跃,主题和插件更新频繁,作为技术博客再合适不过了。

---

AI 与开发工具

Ollama (11434) - 本地 AI 大模型推理

Ollama 是我最近的「心头好」。它让在 VPS 上跑本地大模型变成了可能。我主要用它来跑一些轻量级的模型,比如 qwen、llama3,做代码审查、文案生成、本地知识库问答。

11434 端口是它的默认 API 端口,我通过内网访问,完全离线可用,不用担心数据泄露。虽然受限于 VPS 的配置无法跑超大的模型,但日常使用已经完全足够。

IT-Tools (40116) - 开发者工具箱

IT-Tools 是一个聚合了 N 多开发者小工具的网站,包括 JWT 解码、Base64 编码、JSON 格式化、UUID 生成、颜色转换、SQL 格式化等等。

40116 端口直接访问,平时写代码需要快速查个东西,随手一开就能用,比去网上搜在线工具方便多了。而且是开源的,部署简单,界面也好看。

Typesense (8108) - 全文搜索引擎

Typesense 是一个开源的分布式全文搜索引擎,兼容 Elasticsearch 的 API 但更轻量、更易用。我主要用它给博客和 Alist 提供搜索服务。

8108 是它的默认端口,支持中文分词。虽然部署有一定复杂度,但搜索体验真的比数据库 LIKE 查询强太多。如果你有多站点搜索需求,Typesense 值得一试。

---

文件与媒体管理

Alist (5244) - 多网盘挂载聚合

Alist 绝对是我的「网盘终结者」。它支持挂载阿里云盘、百度网盘、OneDrive、Google Drive、S3 兼容存储等几十种网盘和存储服务,统一用一个 Web 界面管理。

5244 端口直接访问,我把自己的多个网盘全部挂载上去,再用 OpenResty 配置域名,做了 HTTP Basic Auth 保护。文件管理、在线预览、分享链接生成,一气呵成。再也不用在各个网盘客户端之间来回切换了。

Lsky Pro (40027) - 自建图床

作为一个博客博主,图床是刚需。之前用过 imgur、SM.MS 等第三方图床,但总担心有一天服务挂了或者图片被墙。

Lsky Pro 完美解决了这个问题——自建图床,支持本地上传、CDN 加速、API 调用,40027 端口访问。配合 Cloudflare 的 CDN,访问速度和稳定性都有保障。以后再也不用看第三方图床的脸色了。

EasyImage2 (40061) - 图片处理工具

EasyImage2 是一套图片处理工具,支持图片压缩、格式转换、缩略图生成、水印添加等功能。

40061 端口访问,主要用来做博客图片的批量压缩和处理。它还有一个 Web UI,操作直观,比命令行工具友好太多。对于需要频繁处理图片的同学,部署一个绝对不亏。

FileCodeBox (40157) - 匿名文件快递柜

有时候需要临时分享文件给对方,又不想暴露自己的网盘账号——FileCodeBox 就是解决方案。

它可以创建一个临时文件下载链接,对方下载后链接自动失效,支持密码保护和过期时间。40157 端口访问,非常适合临时分享大文件或者敏感文件,隐私性很好。

---

音乐与娱乐

Navidrome (40108→4533) - 个人音乐服务器

Navidrome 是一个开源的音乐服务器,支持 Subsonic API,可以管理你的本地音乐库并流媒体播放。

我把音乐文件放在服务器本地,通过 Navidrome 搭建自己的「私人 Spotify」。40108 是外部访问端口,内部映射到 4533。配合手机上的 Subsonic 客户端,随时随地听自己收藏的音乐,再也不受版权限制。

YesPlayMusic (40075) - 高颜值网易云替代客户端

这就是那个传说中的「高颜值网易云第三方客户端」。它还原了网易云音乐的界面,可以绑定自己的服务器使用。

40075 端口访问,主要用来搜一些歌单和歌曲,弥补 Navidrome 需要本地导入的不足。界面真的好看,偶尔情怀一下听听华语歌曲,体验很棒。

Bililive-go (8080) - B站直播录制

作为一个经常错过直播的人,Bililive-go 是我的「直播救星」。它可以自动关注并录制 B 站指定 UP 主的直播,保存到本地。

8080 端口是它的 Web 管理界面,可以配置录制规则、存储路径、视频质量等参数。UP 主开播自动录播,再也不怕错过精彩内容了。

---

监控与运维

Uptime Kuma (3009→3001) - 服务监控告警

Uptime Kuma 是一个自托管的服务监控工具,支持 HTTP/HTTPS/TCP/Ping/DNS 等多种协议的健康检查。

我用它来监控所有其他服务的在线状态——博客、数据库、OpenResty、Alist 等等。3009 是外部访问端口,内部映射到 3001。一旦服务 down 了,会通过 Telegram 等渠道及时告警。UI 非常漂亮,还能统计可用率,做运维必不可少。

---

网络与安全

Xray (2096,8082) - 代理协议服务

Xray 是 V2Ray 的超集,支持 VLESS、VMess、Trojan、Shadowsocks 等多种协议。2096 端口做 API 管理,8082 端口提供代理服务。

有了它,访问 Google、GitHub、YouTube 等网站变得丝滑无比。配合 OpenResty 的流量转发和 TLS 伪装,稳定性也很好。

MTProto Proxy (8443) - Telegram 代理

MTProxy 是 Telegram 的专属代理,可以让你在网络受限的环境下也能正常使用 Telegram。

8443 端口部署,配上官方生成的 secret,客户端就能直接连上。Telegram 官方代理好处是延迟低、速度快,比普通的 SOCKS5 代理体验好很多。

---

其他服务

Komari (25774) - Mastodon 客户端

Komari 是一个 Mastodon(长毛象)客户端,提供 API 接口,可以用来做自动化发嘟、跨账号管理等操作。

25774 端口访问,主要用来做一些账号的自动化运营和内容同步。作为分布式社交网络的爱好者,Mastodon 的生态确实很有意思。

Traffmonetizer - 带宽分享赚钱

Traffmonetizer 是一个带宽分享平台,你把自己的带宽分享出去,它给你付钱。虽然赚的不多,但相当于把 VPS 的剩余流量变现。

部署非常简单,一个 Docker 命令就搞定。适合有闲置流量的 VPS 用户试试。

GSManager3 (3001) - 游戏服务器管理器

GSManager3 是一个游戏服务器管理面板,支持 Minecraft、CS:GO、Valheim 等多种游戏服务器的部署和管理。

3001 端口访问,偶尔会和朋友一起开黑玩游戏,用它来管理服务器很方便。Web UI 直观,备份、启停、重启一条龙。

Traffic Monitor - 流量监控

Traffic Monitor 用来监控服务器的网络流量,包括带宽使用、流量统计。

对于想把服务器资源用到极致的人来说,流量监控非常重要。可以清楚地看到哪些服务占用了多少带宽,及时发现异常流量。

---

docker-compose 片段分享

给大家看一段 docker-compose 配置,感受一下是怎么把这些服务组织起来的:

services:

openresty:

image: openresty/openresty:latest

container_name: openresty

ports:

- "80:80"

- "443:443"

volumes:

- ./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf

- ./ssl:/etc/nginx/ssl

restart: unless-stopped

mysql:

image: mysql:8.0

container_name: mysql

environment:

MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

MYSQL_DATABASE: halo

volumes:

- mysql_data:/var/lib/mysql

ports:

- "3306:3306"

restart: unless-stopped

halo:

image: halohub/halo:2.20

container_name: halo

ports:

- "8090:8090"

volumes:

- ./halo:/root/.halo2

restart: unless-stopped

ollama:

image: ollama/ollama:latest

container_name: ollama

ports:

- "11434:11434"

volumes:

- ollama_data:/root/.ollama

restart: unless-stopped

volumes:

mysql_data:

ollama_data:

以上仅为示例,实际部署时请根据自身需求调整配置。

---

总结

以上就是我的 VPS 上运行的 Docker 服务全景展示。从基础设施到 AI 工具,从文件管理到娱乐生活,从监控运维到网络代理,这套「数字堡垒」几乎满足了我所有的数字化需求。

部署这些服务的过程中,我也踩了不少坑——端口冲突、内存不足、数据备份遗漏……但正是这些折腾,让我对 Docker 和运维有了更深入的理解。

如果你也有类似的部署计划,我的建议是:从小处着手,先跑通核心服务,再逐步扩展。不要一口气部署所有服务,先确保基础设施稳定,再逐步添加新功能。

希望这篇文章对你有帮助!有任何问题欢迎在评论区留言交流。

---

*本文由 anna 原创,部署方案仅供参考,请根据实际情况调整。*