这份文档详细记录了我将一台闲置的 ThinkPad T450s 改造为企业级标准、高安全性的 Linux 家庭服务器的全过程。
可以将此文档保存为 PDF 或 Markdown 文件,作为未来的维护手册。
🛠️ ThinkPad T450s Linux 服务器部署与整备全记录
项目代号:BlakeServer
部署时间:2026年1月
操作人:Blake
1. 项目目标
- 数据抢救:从手机 Termux 环境中迁移 WordPress 网站数据。
- 硬件利旧:利用闲置 ThinkPad T450s 搭建 7×24 小时运行的服务器。
- 全球访问:通过 Cloudflare Tunnel 实现无公网 IP 的内网穿透。
- 安全加固:实现 Zero Trust(零信任)访问控制和 WAF 防火墙。
- 自动化:实现断电自启、合盖不休眠、服务自愈。
2. 硬件与系统环境
- 服务器硬件:Lenovo ThinkPad T450s
- 操作系统:Ubuntu Server (Linux)
- 关键组件:Docker, Docker Compose, Cloudflared, Cockpit
- 客户端:Windows (联想拯救者), Android 手机
3. 部署全流程记录
第一阶段:基础系统搭建
- 安装系统:抹除原 Windows 数据,安装 Ubuntu Server。
- 网络配置:连接家庭 WiFi,固定内网 IP 为 192.168.1.53。
- 电源管理(关键):
- BIOS 设置:进入 Config -> Power,开启 Power On with AC Attach(通电自动开机)。
- 合盖不休眠:
修改 /etc/systemd/logind.conf,设置 HandleLidSwitch=ignore。
执行 sudo systemctl restart systemd-logind 生效。 - 禁用等待网络服务(加速开机):
sudo systemctl disable systemd-networkd-wait-online.service。
第二阶段:Docker 环境与 WordPress 部署
- 安装 Docker:
Bash
sudo apt update
sudo apt install docker.io docker-compose-v2 -y
sudo systemctl enable docker - 编排容器 (docker-compose.yml):
- 路径:~/wordpress/docker-compose.yml
- 配置:包含 WordPress (端口 8090) 和 MySQL 5.7。
- 问题修复:MySQL 5.7 在新架构下需要指定 platform: linux/amd64 以兼容运行。
- 启动服务:
Bash
cd ~/wordpress
sudo docker compose up -d
第三阶段:数据迁移与修复
- 导入数据库:
将 Termux 导出的 SQL 文件导入新容器:
Bash
cat ~/caibin_db.sql | sudo docker exec -i wordpress_db mysql -u bin_user -p’密码’ wordpress - 修复 WP Super Cache 报错:
- 现象:仪表盘提示无法更新 wp-config.php,未定义 WPCACHEHOME。
- 修复:在 wp-config.php 头部手动添加:
define( ‘WPCACHEHOME’, ‘/var/www/html/wp-content/plugins/wp-super-cache/’ );
- 修复文件权限:
Bash
sudo chown -R 33:33 ~/wordpress/html
第四阶段:Cloudflare Tunnel 内网穿透(核心网络)
- 安装 Cloudflared:
下载 .deb 包并手动安装,绑定 Cloudflare 账号。 - 配置隧道 (/etc/cloudflared/config.yml):
- 强制协议:添加 protocol: http2 解决了国内网络环境下 Error 1033 (QUIC Timeout) 的连接问题。
- Ingress 规则:
- caibin.net -> localhost:8090 (博客)
- admin.caibin.net -> localhost:9090 (管理后台)
- ssh.caibin.net -> ssh://localhost:22 (SSH 远程)
- 服务自启:
通过 sudo cloudflared service install 注册为系统服务。
第五阶段:远程管理与可视化
- 安装 Cockpit:
sudo apt install cockpit,提供网页版 Linux 管理界面。 - 解决跨域拦截:
修改 /etc/cockpit/cockpit.conf,添加 Origins 白名单,允许从 https://admin.caibin.net 访问。 - 访问方式:
通过浏览器访问 admin.caibin.net,可查看 CPU、内存、终端操作。
第六阶段:安全加固(企业级防护)
- Zero Trust (零信任):
- 在 Cloudflare Access 中设置策略。
- 访问 admin.caibin.net 时,必须输入指定邮箱接收验证码,验证通过后才能看到登录界面。
- WAF 防火墙 (Geo-blocking):
- 设置规则:Protect WP Login。
- 逻辑:当访问 /wp-login.php 且 来源 IP 不属于中国 时,直接 Block (拦截)。
- SSH 安全:
- 修改了系统弱密码。
- 配置了 Windows 客户端 (.ssh/config) 使用 ProxyCommand 通过 Cloudflare 隧道连接 SSH。
4. 关键配置文件备份
A. Cloudflared 配置
文件位置: /etc/cloudflared/config.yml
YAML
tunnel: <UUID>
credentials-file: /etc/cloudflared/<UUID>.json
protocol: http2
ingress:
– hostname: caibin.net
service: http://localhost:8090
– hostname: admin.caibin.net
service: http://localhost:9090
– hostname: ssh.caibin.net
service: ssh://localhost:22
– service: http_status:404
B. Cockpit 配置
文件位置: /etc/cockpit/cockpit.conf
Ini, TOML
[WebService]
Origins = https://admin.caibin.net http://127.0.0.1:9090 http://localhost:9090
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true
C. Windows Hosts (客户端)
文件位置: C:\Windows\System32\drivers\etc\hosts
- 操作:删除了指向内网 IP 的 caibin.net 记录,强制 Chrome 走 Cloudflare 隧道,解决了 Chrome 无法访问而 Firefox 可以访问的问题。
5. 日常维护指南
如果遇到问题
- 网站打不开:
- 检查 ThinkPad 是否通电。
- 登录 Cockpit 查看 Docker 容器状态。
- 检查 Cloudflare 后台 Tunnel 状态是否为 Healthy。
- SSH 连不上:
- 内网使用:ssh [email protected]
- 外网使用:ssh [email protected]
- Chrome 缓存问题:
- 如果再次出现 Chrome 打不开,访问 chrome://net-internals/#dns 清理 Host Cache。
定期维护命令
建议每月登录终端执行一次:
Bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 重启服务器 (可选)
sudo reboot
项目状态:✅ 已完工 (Completed)
当前状态:系统运行中,全网可达,安全防护已开启。