背景 之前从8100的黑群晖,切换到了N100的,但是比较慢,然后忍不了了,就又新买了一套设备组装。趁机就升级下网卡。之所以选黑群晖就是只是因为界面友好点。配套软件比较给力。然后穷买不起白裙。
需求 
存储
文件存储(无需磁盘级别高可用) 群晖自带 
照片存储 immich 
提供远程块设备 群晖自带 
webdav 群晖自带 
远端数据备份 群晖自带(只备份照片,其他的内容如果丢了就让他随风而逝吧) 
 
 
影音
下载 qbittorrent ipv6 + 不期望再走一层群晖的nat 
自动追番 (autobangumi) 
电影下载&封面刮削 (moviepilot) 
 
 
 
硬件配置 整体都是走的捡垃圾的路线,能省就剩
CPU: 12300t
主板: 尔英B660m
内存: 十铨冥神 ddr4 16g * 2 
电源: 振华 80 plus 金牌 450w
网卡: mcx4121(中兴oem) 10G 双口,之前用的是一个 MNPA19- XTR 死活驱不上,就换了mcx4121
硬盘: 
10T * 1 
12T * 1 
14T * 2 
16T * 1 
 
sata 线比较乱,感觉换成定制线会好点。后边有预算了再看吧。
环境配置 系统 引导走的RR,机型选的SA6400,主要是为了能够支持12代intel的核显。
存储池 所有的存储池都是basic,后边有问题恢复也相对容易,不要做各种级别的raid。
证书 下载acmesh
1 2 3 4 5 wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz tar xvf master.tar.gz cd  acme.sh-master/./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "[email protected] "  source  ~/.profile
签发证书
1 2 3 4 5 6 export  CF_Token="你的TOKEN" export  CF_Email="[email protected] " cd  /usr/local/share/acme.shexport  CERT_DOMAIN="*.home.zou.cool" export  CERT_DNS="dns_cf" ./acme.sh --issue --server letsencrypt --home . -d "$CERT_DOMAIN "  --dns "$CERT_DNS "  
正确的话会返回
替换群晖的根证书
1 2 3 4 5 cd  /usr/local/share/acme.shexport  SYNO_Username='phantooom' export  SYNO_Password='你的密码' export  SYNO_Certificate="bp" ./acme.sh --deploy --home . -d "$CERT_DOMAIN "  --deploy-hook synology_dsm 
成功会返回如下内容
我们登录群晖会发现证书已经被替换了
证书自动续签我们添加一个任务,使用root执行
使用域名登录 
去cloudflare增加一个泛解析即可。
内置软件安装 
container Manager (docker) 
webstation 
cloud sync 
 
第三方软件 下载软件 这里使用的是qbittorrent ,我们需要支持ipv6,也需要一个与宿主机在同一网段的IP。所以我们需要新建一个macvlan的设备用来支持这种场景。
我们给这个macvlan设备分配一个网段。
192.168.50.128/28(192.168.50.129~142)总共10多个ip目前看足够用了。(分的时候多分点,这个设备修改subnet非常费事。)
创建macvlan
1 2 3 4 5 6 7 docker network create -d macvlan \ --subnet=192.168.50.1/24 \ --gateway=192.168.50.1 \ --ipv6 \ --subnet=fd00::/64 \ -o parent=eth1 \ bridge-host 
打通宿主机与macvlan,如果不打通后期没有办法使用群辉的webstation统一管理前边的接入层,记得加入到定时任务
1 2 3 4 ip link  add macvlan-host link  eth1 type  macvlan mode bridge ip addr add 192.168.50.128 dev macvlan-host ip link  set  macvlan-host up ip route add 192.168.50.128/28 dev macvlan-host 
配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 version: "3.5"  services:   qbittorrent:     container_name: qBittorrent     environment:       - TZ=Asia/Shanghai       - WEBUI_PORT=8080       - PUID=1026       - PGID=100     volumes:       - /volume3/homelab/docker/qb:/config       - /volume3/downloads:/downloads        - /volume3/影音:/影音     ports:       - "8080:8080"        - "6881:6881"        - "6881:6881/udp"      networks:       default:         ipv4_address: 192.168.50.129     restart: always     image: superng6/qbittorrent networks:   default:     external: true      name: bridge-host 
配置一下反向代理,这个不能直接使用webstation接入,主要是因为使用了macvlan的方式。
我们可以看到ipv4,v6都有链接。
配置一下内网跳过安全验证
影音库 这边使用的是jellyfin
1 2 3 4 5 6 7 8 9 10 11 12 version: '3.5'  services:   jellyfin:     image: jellyfin/jellyfin     container_name: jellyfin     ports:     - 18096:8096     volumes:       - /volume3/homelab/docker/jellyfin:/config       - /volume3/homelab/docker/jellyfin/cache       - /volume3/影音:/影音     restart: always 
在webstation中配置一下域名
记得申请一个apikey
自动化追番软件 自动追番我们采用 autobangumi + mikanani.me  从mikan上面获取自己想要的动画的rss,后续更新了就会自动下载。并且改名。
配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 version: "3.5"  services:   auto_bangumi:     container_name: AutoBangumi     environment:       - TZ=Asia/Shanghai       - PGID=${GID}        - PUID=${UID}      volumes:       - /volume3/homelab/docker/auto-bangumi:/app/config       - /volume3/homelab/docker/auto-bangumi:/app/data       - /volume3/downloads:/downloads        - /volume3/影音:/影音     ports:       - '17892:7892'      dns:       - 8.8.8.8       - 223.5.5.5     restart: always 
具体配置如下,可以打开电报的通知。当然也能微信通知,自己配置一下就好了。
记得设置下载器地址。就是我们之前搭的qb因为我们配置了局域网面密,所以这个密码啥的都不用管。这个代理可以完全不用配置,如果在路由上面做了透明代理。
通知大体如下
大体上只要把这个季度的想看的新番填上就能自动下载了。基本上回来看到更新了就能开始看了。
电影&电视剧下载 一般电影类的可能习惯使用bt/网盘下载。电视剧类的更习惯走pt,但是不管哪种方式最后都要用moviePilot去整理&获取封面资源&字幕。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 version: "3.5"  services:   nas-tools:     image: jxxghp/moviepilot:latest     ports:       - 13000:3000             volumes:       - /volume3/homelab/docker/moviepilot:/config       - /volume3/homelab//docker/moviepilot:/moviepilot       - /volume3/影音:/影音       - /volume3/downloads:/download     environment:       - PUID=0           - PGID=0           - UMASK=000      restart: always     hostname: moviepilot     container_name: moviepilot 
分类配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 movie:      动画电影:          genre_ids: '16'    华语电影:          original_language: 'zh,cn,bo,za'       外语电影: tv:   动画:          genre_ids: '16'    纪录片:           genre_ids: '99'    儿童:          genre_ids: '10762'    综艺:          genre_ids: '10764,10767'    国产剧:          origin_country: 'CN,TW,HK'    欧美剧:          origin_country: 'US,FR,GB,DE,ES,IT,NL,PT,RU,UK'    日韩剧:          origin_country: 'JP,KP,KR,TH,IN,SG'       未分类: 
安装好了如上图所示。我们进行一些基本的配置
启用本地的cookiecloud。将我们的地址填入cookiecloud的浏览器插件中。后边我们要自动同步许多支持搜索的站点用来搜索种子资源。
填写完成之后我们去点击服务选项卡中的同步cookiecloud站点
此时我们在站点管理里面就能看到我们的站点了,馒头的支持比较复杂参考 这个文章https://t.me/moviepilot_official/507610 
我们点击设定,选择搜索从哪些站点搜索
目录我们根据自己实际情况设定好。
如果这里你下载是pt,同时目录又跨盘了,尽量选择复制的方式,然后后边通过其他插件去自动清理下载目录。
下载相关的配置,配置好即可。这个这个端口可千万别忘了加,坑了半天,真的不能没有端口!人家确实没骗我,是我草率了。
我们去搜搜一下资源试试吧
比如我们想体验一下,背后有一个强大的祖国。想了解什么是犯我中华者虽远必诛。那么我们就看一部战狼2吧。
点击确认即可
这边会开始下载,下载完了会有通知
下载好了,我就不看了,毕竟都快背下来了。
还有一些比较有意思的插件简单的提一下
站点自动签到,就是一些pt站是要求登录的,但是我们平时可能也不怎么去,这个就会模拟迁到或者登录,保证账号不会被删除。
豆瓣想看,你在豆瓣标记好自己相看的,就会自己去下载了。
自动删种,pt一般都上传有要求的,所以不能下完就删除,所以要等一段时间,我们可以设定一个分享率或者时间去自动删除下载任务。
照片管理 最开始我是用photos的大体上用了2年多,非常好用。后边出了immich就体验了一下,也挺好用的,所以。本篇文章切换到了immich来讲解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 name: immich services:   immich-server:     container_name: immich_server     image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}      command : ['start.sh' , 'immich' ]     volumes:           - ${UPLOAD_LOCATION} :/usr/src/app/upload           - ${EXTERNAL_PATH} :/usr/src/app/external           - /etc/localtime:/etc/localtime:ro     env_file:       - .env      ports:       - 2283:3001     depends_on:       - redis       - database     restart: always   immich-microservices:     container_name: immich_microservices     image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}                     command : ['start.sh' , 'microservices' ]     volumes:       - ${UPLOAD_LOCATION} :/usr/src/app/upload       - /etc/localtime:/etc/localtime:ro       - ${EXTERNAL_PATH} :/usr/src/app/external     env_file:       - .env      depends_on:       - redis       - database     restart: always   immich-machine-learning:     container_name: immich_machine_learning               image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}                     volumes:       - model-cache:/cache     env_file:       - .env      restart: always   redis:     container_name: immich_redis     image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672     restart: always   database:     container_name: immich_postgres     image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0     environment:       POSTGRES_PASSWORD: ${DB_PASSWORD}        POSTGRES_USER: ${DB_USERNAME}        POSTGRES_DB: ${DB_DATABASE_NAME}        POSTGRES_INITDB_ARGS: '--data-checksums'      volumes:       - ${DB_DATA_LOCATION} :/var/lib/postgresql/data     restart: always     command : ["postgres" , "-c"  ,"shared_preload_libraries=vectors.so" , "-c" , 'search_path="$$user", public, vectors' , "-c" , "logging_collector=on" , "-c" , "max_wal_size=2GB" , "-c" , "shared_buffers=512MB" , "-c" , "wal_compression=on" ] volumes:   model-cache: 
1 2 3 4 5 6 7 8 9 10 11 12 13 UPLOAD_LOCATION=/volume4/immich-data/photos DB_DATA_LOCATION=/volume4/immich-data/postgres EXTERNAL_PATH=/volume3/photos IMMICH_VERSION=release DB_PASSWORD=postgres DB_USERNAME=postgres DB_DATABASE_NAME=immich 
EXTERNAL_PATH 是外部的路径,可以加载之前整理好的照片。一定要注意,如果你以前照片是被群晖管理的可能存在许多叫做 @eaDir 的文件夹,这里面都是缩略图缓存,一定要全都删除掉。
1 find /volume* -name "@eaDir"  -type  d -print0 | xargs -0 rm  -rf 
不然缩略图也会被当成照片再解析一次,非常酸爽。
安装好如下图所示。
我们调整下设置,模型换成 XLM-Roberta-Large-Vit-B-16Plus 这个支持中文,记得要在添加照片之前就换好。不然要重新提取才可以搜索。
支持人脸聚类,支持地点展示
如果地图带有GPS信息则也支持展示到地图中
也支持内容搜索,至于说效果也就一般般,可能跟手机内置的相册差不多水平吧。
APP支持同步手机相册到远端
数据备份 数据备份使用cloud sync
这边只备份照片数据,其他的均不备份。
一份备份到自己的另一台nas,一份备份到百度云盘
有两个小点要注意的是。如下三点:
同步方向要仅本地上传的变更。这个是防止云上误操作,或者盗号导致同步到本地,本地数据也没了 
数据加密,百度云比较恶心人,如果他认为你的照片有问题,那么这个照片就会被删掉。而你是没有资格保存这张照片的。可能你的青春就都没了。再也找不回来了。 
当删除源文件夹文件时,不要删除目的地文件夹中的文件。这个也是血泪教训,如果手残删了本地,没有勾选这个的话,远程也会被删掉。 
 
其他 
虽然升级了万兆网卡,但是实际上读不分散在几块盘,读不分散在多个机器实际上是利用不上这个东西的。所以可能后边会考虑加一个读缓存。 
整体上moviepilot能满足大部分的影音需求,但是在动画方面还差一些。主要是针对追番场景下的订阅不太友好。完全是基于搜索实现的。我更想明确的跟某个字幕组的翻译,而不是随机来。 
immich 还是挺有意思的。 
共享文件夹没有提,但是其实这个才是日常打交道最多的。 
带颜色的东西也有做,但是不太好分享,但是也挺有意思的。 
没有在群晖搭homeassist,这个东西我放到路由里面了,因为家电主要在上边。另外就是不少家电都没有接口。 
整体从性能看12300t 比N100 舒服不少了。至少体验上来说是这样。但是跟8100比,我目前的场景没觉得太大的提升。 
数据安全始终要放到第一位,切记。切记。