Quick Start with Docker Compose
The fastest way to get EmbyTok running is with Docker Compose:Prepare media directory
Create a directory for your video files:Copy your video files into this directory, or use an existing media path.
Create docker-compose.yml
Create a
docker-compose.yml file with the following content:docker-compose.yml
The media volume is mounted as read-only (
:ro) for security. Remove :ro if you need write access.Using Pre-built Images
Pull and run official images from GitHub Container Registry:Environment Variables
Configure EmbyTok’s behavior with these environment variables:| Variable | Default | Description |
|---|---|---|
HOST | 0.0.0.0 | Listen address (0.0.0.0 for all interfaces) |
PORT | 5176 | Internal container port |
SERVE_WEB | true | Enable static web file serving |
WEB_ROOT | /app/dist | Web application directory |
LAN_CONFIG_FILE | /app/data/lan-media-config.json | Configuration persistence file |
MEDIA_ROOT | /media | Default media directory for initial setup |
BROWSE_ROOTS | /media | Comma-separated browsable directories |
NODE_ENV | production | Node.js environment mode |
Volume Mounts
Required Volumes
-
Configuration file (recommended):
Persists service configuration across container restarts.
-
Media directory:
Mount your video files (read-only recommended).
Multiple Media Libraries
Mount multiple directories for different media types:BROWSE_ROOTS=/media/movies,/media/tvshows,/media/videos
Docker Compose Configuration Options
Basic Setup (Web + API only)
Minimal setup without media volumes:docker-compose.simple.yml
docker compose -f docker-compose.simple.yml up -d
Custom Port
Change the exposed port using environment variables:docker-compose.yml:
Custom Media Path
Use existing media directory:Building from Source
Standard Build
Build the Docker image locally:Multi-Architecture Build
Build for AMD64 and ARM64:Multi-architecture builds require Docker Buildx and QEMU emulation for cross-platform builds.
Export Image for NAS
Build and save image for transfer to NAS systems:embytok_amd64.tar to your NAS and load:
Dockerfile Overview
The multi-stage Dockerfile:- Build: Installs dependencies and builds frontend
- Runtime: Minimal production image with Node.js server
Admin Panel Configuration
After starting the container, configure media services:Browse and select directories
Use the file browser to navigate mounted volumes and select media directories.
Create media services
- Enter a service name (e.g., “Movies”, “TV Shows”)
- Select the directory path
- Save configuration
Accessing EmbyTok
Web Browser
- Open
http://<server-ip>:5176 - Select File Service mode
- Enter server address:
http://<server-ip>:5176 - Choose media service from dropdown
- Connect and start browsing
iOS Native App
- Select Folder mode
- Server:
http://<server-ip>:5176 - Password/Token: Enter service name or ID
- Connect
Health Check
Verify the container is running:Troubleshooting
Container starts but web UI is not accessible
Container starts but web UI is not accessible
Check:
- Port mapping:
docker psshows port 5176 - Firewall rules allow traffic on port 5176
- Container logs:
docker logs embytok
SERVE_WEB=true is set in environment variables.Cannot access media files
Cannot access media files
Check:
- Volume mount path is correct
- Files exist in mounted directory
- Permissions allow container user to read files
Configuration not persisted
Configuration not persisted
Solution: Ensure Restart container after creating the file.
lan-media-config.json is mounted:Permission denied errors
Permission denied errors
Solution: The container runs as non-root user
app. Ensure mounted volumes have appropriate permissions:Next Steps
Android App
Connect to your Docker server from Android
iOS App
Build iOS app to access Docker-hosted media
File Server Guide
Learn about folder server configuration
NAS Deployment
Deploy on Synology, QNAP, or other NAS devices