CAIBIN

ThinkPad T450s Linux 服务器部署与整备全记录

这份文档详细记录了我将一台闲置的 ThinkPad T450s 改造为企业级标准、高安全性的 Linux 家庭服务器的全过程。

可以将此文档保存为 PDF 或 Markdown 文件,作为未来的维护手册。

🛠️ ThinkPad T450s Linux 服务器部署与整备全记录

项目代号:BlakeServer

部署时间:2026年1月

操作人:Blake

1. 项目目标

  1. 数据抢救:从手机 Termux 环境中迁移 WordPress 网站数据。
  2. 硬件利旧:利用闲置 ThinkPad T450s 搭建 7×24 小时运行的服务器。
  3. 全球访问:通过 Cloudflare Tunnel 实现无公网 IP 的内网穿透。
  4. 安全加固:实现 Zero Trust(零信任)访问控制和 WAF 防火墙。
  5. 自动化:实现断电自启、合盖不休眠、服务自愈。

2. 硬件与系统环境

  • 服务器硬件:Lenovo ThinkPad T450s
  • 操作系统:Ubuntu Server (Linux)
  • 关键组件:Docker, Docker Compose, Cloudflared, Cockpit
  • 客户端:Windows (联想拯救者), Android 手机

3. 部署全流程记录

第一阶段:基础系统搭建

  1. 安装系统:抹除原 Windows 数据,安装 Ubuntu Server。
  2. 网络配置:连接家庭 WiFi,固定内网 IP 为 192.168.1.53。
  3. 电源管理(关键)
  • 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 部署

  1. 安装 Docker
    Bash
    sudo apt update
    sudo apt install docker.io docker-compose-v2 -y
    sudo systemctl enable docker
  2. 编排容器 (docker-compose.yml)
  • 路径:~/wordpress/docker-compose.yml
  • 配置:包含 WordPress (端口 8090) 和 MySQL 5.7。
  • 问题修复:MySQL 5.7 在新架构下需要指定 platform: linux/amd64 以兼容运行。
  1. 启动服务
    Bash
    cd ~/wordpress
    sudo docker compose up -d

第三阶段:数据迁移与修复

  1. 导入数据库
    将 Termux 导出的 SQL 文件导入新容器:
    Bash
    cat ~/caibin_db.sql | sudo docker exec -i wordpress_db mysql -u bin_user -p’密码’ wordpress
  2. 修复 WP Super Cache 报错
  • 现象:仪表盘提示无法更新 wp-config.php,未定义 WPCACHEHOME。
  • 修复:在 wp-config.php 头部手动添加:
    define( ‘WPCACHEHOME’, ‘/var/www/html/wp-content/plugins/wp-super-cache/’ );
  1. 修复文件权限
    Bash
    sudo chown -R 33:33 ~/wordpress/html

第四阶段:Cloudflare Tunnel 内网穿透(核心网络)

  1. 安装 Cloudflared
    下载 .deb 包并手动安装,绑定 Cloudflare 账号。
  2. 配置隧道 (/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 远程)
  1. 服务自启
    通过 sudo cloudflared service install 注册为系统服务。

第五阶段:远程管理与可视化

  1. 安装 Cockpit
    sudo apt install cockpit,提供网页版 Linux 管理界面。
  2. 解决跨域拦截
    修改 /etc/cockpit/cockpit.conf,添加 Origins 白名单,允许从 https://admin.caibin.net 访问。
  3. 访问方式
    通过浏览器访问 admin.caibin.net,可查看 CPU、内存、终端操作。

第六阶段:安全加固(企业级防护)

  1. Zero Trust (零信任)
  • 在 Cloudflare Access 中设置策略。
  • 访问 admin.caibin.net 时,必须输入指定邮箱接收验证码,验证通过后才能看到登录界面。
  1. WAF 防火墙 (Geo-blocking)
  • 设置规则:Protect WP Login。
  • 逻辑:当访问 /wp-login.php 且 来源 IP 不属于中国 时,直接 Block (拦截)。
  1. 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. 日常维护指南

如果遇到问题

  1. 网站打不开
  • 检查 ThinkPad 是否通电。
  • 登录 Cockpit 查看 Docker 容器状态。
  • 检查 Cloudflare 后台 Tunnel 状态是否为 Healthy。
  1. SSH 连不上
  1. Chrome 缓存问题
  • 如果再次出现 Chrome 打不开,访问 chrome://net-internals/#dns 清理 Host Cache。

定期维护命令

建议每月登录终端执行一次:

Bash

# 更新系统
sudo apt update && sudo apt upgrade -y

# 重启服务器 (可选)
sudo reboot


项目状态:✅ 已完工 (Completed)

当前状态:系统运行中,全网可达,安全防护已开启。