Browser-accessible Anki Desktop with KasmVNC - Always Latest Version
5.9K
High-performance browser-accessible Anki Desktop using LinuxServer's KasmVNC for optimal streaming performance.
🆕 Unlike other projects, this uses Anki's official launcher system to always get the latest Anki version automatically.

| Feature | This Project | Others |
|---|---|---|
| Anki Version | Always Latest (via launcher) | Pinned to old versions (25.02.x) |
| VNC Technology | KasmVNC (high performance) | noVNC (basic) |
| AnkiConnect | Pre-configured | Manual setup |
| Healthcheck | ✅ Built-in | ❌ None |
| Multi-arch | ✅ amd64 + arm64 | Often amd64 only |
| Auto-updates | ✅ Via launcher | Requires rebuild |
docker run -d \
--name anki-desktop \
-p 3000:3000 \
-v anki_data:/config \
--security-opt seccomp=unconfined \
--shm-size=1gb \
chrislongros/anki-desktop:latest
Then open http://localhost:3000 in your browser.
On first run, the Anki Launcher will appear - press 1 then Enter to download the latest Anki version.
services:
anki-desktop:
image: chrislongros/anki-desktop:latest
container_name: anki-desktop
ports:
- "3000:3000" # HTTP
- "3001:3001" # HTTPS (optional)
volumes:
- anki_data:/config
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
# Optional: Custom sync server
# - ANKI_SYNC_SERVER=http://your-sync-server:8080
security_opt:
- seccomp=unconfined
shm_size: 1gb
restart: unless-stopped
volumes:
anki_data:
| Variable | Default | Description |
|---|---|---|
PUID | 1000 | User ID for file permissions |
PGID | 1000 | Group ID for file permissions |
TZ | UTC | Timezone |
ANKI_SYNC_SERVER | - | Custom Anki sync server URL (e.g., http://192.168.1.100:8080) |
CUSTOM_PORT | 3000 | HTTP port |
CUSTOM_HTTPS_PORT | 3001 | HTTPS port |
| Port | Description |
|---|---|
3000 | HTTP web interface |
3001 | HTTPS web interface |
| Path | Description |
|---|---|
/config | Anki data, launcher, and settings - must be persisted |
To use your own anki-sync-server, set the ANKI_SYNC_SERVER environment variable:
docker run -d \
--name anki-desktop \
-p 3000:3000 \
-v anki_data:/config \
-e ANKI_SYNC_SERVER=http://192.168.1.100:8080 \
--security-opt seccomp=unconfined \
--shm-size=1gb \
chrislongros/anki-desktop:latest
To add Chinese, Japanese, or Korean font support:
environment:
- DOCKER_MODS=linuxserver/mods:universal-package-install
- INSTALL_PACKAGES=fonts-noto-cjk
git clone https://github.com/chrislongros/anki-desktop-docker.git
cd anki-desktop-docker
docker build -t anki-desktop .
For TrueNAS SCALE users, create a custom app with these settings:
Container Image: chrislongros/anki-desktop:latest
Security Context:
- seccomp: unconfined
Resources:
- Shared Memory Size: 1Gi
Ports:
- 3000:3000 (Web UI)
- 8765:8765 (AnkiConnect)
Storage:
- Host Path or PVC → /config
Environment:
- PUID: 1000
- PGID: 1000
- TZ: Europe/Berlin
- ANKI_SYNC_SERVER: http://your-sync-server:8080 (optional)
Traditional noVNC setups suffer from high latency and poor image quality. KasmVNC provides:
Other Anki Docker projects pin to older versions (25.02.x) because Anki 25.09+ switched to a launcher-based installation. This project embraces the launcher system:
--security-opt seccomp=unconfined - Required for Qt/Chromium sandboxing--shm-size=1gb - Prevents shared memory issues with Qt WebEngineCheck container logs: docker logs anki-desktop
Common fixes:
--security-opt seccomp=unconfined is set--shm-size=1gb is setAnkiConnect is pre-configured once installed. Port 8765 is already exposed.
2055492159The addon is automatically configured to listen on 0.0.0.0:8765 with CORS enabled.
Test it:
curl http://localhost:8765 -X POST -d '{"action": "version", "version": 6}'
MIT License - see LICENSE
Content type
Image
Digest
sha256:3b13ce24e…
Size
943.5 MB
Last updated
27 minutes ago
docker pull chrislongros/anki-desktop