Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南
本文档总结了我们讨论的所有内容,包括 Ubuntu 服务器配置、硬盘扩容、静态 IP 设置以及 Cloudflare Tunnel 的部署步骤。
目录
- 硬盘分区与扩容
- [设置静态 IP](#设置静态 IP)
- [Cloudflare Tunnel 部署](#Cloudflare Tunnel 部署)
- [SSH 通过 Cloudflare Tunnel](#SSH 通过 Cloudflare Tunnel)
- 常见问题与解决方案
硬盘分区与扩容
问题分析
物理硬盘为 128GB,但 Ubuntu 服务器只使用了约 58GB 空间。通过 lsblk
命令查看:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 1.1G 0 part /boot/efi
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 116.2G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 58.1G 0 lvm /
解决方案
LVM 逻辑卷只使用了 58.1GB,而物理分区 sda3 有 116.2GB。需要扩展 LVM 逻辑卷:
bash
# 1. 查看卷组中可用空间
sudo vgdisplay ubuntu-vg
# 2. 扩展逻辑卷以使用所有可用空间
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 3. 调整文件系统大小以匹配逻辑卷大小
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
设置静态 IP
配置步骤
-
确定网络接口名称:
baship a
找到主要网络接口名称(如 eth0、ens33 等)
-
创建/编辑 Netplan 配置文件:
bashsudo nano /etc/netplan/01-netcfg.yaml
-
添加静态 IP 配置(中国大陆优化版):
yamlnetwork: version: 2 renderer: networkd ethernets: <你的网络接口>: dhcp4: no addresses: - 192.168.1.20/24 gateway4: 192.168.1.1 nameservers: addresses: [223.5.5.5, 223.6.6.6, 114.114.114.114]
-
应用配置:
bashsudo netplan apply
-
验证配置:
baship a ping -c 4 baidu.com
Cloudflare Tunnel 部署
安装与配置
-
安装 cloudflared:
bashwget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared-linux-amd64.deb cloudflared --version
-
登录 Cloudflare:
bashcloudflared login
-
创建隧道:
bashcloudflared tunnel create fengche-homeserver
-
配置隧道:
bashsudo mkdir -p /etc/cloudflared sudo nano /etc/cloudflared/config.yml
配置文件内容:
yamltunnel: <你的隧道ID> credentials-file: /root/.cloudflared/<你的隧道ID>.json origincert: /root/.cloudflared/cert.pem ingress: - hostname: <你的域名> service: http://localhost:80 - service: http_status:404
-
配置 DNS:
bashcloudflared tunnel route dns fengche-homeserver <你的域名或子域名>
注意:如果域名已有 DNS 记录,使用子域名或先删除现有记录。
设置为系统服务
-
创建自定义系统服务文件:
bashsudo nano /etc/systemd/system/cloudflared.service
添加以下内容:
[Unit] Description=Cloudflare Tunnel After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/cloudflared tunnel run fengche-homeserver Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target
-
启动并设置开机自启:
bashsudo systemctl daemon-reload sudo systemctl start cloudflared sudo systemctl status cloudflared sudo systemctl enable cloudflared
SSH 通过 Cloudflare Tunnel
配置步骤
-
修改配置文件:
bashsudo nano /etc/cloudflared/config.yml
添加 SSH 服务:
yamltunnel: <你的隧道ID> credentials-file: /root/.cloudflared/<你的隧道ID>.json origincert: /root/.cloudflared/cert.pem ingress: - hostname: ssh.<你的域名> service: ssh://localhost:22 - hostname: <你的域名> service: http://localhost:80 - service: http_status:404
-
更新 DNS 记录:
bashcloudflared tunnel route dns fengche-homeserver ssh.<你的域名>
-
重启服务:
bashsudo systemctl restart cloudflared
客户端连接
使用 cloudflared 作为代理:
-
在客户端安装 cloudflared
-
使用以下命令连接:
bashcloudflared access ssh --hostname ssh.<你的域名>
或配置 SSH 配置文件:
Host <服务器名称>
ProxyCommand cloudflared access ssh --hostname ssh.<你的域名>
User <用户名>
常见问题与解决方案
Cloudflare Tunnel 在中国大陆的访问情况
- Cloudflare 的部分 IP 在中国大陆可能被限制访问
- 访问体验可能不稳定,取决于地理位置和网络提供商
- 建议先测试访问速度和稳定性,再决定是否全面采用
隧道凭证问题
如果遇到 "Tunnel credentials file doesn't exist" 错误:
- 确保以相同用户身份创建和运行隧道
- 检查凭证文件路径是否正确
- 必要时重新创建隧道
服务启动失败
如果系统服务启动失败但手动命令可以运行:
- 使用自定义服务文件直接调用可工作的命令
- 检查日志获取详细错误信息:
sudo journalctl -u cloudflared -f
DNS 记录冲突
如果遇到 "An A, AAAA, or CNAME record with that host already exists" 错误:
- 使用子域名而不是根域名
- 或删除现有 DNS 记录后再配置
演示站 fengche.site