家用服务器 Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南

Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南

本文档总结了我们讨论的所有内容,包括 Ubuntu 服务器配置、硬盘扩容、静态 IP 设置以及 Cloudflare Tunnel 的部署步骤。

目录

  1. 硬盘分区与扩容
  2. [设置静态 IP](#设置静态 IP)
  3. [Cloudflare Tunnel 部署](#Cloudflare Tunnel 部署)
  4. [SSH 通过 Cloudflare Tunnel](#SSH 通过 Cloudflare Tunnel)
  5. 常见问题与解决方案

硬盘分区与扩容

问题分析

物理硬盘为 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

配置步骤

  1. 确定网络接口名称:

    bash 复制代码
    ip a

    找到主要网络接口名称(如 eth0、ens33 等)

  2. 创建/编辑 Netplan 配置文件:

    bash 复制代码
    sudo nano /etc/netplan/01-netcfg.yaml
  3. 添加静态 IP 配置(中国大陆优化版):

    yaml 复制代码
    network:
      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]
  4. 应用配置:

    bash 复制代码
    sudo netplan apply
  5. 验证配置:

    bash 复制代码
    ip a
    ping -c 4 baidu.com

Cloudflare Tunnel 部署

安装与配置

  1. 安装 cloudflared:

    bash 复制代码
    wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
    sudo dpkg -i cloudflared-linux-amd64.deb
    cloudflared --version
  2. 登录 Cloudflare:

    bash 复制代码
    cloudflared login
  3. 创建隧道:

    bash 复制代码
    cloudflared tunnel create fengche-homeserver
  4. 配置隧道:

    bash 复制代码
    sudo mkdir -p /etc/cloudflared
    sudo nano /etc/cloudflared/config.yml

    配置文件内容:

    yaml 复制代码
    tunnel: <你的隧道ID>
    credentials-file: /root/.cloudflared/<你的隧道ID>.json
    origincert: /root/.cloudflared/cert.pem
    
    ingress:
      - hostname: <你的域名>
        service: http://localhost:80
      - service: http_status:404
  5. 配置 DNS:

    bash 复制代码
    cloudflared tunnel route dns fengche-homeserver <你的域名或子域名>

    注意:如果域名已有 DNS 记录,使用子域名或先删除现有记录。

设置为系统服务

  1. 创建自定义系统服务文件:

    bash 复制代码
    sudo 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
  2. 启动并设置开机自启:

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl start cloudflared
    sudo systemctl status cloudflared
    sudo systemctl enable cloudflared

SSH 通过 Cloudflare Tunnel

配置步骤

  1. 修改配置文件:

    bash 复制代码
    sudo nano /etc/cloudflared/config.yml

    添加 SSH 服务:

    yaml 复制代码
    tunnel: <你的隧道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
  2. 更新 DNS 记录:

    bash 复制代码
    cloudflared tunnel route dns fengche-homeserver ssh.<你的域名>
  3. 重启服务:

    bash 复制代码
    sudo systemctl restart cloudflared

客户端连接

使用 cloudflared 作为代理:

  1. 在客户端安装 cloudflared

  2. 使用以下命令连接:

    bash 复制代码
    cloudflared access ssh --hostname ssh.<你的域名>

或配置 SSH 配置文件:

复制代码
Host <服务器名称>
  ProxyCommand cloudflared access ssh --hostname ssh.<你的域名>
  User <用户名>

常见问题与解决方案

Cloudflare Tunnel 在中国大陆的访问情况

  • Cloudflare 的部分 IP 在中国大陆可能被限制访问
  • 访问体验可能不稳定,取决于地理位置和网络提供商
  • 建议先测试访问速度和稳定性,再决定是否全面采用

隧道凭证问题

如果遇到 "Tunnel credentials file doesn't exist" 错误:

  1. 确保以相同用户身份创建和运行隧道
  2. 检查凭证文件路径是否正确
  3. 必要时重新创建隧道

服务启动失败

如果系统服务启动失败但手动命令可以运行:

  1. 使用自定义服务文件直接调用可工作的命令
  2. 检查日志获取详细错误信息:sudo journalctl -u cloudflared -f

DNS 记录冲突

如果遇到 "An A, AAAA, or CNAME record with that host already exists" 错误:

  1. 使用子域名而不是根域名
  2. 或删除现有 DNS 记录后再配置

演示站 fengche.site

相关推荐
极光通讯15 小时前
呆滞库存回收定价逻辑:如何评估DDR4内存和SATA SSD的回收价值
服务器·ssd
技术人生00115 小时前
VMware Workstation 安装 Ubuntu 24.04 LTS 完整教程
运维·服务器·ubuntu
YumiProxy15 小时前
动态IP冲突排查实战:从ARP检测到DHCP地址池的完整链路
服务器·网络·网络协议·tcp/ip·ip
ai小陈16 小时前
GPU服务器租用容器实战:Docker数据卷持久化与安全重建
服务器·人工智能·安全·docker·ai·gpu算力
智能运维指南16 小时前
从分散运维到统一运维:2026 统一运维管理体系建设路径与选型要点
运维·一体化运维·智能运维·嘉为蓝鲸
ITyunwei098716 小时前
ITIL 5 落地前,先补齐工单数据底座的 4 步
运维·企业微信
ai小陈16 小时前
深度学习CUDA OOM排查:显存占用与碎片问题实战
服务器·人工智能·python·深度学习·ai·gpu算力
GPU实战笔记16 小时前
项目实例端口异常:修复端口与重置端口的决策边界
服务器·端口·网络连接·故障排查·云服务器
实点科技16 小时前
远程IO模块的柜外安装:装在什么位置、防尘罩怎么选配
运维·服务器·网络