TrueNAS Scale 折腾记录

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反向代理的相关配置说明 | 橙叶博客