新的一年我终于有预算在家里摆一小只服务器了。
继 1OCALHOST(平板/笔记本) 和 COMPUTE2(台式机) 后,这是我现有的第三个机器;就叫它S3RVER吧。
需求和配置选择
我全都要!不太贵,低功耗,小巧;高性能(相对NAS常用的赛扬奔腾来说)。
最后选择了R5-2400GE:这是R5-2400G的低功耗版,只有35W TDP。AMD yes
| 合计 | 2440 |
|---|---|
| 二手 R5-2400GE 准系统 | 1300 |
| 镁光 16G DDR4-3200 内存条 | 420 |
| 三星 256G PM981a 固态盘 | 300 |
| 西数 2T WD20SPZX 机械盘 | 420 |
系统安装
我最喜欢的 Arch,装了好几次已经轻车熟路了。
之前用的都是 EXT4,这次试一试 btrfs
| 分区方案 | |||
|---|---|---|---|
| /dev/nvme0n1p1 | 512M | /boot | fat32 |
| /dev/nvme0n1p2 | 238G | / | btrfs |
| /dev/sda1 | 1.8T | /home | btrfs |
用cfdisk分区,然后格式化并创建子卷:
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.btrfs -f /dev/nvme0n1p2
mkfs.btrfs -f /dev/sda1
mount /dev/nvme0n1p2 /mnt
cd /mnt
btrfs subvol create rootfs
mkdir -p /mnt/home
mount /dev/sda1 /mnt/home
cd /mnt/home
btrfs subvol create homefs接下来挂载子卷:
cd ~
umount /dev/sda1
umount /dev/nvme0n1p2
mount /dev/nvme0n1p2 /mnt -o subvol=rootfs,compress=lzo,noatime,discard,ssd,space_cache
mkdir -p /mnt/home
mount /dev/sda1 /mnt/home -o subvol=homefs,compress-force=lzo,noatime,autodefrag,space_cache
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot修改mirrorlist,安装系统和生成fstab:
nano /etc/pacman.d/mirrorlist #我就是喜欢用nano
pacman -Syy
pacman -S archlinux-keyring
pacstrap -i /mnt base base-devel linux linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab用arch-chroot进入安装好的系统,安装grub:
pacman -S dosfstools grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch --recheck
grub-mkconfig -o /boot/grub/grub.cfg安装部分就告一段落了,装个neofetch作为尾声。
pacman -S neofetch
neofetch其他配置
pacman -S ufw fail2ban #防火墙
pacman -S zsh grml-zsh-config #zsh&配置
useradd -m -g wheel -s zsh b917 #添加用户
passwd b917 #设置用户密码AUR 助手
说到 Arch 的优点,当然少不了 AUR;
这里我选择了自己常用的yay。
cd /tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -siproxychains-ng
活在墙国,免不了要使用代理:我直接设置成台式机的 v2ray SOCKS 端口。
pacman -S proxychains-ng
nano /etc/proxychains.confDocker&Portainer
这次的核心就是 Docker,我会把大多数服务都放进 Docker里运行。Portainer 是 Docker 的图形化管理界面,我用官方文档的方式安装 Portainer,并修改为44301端口。
pacman -S docker
systemctl start docker
systemctl enable docker
docker pull portainer/portainer
docker volume create portainer_data
docker run -d -p 44300:8000 -p 44301:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer安装在系统的服务
Samba
Samba 是 SMB/CIFS 网络协议的重新实现,可以在 Linux 和 Windows 系统间进行文件,打印机共享。
Samba 我用来做什么?当然是放 Steam 游戏!自己电脑的1T机械盘已经快满了。我设置为分享 /home 目录,也就是整个 WD20SPZX。
pacman -S samba #安装 Samba
nano /etc/samba/smb.conf #配置 smb.conf
smbpasswd -a b917 #创建用户
systmctl start smb nmb #启动服务
systemctl enable smb nmb #激活开机自启我的 smb.conf 配置:
[global]
workgroup = WORKGROUP
server string = S3RVER Samba %v
netbios name = S3RVER
log file = /var/log/samba/%m.log
log level = 3
max log size = 50
security = user
passdb backend = tdbsam
[home]
comment = Linux home
path = /home
public = yes
writable = yes
printable = no
valid users = b917安装在 Docker 的服务
joshava/cloudflare-ddns
本来路由器一直挂着 No-IP.com 的 DDNS,不过域名实在不怎么好看。正好现在有一台 24 小时开机的设备了,就试试 Cloudflare DDNS。
使用之前要先在 Cloudflare - My Profile - API Tokens 创建一个新的 Token,点击 Start with a template 后选择 Edit zone DNS 并设置域名即可。
docker pull joshava/cloudflare-ddns
touch /home/b917/ddns-config.yaml #创建配置文件
nano /home/b917/ddns-config.yaml #编辑配置文件
docker run -d -v /home/b917/ddns-config.yaml:/app/config.yaml hoshava/cloudflare-ddnsconfig.yaml的示例:
auth:
scopedToken: token-input-here
domains:
- name: foo.example.com
type: A
proxied: false
create: true
zoneId: zoneid-input-here作者:藍
链接:https://kwaa.dev/p/s3rver/
本文采用 CC BY-NC-SA 4.0 进行许可。