0-安装系统
☁️系统我使用的是 fedora38
服务器的版本,不安装桌面,只需要命令行,安装过程大同小异,唯独注意一点,我有两块硬盘,一个128G固态,一个1T的机械,我的初步方案是把 /boot
和 /
挂载到固态上,而机械硬盘则全部挂载 /home
下,分区时使用最高级别的自定义,先将原有分区全部删除,然后再分区,方案如下:
分区 | 大小 | 文件系统 | 标签 | 挂载点 |
---|---|---|---|---|
/boot | 512M | ext4 | boot | /boot |
/ | 自定义 | ext4 | fedora-root | / |
swap | 自定义 | swap | swap | |
/home | 自定义 | ext4 | home | /home |
🦄按照以上方案分区,安装完系统重启即可,默认 ssh
服务是开启的,可以直接远程连接,当然,如果你使用自动分配 IP
的方式,你需要先查看设备的 IP
是多少,也可以在路由器里,给该设备分配一个固定 IP
🐧 如果服务的系统使用的是 Ubuntu
,稍微注意一下需要设置一下源,可以参考官网设置 清华源 ,在服务器界面设置清华源对应的网址即可,其他没有差别。其他内容可见 坑·Ubuntu Server 。
1-基本环境的搭建
🎈进入系统后,首先需要将需要的一些基本环境搭建好
- 🎃换源
- 🛸Dnf包管理器 参考这个进行换源和一些命令的执行操作
- 🥶更改默认的
shell
- 🪄Server·魔法 因为
oh-my-zsh
的安装需要魔法,所以这里先配置魔法 - 😍Oh-My-Zsh 按照这个配置即可
- 🪄Server·魔法 因为
- 🐋
Docker
不同系统的安装方式可参考 docker官网 ,常用的几个系统可以看下方 - 🐍
Python
- 首推使用 miniconda ,其安装比较简单,下载
sh
脚本执行即可,觉得安装在家目录下比较碍眼,可以更改安装目录到~/.myminiconda3
- 首推使用 miniconda ,其安装比较简单,下载
- 🖥️显卡驱动
- 原文参考Fedora 38安装nvidia显卡驱动,以下是我自己的记录:🐬Fedora38·安装N卡驱动
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
🛢️这样的服务有很多,可以搜 nextcloud
、 Seafile
、 可道云
等看看,这里我使用的是 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/udp
和 51821/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