This project contains a complete Docker environment to run the SlimeVR Server with a dynamic Web GUI, ideal for headless setups like Raspberry Pi, home servers, or LAN PCs.
- Automatic download of
.jarand Web GUI assets from GitHub - Fully configurable via
.envfile - Web GUI served through Nginx
- Auto-redirects with
?ip=<your-host-ip> - All relevant ports exposed (SlimeVR, VMC, OSC, etc.)
- Simple and production-ready setup 💯
slimevr-docker/
├── .env
├── docker-compose.yml
├── nginx/
│ ├── Dockerfile
│ ├── entrypoint.sh
│ └── templates/
│ └── default.conf.template
├── slimevr/
│ └── Dockerfile
Edit the .env file:
SLIMEVR_VERSION=0.14.1 # SlimeVR Server version to download
WEBGUI_PORT=8080 # Port to serve the Web GUIdocker compose --env-file .env build
docker compose --env-file .env up -dThen open in your browser:
http://<SLIMEVR_IP>:<WEBGUI_PORT>/
→ It will redirect automatically to:
http://<SLIMEVR_IP>:<WEBGUI_PORT>/?ip=<SLIMEVR_IP>
The GUI is served through Nginx and is downloaded automatically from:
| Service | Port(s) | Protocol |
|---|---|---|
| SlimeVR Trackers | 6969 | UDP |
| Web GUI | WEBGUI_PORT |
TCP |
| WebSocket Bridge | 21110 | TCP |
| OSC Router | 9000, 9002 | TCP/UDP |
| VRC OSC | 9000, 9001 | TCP/UDP |
| VMC | 39539, 39540 | TCP/UDP |
slimevr-config: Persistent SlimeVR config (vrconfig.yml)slimevr-gui: Static files for the GUI served by Nginx
- ERR_TOO_MANY_REDIRECTS: Make sure the Nginx redirect only happens if
?ip=is missing in the URL. - Nginx crash with “server directive not allowed”: Don't overwrite
nginx.confwith aserver {}block. Useconf.d/default.confinstead. - USB not detected: Check you're mapping the correct port (e.g.
/dev/ttyUSB0). Adjust it based on your hardware.
- SlimeVR
- Web GUI based on slimevr-gui-dist
MIT
BTC: bc1qrd3mexqu43qn0597d248725kdp3tr28252q64p