HomeMiniServer: 家庭小型服务器搭建——环境搭建篇
碍于校园网络的限制和云服务器的昂贵价格,打算在家中搭建一个小型的服务器,用于校园网内设备互联的转发节点和其他的一些基础服务。
准备
主机配置
由于需要7x24小时运行,并且只是运行一些轻量的服务,因此对性能要求并不高,功耗低即可。在某🐟上不到200淘了个工控机,N2840,2C2T,4GB内存,120GB固态,一个千兆网卡。
获取公网ip
服务器能够正常使用,最好能有公网ip。没有其实也能解决,麻烦些罢了。公网ip需要联系运营商获取。
域名(可选)
由于家庭拨号获取的公网ip会动态更改,如果需要远程连接服务器,需要绑定一个域名来动态解析。本文使用花生壳提供的DDNS服务,因此最好有一个在花生壳注册的域名。其他注册商注册的域名也可以,需要转入解析或转入域名,或者可以先白嫖花生壳的壳域名一年用着先,到期再换。
安装 PVE 8.1
考虑到后面可能需要根据需求更换系统,便于远程更换系统和方便备份系统,给主机安装Proxmox VE
系统,可以通过web面板来管理系统镜像(只是想玩玩虚拟化罢了)
经过本人实际折腾后,可能由于EFI引导的问题,某些情况下,直接安装PVE系统镜像会无法引导。本人能力不足,不会修复grub引导。经过摸索后,尝试成功了两种安装方法。
(法一)直接安装PVE系统镜像
从官网下载ISO镜像:Download Proxmox software, datasheets, agreements
具体安装过程可以参考任意安装教程或官方文档,不再赘述,下面是一个参考教程。
如果顺利安装成功,那么恭喜你,可以跳到下一步了。如果在安装最后阶段“make system bootable” 出现报错“bootloader error”,那么你可能遇到和我一样的问题了。有可能是之前安装过其他系统造成的引导错误,可以换一种方法尝试安装PVE。
(法二)从Debian上安装PVE
参考官方文档,可以先安装Debian,再在Debian上安装PVE。目前对应的最新版本为Debian12和PVE8,参照官方文档的步骤安装系统:Install Proxmox VE on Debian 12 Bookworm - Proxmox VE
安装 Debian 12
从Debian – Downloading Debian下载 Debian 12 镜像后烧录到U盘,安装系统。
只需要安装 “standard system utilities” 和 "SSH server"即可,不需要安装桌面环境。
允许ssh root登录
vim /etc/ssh/sshd_config
修改PermitRootLogin prohibit-password
为
PermitRootLogin yes
重启ssh服务
/etc/init.d/ssh restart
配置静态ip
服务器需要固定ip,可以在路由器中绑定设备mac和ip地址,如果路由器没有提供该功能,可以在服务器上配置静态ip地址。
安装vim
, network-manager
修改配置文件
vim /etc/network/interfaces
将dhcp改为static,配置如下
auto lo
iface lo inet loopback
iface enp1s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.111/24
gateway 192.168.1.1
bridge-ports enp1s0
bridge-stp off
bridge-fd 0
重启网络服务(需要安装network-manager
systemctl restart networking.service
下载PVE
根据官方文档的步骤依次运行命令。
echo "deb [arch=amd64] [http://download.proxmox.com/debian/pve](http://download.proxmox.com/debian/pve) bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget [https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg](https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg) -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
# verify
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87 /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
apt update && apt full-upgrade
换源,先备份/etc/apt/sources.list.d/
路径下的所有文件,然后依次源为对应的国内镜像。
Proxmox 源使用帮助 — USTC Mirror Help 文档
佛西博客 - PROXMOX国内源设置教程 (buduanwang.vip)
- deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free
- deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free
- deb https://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free
- deb https://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib
- deb https://mirrors.ustc.edu.cn/proxmox/debian bookworm pve-no-subscription
然后更新apt
apt update
安装PVE Kernel
apt install proxmox-default-kernel
systemctl reboot
安装PVE Package
apt install proxmox-ve postfix open-iscsi chrony
删除Debian Kernel
apt remove linux-image-amd64 'linux-image-6.1*'
update-grub
apt remove os-prober
安装成功后,即可打开https://192.168.1.111:8006/
访问PVE控制面板
创建虚拟机 Ubuntu Server 22.04.3
安装系统镜像
从官网下载ISO镜像:Get Ubuntu Server | Download | Ubuntu
访问https://192.168.1.111:8006/
进入PVE面板
上传ISO镜像
![[Pasted image 20240129183649.png]]
创建虚拟机,一路默认即可,注意CPU类别要选择与主机CPU相对应的型号
配置静态ip
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
sudo vim /etc/netplan/00-installer-config.yaml
修改如下
network:
ethernets:
ens18:
addresses:
- 192.168.1.110/24
nameservers:
addresses: [192.168.1.1, 8.8.8.8]
routes:
- to: default
via: 192.168.1.1
version: 2
应用更改
sudo netplan apply
安装lxqt桌面和falkon浏览器
为了方便通过浏览器访问网关,便于调试维护,需要安装一个桌面环境和浏览器。尽量选择了轻量级的桌面和浏览器,在需要的时候启动。
安装 lxqt
shell中安装后重启即可
sudo apt install lxqt
sudo reboot
安装 falkon
安装好 lxqt 桌面后,在shell中输入
sudo snap install lxqt
关闭和开启图形化界面
平常使用时,我们一般不开启图形化界面,只在必要时开启。
可以通过快捷键切换终端和桌面:切换到终端命令行:ctrl + alt + f2
;切换回图形界面:ctrl + alt + f1
查看正在运行的服务:sudo service --status-all
其中,sddm
为lxqt
桌面服务。
关闭服务:sudo systemctl stop sddm
,此时,桌面被关闭
设置默认启动到多用户目标:sudo systemctl set-default multi-user
手动启动GUI:sudo systemctl start sddm
如何在Ubuntu 20.04 Desktop 中禁用/启用图形用户界面_ubuntu server sudo systemctl set-default grap-CSDN博客
在关闭图形界面后,缓存不会立即清除,需要手动清理缓存:
# 查看内存占用情况
free -h
# 清理buffer
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
# 如果提示没有权限,先进入超级管理员模式
sudo su
sync && echo 3 > /proc/sys/vm/drop_caches
配置DDNS
环境要求
- 公网 ip
- 域名(可选,先白嫖)
在主机PVE系统上安装花生壳客户端
由于PVE系统是基于Debian的,花生壳的客户端可以直接安装在PVE系统上。
从web控制面板或ssh登录shell终端
按步骤下载花生壳客户端
进入客户端下载页面花生壳客户端官方下载 - 贝锐花生壳官网 (oray.com),选择linux->Ubuntu Linux(X86_64)下载,复制命令行后,在终端运行
wget "https://dl.oray.com/hsk/linux/phddns_5.3.0_amd64.deb" -O phddns_5.3.0_amd64.deb
下载完成后,查看下载的安装包:
安装
dpkg -i phddns_5.3.0_amd64.deb
安装成功后,会显示设备SN码
登录花生壳控制台绑定设备并启动DDNS服务
访问http://b.oray.com登录控制台,通过SN码登录;如果之前注册登录过,会直接登录。
我是直接登录了控制台,登陆后,在设备列表 -> 添加设备 添加SN码绑定设备。然后点击 登录账号
输入默认密码登录。
登录成功后,在PVE主机终端,输入
phddns start
启动DDNS
可以通过 phddns status
查看设备状态
[!HINT] 直接输入
phddns
可以查看可选参数
检查域名解析状态
在花生壳控制台,域名列表 -> 默认赠送的域名 -> 诊断,可以看到域名是否正常解析。
路由器/网关设置端口映射
动态域名解析成功后,还不能直接访问到内网的PVE主机,需要设置端口映射,从而访问内网的指定端口。
登录路由器/网关,找到提供的端口映射
功能,将PVE主机ip的内部端口8006
映射到一个指定的外部端口上(如10888
),协议TCP或BOTH。这样一来,就可以通过外网访问PVE控制面板了。
测试是否配置成功,首先 更换网络,使用手机热点或其他网络(重要,同一网段下无法通过域名访问),然后,在浏览器中输入https://yourdomain.fun:10888
即可访问PVE登录界面,这里的域名和端口号替换成实际使用的值。
[!WARNING] 后记:这是一种极不安全的方式,请不要将PVE的管理页面暴露在公网上。如果需要外网访问,请使用VPN访问。
其他虚拟机外网访问
将DDNS服务直接运行在PVE系统上的好处是,只要PVE系统上的客户端一直运行,那么同网段下的所有设备和虚拟机都可以通过配置端口映射访问。
举例来说,之前已经在PVE上创建了一个 Ubuntu Server 虚拟机,如果想要通过外网登录ssh,只需要将 Ubuntu Server虚拟机ip的22端口映射到外部指定端口上,然后在外网输入
ssh username@yourdomain.fun -p [port]
这里username
替换成登录用户名;yourdomain.fun
替换成域名;[port]
替换成实际设置的外部端口。
同样的,其他的服务也可以通过绑定指定外部端口来访问。
[!WARNING] 请不要暴露你的web服务端口
DDNS更换自己的域名
如果觉得白嫖的花生壳域名太难记,自己已经有域名,但又不想在花生壳付费转入解析或再注册新的域名。可以创建一个子域名,添加一条CNAME记录到花生壳域名。
比如,你有一个在腾讯云DNS解析的域名mydomain.com
,和一个花生壳送的壳域名hskdomain.vicp.fun
,登录腾讯云控制台,在你的域名的记录管理中,增加一条记录
主机记录 | 记录类型 | 记录值 |
---|---|---|
home | CNAME | hskdomain.vicp.fun |
等待解析生效后,就可以使用自己的域名代替壳域名来访问内网的主机了。
Zerotier
弄完之后想了下,在公网上暴露端口太危险了,也容易被运营商封禁。考虑到服务器只是自己的设备用,并不打算公开,想到可以组建VPN访问。
需要在PVE系统和每个虚拟机上分别安装 zerotier,加入到VPN后,就可以像局域网的方式访问各主机。
安装zerotier
curl -s https://install.zerotier.com | sudo bash
zerotier-cli 使用
# 查看帮助
sudo zerotier-cli -h
# 查看状态
sudo zerotier-cli info
# 加入网络
sudo zerotier-cli join <networkid>
# 查看网络列表
sudo zerotier-cli listnetworks
开启与关闭 zerotier-one 服务
linux上的 zerotier以服务的方式运行,sudo service --status-all
可以查看当前的所有服务,可以看到,zerotier服务的名称是zerotier-one
。
![[Pasted image 20240130142239.png]]
可以通过以下命令来开启和关闭服务
sudo systemctl start zerotier-one
sudo systemctl stop zerotier-one
小结
至此,我们已经成功实现了家庭小型服务器的环境搭建。我们为服务器安装了PVE操作系统,并在上面运行了UbuntuServer虚拟机。实现了外网通过域名访问内网端口,且可以灵活开启图形化界面来设置网关。
还记得搭建这台服务器的初衷吗?下一步,我们将在这台服务器上部署流量转发和网盘等服务,充分发挥其公网优势,连接起校园网内的各个设备。