第10章 Synology 设备 Stash 安装指南
Synology
作者:Muldec
前言
Synology 设备分为两类:支持通过 Docker 进行容器化的设备,以及不支持的设备。要确定你的设备属于哪一类,请参考 Docker 软件包页面的“适用机型”部分。现在,请根据你是否可以使用 Docker,选择相应的安装说明。
通过 Docker 安装 Stash
注意:即使你的 NAS 支持 Docker,你也可以选择在不使用 Docker 的情况下运行 Stash。这样可以更灵活地控制 Stash 实例的启动方式。例如,你可以将影片存储在加密共享文件夹中,仅在该加密文件夹已挂载(解密)时才运行 Stash。
如果你使用的是 Synology DSM 7.2 或更高版本,请启动 Container Manager 应用。否则,请确保 Docker 应用已安装并正常运行。
在软件包注册表中搜索 stash 并安装。
在“高级设置”中,使用以下配置创建一个 stash 镜像:
“卷设置”部分
| 文件/文件夹 | 挂载路径 | 说明 |
|---|---|---|
| docker/Stash/generated | /generated | 缩略图、剪辑等 |
| docker/Stash/metadata | /metadata | 数据库 |
| docker/Stash/config | /root/.stash | 配置文件 |
| docker/Stash/cache | /cache | 缓存文件 |
| docker/Stash/blobs | /blobs | 场景封面、艺人图片等二进制数据 |
| (你的影片存储位置) | /data | 影片存放位置 |
“环境变量”部分
(这些需要与你在“卷”选项卡中创建的卷路径保持一致。)
| 变量名 | 值 |
|---|---|
| PATH | (保持默认) |
| STASH_CACHE | /cache |
| STASH_METADATA | /metadata |
| STASH_GENERATED | /generated |
| STASH_STASH | /data |
“端口设置”部分
你需要在“端口”部分设置一个默认端口,否则 Docker 每次启动 Stash 时都会分配不同的端口。保持容器端口设置不变。
“网络”部分
选择“host”网络,而不是“bridge”。
(感谢支持者 Herelam80 提供这些指导)
不通过 Docker 安装 Stash
警告:此方法使用 SSH 在 NAS 上运行命令行指令。如果你不熟悉 SSH 或 Linux 命令行,建议不要继续操作,因为在 SSH 会话中的错误操作可能会严重损坏你的 NAS。
此方法适用于 DSM 7.0 及更高版本。在 7.0 之前的版本上无法使用。
安装前置依赖
在 DSM 中,进入“软件中心 > 设置”。在“软件来源”选项卡中,点击“添加”,输入 SynoCommunity 作为名称,输入 https://packages.synocommunity.com/ 作为位置,然后点击“确定”。
回到软件中心,在“社区”选项卡中查找 Python 3.11。点击“安装”,并同意第三方软件包警告。
然后在“社区”选项卡中查找 Ffmpeg 7。点击“安装”,并同意第三方软件包警告。
启用 SSH
在 DSM 中,进入“控制面板 > 连接 > 终端 & SNMP”,勾选“启用 SSH 服务”。
创建一个用于运行 stash 的用户
在 DSM 中,进入“控制面板 > 文件共享 > 用户与群组”。
点击“创建”。
输入用户名(例如 stash)和密码(你稍后需要用到)。
点击“下一步”,直到进入“加入群组”界面。
将该用户分配到“administrators”群组(稍后移除此设置,但 Synology 要求此设置才能使用 SSH 并正确完成安装(我知道这很糟糕))。
点击“下一步”,直到进入“分配共享文件夹权限”界面。
对你的影片文件夹分配读/写权限(写权限允许从 stash 应用中删除剪辑)。
点击“下一步”,直到进入“分配应用程序权限”界面。
对所有应用程序勾选“拒绝”。
点击“下一步”,直到可以点击“完成”。
连接到你的 NAS
在终端中,使用刚创建的、属于 administrators 群组的账户连接到你的 NAS。
ssh stash@your_nas_hostname
链接 ffprobe 和 ffmpeg
ffmpeg 之前已经安装,但缺少指向 ffprobe(也已安装)和新版本 ffmpeg 的链接。运行以下命令。
sudo ln -sf /var/packages/ffmpeg7/target/bin/ffprobe /usr/local/bin/ffprobe
sudo ln -sf /var/packages/ffmpeg7/target/bin/ffmpeg /usr/local/bin/ffmpeg
下载 Stash
从 GitHub 下载最新版本的 Stash 及其校验和。
# 查找你的 Synology 正在运行的架构
uname -m
# 根据架构,你需要下载正确版本的 stash
# x86_64
wget https://github.com/stashapp/stash/releases/latest/download/stash-linux
# armv6l
wget https://github.com/stashapp/stash/releases/latest/download/stash-linux-arm32v6
# armv7l
wget https://github.com/stashapp/stash/releases/latest/download/stash-linux-arm32v7
# aarch64
wget https://github.com/stashapp/stash/releases/latest/download/stash-linux-arm64v8
# 下载校验和
wget https://github.com/stashapp/stash/releases/latest/download/CHECKSUMS_SHA1
# 执行校验和验证
sha1sum -c --ignore-missing CHECKSUMS_SHA1
# 你应该会看到一行 `stash-linux: OK`
# 如果没有,说明下载过程中出现了错误
# 清理不再需要的文件
rm CHECKSUMS_SHA1
危险:不要现在运行 stash,否则会在我们不想出现的位置生成一堆文件/文件夹。
Python
准备 Python 环境(用于爬虫和插件)。
python3.11 -m ensurepip --upgrade
python3.11 -m venv stash-env
source stash-env/bin/activate
pip3 install pipreqs
配置 NAS 以运行 Stash
创建配置文件
echo 'PATH=/usr/local/bin:$PATH' > .profile
echo 'source stash-env/bin/activate' >> .profile
运行 cat > stash.service 创建服务文件,复制/粘贴以下内容,完成后按 CTRL+D 保存文件(如果未回到提示符,请再按一次):
[Unit]
Description=Run Stash at startup
After=network.target
[Service]
WorkingDirectory=/var/services/homes/stash
Type=simple
User=stash
ExecStart=/bin/bash -c -l '\
exec ./stash-linux'
Restart=on-failure
[Install]
WantedBy=multi-user.target
注意:通过提供之前下载的 stash 可执行文件的准确名称来更改 ExecStart 行。
启动并激活服务
sudo systemctl enable "$(pwd)/stash.service"
sudo systemctl start stash.service
验证是否正常工作
现在,你可以通过访问 NAS 地址的 9999 端口来访问 stash:http://nas-hostname:9999
安装爬虫和插件
每当安装新的 Python 爬虫或插件时,请从 stash 用户的家庭目录执行以下操作:
pipreqs .stash/.
pip3 install -r .stash/requirements.txt
注意:使用 pipreqs 可以扫描所有已安装的爬虫和插件,并找出它们所需的依赖项。你也可以不使用 pipreqs,而是进入每个单独目录并运行 pip3 install -r requirements.txt 来达到相同效果。
将 stash 用户从管理员组中移除
返回 DSM,进入“控制面板 > 文件共享 > 用户与群组”。
点击 stash 用户,然后点击“编辑”。
在“用户群组”选项卡中,取消勾选“administrators”,然后点击“保存”。