Fedora 部署

Fedora 39+ 預設安裝的是 podman,要跑雲瞰需要另外安裝 docker-ce。SELinux 預設為 enforce 模式 + firewalld 預設開啟,磁碟區標籤和連接埠放行不能少。

1. 安裝 docker-ce(不是 podman)

Fedora 預設使用 podman,但雲瞰映像檔和 docker-compose 檔案是按 docker 相容性測試的。podman 大部分相容,但 host network 模式的行為略有差異,建議改用 docker-ce:

bash
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

2. 處理 SELinux(關鍵)

磁碟區掛載必須加 :Z 或 :z 標籤

Fedora SELinux 強制啟用 enforce 模式,容器寫入資料磁碟區會被拒絕,除非給磁碟區打上 :Z(私有,建議)或 :z(共用)標籤。詳見 compose 範例。

3. 開放 firewalld 連接埠

bash
sudo firewall-cmd --permanent --add-port=23406/tcp
sudo firewall-cmd --permanent --add-port=23515/udp
sudo firewall-cmd --permanent --add-port=23515/tcp
sudo firewall-cmd --permanent --add-port=23880/tcp
sudo firewall-cmd --reload

4. 啟動雲瞰

我們為 Fedora 另外維護了一份 compose 範本(:Z SELinux 標籤全部已預先設定好),不用手動改:

瀏覽器下載 compose.yml

Fedora 專用 · openvino 變體 · :Z 標籤已預置 · 支援網頁後台線上升級

或透過 SSH 用 wget:

bash
mkdir -p ~/yunkan && cd ~/yunkan
wget https://yun-kan.com/compose/fedora.yml -O compose.yml
docker compose up -d

如何切換到其他變體

本範本預設 yunkan-openvino(Intel iGPU)。純 CPU 改 image: 為 yunkan-cpu;NVIDIA GPU 改為 yunkan-cuda 或 yunkan-trt 並取消 deploy: 的註解。無論哪個變體,:Z 磁碟區標籤都必須保留(SELinux 強制要求)。
yaml
name: yunkan

services:
  yunkan:
    image: registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-openvino:latest
    container_name: yunkan
    restart: always
    network_mode: host
    devices:
      - /dev/dri:/dev/dri
    volumes:
      - ./data:/app/data:Z
      - ./recordings:/app/data/recordings:Z
      - /etc/machine-id:/etc/machine-id:ro
      - /sys/class/dmi/id/product_uuid:/sys/class/dmi/id/product_uuid:ro
      - /var/run/docker.sock:/var/run/docker.sock:z
    environment:
      - TZ=Asia/Shanghai
      - SKYVIEW_SELF_CONTAINER_NAME=yunkan
compose.yml Fedora 版(關鍵行加 :Z)

啟動後瀏覽器打開 http://<伺服器IP>:23406/ 進入 Setup 精靈。

5. 常見問題

容器啟動後寫入錄影出現 Permission denied

幾乎可以肯定是 SELinux 磁碟區標籤的問題。docker compose down,在 compose volumes 行末加 :Z,docker compose up -d 重啟即可。/etc/machine-id 和 /sys/class/dmi/id/product_uuid 是唯讀不需要標籤(也可加 :ro,Z 防止誤拒)。

在 Fedora 上使用 NVIDIA GPU

nvidia-container-toolkit 有 Fedora 套件,裝好後 runtime: nvidia 即可。詳見 NVIDIA 官方文件。

升級:全功能可用——網頁後台一鍵升級,或手動 docker compose pull && docker compose up -d。

這篇文件有幫助嗎?