找回密碼
 立即註冊
    查看: 177|回覆: 0

    群暉 NAS 跑智慧家庭服務:一份會動的 compose 檔(含 DSM 7.3 的 USB 大坑)

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 11:19:35 | 顯示全部樓層 |閱讀模式
    NAS 反正開著,拿來跑智慧家庭的支援性服務很划算。但有一個坑大到會讓整篇教學白做,所以先講。

    NAS 反正開著,拿來跑智慧家庭的支援性服務很划算。但有一個坑大到會讓整篇教學白做,所以先講。

    先看這個:DSM 7.3 之後 USB 轉序列裝置不見了

    如果你的計畫是「把 Zigbee 協調器插在 NAS 後面,直通進 Zigbee2MQTT 容器」,DSM 7.3 以上做不到,而且不是設定問題。

    現象是這樣:USB 隨身碟正常、USB 集線器正常,就是序列裝置不會產生節點。`/dev/ttyUSB0`、`/dev/ttyACM0`、`/dev/serial/by-id/` 通通是空的。

    歷史上 DSM 7.0 到 7.2 也有類似問題,但那時候是模組沒載入,SSH 進去下三行 `modprobe` 就能救回來。7.3 之後是模組本身不在核心裡了,所以 `modprobe` 也沒有用。

    先確認你是哪一種。SSH 進 NAS 之後:
    1. # 1. 看序列裝置有沒有出現(協調器要先插上)
    2. ls -l /dev/serial/by-id/ 2>&1
    3. ls -l /dev/ttyUSB* /dev/ttyACM* 2>&1
    4. # 2. 看模組在不在
    5. ls /lib/modules/ | grep -Ei 'cdc|cp210|ch341|ftdi|usbserial'
    6. # 3. 看系統插入時有沒有認到
    7. dmesg | tail -20
    複製代碼

    你會看到什麼:


    • 第一組有東西(例如 `usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_xxxx-if00-port0`)→ 你的 DSM 還可以直通,照下面的步驟 8-B 做
    • 第一組是空的但第二組列得出模組檔 → 模組在、只是沒載入,試 `sudo modprobe usbserial && sudo modprobe cdc-acm && sudo modprobe ftdi_sio`,然後把協調器拔掉重插,再查一次第一組
    • 第一組空的、第二組也找不到模組 → 這就是 DSM 7.3 的狀況,不要再花時間,直接走步驟 8-A 的網路協調器


    為什麼特別強調:這個坑最難的地方是它不像故障。指令全部執行成功、容器也起得來,只有 Zigbee2MQTT 的日誌一直說找不到 adapter,而你會以為是路徑寫錯、是權限、是型號不支援,一路查下去。

    架構決定:哪些東西該放 NAS

    先把分工講清楚,免得裝了才發現不該裝。

    不要放 NAS 的:


    • Home Assistant 本體 —— Docker 版用不了應用程式(就是以前的附加元件),而且 DSM 更新、套件更新、排程維護都會重啟 Docker,家裡的自動化跟著停擺
    • MQTT broker —— 它是 Zigbee 裝置與 HA 之間的唯一通道。NAS 一重開,HA 裡所有 Zigbee 裝置會集體變成不可用。這類服務要跟 HA 待在同一台機器上


    適合放 NAS 的:


    • InfluxDB —— 長期數據,本來就該放在有大硬碟的地方
    • Grafana —— 儀表板,掛掉不影響家裡運作
    • Frigate —— 錄影檔佔空間,而且 NAS 的硬碟本來就是為連續寫入買的
    • 備份腳本


    本篇的 compose 只放這一類。如果你真的只想要一台機器,MQTT 與 Zigbee2MQTT 也放得進來(步驟 4 到 8 都有),只是要接受上面那個重啟的代價。

    步驟 1:開啟 SSH 與安裝 Container Manager


    • 控制台 → 終端機和 SNMP → 勾「啟動 SSH 功能」→ 套用
    • 套件中心 → 搜尋 `Container Manager` → 安裝(DSM 7.2 之前叫 Docker)


    你會看到什麼:用 SSH 連進去(`ssh 你的帳號@NAS的IP`),下 `sudo docker version`,會印出 Client 與 Server 兩段版本資訊。

    `sudo: docker: command not found`:Container Manager 沒裝好,或這台機型不支援(低階的 J 系列有些沒有)。

    步驟 2:建立資料夾

    SSH 進去執行:
    1. cd /volume1/docker
    2. mkdir -p mosquitto/config mosquitto/data mosquitto/log
    3. mkdir -p influxdb/data influxdb/config
    4. mkdir -p grafana/data
    5. mkdir -p zigbee2mqtt/data
    6. mkdir -p secrets
    7. ls -l
    複製代碼

    你會看到什麼:列出六個目錄。

    `/volume1/docker` 不存在:那是 Container Manager 安裝時自動建的共用資料夾。沒有的話到 控制台 → 共用資料夾 → 新增,名稱 `docker`。

    步驟 3:把密碼放進 secrets

    不要把密碼寫在 compose 的環境變數裡。環境變數任何人只要 `docker inspect` 就看得到,而且 compose 檔通常會被你一起備份或丟進 Git。

    以下還有約 81% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 01:02 , Processed in 0.137488 second(s), 25 queries .

    快速回覆 返回頂部 返回列表