自己拥有一台服务器可以做哪些很酷的事情?
碍于校园网络的限制和云服务器的昂贵价格,打算在家中搭建一个小型的服务器,用于校园网内设备互联的转发节点和其他的一些基础服务。
1. 准备
1.1. 主机配置
由于需要7x24小时运行,并且只是运行一些轻量的服务,因此对性能要求并不高,功耗低即可。在某 上不到200淘了个工控机,N2840,2C2T,4GB内存,120GB固态,一个千兆网卡。
1.2. 获取公网ip
服务器能够正常使用,最好能有公网ip。没有其实也能解决,麻烦些罢了。公网ip需要联系运营商获取。
1.3. 域名(可选)
由于家庭拨号获取的公网ip会动态更改,如果需要远程连接服务器,需要绑定一个域名来动态解析。本文使用花生壳提供的DDNS服务,因此最好有一个在花生壳注册的域名。其他注册商注册的域名也可以,需要转入解析或转入域名,或者可以先白嫖花生壳的壳域名一年用着先,到期再换。
2. 安装 PVE 8.1
考虑到后面可能需要根据需求更换系统,便于远程更换系统和方便备份系统,给主机安装`Proxmox VE`系统,可以通过web面板来管理系统镜像(只是想玩玩虚拟化罢了)
经过本人实际折腾后,可能由于EFI引导的问题,某些情况下,直接安装PVE系统镜像会无法引导。本人能力不足,不会修复grub引导。经过摸索后,尝试成功了两种安装方法。
2.1. (法一)直接安装PVE系统镜像
从官网下载ISO镜像:
具体安装过程可以参考任意安装教程或官方文档,不再赘述,下面是一个参考教程。
如果顺利安装成功,那么恭喜你,可以跳到下一步了。如果在安装最后阶段“make system bootable” 出现报错“bootloader error”,那么你可能遇到和我一样的问题了。有可能是之前安装过其他系统造成的引导错误,可以换一种方法尝试安装PVE。
2.2. (法二)从Debian上安装PVE
参考官方文档,可以先安装Debian,再在Debian上安装PVE。目前对应的最新版本为Debian12和PVE8,参照官方文档的步骤安装系统:
2.2.1. 安装 Debian 12
从Debian -- Downloading Debian下载 Debian 12 镜像后烧录到U盘,安装系统。
只需要安装 "standard system utilities" 和 "SSH server"即可,不需要安装桌面环境。
2.2.2. 允许ssh root登录
vim /etc/ssh/sshd_config
修改PermitRootLogin prohibit-password 为
PermitRootLogin yes
重启ssh服务
/etc/init.d/ssh restart
2.2.3. 配置静态ip
服务器需要固定ip,可以在路由器中绑定设备mac和ip地址,如果路由器没有提供该功能,可以在服务器上配置静态ip地址。
安装vim, network-manager
修改配置文件
vim /etc/network/interfaces
将dhcp改为static,配置如下
auto loiface lo inet loopbackiface enp1s0 inet manualauto vmbr0iface 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
2.2.4. 下载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.listwget [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 # verifysha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg 7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87 /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpgapt update && apt full-upgrade
换源,先备份`/etc/apt/sources.list.d/`路径下的所有文件,然后依次源为对应的国内镜像。
- deb Index of /debian/ bookworm main contrib non-free- deb Index of /debian/ bookworm-updates main contrib non-free- deb Index of /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-kernelsystemctl reboot
安装PVE Package
apt install proxmox-ve postfix open-iscsi chrony
删除Debian Kernel
apt remove linux-image-amd64 'linux-image-6.1*'update-grubapt remove os-prober
安装成功后,即可打开`https://192.168.1.111:8006/ `访问PVE控制面板
3. 创建虚拟机 Ubuntu Server 22.04.3
3.1. 安装系统镜像
从官网下载ISO镜像:
访问 https://192.168.1.111:8006/ 进入PVE面板
上传ISO镜像
创建虚拟机,一路默认即可,注意CPU类别要选择与主机CPU相对应的型号
3.2. 配置静态ip
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.baksudo 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
3.3. 安装lxqt桌面和falkon浏览器
为了方便通过浏览器访问网关,便于调试维护,需要安装一个桌面环境和浏览器。尽量选择了轻量级的桌面和浏览器,在需要的时候启动。
3.3.1. 安装 lxqt
shell中安装后重启即可
sudo apt install lxqtsudo reboot
3.3.2. 安装 falkon
安装好 lxqt 桌面后,在shell中输入
sudo snap install lxqt
3.3.3. 关闭和开启图形化界面
平常使用时,我们一般不开启图形化界面,只在必要时开启。
可以通过快捷键切换终端和桌面:切换到终端命令行:`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
在关闭图形界面后,缓存不会立即清除,需要手动清理缓存:
# 查看内存占用情况free -h# 清理buffersudo sync && sudo echo 3 > /proc/sys/vm/drop_caches# 如果提示没有权限,先进入超级管理员模式sudo susync && echo 3 > /proc/sys/vm/drop_caches
4. 配置DDNS
4.1. 环境要求
公网 ip域名(可选,先白嫖)
4.2. 在主机PVE系统上安装花生壳客户端
由于PVE系统是基于Debian的,花生壳的客户端可以直接安装在PVE系统上。
从web控制面板或ssh登录shell终端
按步骤下载花生壳客户端
进入客户端下载页面
选择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码
4.3. 登录花生壳控制台绑定设备并启动DDNS服务
访问
登录控制台,通过SN码登录;如果之前注册登录过,会直接登录。
我是直接登录了控制台,登陆后,在设备列表 -> 添加设备 添加SN码绑定设备。然后点击 登录账号 输入默认密码登录。
登录成功后,在PVE主机终端,输入
phddns start
启动DDNS
可以通过 `phddns status` 查看设备状态
直接输入`phddns` 可以查看可选参数
4.4. 检查域名解析状态
在花生壳控制台,域名列表 -> 默认赠送的域名 -> 诊断,可以看到域名是否正常解析。
4.5. 路由器/网关设置端口映射
动态域名解析成功后,还不能直接访问到内网的PVE主机,需要设置端口映射,从而访问内网的指定端口。
登录路由器/网关,找到提供的`端口映射`功能,将PVE主机ip的内部端口`8006`映射到一个指定的外部端口上(如`10888`),协议TCP或BOTH。这样一来,就可以通过外网访问PVE控制面板了。
测试是否配置成功,首先 **更换网络,使用手机热点或其他网络(重要,同一网段下无法通过域名访问)**,然后,在浏览器中输入`https://yourdomain.fun:10888`即可访问PVE登录界面,这里的域名和端口号替换成实际使用的值。
后记:这是一种极不安全的方式,请不要将PVE的管理页面暴露在公网上。如果需要外网访问,请使用VPN访问。
4.6. 其他虚拟机外网访问
将DDNS服务直接运行在PVE系统上的好处是,只要PVE系统上的客户端一直运行,那么同网段下的所有设备和虚拟机都可以通过配置端口映射访问。
举例来说,之前已经在PVE上创建了一个 Ubuntu Server 虚拟机,如果想要通过外网登录ssh,只需要将 Ubuntu Server虚拟机ip的22端口映射到外部指定端口上,然后在外网输入
ssh username@yourdomain.fun -p [port]
这里`username`替换成登录用户名;`yourdomain.fun` 替换成域名;`[port]`替换成实际设置的外部端口。
同样的,其他的服务也可以通过绑定指定外部端口来访问。
请不要暴露你的web服务端口
4.7. DDNS更换自己的域名
如果觉得白嫖的花生壳域名太难记,自己已经有域名,但又不想在花生壳付费转入解析或再注册新的域名。可以创建一个子域名,添加一条CNAME记录到花生壳域名。
比如,你有一个在腾讯云DNS解析的域名`http://mydomain.com`,和一个花生壳送的壳域名`hskdomain.vicp.fun`,登录腾讯云控制台,在你的域名的记录管理中,增加一条记录
homeCNAMEhskdomain.vicp.fun
等待解析生效后,就可以使用自己的域名代替壳域名来访问内网的主机了。
5. Zerotier
弄完之后想了下,在公网上暴露端口太危险了,也容易被运营商封禁。考虑到服务器只是自己的设备用,并不打算公开,想到可以组建VPN访问。
需要在PVE系统和每个虚拟机上分别安装 zerotier,加入到VPN后,就可以像局域网的方式访问各主机。
5.1. 安装zerotier
curl -s https://install.zerotier.com | sudo bash
5.2. zerotier-cli 使用
# 查看帮助sudo zerotier-cli -h# 查看状态sudo zerotier-cli info# 加入网络sudo zerotier-cli join <networkid># 查看网络列表sudo zerotier-cli listnetworks
5.3. 开启与关闭 zerotier-one 服务
linux上的 zerotier以服务的方式运行,`sudo service --status-all` 可以查看当前的所有服务,可以看到,zerotier服务的名称是`zerotier-one`。
可以通过以下命令来开启和关闭服务
sudo systemctl start zerotier-onesudo systemctl stop zerotier-one
6. 小结
至此,我们已经成功实现了家庭小型服务器的环境搭建。我们为服务器安装了PVE操作系统,并在上面运行了UbuntuServer虚拟机。实现了外网通过域名访问内网端口,且可以灵活开启图形化界面来设置网关。
还记得搭建这台服务器的初衷吗?下一步,我们将在这台服务器上部署流量转发和网盘等服务,充分发挥其公网优势,连接起校园网内的各个设备。
还没有任何评论,你来说两句吧