# 云瞰 macOS 简易部署模板(OrbStack / Docker Desktop)
#
# ⚠ **推荐用 Mac 一键脚本**,不是这个文件:
#
#     curl -fsSL https://cdn.yun-kan.com/yunkan-install-macos.sh | bash
#
# 一键脚本建一台**桥接到局域网**的 Linux 虚拟机(Lima),云瞰在里面跟 Linux 裸机一样
# 完整可用,还能开机自启(不用登录 macOS)。本文件是给已经在用 OrbStack / Docker Desktop、
# 不想再装一套虚拟机的用户的简易路径,代价是这两家的虚拟机都在 **NAT** 后面:
#
#   不可用:ONVIF 自动搜索摄像头(手动填 IP 添加即可)/ 手机 App 局域网自动发现服务器 /
#           HomeKit / GB28181(设备连不进来)/ 添加摄像头时自动识别 MAC
#   要手动配:SKYVIEW_WEBRTC_EXTERN_IPS(下面 environment,填 Mac 的局域网 IP)
#   限制:   OrbStack / Docker Desktop 都要登录 macOS 后才会启动;Mac 睡眠期间不录像
#   详见 docs/macos-deployment.md
#
# 用法:
#   mkdir ~/yunkan && cd ~/yunkan && 把本文件存成 compose.yml
#   # license 机器指纹:用这台 Mac 的硬件 UUID(必须先生成,否则 docker 会建出同名空目录)
#   ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}' \
#     | tr -d '-' | tr 'A-F' 'a-f' > machine-id
#   # 把下面 SKYVIEW_WEBRTC_EXTERN_IPS 改成 Mac 的局域网 IP(ipconfig getifaddr en0)
#   docker compose up -d
#   浏览器打开 http://<Mac 的局域网 IP>:23406
#
# Docker Desktop 额外一步:「Settings → Resources → Network → Enable host networking」
# (4.34+;不开的话 network_mode: host 只绑在虚拟机里,Mac 和局域网都访问不到)。
# OrbStack 默认支持 host 网络。

name: yunkan

services:
  yunkan:
    # yunkan-cpu 是 amd64 + arm64 多架构镜像,Apple Silicon 自动拉 arm64 那份。
    # Mac 只有 cpu 变体(虚拟机里没有 GPU / 神经网络引擎可用)。
    image: registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
    container_name: yunkan
    restart: always
    network_mode: host
    volumes:
      # 数据库 / 日志 / 事件快照放虚拟机内的 named volume:SQLite 不放在跨虚拟机的
      # 共享目录上(macOS 目录经 virtiofs 共享进虚拟机,文件锁语义不保证)。
      - yunkan-data:/app/data
      # 录像放 Mac 目录:空间统计看的是 Mac 真实磁盘,清理逻辑才不会误判;想放外接盘
      # 改左侧路径(Docker Desktop 需在 Settings → Resources → File sharing 里放行)。
      - ./recordings:/app/data/recordings
      - ./machine-id:/etc/machine-id:ro
      # 在线升级:容器内用 docker SDK 拉新镜像并重建自身
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
      - SKYVIEW_SELF_CONTAINER_NAME=yunkan
      # 必填:Mac 的局域网 IP。容器只看得到虚拟机内网地址,不填的话浏览器 / App 的
      # 实时画面(WebRTC)连不上,会退回较慢的 HLS。Mac 换 IP 后要改这里再 up -d。
      - SKYVIEW_WEBRTC_EXTERN_IPS=192.168.1.100

volumes:
  yunkan-data:
