结论: 本地服务器搭建的标准流程是"装机 → Ubuntu Server 24.04 → 固定静态内网 IP → 开 SSH → 部署服务 → 路由器端口映射/内网穿透"。必须提前认清一个现实约束:家用宽带通常没有固定公网 IPv4,且 80/443 端口被运营商封锁,外网访问要靠非标端口、IPv6、内网穿透或一台云服务器中转。
引言:本地服务器是什么,和云服务器有什么不同
本地服务器(Local Server)指的是部署在家庭或办公室局域网内的物理机器,通过路由器上网,对外没有直接的公网可达性。它和云服务器最大的区别不在性能,而在网络可达性:云服务器有一个固定的公网 IP,而本地服务器通常只有形如 192.168.x.x 的内网地址,外面的人根本无法主动访问它。
正因如此,"搭建本地服务器"这件事真正的难点不在装系统——装系统半小时就能搞定——而在于如何让局域网外的设备访问到它。本文按完整链路拆解:硬件选型、系统安装、静态内网 IP、SSH 远程、端口映射、动态域名(DDNS)、内网穿透(frp),并专门说明家用宽带的两条硬约束与对应的替代方案。文末给出功耗与噪音的参考值,帮你在"一直开着"之前算清楚成本。
硬件怎么选?本地服务器的三种来源
先给结论:本地服务器不必买服务器级设备。家用/办公室场景下,一台带 8 GB 内存和 SSD 的迷你主机就足够跑十几个服务;旧电脑和二手小主机是性价比最高的两个来源。
| 方案 | 典型配置 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| x86 迷你主机(N100/N305 等) | 4~8 核 / 8~16 GB / 256 GB SSD | 功耗 6~25 W、静音、体积小 | 扩展槽少,硬盘位有限 | 首选,7×24 常开 |
| 旧台式机 / 旧笔记本 | i5 4~8 代 / 8~16 GB / SSD | 零成本、性能强、可加硬盘 | 功耗 40~120 W、风扇噪音 | 有闲置机器时 |
| 二手服务器(1U/2U) | 双路 Xeon / 32 GB+ | 扩展强、内存大 | 噪音 50 dB 以上、功耗 150 W+ | 不适合放家里 |
| 单板电脑(树莓派等) | ARM 4~8 核 / 4~8 GB | 功耗 5~10 W、极静音 | 性能弱、IO 瓶颈 | 轻量服务、智能家居 |
选型要点:
- 内存是第一优先级:8 GB 是舒适线,16 GB 可以跑虚拟化与更多容器;4 GB 只适合单一用途。
- 系统盘必须 SSD:本地服务器多为 7×24 运行,机械盘作为系统盘会让任何操作都显得卡顿;数据盘可用大容量 HDD。
- 有线千兆网口是硬要求:不要依赖 Wi-Fi 跑服务,无线网络的抖动会让你在排查问题时怀疑人生。
- 功耗决定长期成本:一台 15 W 的迷你主机一年约 131 度电,一台 80 W 的旧台式机一年约 700 度电,几年下来电费差距可能超过机器本身的价格。
安装 Ubuntu Server 24.04 LTS
先给结论:本地服务器首选 Ubuntu Server 24.04 LTS(或 Debian 12),无图形界面、资源占用低、文档最全;不要用带桌面的发行版,图形环境会白白吃掉 1~2 GB 内存。
安装步骤:
- 从官方镜像站下载 Ubuntu Server 24.04 LTS 的 ISO 文件。
- 用 Rufus 或 Ventoy 制作启动 U 盘(
dd命令也可:sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress)。 - U 盘启动,选择语言与键盘布局,进入安装向导。
- 网络配置页先保持 DHCP,安装完成后再改成静态 IP(更容易一次成功)。
- 磁盘分区选"使用整块磁盘",普通场景不必手动分区;需要保留数据时选手动并单独挂载
/data。 - 关键一步:勾选 "Install OpenSSH server",省去装完再装的麻烦。
- 安装完成后拔出 U 盘重启,用路由器后台查看分配到的内网 IP。
# 装完后的标准初始化动作
sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Asia/Shanghai
sudo hostnamectl set-hostname home-server
sudo apt install -y vim curl wget git net-tools htop iotop iftop tmux
hostnamectl # 确认主机名生效
timedatectl status | grep -E 'NTP|Time zone'配置静态内网 IP(netplan)
先给结论:本地服务器必须配置静态内网 IP,否则路由器重启后 IP 变化,端口映射规则会全部失效,你会遇到"昨天还好好的,今天访问不了"的经典故障。
先确认网卡名称(Ubuntu 24.04 常见为 enp3s0、ens33、eth0,不要用猜的):
ip -br link show
ip route show default # 记下默认网关,通常是 192.168.1.1编辑 netplan 配置文件(文件名以实际为准,通常在 /etc/netplan/ 下):
# /etc/netplan/00-installer-config.yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0: # 改成你的实际网卡名
dhcp4: no
dhcp6: no
addresses:
- 192.168.1.100/24 # 静态内网 IP,建议选 DHCP 池之外的地址
routes:
- to: default
via: 192.168.1.1 # 路由器网关地址
nameservers:
addresses:
- 192.168.1.1
- 223.5.5.5
- 8.8.8.8应用配置并验证:
sudo chmod 600 /etc/netplan/00-installer-config.yaml # netplan 要求权限不过于开放
sudo netplan generate
sudo netplan apply
# 验证:IP 已生效、网关可达、DNS 正常
ip -4 addr show enp3s0
ip route show default
ping -c 3 192.168.1.1
ping -c 3 -W 2 223.5.5.5
resolvectl status | grep -A3 'DNS Servers'要点提示:
- IP 地址要避开路由器的 DHCP 地址池(常见池为
192.168.1.100~199),否则可能与自动分配的其它设备冲突。建议在路由器后台把该 IP 与服务器 MAC 地址做静态绑定(DHCP Reservation),双重保险。 netplan apply会中断当前 SSH 连接,务必在显示器前或通过路由器后台确认,不要远程盲改。- 如果改错导致断网,可用
sudo netplan --debug apply排查,或在本地控制台执行sudo netplan revert回滚。
开启 SSH 并做基础加固
先给结论:SSH 是本地服务器唯一的命令行入口,必须开启并改成密钥登录,尤其是当你打算把它映射到外网时。
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo ss -lntup | grep sshd # 确认监听状态
# 生成密钥(在你的日常电脑上执行)
ssh-keygen -t ed25519 -C "home-server"
ssh-copy-id user@192.168.1.100修改 SSH 配置(Ubuntu 24.04 默认启用了 socket 激活,改端口需要同时改 socket 单元):
sudo tee /etc/ssh/sshd_config.d/99-hardening.conf <<'EOF'
Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
EOF
# Ubuntu 24.04 的 ssh.socket 会覆盖端口,需同步修改
sudo systemctl edit ssh.socket在弹出的编辑器中写入:
[Socket]
ListenStream=
ListenStream=2222sudo systemctl daemon-reload
sudo systemctl restart ssh
sudo ss -lntup | grep 2222
# 防火墙只放行内网访问 SSH
sudo ufw default deny incoming
sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable注意:改端口前先用当前连接测试通过,避免把自己锁在门外。确认新端口可登录后再关闭旧端口。
路由器端口映射:让外网能访问到本地服务器
先给结论:端口映射(Port Forwarding / 虚拟服务器)是"把路由器公网端口转发到内网服务器端口"的规则,只有当路由器 WAN 口拿到的是真正的公网 IPv4 时才有效。
配置步骤(不同品牌界面名称不同,逻辑一致):
- 浏览器访问路由器管理地址(常见
192.168.1.1或192.168.31.1),登录。 - 找到"转发规则 / 虚拟服务器 / 端口映射 / NAT"菜单。
- 新增规则:外部端口
2222、内部 IP192.168.1.100、内部端口2222、协议TCP、状态"启用"。 - 若要映射 Web 服务,外部端口填
8080、内部端口80(不要用 80/443 作为外部端口,运营商通常已封锁)。 - 保存并在路由器后台查看 WAN 口 IP 地址。
然后用手机蜂窝网络(断开 Wi-Fi)测试:
# 在手机或另一网络的电脑上执行
nc -vz 你的公网IP 2222
ssh -p 2222 user@你的公网IP
curl -v http://你的公网IP:8080必须认清的两条现实约束
- 家用宽带通常没有固定公网 IPv4。运营商给你分配的多是动态 IP,甚至根本不是公网 IP(CGNAT,地址形如
10.x.x.x、100.64.x.x、172.16~31.x.x)。判断方法:对比路由器 WAN 口显示的 IP 与curl ifconfig.me返回的 IP,两者不一致即为 CGNAT,此时端口映射完全无效,只能用内网穿透或 IPv6。 - 80/443 端口普遍被运营商封锁。即便你有公网 IP,外部访问 80/443 也会被拦。替代方案:① 改用非标端口(如 8080、8443);② 用 IPv6(多数家宽已分配 IPv6 且不封端口);③ 用内网穿透;④ 用一台云服务器做反向代理中转。
DDNS 动态域名:解决公网 IP 会变的问题
先给结论:如果你有动态公网 IPv4,DDNS(动态域名解析)是必须配的,它把变动的 IP 自动同步到一个固定域名上,否则 IP 一变你就失联。
# 1. 确认自己是否拥有公网 IPv4(对比两个值是否一致)
curl -s -4 ifconfig.me # 公网看到的 IP
ip route get 1.1.1.1 | awk '{print $7; exit}' # 本机出网使用的地址
# 2. 在路由器后台(网络参数 / DDNS)填写服务商账号,多数路由器内置支持
# 若路由器不支持,则在服务器上用脚本定时更新(以 Cloudflare API 为例)
sudo mkdir -p /etc/ddns
sudo tee /usr/local/bin/ddns-update.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
CF_TOKEN="你的API令牌"
ZONE_ID="你的ZoneID"
RECORD_ID="你的记录ID"
NAME="home.example.com"
IP=$(curl -s -4 ifconfig.me)
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${RECORD_ID}" \
-H "Authorization: Bearer ${CF_TOKEN}" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"${NAME}\",\"content\":\"${IP}\",\"ttl\":120,\"proxied\":false}"
EOF
sudo chmod 700 /usr/local/bin/ddns-update.sh
# 3. 每 5 分钟检查一次,IP 变化即更新
echo '*/5 * * * * /usr/local/bin/ddns-update.sh >> /var/log/ddns.log 2>&1' | sudo tee /etc/cron.d/ddns
dig +short home.example.comDDNS 要点:
- TTL 设短(60~300 秒),否则 IP 变更后客户端仍会解析到旧地址,等待时间过长。
- 脚本权限设为 700,因为里面含 API 令牌。
- 不要开启 CDN 代理(proxied=false):CDN 代理只支持 80/443 等特定端口,会让你的 2222、8080 端口无法访问。
企业QQ咨询




