应用台导航页
  • 主页
  • 博客
  • 知识库
  • 工作台
  • 集萃
  • 友链
  • 关于
我是如何搭建家庭服务器的

我是如何搭建家庭服务器的

技术
更新于 2026-09-09
— 4474 字
返回

知识库目录

  • 为服务器配置科学上网

为什么需要家庭服务器:我之前开发的web 应用都是部署在 vercel 上,长时间以来,十几个应用的用量都没有超过 vercel 的免费额度,但近两个月,由于在抖音得到了不少视频博主的推广, 高校分布可视化平台 这个应用的访问量突增,用量已大幅超出免费额度。升级了 pro plan 之后,包含的每月 20刀 的默认额度也 cover 不住了,还产生了不少额外费用。

VPS 价格贵,配置低。通常优惠的都是 2C 2G,跑不了几个业务。而且往往只能申请一次。

  1. 用来做什么:主力业务肯定不行,目前用来部署 umami 做统计分析等。

所需硬件及配置

我购买的迷你主机配置为:J1900 8+256G 。虽然 CPU 性能很差,但足够大的内存能支撑我部署很多玩具应用了。

我是在淘宝 科比特迷你电脑小主机 这家店买的,价格只需 387 元,再加上转接头也不到 400 元,让客服预装 ubuntu server 26 ,答复说 26 装不下,只能装 24 ,就很智障。

我的家庭服务器
我的家庭服务器

整个过程额外引入的硬件有:

  • 一根网线
  • 一台迷你主机
  • DP 转 HDMI 转接头(我购买的迷你主机没有 HDMI口,只有DP,而显示器又没有 DP 口,所以需要用到转接头)。

效果和试用体验

硬件功耗真很低,几乎感受不到什么发热量。

安装部署过程解决国内网络环境问题。

配置、使用过程中,安装 ddns-go 、拉取 docker 镜像等过程,国内都会遇到网络访问障碍。可参考 为服务器配置科学上网 这篇教程,通过安装 Mihomo ,来解决网络环境问题。

家庭服务器如何实现公网访问

ipv6 DDNS + ipv4 frp 。

  • DDNS-Go 配置AAAA 记录,自动更新 IPv6 地址到域名

使用 DDNS 动态解析域名到 IPv6 地址

虽然公网 ipv4 对于家庭宽带用户基本是不可指望的,但 ipv6 地址却是触手可及的,于是可以将域名解析到公网 ipv6 地址,用户最终使用 ipv6 访问服务。

根据我有限的经验,移动基本是默认开启ipv6的,电信似乎则不然。虽然 ipv6 可能会变,但可以定时自动根据 ipv6 地址更新域名解析。这个我几年前就写过 shell 脚本实现过,我最近才知道这种技术叫做 DDNS ,还了解到有一个叫 DDNS-GO 的工具可以很方便地配置实现这个功能,试了下果然 一分钟就配好了,比自己折腾脚本要方便多了。

无线路由器之前已经改成桥接模式,网关直接获取 ip 地址,基本不会变。

获取运营商光猫超级管理员密码

为了确保 ipv6 开启,可能需要获取运营商光猫的管理员密码,以进行一些配置,比如关闭一些防火墙项等。

当然可以直接联系售后说明需求,但如若不成功,就需要自己尝试获取了。我使用的移动光猫是 HG6145D 这个型号,在这里也把我的经验分享出来。

HG6145D 如何获取超级管理员密码

超管账号的获取我主要参考: 移动光猫怎么改桥接模式? - 知乎 这篇文章获取。但实际过程还是有些出入,主要是打开 telnet 还需要带上 key 这个参数。具体步骤如下:

  1. 开启设备 telnet 连接:设备Telnet 默认是关闭的,需要用带 MAC 的特殊 URL 开启,浏览器地址栏访问:http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable=1&key=AABBCCDDEEFF (替换 key= 后面为你的 MAC)
  2. 登录 Telnet:Windows 先开启 Telnet 功能1,然后:telnet 192.168.1.1
    • 用户名:admin
    • 密码:Fh@ + MAC 后6位(大写)
  3. 运行以下命令,会显示 CMCCAdmin / 超级密码,可登录网页管理页。
    load_cli factory show admin_pwd

安装 DDNS-GO

相关内容

  • 为服务器配置科学上网

文章大纲

  • 所需硬件及配置
  • 效果和试用体验
  • 安装部署过程解决国内网络环境问题。
  • 家庭服务器如何实现公网访问
    • 使用 DDNS 动态解析域名到 IPv6 地址
    • 获取运营商光猫超级管理员密码
      • HG6145D 如何获取超级管理员密码
      • 安装 DDNS-GO
    • 使用 FRP 转发云服务器公网 ipv4 流量到内网服务器
      • 云服务器Nginx与FRP端口冲突解决方案
  • 常用命令
    • 查看所有监听端口
    • ubuntu 防火墙开放端口
    • 查看 CPU 架构
    • nginx 配置
  • 脚注

选项
文章 ID: 534

相关内容

  • 为服务器配置科学上网

    为服务器配置科学上网

    创建于2026-06-17

  • FRP 部署教程

    FRP 部署教程

    更新于2026-06-22

为服务器配置科学上网

创建于2026-06-17

  • FRP 部署教程
    FRP 部署教程

    更新于2026-06-22

  • 我的域名基本都使用了 Vercel 的域名解析服务器,ddns-go支持 Vercel API,这让我喜出望外, ddns-go 安装过程:

    1. 下载并解压:访问 ddns-go Releases 页面查看最新版本。这里以 v6.0.0 为例(请根据实际情况替换版本号):
      # 创建并进入安装目录 mkdir -p /opt/ddns-go && cd /opt/ddns-go # 下载对应架构的包 wget https://github.com/jeessy2/ddns-go/releases/download/v6.0.0/ddns-go_6.0.0_linux_x86_64.tar.gz # 解压文件 tar -zxvf ddns-go_6.0.0_linux_x86_64.tar.gz
    2. 安装为系统服务:ddns-go 提供了自带的服务安装命令,非常方便:
      # 安装并启动服务 sudo ./ddns-go -s install
    • 其他常用管理命令:
      • 卸载服务:sudo ./ddns-go -s uninstall
      • 启动服务:sudo systemctl start ddns-go
      • 停止服务:sudo systemctl stop ddns-go

    安装成功后, ddns-go 都会默认在后台监听 9876 端口。如果你的 Ubuntu 开启了防火墙,需要允许 9876 端口通行:

    sudo ufw allow 9876/tcp

    这之后进入 Web 界面配置,打开浏览器,访问对应服务器的9876 端口,在 web 界面中选择DNS 服务商(我使用的是 Vercel),填写对应的 Token/Secret Key。后,在 IPv6 的 Domains 栏输入你的域名,点击保存,右上角会立刻显示解析日志,提示是否解析成功。

    ipv6 虽好,能轻易让家庭服务器达到远远大于低价 VPS 的上行带宽,但问题在于覆盖不全。许多网络环境下,ipv6 通信仍然不受支持。经过我的实践,尽管中国移动蜂窝网络大多都支持,但例如我在单位使用的电信的宽带也好,还有许多国内外的云服务器也罢,都不支持访问 ipv6 地址。这就意味着,如果域名只解析 ipv6 地址,部署服务后,访问会非常受限,不仅是没法作为生产环境供一般用户使用,就算只是自己个人使用,也非常不便。

    使用 FRP 转发云服务器公网 ipv4 流量到内网服务器

    所以回过头来,还是需要支持 ipv4 访问。而由于公网 ipv4 地址是不可得的,就必然需要第三方服务器做中转实现内网穿透。一旦依赖于第三方服务器,就涉及费用,免费或低价的方案,就会造成带宽受限(例如低价云服务器),或者由于服务器在境外而有较大时延(例如使用 Cloudflare Tunnel),总之都不会很理想,这就是为什么虽然 ipv6 不能覆盖所有网络环境,我也要解析的原因。

    经权衡,最终我选择了使用国内云服务器安装 FRP 来做内网穿透。

    FRP(Fast Reverse Proxy)是一个反向代理内网穿透程序。其原理是:

    1. 内网 frpc 主动连接公网 frps,注册本地服务;
    2. 外网用户访问云服务器公网地址 / 端口;
    3. frps 通过已建立的隧道,把请求转发到内网设备,实现双向通信。

    参考 FRP 部署教程 | 花野猫的数字花园

    云服务器Nginx与FRP端口冲突解决方案

    云服务器作为 FRP 服务器,然后我的家庭服务器作为 FRP 客户端,可是云服务器的 80 和 443 端口已经被 Nginx 监听了,但是有的业务我还是想跑在家庭服务器上,并且使用 80 和 443 端口,这样的话要怎么办呢?能做到吗?

    可以做到,核心是用Nginx做反向代理转发。先在云服务器frp配置里,把家庭服务器的80和443映射到云服务器的其他空闲端口,比如8080和8443。然后在Nginx里针对需要走家庭服务器的域名,配置反向代理到这两个映射端口,同时处理好SSL证书就行。

    常用命令

    查看所有监听端口

    ss -tulnp
    # 释义
    # -t:TCP 端口
    # -u:UDP 端口
    # -l:仅监听状态
    # -n:数字格式(不解析域名/端口名)
    # -p:显示对应进程

    ubuntu 防火墙开放端口

    1. 启用防火墙(如未启用)
    sudo ufw enable

    注意:远程服务器先放行 ssh(22 端口)再 enable,否则可能断连。

    1. 查看防火墙状态
    sudo ufw status

    没启用会显示 inactive。

    1. 开放一段端口(示例:7000–10000)
    • 只放 TCP:

      sudo ufw allow 7000:10000/tcp
    • TCP+UDP 都放:

      sudo ufw allow 7000:10000
    1. 只允许特定 IP 访问这段端口(更安全)
    sudo ufw allow from 192.168.1.0/24 to any port 7000:10000
    1. 删除这条规则(不用时)
    # 按编号删(推荐) sudo ufw delete 编号 # 或直接删规则 sudo ufw delete allow 7000:10000/tcp‘

    查看 CPU 架构

    1. 下载软件包需要知道自己 CPU 的CPU 架构,Linux 命令:uname -m 2
    • x86_64:64位 x86 架构(主流电脑/服务器)
    • i686/i386:32位 x86
    • aarch64/arm64:ARM64(树莓派、国产ARM服务器、手机类)
    • armv7l:32位 ARM
    • riscv64:RISC-V 架构

    或者使用 lscpu查看详细硬件信息:

    重点看这两行:

    Architecture: # 架构(x86_64 / aarch64 等)
    CPU op-mode(s): # 支持32/64位模式

    nginx 配置

    1. sudo vi /etc/nginx/sites-available/umami 为什么我加了这个配置文件但不生效 ,还要 nginx sudo ln -s /etc/nginx/sites-available/umami /etc/nginx/sites-enabled/ 查看所有监听端口 ss -tulpn

    脚注

    1. windows 默认不启用 telnet 功能,可使用 PowerShell 管理员执行 dism /online /Enable-Feature /FeatureName:TelnetClient 开启 ↩

    2. uname 为 Unix Name 的缩写,用于查询系统内核信息;参数 -m 取自英文 machine(机器硬件),该指令会读取内核 utsname 结构体中的机器硬件标识字段,输出当前 CPU 架构。 ↩

    为服务器配置科学上网

    创建于2026-06-17

  • FRP 部署教程

    FRP 部署教程

    更新于2026-06-22

  • dors logoDors

    Dors 是花野猫开发为知识工作者打造的数字花园应用,包含的博客、个人记事本、及其他实用功能。

    花园

    • 花坛——博客
    • 果园——知识库

    工坊——作者开发的实用工具

    • 小记
    • 秒切——一键按秒分割视频
    • 中国重点高校地理位置可视化网站
    • 中国行政区划数据查询平台
    • excel 重命名工具

    misc

    • 生活章程
    • 画廊
    • just have fun!

    © 2022 - present. All Rights Reserved.滇ICP备2025063395号-1

    花野猫打造