0-安装系统

☁️系统我使用的是 fedora38 服务器的版本,不安装桌面,只需要命令行,安装过程大同小异,唯独注意一点,我有两块硬盘,一个128G固态,一个1T的机械,我的初步方案是把 /boot/ 挂载到固态上,而机械硬盘则全部挂载 /home 下,分区时使用最高级别的自定义,先将原有分区全部删除,然后再分区,方案如下:

分区大小文件系统标签挂载点
/boot512Mext4boot/boot
/自定义ext4fedora-root/
swap自定义swapswap
/home自定义ext4home/home

🦄按照以上方案分区,安装完系统重启即可,默认 ssh 服务是开启的,可以直接远程连接,当然,如果你使用自动分配 IP 的方式,你需要先查看设备的 IP 是多少,也可以在路由器里,给该设备分配一个固定 IP


🐧 如果服务的系统使用的是 Ubuntu ,稍微注意一下需要设置一下源,可以参考官网设置 清华源 ,在服务器界面设置清华源对应的网址即可,其他没有差别。其他内容可见 坑·Ubuntu Server

1-基本环境的搭建

🎈进入系统后,首先需要将需要的一些基本环境搭建好

2-服务的搭建

服务的搭建基本是一套通用的模板,在宿主机上或者使用docker搭建好服务之后,开启对应的端口,基本上就完成了,其中使用docker最为方便,我暂用的一些服务我写成了一个统一的 Docker Compose 文件

2.1-samba服务

📂先指定一个共享文件夹,我这里就是 /home/user/NAS ,然后就是拉取镜像和创建容器了,命令如下:

# 拉去镜像
docker pull dperson/samba
 
# 创建容器
# -v 共享目录的映射
# -u 用户名(nas)和密码(nasnas)
# -s 这部分如果想放宽权限,改为yes;yes;yes
docker run -it --name samba \
-p 139:139 -p 445:445 \
-v /home/alchemy:/share \
-d --restart always dperson/samba \
-u "alchemy;byack89HKC" \
-s "alchemy;/share/;yes;no;no;alchemy;alchemy;alchemy"
 
# fedora 在防火墙上开启对应的服务
sudo firewall-cmd --add-service=samba --permanent
sudo firewall-cmd --add-service=samba-client --permanent
sudo firewall-cmd --reload

🏐这样服务就搭建完成了,之后在window里,选择网络,右键映射网络驱动器

之后输入设置好的用户名和密码就可以访问了🎉

2.2-qbittorrent

🏴󠁰󠁴󠀳󠀰󠁿该服务同样使用 docker 来搭建,可以新建一个空目录,进入该目录后创建 docker-compose.yml 文件,内容如下:

version: "2.1"
services:
  qbittorrent:
    image: linuxserver/qbittorrent
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - WEBUI_PORT=10101
    volumes:
      - /home/alchemy/nas/pt/config:/config
      - /home/alchemy/nas/视频:/downloads
    ports:
      - 10101:10101
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped

🩴其中 TZ 设置了时区,WEBUI_PORT 设置了网页界面的端口,这里需要和 ports 里保持一致,volumes 里就是文件夹的映射位置,根据自己的需求更改即可,使用命令的版本如下:

docker run -d \
--name=qbittorrent \
-e PUID=1000 -e PGID=1000 \
-e TZ=Asia/Shanghai -e WEBUI_PORT=40001 \
-p 40001:40001 -p 6881:6881 -p 6881:6881/udp \
-v /home/alchemy/Documents/qbconfig:/config \
-v /home/alchemy/Videos/PT/mov:/downloads \
--restart always linuxserver/qbittorrent

🎆重点:ports 里设置的 6881 这个文件里就不改了,这是做种时数据传输的端口,有些PT站点将这些端口禁了,这个后面可以到 web 界面里进行更改,只需确保更改过后的端口在防火墙里是打开的即可

🎆 小坑:建议使用 sudo chmod 755 -R ~/nas/视频 开启共享文件夹及其所有子文件夹的所有权限

以上文件创建完成,即可通过 docker-compose 创建容器了,如果没有安装 docker-compose ,安装一下即可:

# 创建容器
docker-compose up -d
 
# 开启需要的端口
# 6881-6882是默认的,我用的PT站用不了
sudo firewall-cmd --add-port=10101/tcp --permanent
sudo firewall-cmd --add-port=6881-6882/tcp --permanent
sudo firewall-cmd --add-port=6881-6882/udp --permanent
sudo firewall-cmd --reload

之后进入 ip:10101 即可,默认的用户为 admin ,密码为 adminadmin ,登录之后可以进入设置更改界面语言监听端口用户密码。到这就搭建完成了🎉

2.3-FileBrowser

🛢️这样的服务有很多,可以搜 nextcloudSeafile可道云 等看看,这里我使用的是 File Browser ,可参考文档 ,我的部署服务如下:

# 拉取镜像
docker pull filebrowser/filebrowser
 
# 创建容器
# -v 指定映射的文件夹路径
# -p 指定映射端口
docker run -d \
    -v /home/alchemy/NAS:/srv \
    -p 10103:80 \
    --name filebrowser \
    --restart always \
    filebrowser/filebrowser
 
# 开启对应端口的防火墙
sudo firewall-cmd --add-port=10103/tcp --permanent
sudo firewall-cmd --reload

这时就可以打开浏览器对应的端口访问该服务了,默认用户名和密码 都是 admin ,登录后,可以在设置中更具需求进行相应的设置,如更改语言、允许注册用户、设置用户权限等

禁用普通用户对部分文件或文件夹的访问权限:可以设置全局规则,添加路径即可,最开始的路径就是 / 路径

2.4-FileRun

FileBrowser 不能在线预览 mp4 文件,FileRun 是可以的。参考 官方文档 ,就可以简单的部署了。

如果部署完成,进入页面后,没有显示默认的管理员用户名和密码,那么使用 superuser 进行登录,用户名和密码都是这个

2.5-Jellyfin

家庭影院 (硬解死活没折腾成功,放弃了,用软解也能用)

version: "3"
services:
	jellyfin:  
		image: nyanmisaka/jellyfin
		container_name: jellyfin
		ports:
      - 40002:8096
		volumes:
			- /home/alchemy/Documents/jellyfin/config:/config  
			- /home/alchemy/Documents/jellyfin/cache:/cache  
			- /home/alchemy/Videos/PT/link/video:/media
		extra_hosts:
		  - "api.themoviedb.org:13.32.164.73"
		  - "api.themoviedb.org:13.32.164.97"
		  - "api.themoviedb.org:13.32.164.98"
		  - "api.themoviedb.org:13.32.164.124"
		  - "api.tmdb.org:18.160.41.31"
		  - "api.tmdb.org:18.160.41.40"
		  - "api.tmdb.org:18.160.41.52"
		  - "api.tmdb.org:18.160.41.88"
		restart: unless-stopped

使用命令如下

docker run -d \
--name jf2 --user 1000:1000 \
-p 40002:8096 \
--volume /home/alchemy/Documents/jf2/config:/config \
--volume /home/alchemy/Documents/jf2/cache:/cache \
--mount type=bind,source=/home/alchemy/Videos/PT/link/video,target=/media \
--restart=unless-stopped \
nyanmisaka/jellyfin

2.6-nastools

(💥 已经放弃该工具,网络问题不稳定,解决不了,而且我不太需要自动刷流,文件硬链接可以自己解决,刮削的问题交给 jellyfin 就可以了)自动的影音信息刮削工具,需要一些 BT站点 的认证,这个暂时还没解决,可以后续等开放日进行注册,启动的命令如下

docker run -d \
--name nas-tools \
--hostname nas-tools \
-p 40003:3000 \
-v /home/alchemy/Documents/ntoolsconfig:/config \
-v /home/alchemy/Videos/PT:/media \
-e PUID=1000 -e PGID=1000 \
-e NASTOOL_AUTO_UPDATE=false \
-e NASTOOL_CN_UPDATE=false \
--restart always nastool/nas-tools

2.7-dashdot

(💥其实没啥用了,后面用 1Panel 代替好了)这是一个现代化的服务器仪表盘,可以看到存储、CPU、内存、网络等基本(实时)信息

docker run -it \
-p 40004:3001 \
-v /etc/os-release:/etc/os-release:ro \
-v /proc/1/ns/net:/mnt/host_ns_net:ro \
--restart always \
-d mauricenino/dashdot

2.8 MT Photos

一个照片管理服务

docker run -d \
  --name="mt-photos" \
  -v /home/alchemy/Pictures/MT/config:/config \
  -v /home/alchemy/Pictures/MT/upload:/upload \
  -p 40005:8063 \
  -e TZ="Asia/Shanghai" \
  --restart="unless-stopped" \
  mtphotos/mt-photos

2.9 1Panel

我的理解就是宝塔的一个国产替代版本,说是基于 docker 的,项目地址:Github ,安装比较简单,执行脚本就行,一般情况下我用 zsh ,所以官方命令我改了一点:

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo sh quick_start.sh

3-WireGuard

WireGuard 相当于自建了一个局域网,想要访问网络中的设备,我们只需要加入该局域网即可,为了保证有一个节点能够直接访问到,相当于流量的中转站,所以我们在云服务器上搭建这个中心节点,使用docker搭建十分简单

# 创建容器
docker run -d \
  --name=wg-easy \
  -e WG_HOST=123.123.123.123 (🚨这里输入服务器的公网IP) \
  -e PASSWORD=passwd123 (🚨这里输入你的密码) \
  -e WG_DEFAULT_ADDRESS=10.0.8.x (🚨默认IP地址)\
  -e WG_DEFAULT_DNS=114.114.114.114 (🚨默认DNS)\
  -e WG_ALLOWED_IPS=10.0.8.0/24 (🚨允许连接的IP段)\
  -e WG_PERSISTENT_KEEPALIVE=25 (🚨重连间隔)\
  -v ~/.wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  weejewel/wg-easy

根据实际情况对上方就行修改即可,可以只改 WG_HOST ,其余默认即可,但需要将多余的部分删除之后再执行。之后在云服务器的防火墙管理界面,打开 51820/udp51821/tcp 这两个端口,注意协议的不同,打开后就可以通过 51821 访问后台管理界面,之后有新的设备需要加入时,在管理界面添加即可。

最后讲一下使用客户端的使用,普通设备到 下载页面 下载对应的客户端即可,服务器上,如我现有的 fedora 本地服务器,要加入网络,也先在管理页面添加设备,然后下载 *.conf 的配置文件,之后:

# 安装客户端
sudo dnf install wireguard-tools
 
# 使用管理员权限将下载的配置文件移动到 /etc/wireguard 文件夹下
# 使用nc探测端口是否通了
# 探测的IP和端口就是配置文件的最后一行
nc -vuz xx.xx.xx.xx 51820
 
# 通了就可以启动了(* 是你配置文件的名称)
wg-quick up *
# 关闭则是
wg-quick down *
 
# 查看连接状况并测试是否可以访问到Server端的网络
sudo wg show