Installation

SkyView ships as a single Docker image, and one command brings the service up. This chapter covers system requirements, choosing a variant, the install command, port/volume mapping, upgrades, and uninstall.

System requirements

ItemMinimumRecommended
Operating systemLinux kernel ≥ 5.x (Ubuntu 22.04+ / Debian 12+)Ubuntu 24.04 LTS
CPU4-core x86_64(or RK3588 ARM64)8 cores or more
Memory4 GB8–16 GB (multiple streams + AI detection)
Disk64 GB (recording only)1 TB+ HDD (size by retention days)
Docker20.10+Latest stable
GPU (optional)NoneIntel 11th-gen+ iGPU / NVIDIA 30 series+

Architecture support: x86_64 and RK3588

SkyView primarily ships x86_64 images; on ARM it currently supports Rockchip RK3588 (the NPU-accelerated rknn variant, see RK3588 Deployment). Other ARM devices (Raspberry Pi / non-RK3588 Orange Pi models / Apple Silicon, etc.) are not supported for now.

Choosing an image variant

Hardware acceleration for AI detection comes in 4 variants for different hardware. Picking the wrong variant only makes detection slower or non-functional; everything else (recording, playback, two-way audio) is unaffected. The one-line install script auto-detects your hardware and picks the right one for you — the table below is just a reference for those who want to choose manually.

Image tagSuitable hardwareNotes
cpuCPU onlyUniversal fallback, mediocre performance, fine for 2–4 streams at 5fps
openvinoIntel CPU / iGPU / NPU11th-gen Core and up, best value pick
cudaNVIDIA GPUNeeds nvidia-container-toolkit, GTX 16 series and up
trtNVIDIA GPU + ≥ 8GB VRAM (fastest)Faster than cuda, but startup fails with < 8GB VRAM; first launch runs a one-time ~3-minute model optimization

Picking a tier by hardware (detailed reference)

When buying a new machine or evaluating an existing one, use the 5 tiers below grouped by CPU horsepower. Each lists the recommended image, the number of cameras it can reliably handle, and which AI detection features it can run smoothly (you still enable them manually in the web admin).

TierExample hardwareCamerasRecommended imageOne-line positioning
EntryCeleron J4125 / J4105 / J4025 (old Atom)1 streamcpuBargain old/scrap hardware — just enough to run
Home starterN100 / N97 / N95 (Alder Lake-N 4-core)1–2 streamsopenvinoMainstream home use, value starter tier
Elderly careN150 / N250 / N3051–3 streamsopenvinoThe minimum bar for enabling fall detection
Multi-camerai5 / i7 11th–13th gen + Iris Xe iGPU (80EU+)2–4 streamsopenvinoA sensible ceiling for many cameras + whole-home detection
Full features / commercialNVIDIA GTX 1060 / RTX 2060 or higher discrete GPU4+ streamscuda (with ≥ 8GB VRAM you can move to trt for ~2× speedup)Can enable everything — gestures, baby cry, and more

Detection features each tier can run smoothly

Higher tiers can reliably enable more features. On a low tier, turning on too many features makes inference fall behind the camera frame rate and miss events. The table below shows the detection capabilities recommended for each tier — ✅ means recommended, ❌ means not advised on that hardware. A fresh install enables only object detection by default; everything else must be turned on manually in web admin → Settings → Detection as needed.

Detection featureEntry J4125Home N100Care N150Multi Iris XeFull NVIDIA
Motion detection
Face recognition
Object detection (person/vehicle/animal/etc.)
Fall detection
License plate recognition
Gesture recognition
Baby cry detection

Configure a substream at minimum

Running AI detection on a substream (640x360 / 480p) uses 5–10× less CPU than the main stream (1080p). Almost every ONVIF camera offers a substream. See Adding Cameras.

With many cameras, disable detection on non-critical ones

Of 5 cameras, maybe only 2 are critical (front door / living room); leave the other 3 recording without detection. That way even an N100 runs comfortably — concentrate compute on the cameras that matter.

Run a single command and the script auto-detects your hardware, picks the best-fit image variant, pulls the image, and starts the container — 5–15 minutes end to end depending on your network.

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

Want to review the script before running it

Piping a script into bash is common practice but not the safest. To audit it first: curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh -o install.sh, then cat install.sh to read it, then bash install.sh. Or add --detect-only to have the script only probe hardware and recommend a variant without actually deploying.

What the script does:

  • Checks that the system is Linux x86_64 with Docker installed
  • Checks that ports such as 23406 / 23880 / 24214 / 24215 / 23515 are free
  • Probes hardware: NVIDIA GPU (including VRAM) / Intel iGPU / Intel NPU
  • Automatically picks the best-fit image variant among cpu / openvino / cuda / trt
  • Pulls the image (from Aliyun by default) + writes a docker-compose file + auto-generates a strong random secret
  • Starts the container and waits for the health check to pass (about 60 seconds)
  • Prints the browser URL (e.g. http://192.168.1.10:23406/)

The script won't touch your system

It will not install Docker for you, nor the NVIDIA driver or nvidia-container-toolkit. If any of these prerequisites is missing, the script stops and gives you the install commands for your distro; run them yourself, then re-run the script.

Common flags

FlagPurpose
--variant cpu/openvino/cuda/trtForce a specific image variant instead of auto-select
--detect-onlyOnly detect hardware + recommend a variant, don't actually deploy
--offline image.tar.gzOffline-package deploy (no internet access)
--data-dir /pathCustom state directory (database / cookies / logs, default ~/skyview/data)
--recordings-dir /pathPoint recordings at a large disk / NAS separately (default ~/skyview/recordings, alongside data; recordings can reach TB scale)
--registry <url>Use a private image registry
--version 0.6.0Pull a specific version (default latest)
-y or --yesNon-interactive mode
bash
# Only show the recommended variant, don't deploy
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- --detect-only

# Force the trt variant and skip prompts
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- --variant trt -y

# Offline deploy (scp the image tar.gz to the machine first)
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh -o install.sh
bash install.sh --offline /path/to/skyview-image.tar.gz
A few common examples

Need access via a public domain

If you put Caddy / Nginx in front for HTTPS termination + a custom domain, the script will interactively ask for your domain and protocol (http/https) and write the config automatically. For a pure-LAN deploy, just choose N and reach it at http://<server IP>:23406 in the browser.

Deploy by platform (pick your device)

The one-line script is easiest on a generic Linux + Docker environment, but NAS, HA OS, PVE and similar platforms each have their own container-management UI, network mode, iGPU passthrough method, and known pitfalls. Below are dedicated guides for common target platforms, including each platform's specific compose file, UI deployment path, firewall config, and FAQs:

  • Synology DSM 7.2+ — Container Manager + Intel-iGPU models (DS920+ / DS423+ / DS224+, etc.)
  • Unraid 6.12+ — Compose Manager + Intel GPU TOP / NVIDIA Driver plugin
  • fnOS — Debian 12 base + built-in iGPU on N100/N305
  • UGREEN UGOS Pro — x86 models (DXP2800/DXP4800/DXP6800, etc.)
  • TrueNAS Scale 24.10+ — Custom App YAML + ZFS dataset persistence
  • Ubuntu / Debian — apt + docker compose v2, the cleanest deployment path
  • Fedora 39+ — dnf docker-ce + SELinux volume labels + firewalld rules
  • Proxmox VE LXC — privileged LXC + Intel iGPU passthrough (top pick for home N100 / N305 PVE users)
  • Home Assistant OS add-on — add the SkyView repo and one-click install the yunkan / yunkan-openvino add-on
  • RK3588 board — a low-power ARM mini box with Rockchip NPU acceleration (Orange Pi 5 / Radxa Rock 5, etc.); 4GB board recommended, 8G+ experimental

Don't see your platform?

The Ubuntu / Debian guide actually covers 99% of Linux distros (CentOS Stream / Rocky / Arch / openSUSE, etc. — just swap apt install for the right package manager). For SELinux-based systems (CentOS / Rocky / Alma), follow the :Z volume-label handling in the Fedora guide.

Manual deploy (advanced)

If you want to control the process step by step, follow the 4 steps below. The one-line script is essentially these commands automated.

  1. 1

    Pull the image

    Pick one of the four variants above:

    bash
    docker pull registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
  2. 2

    Create data / recordings directories

    Small state (database / cookies / logs) lives in data/; recordings (can reach TB scale) go in a sibling recordings/ so you can point them at a large disk / NAS separately.

    bash
    mkdir -p ~/skyview/data ~/skyview/recordings && cd ~/skyview
  3. 3

    Start the container

    Use host networking so cameras reach the host ports directly, avoiding NAT degrading video quality. License binding requires bind-mounting /etc/machine-id and product_uuid — don't skip them.

    bash
    docker run -d --name yunkan --restart=always \
      --network host \
      -v $(pwd)/data:/app/data \
      -v $(pwd)/recordings:/app/data/recordings \
      -v /etc/machine-id:/etc/machine-id:ro \
      -v /sys/class/dmi/id/product_uuid:/sys/class/dmi/id/product_uuid:ro \
      registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
  4. 4

    Open the browser

    The first visit goes to the /setup wizard; continue with the First Launch chapter.

    http://<server IP>:23406

Hardware info must be bind-mounted

The license binds to this machine's hardware. If you mount only data and not these two files, the hardware fingerprint changes the next time you rebuild the container and the license becomes invalid.

Ports and volume mapping

SkyView runs in host network mode, so all ports bind directly on the host. The production ports use an unusual offset into the 2xxxx range to avoid clashing with an existing nginx on 80/443, redis on 6379, or other services on 8080/8554/8888.

PortPurposeRequired?
23406 / TCPWeb admin + app APIRequired (can also sit behind a reverse proxy for HTTPS)
23880 / TCPDirect RTSP out (for VLC / third-party NVR)Optional
24214 / TCPPlayback + fallback live viewRecommended
24215 / TCPLive view (low-latency channel signaling)Recommended
23515 / UDPLive view (low-latency channel audio/video)Recommended; without it, the stream auto-falls back to 24214 (latency becomes 2–4s)
Container pathPurposeRecommendation
/app/dataSmall state: database / config / cookies / logsMust mount, lives across containers
/app/data/recordingsRecordings (TB scale, nested on top of /app/data)Must mount, can point to a large disk / NAS; models are bundled in the image, no mount needed
/etc/machine-idHardware fingerprint 1/2Must mount read-only
/sys/class/dmi/id/product_uuidHardware fingerprint 2/2Must mount read-only

Upgrading

Easiest: one-click upgrade from the web console. Open Web Console → Settings → System → Check for updates, and click "Upgrade" when a new version shows up — the system pulls the new image and recreates the container automatically (the database is backed up beforehand, and if the new version fails to start it automatically rolls back). The page reconnects to the new version within a few minutes.

You can also upgrade manually over SSH:

bash
cd ~/skyview
docker compose -f compose.yml pull
docker compose -f compose.yml up -d

Or re-run the one-line script (with -y to skip prompts):

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

Data migrates automatically

Database schema upgrades run automatically when the container starts — no manual steps. We recommend backing up first with tar -czf data-backup-$(date +%F).tar.gz data/.

Uninstalling

bash
cd ~/skyview
docker compose -f compose.yml down
docker rmi registry.cn-hangzhou.aliyuncs.com/yunkan/yunkan-cpu:latest
# Recordings / database are kept; for a full cleanup:
rm -rf ~/skyview

Deleting the data directory is irreversible

It contains the database, face library, recordings, and 115 login info. Before deleting, make sure every recording you need has been downloaded or uploaded to the cloud.
Installation - SkyView Docs