新的一年我终于有预算在家里摆一小只服务器了。
继 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 分区,然后格式化并创建子卷:
bash
mkfs.fat -F32 /dev/nvme0n1p1mkfs.btrfs -f /dev/nvme0n1p2mkfs.btrfs -f /dev/sda1mount /dev/nvme0n1p2 /mntcd /mntbtrfs subvol create rootfsmkdir -p /mnt/homemount /dev/sda1 /mnt/homecd /mnt/homebtrfs subvol create homefs
接下来挂载子卷:
bash
cd ~umount /dev/sda1umount /dev/nvme0n1p2mount /dev/nvme0n1p2 /mnt -o subvol=rootfs,compress=lzo,noatime,discard,ssd,space_cachemkdir -p /mnt/homemount /dev/sda1 /mnt/home -o subvol=homefs,compress-force=lzo,noatime,autodefrag,space_cachemkdir -p /mnt/bootmount /dev/nvme0n1p1 /mnt/boot
修改 mirrorlist,安装系统和生成 fstab:
bash
nano /etc/pacman.d/mirrorlist #我就是喜欢用nanopacman -Syypacman -S archlinux-keyringpacstrap -i /mnt base base-devel linux linux-firmwaregenfstab -U /mnt >> /mnt/etc/fstabcat /mnt/etc/fstab
用 arch-chroot 进入安装好的系统,安装 grub:
bash
pacman -S dosfstools grub efibootmgrgrub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch --recheckgrub-mkconfig -o /boot/grub/grub.cfg
安装部分就告一段落了,装个 neofetch 作为尾声。
bash
pacman -S neofetchneofetch
其他配置
bash
pacman -S ufw fail2ban #防火墙pacman -S zsh grml-zsh-config #zsh&配置useradd -m -g wheel -s zsh b917 #添加用户passwd b917 #设置用户密码
AUR 助手
说到 Arch 的优点,当然少不了 AUR; 这里我选择了自己常用的 yay。
bash
cd /tmpgit clone https://aur.archlinux.org/yay.gitcd yaymakepkg -si
proxychains-ng
活在墙国,免不了要使用代理:我直接设置成台式机的 v2ray SOCKS 端口。
bash
pacman -S proxychains-ngnano /etc/proxychains.conf
Docker&Portainer
这次的核心就是 Docker,我会把大多数服务都放进 Docker 里运行。Portainer 是 Docker 的图形化管理界面,我用官方文档的方式安装 Portainer,并修改为 44301 端口。
bash
pacman -S dockersystemctl start dockersystemctl enable dockerdocker pull portainer/portainerdocker volume create portainer_datadocker 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。
bash
pacman -S samba #安装 Sambanano /etc/samba/smb.conf #配置 smb.confsmbpasswd -a b917 #创建用户systmctl start smb nmb #启动服务systemctl enable smb nmb #激活开机自启
我的 smb.conf 配置:
ini
[global]workgroup = WORKGROUPserver string = S3RVER Samba %vnetbios name = S3RVERlog file = /var/log/samba/%m.loglog level = 3max log size = 50security = userpassdb backend = tdbsam[home]comment = Linux homepath = /homepublic = yeswritable = yesprintable = novalid 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 并设置域名即可。
bash
docker pull joshava/cloudflare-ddnstouch /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-ddns
config.yaml 的示例:
yaml
auth:scopedToken: token-input-heredomains:- name: foo.example.comtype: Aproxied: falsecreate: truezoneId: zoneid-input-here