自己拥有一台服务器可以做哪些很酷的事情?

3周前 (02-05) 0 点赞 0 收藏 0 评论 7 已阅读

碍于校园网络的限制和云服务器的昂贵价格,打算在家中搭建一个小型的服务器,用于校园网内设备互联的转发节点和其他的一些基础服务。

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虚拟机。实现了外网通过域名访问内网端口,且可以灵活开启图形化界面来设置网关。

还记得搭建这台服务器的初衷吗?下一步,我们将在这台服务器上部署流量转发和网盘等服务,充分发挥其公网优势,连接起校园网内的各个设备。


本文收录在
0评论

登录

忘记密码 ?

切换登录

注册