一台服务器,一个 WordPress 博客:我的自托管实践

一台服务器,一个 WordPress 博客:我的自托管实践

盯着后台监控面板久了,总会有种“暴殄天物”的愧疚。

手头这台海外节点的服务器,配置不算顶配,但也绝不是鸡肋:2 核 CPU、4GB 内存、60GB 系统盘,OpenCloudOS 9 打底,宝塔面板一键部署 LNMP 环境,稳稳地托着一个 WordPress 博客。访问流畅,运行平稳,离续费还早。按理说,这已经是个人站点的标准答案了。

可现实是,除了偶尔上去敲几行字,这机器的 CPU 和内存大部分时间都在“摸鱼”,日均访客零星几个,资源利用率常年趴在低位。这种过剩的算力,对喜欢折腾的技术爱好者来说,本身就是一种无声的召唤:既然闲着,不如让它忙起来。

觉醒:服务器不只是“网页容器”

曾经我也和很多人一样,觉得服务器的唯一使命就是托管网站。直到我开始打量那些散落各处的互联网服务——网盘、笔记、密码库、RSS 阅读器……它们大多寄人篱下,受制于大厂的条款、隐私政策和广告推送。

于是,“自托管”(Self-Hosting)这个概念走进了我的视野。它其实很朴素:不依赖第三方商业平台,把数字生活的基础设施搭在自己的硬件上。

这倒不是要否定百度网盘、印象笔记的价值,而是想把“控制权”拿回来。数据握在自己手里,功能按自己的心意定制,这种“我的地盘我做主”的爽感,再加上顺带学到的技术,就是自托管真正的吸引力。

理性评估:2C4G 环境下的生存法则

兴奋归兴奋,还得面对现实:资源有限,不能无脑堆砌。对这台 2C4G(2 核 4GB 内存)的机器,我给自己立了条铁律:拒绝重装,拥抱轻量。

下面是几条实战踩出来的“避坑指南”:

  • 严禁触碰的“资源黑洞”:
    • Nextcloud 完整版:功能虽强,但对内存和 IO 要求较高。
    • Jellyfin/Plex 转码:影音转码是 CPU 杀手,除非你想听风扇狂响。
    • GitLab / Jenkins:有名的资源消耗大户。
    • Elasticsearch / Java 全家桶:内存不够,启动即卡死。
  • 友好共存的“轻量优选”:
    • FileBrowser:极简的文件管理,替代 FTP。
    • Vaultwarden:Bitwarden 的 Rust 实现,内存占用极低,密码管理神器。
    • FreshRSS / Miniflux:纯净的 RSS 阅读体验。
    • Uptime Kuma:高颜值的监控面板,时刻掌握服务状态。
    • AList / Homer:聚合网盘,或当作服务导航页。

对 2C4G 来说,同时跑三到四个轻量级服务,是性能和乐趣之间最好的平衡点。

蓝图规划:从“裸奔”到“武装”

为了避开安全风险,我放弃了“裸奔”式的端口映射,改用更稳妥的 Docker + Nginx 反向代理 架构。

思路是把所有服务封进 Docker 容器,只监听 127.0.0.1(本地回环地址),再由宝塔面板的 Nginx 反代出去。好处很直接:外网扫不到服务端口,流量统一走 80/443,配上 SSL 证书,既整洁又安全。

用户访问 (HTTPS)
        │
        ▼
Nginx 反向代理 (宝塔管理)
├── blog.example.com      ──> WordPress (本地)
├── file.example.com      ──> FileBrowser (Docker: 127.0.0.1:8080)
├── pass.example.com      ──> Vaultwarden (Docker: 127.0.0.1:8081)
├── rss.example.com       ──> FreshRSS (Docker: 127.0.0.1:8082)
├── status.example.com    ──> Uptime Kuma (Docker: 127.0.0.1:8083)
└── home.example.com      ──> Homer (Docker: 127.0.0.1:8084)

在这套架构下,我排了一条循序渐进的部署路线:

  1. 地基:确保 WordPress 稳定运行,做好全站备份。
  2. 哨兵:部署 Uptime Kuma,监控博客存活状态,这是系统的“眼睛”。
  3. 仓库:部署 FileBrowser,用于存放博客备份和常用脚本,解决临时传文件的需求。
  4. 核心:视情况上线 Vaultwarden(密码库)或 FreshRSS(阅读器)。
  5. 门面:最后用 Homer 做一个漂亮的导航页,把所有服务串起来。

隐形成本:安全与备份的底线

在公网,尤其是海外节点上,服务器遭遇暴力破解和端口扫描是常态。自托管给了我们自由,也意味着所有风险得自己扛。

所以下面几条底线绝不能偷懒:

  1. SSH 加固:修改默认 22 端口,禁用 root 密码登录,强制使用密钥认证。
  2. 端口收敛:除 Web(80/443)和 SSH 端口外,其余端口一律不对外放行。
  3. 全站 HTTPS:利用宝塔面板或 Certbot 自动续签证书,杜绝明文传输。
  4. 定期冷备:不只是 WordPress 的数据库和 wp-content,Docker 容器的数据卷(Volumes)同样需要定期打包、离线存储。

记住:自托管最迷人的地方在于“自主”,最危险的地方也在于“自负”。

结语:在折腾中获得掌控感

最初,我只是不想浪费那点闲置算力;如今,这台服务器已经变成了一个微型的 DevOps 试验场。从 Linux 命令到 Docker 编排,从 Nginx 配置到日志排查,每一次排错都是一次成长。

这种乐趣不在于最后搭出了多少华丽的面板,而在于那个不断解决问题的过程。它让我在数字洪流里,重新找回了对自己数据的掌控感。

核心要点回顾:

  1. 量力而行:2C4G 服务器应坚持“轻量化”原则,远离 Java 全家桶和影音转码。
  2. 架构先行:用 Docker 隔离 + Nginx 反代,是既安全又好管理的底子。
  3. 备份为王:自托管的世界里没有 SLA(服务等级协议),只有你自己是最后一道防线。

人生或许不会因一台服务器而无聊,但一定会因这份亲手搭建的踏实感而丰盈。

作者:ZCNIX
本文链接:https://blog.zcnix.com/wordpress-self-hosting/
许可协议:CC BY-NC-SA 4.0
上一篇
下一篇