- TypeScript 72.8%
- Go 26.2%
- Shell 0.6%
- CSS 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| cmd | ||
| internal | ||
| spk | ||
| web | ||
| .gitignore | ||
| CHANGELOG.md | ||
| docker-compose.yml | ||
| Dockerfile.admin | ||
| Dockerfile.user | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
🛡️ Ola — Synology NAS Media Explorer & Anti-Leak Client Review Platform
Enterprise-grade dual-pane file manager, forensic anti-leak DRM video review, and zero-config P2P tunnels for Synology DSM & creative studios.
Why Ola • Features • Architecture • Synology SPK • Docker • Configuration • License
⚡ Why Ola?
Creative agencies and production studios handle terabytes of high-value raw video and master renders. Uploading raw assets to SaaS platforms like Frame.io incurs steep recurring cloud storage fees and introduces leak hazards. Conversely, default NAS tools (Synology Drive / File Station) lack client review workflows, anti-leak watermarking, and fast dual-pane file management.
Ola turns your on-premises Synology NAS into a zero-leak post-production review hub. Stream full-fidelity media with dynamic, forensic watermarking directly from your RAID arrays—with zero cloud storage bills.
📊 Competitive Matrix
| Capability | 🛡️ Ola | 🎬 Frame.io | 📁 Synology Drive / File Station | ☁️ Nextcloud |
|---|---|---|---|---|
| Storage Model | 100% On-Premises (0 Cloud Bill) | Cloud SaaS ($$$/TB & seats) | On-Premises NAS | Self-hosted VPS/Server |
| Anti-Leak Forensic DRM | ✅ Moving dynamic IP/ID overlay | ⚠️ Expensive Enterprise Plan | ❌ None | ❌ None |
| Tamper & Screen Rec Guard | ✅ Auto-blank on capture/tools | ❌ None | ❌ None | ❌ None |
| Dual-Pane Split Explorer | ✅ Side-by-side sync & diff | ❌ Single player view | ❌ Single tree pane | ❌ Single pane |
| Native Synology SPK | ✅ DSM 7.x & 6.x 1-Click install | ❌ SaaS only | ✅ Pre-installed | ⚠️ Docker only |
| Zero-Config NAT Tunnel | ✅ Built-in P2P WebSocket | ✅ Cloud Hosted | ⚠️ QuickConnect (throttled) | ❌ Needs Port Forward / Tailscale |
| High-Performance DB | ⚡ SQLite WAL (256MB mmap) | 🟡 Cloud Hosted | 🟡 PostgreSQL | 🐢 MySQL/MariaDB |
| Hardware Telemetry | ✅ Direct DSM disk/volume stats | ❌ None | ✅ Native DSM | ❌ Basic Host Stats |
✨ Key Features
1. 📂 High-Speed Dual-Pane Split-Screen View Finder
- Side-by-Side Explorers: Independent Left and Right browsing trees with isolated path tracking, volume switching, and history.
- 1-Click Transfers: Instant Copy to Right $ o$ and
\leftarrowMove to Left between directories and physical storage pools. - Real-Time Difference Detection: Visually highlights matching files, size discrepancies, and missing files across directories.
2. 🛡️ Forensic Anti-Leak DRM Video & Media Review
- Dynamic Forensic Watermarking: Embeds a subtle moving overlay of the reviewer’s verified IP, timestamp, session ID, and identity across frames.
- Screen Recording Defense: Automatically interrupts stream playback and blanks the viewport whenever screen recorders, window blurs, or DevTools inspectors are detected.
- Time-Limited Dispatch Links: Share secure review links with passcodes, maximum view limits, and automated expiration dates.
3. 🎛️ Native Synology DSM Hardware Integration
- Direct System Telemetry: Live hardware identification (
DS920+,RS2423+,DS1621+), DSM build version, and serial number. - Physical Volume Metrics: Direct low-level block calculation (
syscall.Statfs) for live capacity and free space across/volume1,/volume2, etc. - DSM System Notifications: Dispatches native
/usr/syno/bin/synodsmnotifydesktop toast alerts on client approvals.
4. ⚡ High-Concurrency SQLite WAL Database
- Engineered for High I/O: Configured with
WALjournal mode,busy_timeout=10000,synchronous=NORMAL, 64MB memory page cache, and 256MB memory-mapped I/O. - Pool Management: 25 concurrent connections with isolated read pools for instantaneous metadata queries.
- Automated Maintenance: Background worker checks WAL checkpoints every 30 minutes and prunes audit records older than 90 days.
🏗️ Architecture
┌────────────────────────────────────────────────────────┐
│ External Client / Video Reviewer │
└───────────────────────────┬────────────────────────────┘
│ Review Link + Passcode
▼
┌────────────────────────────────────────────────────────┐
│ P2P Relay & Tunnel (acl.vndns.net) │
│ (Zero-Config WebSocket NAT Traversal) │
└───────────────────────────┬────────────────────────────┘
│
┌───────────────────────────▼────────────────────────────┐
│ Synology NAS: Ola-User Daemon (:8866) │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ Dual-Pane React UI │ │ Anti-Leak DRM Engine │ │
│ │ (Tailwind + State) │ │ (Forensic Watermark) │ │
│ └──────────┬───────────┘ └──────────┬───────────┘ │
│ │ │ │
│ ┌──────────▼───────────────────────────▼───────────┐ │
│ │ Go Core Daemon (SQLite WAL + mmap I/O) │ │
│ └──────────────────────┬───────────────────────────┘ │
└─────────────────────────┼──────────────────────────────┘
│
┌─────────────────────────▼──────────────────────────────┐
│ Synology DSM Core OS (/volume1, /volume2) │
│ (Physical Volumes, Users, synodsmnotify) │
└────────────────────────────────────────────────────────┘
📦 Synology NAS Installation (SPK)
Download the official .spk package for your NAS architecture from Releases:
| Package | Architecture | Supported Synology Models |
|---|---|---|
Ola-User-1.0.0-0001_amd64.spk |
x86_64 / amd64 |
DS920+, DS1522+, DS1621+, DS1821+, RS2423+, etc. |
Ola-User-1.0.0-0001_arm64.spk |
aarch64 / arm64 |
DS224+, DS423, DS223, DS124, etc. |
Ola-Admin-1.0.0-0001_amd64.spk |
x86_64 / amd64 |
Central management node (x86_64) |
Ola-Admin-1.0.0-0001_arm64.spk |
aarch64 / arm64 |
Central management node (arm64) |
Installation Steps in DSM:
- Go to DSM
oPackage CenteroManual Install. - Select and upload the
.spkfile for your architecture. - Complete installation. The daemon starts automatically on port
8866. - Open
http://<your-nas-ip>:8866.
🐳 Docker Deployment
1. Launch Ola-User
docker run -d --name ola-user --restart unless-stopped -p 8866:8866 -v /volume1:/volume1:ro -v /volume2:/volume2 -v ./ola_data:/data -e OLA_DATA_DIR=/data -e OLA_STORAGE_ROOTS="/volume1:/volume2" -e OLA_LICENSE_SERVER_URL="http://192.168.1.100:8899" vndangkhoa/ola-user:latest
2. Launch Ola-Admin (Central Hub)
docker run -d --name ola-admin --restart unless-stopped -p 8899:8899 -v ./ola_admin_data:/data -e OLA_DATA_DIR=/data -e PORT=8899 vndangkhoa/ola-admin:latest
3. Docker Compose (Full Stack)
services:
ola-user:
image: vndangkhoa/ola-user:latest
container_name: ola-user
restart: unless-stopped
ports:
- "8866:8866"
volumes:
- /volume1:/volume1:ro
- /volume2:/volume2
- ./ola_data:/data
environment:
- OLA_DATA_DIR=/data
- OLA_STORAGE_ROOTS=/volume1:/volume2
- OLA_LICENSE_SERVER_URL=http://ola-admin:8899
ola-admin:
image: vndangkhoa/ola-admin:latest
container_name: ola-admin
restart: unless-stopped
ports:
- "8899:8899"
volumes:
- ./ola_admin_data:/data
environment:
- OLA_DATA_DIR=/data
- PORT=8899
docker compose up -d
⚙️ Configuration Reference
| Environment Variable | Default | Target | Description |
|---|---|---|---|
OLA_PORT |
8866 |
User | HTTP listening port for web UI and API |
OLA_DATA_DIR |
/var/packages/Ola/var or ./data |
Both | SQLite persistent storage directory |
OLA_STORAGE_ROOTS |
Autodetected (/volume*) |
User | Colon-delimited list of directories to expose |
OLA_LICENSE_SERVER_URL |
http://127.0.0.1:8899 |
User | Central Admin Hub endpoint |
OLA_RELAY_URL |
wss://acl.vndns.net/tunnel |
User | P2P NAT traversal WebSocket relay |
PORT |
8899 |
Admin | Central Admin HTTP port |
OLA_ADMIN_USER |
central_admin |
Admin | Central admin authentication username |
OLA_ADMIN_PASSWORD |
admin123 |
Admin | Central admin authentication password |
📡 Diagnostics & Health Endpoints
- System Health:
GET /api/v1/health{ "status": "healthy", "database": "healthy", "uptime_sec": 1245.8, "memory_alloc_mb": 4.15, "version": "1.0.0" } - Synology Hardware & Volumes:
GET /api/v1/synology/info{ "system": { "model": "Synology DS920+", "dsm_version": "7.2.1-69057", "serial_number": "SN-20A0PDN198402", "architecture": "amd64" }, "volumes": [ { "name": "volume1", "mount_path": "/volume1", "total_formatted": "14.55 TB", "free_formatted": "6.20 TB", "percent_used": 57.4 } ] }
🌟 Star History
📄 License
Licensed under the MIT License. Copyright © 2026 Ola Media Technologies.