TrueNAS Scale 折腾记录
写在前面
截止到本篇博客书写,最新的 TrueNAS Scale 的版本为 ElectricEel-24.10.0.2,即文章封面图所示的版本。从 TrueNAS Scale 24.10 版本开始,系统将 Docker Compose 作为默认的应用容器管理工具,替代了原来的 K3S,终于不用捏着鼻子用 K3S 了~
TrueNAS Scale 25.04 更新:从 25.04 开始,官方修复了数据保护中 OneDrive 的选项;此外网络页面中设置的代理开始对 docker 和 github 应用源生效,因此也无需开机自动换源了。
开机 Docker 自动换源(只针对 TrueNAS Scale 24.10)
将更新脚本写入到
/root/update_docker_daemon.sh文件:sudo tee /root/update_docker_daemon.sh > /dev/null << 'EOF' #!/bin/bash sleep 30 # 备份原始文件 sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak # 使用 jq 添加新的键值对并写入临时文件 sudo jq '. + { "registry-mirrors": ["https://docker.1ms.run"] }' /etc/docker/daemon.json | sudo tee /etc/docker/daemon.json.tmp > /dev/null # 检查 jq 是否成功 if [ $? -eq 0 ]; then # 替换原始文件 sudo mv /etc/docker/daemon.json.tmp /etc/docker/daemon.json echo "成功更新 daemon.json 文件。" else echo "更新 daemon.json 文件失败,恢复备份。" sudo mv /etc/docker/daemon.json.bak /etc/docker/daemon.json fi # 重启 Docker 服务 sudo systemctl restart docker EOF设置开机自启
在 TrueNAS Scale 系统->高级设置->开机/关机脚本中添加脚本,类型选“命令”,命令填bash /root/update_docker_daemon.sh,什么时候选“初始化后期”,保存即可
恢复数据保护中的 OneDrive 项(只针对 TrueNAS Scale 24.10)
在官方论坛 Kiva 提出了解决方案,在命令行中执行:
# 将 /usr 目录重新挂载为可读写
sudo mount -o remount,rw /usr
# 如有需要,还要先设置 Git 代理
git clone https://github.com/imkiva/onedrive-sdk-python
cd onedrive-sdk-python/
# 将兼容高版本 Python 的 OneDrive SDK 库加入到 pip 包目录中
cp -ar src/onedrivesdk /usr/lib/python3/dist-packages
cp -ar src/python3/request /usr/lib/python3/dist-packages/onedrivesdk
# 下载核心脚本
cd /usr/lib/python3/dist-packages/middlewared/rclone/remote/
wget -e use_proxy=yes -e https_proxy=http://<ip>:<port> https://raw.githubusercontent.com/truenas/middleware/cd9acacac17f9a4e98883c7d8baefacd2085eea7/src/middlewared/middlewared/rclone/remote/onedrive.py
sed -i '1d;$d' onedrive.py
# 恢复 /usr 目录权限
mount -o remount,ro /usr
然后重启系统,便可以看到 OneDrive 备份项回来了~
配置 DDNS-GO 作为自定义应用
在 探索应用程序 中选择 自定义应用程序:
| 分类 | 选项 | 填写内容 |
|---|---|---|
| Application name | 应用名称 | ddns-go |
| Image Configuration | Image->Repository | jeessy/ddns-go |
| - | ->Tag | latest |
| - | ->Pull Policy | Pull the image if it is not already present on the host. |
| Container Configuration | Restart Policy | Unless Stopped - Restarts the container irrespective of the exit code but stops restarting when the service is stopped or removed. |
| Custom User | 用户 ID | 0 |
| 群组 ID | 0 | |
| 网络配置 | Host Network | 勾选 |
| Storage Configuration | 存储->添加->Mount Path | /root |
| ->数据集名称 | ddns-go |
配置完打开 truenas-ip:9876 即可。
Nextcloud
在 cli 使用 occ:docker exec -u www-data <CONTAINER ID> occ <cmd>,例如当自动更新失败时,可以手动使用 occ upgrade 重新触发更新。
可以通过修改 config/config.php 来配置 trusted_domains 域名:
'trusted_domains' =>
array (
0 => 'domain1',
1 => '127.0.0.1',
2 => 'localhost',
3 => 'domain2',
4 => 'domain3',
5 => 'domain:port',
6 => 'nextcloud',
)
参考链接:Nextcloud反向代理的相关配置说明 | 橙叶博客
最近升级 Nextcloud 的时候,遇到了 Invalid choice: postgres_13_image 的报错,发现 GitHub 上也有人遇到了相同的问题,然后由于和另一个 Issue 问题 相同被关掉了,另一个 Issue 中给出了解决方案:
1. edit the app, select the Postgres Image and change it, for me it went up to 17 (the field was labeled "Postgres Image (CAUTION)") 2. once it's deployed and running without issue, then do the app update
就是直接编辑 app,把 Postgres Image 配置项从 13 改为 17,然后重启等待升级即可。(就是 Postgres 13 不受支持了)