家用服务器 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

相关推荐
大树8815 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠15 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质16 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz16 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工17 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智17 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_17 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈18 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉18 小时前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
程序猿阿伟18 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome