使用老旧笔记本替代树莓派搭建家庭服务器

背景

虽然之前通过增加windows节点机的方式解决了树莓派编译react工程时内存不足的问题,不过最近又遇到好几个需要在本地跑数据处理的任务,所以终究还是逃不开树莓派算力升级的问题,原本是打算着等开年后就入手之前看上的技嘉 BLCE-4000C,哪知道赶上了百年不遇的超级春节长假,看起来商家恢复发货也是遥遥无期 囧rz

神舟 优雅A480B-I5 D1

然后偶然瞥见蹲角落里吃灰2年多的神船,作为7年前的老爷机,虽然CPU是弱了些儿,好歹也是曾经升了5G无线网卡、SSD固态盘、8Gx2内存,大体上除了屏幕排线有点儿接触不良没啥大毛病。

树莓派功耗

对比起来i5-3210m的35w确实比树莓派4的6w高上不少,性能方面好歹能把树莓派按地上使劲摩擦。

解决方案

说干就干,系统上还是选择跟树莓派上一致的Ubuntu 18.04,至少软件包安装省心。

系统安装

启动盘制作

下载镜像后使用Rufus制作启动盘,然后启动安装一路下一步就好了,过程中记得勾选一下OpenSSH Server跟把软件源换成阿里云的就好。

网络配置

启用网卡

系统安装好后默认有线网卡跟无线网卡都是处于停用状态,需要先使用ifconfig -a查看网卡名称,然后再启用(这里有线网卡跟无线网卡名称分别微enp3s0跟wlp2s0)

1
2
$sudo ifconfig enp3s0 up
$sudo ifconfig wlp2s0 up

配置有线网络

因为需要安装无线工具包才能进行无线网络的连接,所以需要先接上网线,配置好有线网络。

编辑文件[/etc/netplan/50-cloud-init.yaml],配置有线网卡自动获取ip

1
2
3
4
5
6
7
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: yes
dhcp6: no

然后生效网络配置

1
2
3
$sudo netplan apply
$sudo ifconfig enp3s0 down
$sudo ifconfig enp3s0 up

配置无线网络

首先安装无线网络工具包

1
2
$sudo apt-get update
$sudo apt-get install wireless-tools wpasupplicant

查找网络信号,确保家里的无线信号能被搜索到

1
$sudo iwlist wlp2s0 scan | grep ESSID

最后编辑文件[/etc/netplan/50-cloud-init.yaml],配置无线网卡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: yes
dhcp6: no
wifis:
wlp2s0:
dhcp4: yes
dhcp6: no
access-points:
"ChinaNet-4C76":
password: "12345678"

重启网络

1
2
3
$sudo netplan apply
$sudo ifconfig wlp2s0 down
$sudo ifconfig wlp2s0 up

开启root登录

反正是在家里自己用,使用root比每次sudo输密码要方便快速多了,首先修改配置文件[/etc/ssh/sshd_config],打开root的远程登录选项

1
2
3
4
5
...
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes
...

然后设置root密码并重启ssh服务

1
2
$sudo passwd root
$sudo service ssh restart

防休眠设置

虽然笔记本合上盖子后电脑不会马上休眠,不过等上个10来分钟还是休眠掉,所以还需要特地设置一下。

修改配置文件[/etc/systemd/logind.conf]]

1
2
3
...
HandleLidSwitch=ignore
...

然后重启服务

1
service systemd-logind restart

迁移jenkins配置

之前在树莓派的jenkins配置了那么多的任务,总归是不能一个个的再配置过来,这里可以使用版本库来进行备份跟同步。

配置备份

首先需要在树莓派的jenkins上新建一个配置备份的任务

新建一个Freestyle工程

源码管理选择“无”

添加构建脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
cd /var/lib/jenkins

git add -- *.xml jobs/*/*.xml userContent/* ansible/*

if [ -d users ]; then
user_configs=`ls users/*/config.xml`

if [ -n "$user_configs" ]; then
git add $user_configs
fi

if [ -n "users/users.xml" ]; then
git add users/users.xml
fi
fi

to_remove=`git status | grep "deleted" | awk '{print $3}'`

if [ -n "$to_remove" ]; then
git rm --ignore-unmatch $to_remove
fi

git commit -m "Automated Jenkins commit"

git push -q -u origin master

然后ssh窗口中切换至jenkins用户下初始化git仓库

1
2
3
4
$cd /var/lib/jenkins && git init
$git config --global user.email "xxx@xxx.com"
$git config --global user.name "xxx"
$git remote add origin <你用来备份配置的git仓库地址>

最后手工触发任务,备份就完成了

配置还原

回到新安装的机器上,以jenkins用户登录,首先清空home目录

1
$cd /var/lib/jenkins && rm -rf *

初始化git仓库

1
2
3
4
$cd /var/lib/jenkins
$git init
$git clean -df
$git remote add origin <你用来备份配置的git仓库地址>

配置ssh密钥(可以参考之前的文章),然后拉取备份

1
$git pull origin master

plugins的插件目录需要手工同步,当然也可以在备份的时候选择一块添加到git库中,接着重启jenkins服务

1
$service jenkins restart

最后 Jenkins –> 凭据 –> 系统 –> 全局凭据 跟 Jenkins –> 系统管理 –> 系统配置 –> Publish over SSH 中替换新机器的ssh密钥迁移就完成了。

关于功耗

最后测试下来,合盖待机状态下是11w、开屏待机15w、开4个jenkins任务的情况下跑到35w,算下来新机器的钱够好多年的电费了[doge]

合盖待机

开屏待机

任务功耗