Sign inSign up

martin888/yunkan

By martin888

•Updated 17 days ago

Self-hosted AI NVR/VMS in one container - on-device person/vehicle/face/plate detection, no cloud

Image
0

2.3K

martin888/yunkan repository overview

⁠YunKan (云瞰) — self-hosted AI NVR / VMS, all in one container

Privacy-first home & small-business camera recording + on-device AI. Your video never leaves your LAN — nothing is uploaded to any vendor cloud, and AI inference (people / vehicles / faces / license plates / pose / fall) runs entirely on-box, no OpenAI / Gemini / Claude API key required.

A self-hosted alternative to Frigate / Shinobi / ZoneMinder / Scrypted / Agent DVR / iSpy / MotionEye / BlueIris — but pre-bundled into a single container (ZLMediaKit + database + recording + detection + web admin + nginx, supervised by s6-overlay): no Mosquitto / DB / reverse-proxy / model-download wiring to do by hand.

This is the CPU build (martin888/yunkan = martin888/yunkan-cpu) — runs on any amd64 host, no special hardware. Intel iGPU? use martin888/yunkan-openvino (3–5× faster). NVIDIA GPU? use martin888/yunkan-cuda. Tags: latest and pinned (e.g. 0.9.9). Only one variant runs at a time (shared ports).


⁠Features

  • 24/7 continuous recording + motion-event highlights, scrubbable timeline playback.
  • On-device AI: person / vehicle / pet / face recognition / license plate (ALPR) / pose & fall detection / gesture / cry detection — all local.
  • AI scene understanding: each event gets a natural-language summary (e.g. "an elderly person fell in the living room") + semantic event search.
  • Sub-second live via WebRTC (WHEP) with HLS fallback; live detection-box overlay.
  • Two-way talkback, Home Assistant MQTT auto-discovery, Web admin + Android + iOS apps, optional 115 Cloud off-site backup.
  • Works with any RTSP / ONVIF camera (Reolink, Hikvision, Dahua, Amcrest, Annke, Uniview, EZVIZ, Foscam, Lorex…); Tapo / Wyze / Xiaomi / Eufy / Aqara / Imou via a go2rtc bridge.

The installer auto-detects your hardware, picks the right variant, randomizes the JWT secret, and sets up the OTA self-update sidecar:

curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash

Then open http://:23406/, run the setup wizard (pick SQLite for the simplest path), create an admin, add cameras.

⁠Manual docker compose (CPU)

Save as compose.yml then docker compose up -d:

name: yunkan                       # fixed project name (kept stable across upgrades)

services:
  yunkan:
    image: martin888/yunkan-cpu:0.9.9   # or :latest
    container_name: yunkan
    restart: always
    network_mode: host             # WebRTC ICE / RTSP / HLS need many ports
    volumes:
      - ./data:/app/data                       # DB / logs / cookies / upgrade state
      - ./recordings:/app/data/recordings      # recordings (point at a big disk / NAS)
      - /etc/machine-id:/etc/machine-id:ro                       # license HW fingerprint
      - /sys/class/dmi/id/product_uuid:/sys/class/dmi/id/product_uuid:ro
      - /var/run/docker.sock:/var/run/docker.sock                # in-app OTA upgrades
    environment:
      - TZ=Asia/Shanghai
      - SKYVIEW_SELF_CONTAINER_NAME=yunkan

License fingerprint: keep the machine-id / product_uuid read-only mounts — without them the fingerprint drifts on every recreate and the license burns activation slots. In-app upgrades: one click in the web admin pulls the new image and recreates the container (DB backed up first, automatic rollback if the new version fails to start). Drop the docker.sock mount if you don't want that — the web admin will then only notify of new versions and you upgrade with docker compose pull && up -d.


⁠Ports (host networking)

PortProtoPurpose
23406tcpWeb dashboard / REST API (open this in a browser)
23880tcpRTSP
24214tcpHLS + WebRTC (WHEP) signaling + media-server API/hooks
23515udp+tcpWebRTC ICE media

Public / WAN: set SKYVIEW_WEBRTC_EXTERN_IPS=<public-ip-or-domain> so WebRTC ICE candidates are reachable.


Keywords: NVR, VMS, CCTV, surveillance, IP camera, RTSP, ONVIF, person detection, vehicle detection, face recognition, license plate recognition, ALPR, fall detection, two-way audio, talkback, 24/7 recording, timeline playback, WebRTC, HLS, Home Assistant, MQTT, AI NVR, on-device AI, edge AI, no cloud, privacy, self-hosted, Frigate alternative, 云瞰, 摄像头, 监控, 本地 AI.

Tag summary

Content type

Image

Digest

sha256:ac6423b21…

Size

975.9 MB

Last updated

17 days ago

docker pull martin888/yunkan