
0.校园网
鉴于某梨专cm校园网的限制(每人仅允许连接一台设备,不得使用热点和路由器进行共享,一旦违规会导致账户冻结,冻结时间长短不一),坚持了一年,最终忍无可忍,决定认真布置一下宿舍网络。
0.1 初部署
首要任务是明确定网络拓扑结构。经过后续的调整,我发现合理的布局不仅有助于网络稳定,还能减少后续的不必要繁琐操作。
之前宿舍采用的网络拓扑结构相对简单,入户网线直接连接到一个交换机,而该交换机则通过六个出口连接到六台PC。
刚开始,我计划采用以下的网络拓扑结构:
入户网线——交换机——k2——MT-3000——PC
|
J1900
在初步确定了这一结构后,我进行了短期验证,幸运的是,并未出现明显问题。
K2负责处理整个内部网络的入网网关数据,我已开启UA2F以及其他反检测手段,并成功添加了来自@ @Faspand 的自动登录插件,不需要每次开机后手动联网。
MT-3000配备了WiFi 6模块,负责宿舍整体WiFi信号的发射(暂不考虑AP)。此外,它还搭载了性能比较强的A53架构处理器,能够胜任Openclash的转发功能,以确保宿舍的无线网络环境畅通。
Server是一台搭载Intel J1900的x86架构小型主机,其主要任务是运行需要全天候持续运行的应用程序,如Emby、Autobangumi、qb等。同时,还为其配置了插电自动开机和硬盘自动挂载功能。以确保了应用的稳定性和持续性运行。
在接下来的几天里,无论是qb的下载任务还是Emby的刮削工作都一直运行良好。蜜柑计划订阅的番剧RSS链接也能够正常发送到qb进行下载,而且幸运地没有遇到硬盘掉盘等问题,一切都非常顺利,直到我在手机上打开Emby准备观看番剧。
0.2 解决问题
在那天晚上,我躺在床上准备开始观看《无职转生S2》,但不久后,视频流突然播放了五六分钟,然后毫无征兆地中断。同时,我也发现WiFi连接不上,尝试访问MT-3000路由器后台时发现无法连接到互联网。通过排查,最终确认问题出在K2路由器上。
然后,我经历了一夜的痛苦排查。我尝试刷机,但K2路由器在卡死后无法恢复到出厂设置,只能通过进入Breed模式重新刷入固件,然后重新安装插件并开启防检测服务。最终通过一个恩山论坛上的帖子(原帖链接丢失)找到了问题的根源,即大流量导致的路由器死机问题。鉴于现有设备和网络环境,我发现有两种解决这个问题的方法:
- 更换处理入网流量的路由,即弃用k2路由,以现有设备来看使用J1900主机做旁路由是成本最低,简单易行的方法。
- 更改拓扑结构,使k2不路由内网流量,全部交由MT-3000处理,缺点是需要添加一个交换机来连接所有内网设备,同时内网ip被重新分配需要重设部分插件。
经过成本和时间的权衡,最终选择了第二个方案,即在MT-3000后方接交换机B,J1900提供该交换机入网。
0.3 试运行
截至到该文章发布(9.20)为止,所有设备运行状况良好,保险起见k2路由关闭了WiFi以减少发热,防止其他可能的死机问题。
1.媒体服务器与网络附加存储
既然有了一台性能如此强劲(并不 的x86小主机,NAS什么的自然要搞起来,虽然用不起群晖这样软件生态完整,”性 能 强 大“的产品,自己挂载硬盘追追番还是可以的。
1.1 系统部署
根据之前折腾服务器的经验,我选择了Ubuntu 18.04桌面版来部署系统。为什么不使用服务器系统或者20.04版本呢?这是因为平台兼容性方面可能会引发各种小问题,不够稳定,而且不值得花时间去不必要的折腾。另外,我主要考虑到了Ubuntu 18.04拥有强大的APT包管理工具和依赖树匹配能力,这有助于避免在依赖和软件包版本上出现许多麻烦。
1.2 基本设置
1.2.1 开机自动挂载
由于在fstab里无论使用UUID还是/dev/sd*/的方式都无法正常挂载已经写有数据的ssd,遂使用rc.local开机自动执行挂载命令:
vi /etc/rc.local
在exit 0前添加需要自动执行的命令,:wq退出。
但是这样可能会遇到rc.local服务无法启动的问题,从而导致挂载失败,于是参考了这篇帖子的方法
首先添加rc-local.service
#以下为一整条命令,一起复制运行
cat > /etc/systemd/system/rc-local.service <<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
EOF
然后添加权限并设置开机自启
chmod +x /etc/rc.local
systemctl enable rc-local
systemctl start rc-local.service
最后检查状态
systemctl status rc-local.service
如果返回Active:active信息则成功运行,reboot重启后再次检查,输出相同则服务彻底部署成功。
1.2.2 部署Docker环境
Docker 是一个开源的容器化平台,它允许你构建,测试,并且作为可移动的容器去部署应用,这些容器可以在任何地方运行。一个容器表示一个应用的运行环境,并且包含软件运行所需要的所有依赖软件。
使用apt包管理器部署dcoker和docker-compose比较简单。
首先需要添加使用 HTTPS 传输的软件包以及 CA 证书:
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
然后,我们需要向 sources.list
中添加 Docker 软件源:
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
之后更新软件源并安装docker组件:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
使用以下命令启动docker并保证服务开机自启:
sudo systemctl enable docker
sudo systemctl start docker
最后测试docker是否安装正确:
$ docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
若输出以上信息则安装成功。
1.3 Autobangumi, Qbittorrent与Emby的部署
首先在合适位置创建Autobangumi数据存放目录与qb下载目录,之后使用docker-compose.yml拉取镜像并运行容器哦,在数据目录中创建docker-compose.yml并填入以下内容:
version: "3.9"
services:
ab:
image: estrellaxd/auto_bangumi:latest
container_name: ab
ports:
- 7892:7892
depends_on:
- qb
environment:
- PUID=1000
- PGID=1000
volumes:
- ./ab/config:/app/config #不要动
- ./ab/data:/app/data #不要动
restart: unless-stopped
dns: #可选,指定 dns 服务器
- 223.5.5.5
- 119.29.29.29
- "2400:3200::1"
- "2402:4e00::"
qb:
image: superng6/qbittorrentee:latest
container_name: qb
ports:
- 8080:8080 #若需修改,两者应与下方的 QB_WEBUI_PORT 完全一致
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- WEBUIPORT=8080 #与ports的端口配置应一致
volumes:
- ./qb:/config #qb配置文件,不要动
- /home/tanxunze/disk/docker-root/qbt/downloads/:/bangumi #qb下载目录,自行修改,注意大小写
restart: unless-stopped
dns: #可选,指定 dns 服务器
- 223.5.5.5
- 119.29.29.29
- "2400:3200::1"
- "2402:4e00::"
注意,在docker配置参数中," : "前面的是宿主机目录,后面为docker容器内部目录,一般不需修改,但在docker运行的服务的设置中通常设置的是内部目录,所以需要注意映射关系。
之后在同一目录下使用
docker compose up -d
拉取镜像并启动容器。
关于qb与ab的配置参考Autobangumi官方文档。
部署Emby直接使用apt安装:
sudo apt install emby-server
使用https://server-ip:8096/访问服务端后台并按引导配置媒体库和元数据源即可。
2.基于Homeassistant实现寝室智能
To be continued...
Comments | NOTHING