家里服务器安装纪实
家里的gen8运行了很久的黑裙,在没出问题的时候运行都是非常好的。直到出现问题。我买了10tb的硬盘回来更换,结果一步错步步错,最好整的moments和drive都不见了。这时候才确认,群晖的系统只是暂时使用的,不能用来保存长久的资料。只能更换系统,做了很多比较后,最后定下来用proxmox的系统,可以用到虚拟机;文件系统用mergerFS+snapraid,做到本地备份;同时,前篇文章设置了rclone+restic的远程备份系统。这样下来,做到了备份的3+2+1原则,理论上所有数据都能恢复,只是时间问题。
- 安装proxmox,直接用官方的iso,放gen8 iLo启动安装。因为是装到sata5的ssd硬盘,这里需要把sata5设为启动盘,根据这个设置。
- 安装完成后,设置硬盘的文件系统。主要参考文章1,文章2.
- 安装mergerFS。The default is existing path, most free space (EPMFS) which you can read more about in the mergerfs documentation.
#安装mergerFS apt install mergerfs fuse #Mount point creation mkdir /mnt/disk{1,2,3,4,5} mkdir /mnt/parity{1,2} # adjust this command based on your parity setup mkdir /mnt/storage #Create fstab entries ls /dev/disk/by-id ... ata-Hitachi_HDS5C3030ALA630_MJ1311YNG5SD3A ata-TOSHIBA_DT01ACA300_X3544DGKS-part1 ata-Hitachi_HDS5C3030ALA630_MJ1311YNG5SD3A-part1 ata-WDC_WD30EFRX-68AX9N0_WD-WCC1T0632015 ... #我现在使用的fstab #data /dev/disk/by-id/ata-TOSHIBA_HDWG11A_49G0A006FATG /mnt/disk1 ext4 defaults 0 0 /dev/disk/by-id/ata-WDC_WD100EFAX-68LHPN0_2YK8XPPD-part2 /mnt/disk2 ext4 defaults 0 0 /dev/disk/by-id/ata-ST3000VX000-1CU166_W1F4FJCX /mnt/disk3 ext4 defaults 0 0 # parity /dev/disk/by-id/ata-TOSHIBA_HDWG11A_49C0A008FATG /mnt/parity ext4 defaults 0 0 /mnt/disk* /mnt/storage fuse.mergerfs direct_io,defaults,allow_other,minfreespace=50G,fsname=mergerfs 0 0 df -h
- 安装snapraid.具体操作的manual,可以看这里。
apt install git git clone https://github.com/IronicBadger/docker-snapraid.git cd docker-snapraid/ chmod +x build.sh ./build.sh cd build/ dpkg -i snapraid*.deb snapraid -V snapraid sync
-
snapraid相关的脚本。主要参考了这里,我就不多写了。另外也存放在了appdata文件夹中以备用,记得用cronjob打开。
-
配置samba和NFS
apt install samba nfs-kernel-server -y systemctl restart smbd #我的/etc/samba/smb.conf内容 [global] workgroup = home server string = epsilon security = user guest ok = yes map to guest = Bad Password log file = /var/log/samba/%m.log max log size = 50 printcap name = /dev/null load printers = no # Samba Shares [homes] comment = lin home folder path = /mnt/disk1/homes browseable = yes read only = no guest ok = no [storage] comment = Storage on epsilon path = /mnt/storage browseable = yes read only = no guest ok = yes [downloads] comment = Storage on epsilon path = /mnt/disk3/downloads browseable = yes read only = no [user1] path = /home/share/user1 read only = no browseable = yes force create mode = 0660 force directory mode = 2770 valid users = @user1 [data] path = /mnt/storage/data browseable = yes read only = no #我的/etc/exports内容 /mnt/storage 10.0.0.1/24(rw,fsid=2,sync,no_root_squash,insecure,no_subtree_check) exportfs -ra systemctl restart nfs-kernel-server
-
docker-compose的安装。必须严格看教程来。docker安装下来是为了使用traefik反向代理,并产生ssl证书。将以下三个文件(traefik.toml, docker-compose.yml, acme.json)都放在文件目录
/mnt/storage/docker/traefik
下,并设立相应的volume目录,就可以直接达成目的了。touch acme.json chmod 0600 acme.json #端口映射,路由器确认; #网址等搞定 cloudflare先转成A记录;之后再测试cname等,cname指向是可以的; #用同一个网络 docker #backend 和 frontend 都是一对一的。如果混合一起,一定是在docker compose里面写不对 #plex token claim #https://aria2.colors4.us:443 rpc 连接 #NAS中如Drive需要用到6690的端口,直接映射就好,不要用traefik。因其只是http proxy。只能做file的proxy,nas的情况。SSH也是类似情况。 #docker命令有如下 docker-compose up -d docker-compose stop
- 其他一些小东西的设置
- mutt+gmail邮件设置。
- docker-compose.yml中,必须用绝对路径
/mnt/disk1/docker/...
,不要用mergerFS的路径/mnt/storage
,系统可能无法辨认。 - docker中的PUID,PGID的设置。用于部分docker无法用root启动之用。
useradd -ms /bin/bash lin groupadd docker usermod -aG docker lin newgrp docker //restart vm docker run hello-world chown lin:lin docker/bookstack
- docker测试中一些常见的错误和修复办法
- traefik中抄录的port号码错误
- 进入portainer中看container中的log