Install via curl -fsSL https://get.docker.com | sh
MariaDB 10.6+ or 11.x
An existing external MariaDB instance is required
1 GB RAM minimum
2 GB recommended for production use
4 GB Disk
For the container image and persistent volumes
Soketi (required)
WebSocket server required for the realtime dashboard data feed and provider testing results
Soketi is required, not optional. Without it the dashboard will not receive realtime updates and provider connection tests will not return results to the UI.
Docker run commands assume you already have a database installed and configured. SQLite is fine for most installs, but you can also use more traditional relational databases like MariaDB, MySQL, and PostgreSQL. See Environment Variables for the available DB_CONNECTION drivers and their connection parameters.
1
Prepare your database
Connect to your MariaDB instance and create the database and user:
CREATE DATABASE zepeed CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'zepeed'@'%' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON zepeed.* TO 'zepeed'@'%'; FLUSH PRIVILEGES;
Use '%' as the host so the MariaDB user is reachable from inside the Docker container. 'localhost' will not work because the container has its own network namespace.
Copy the full output — it starts with base64:. You will use it as APP_KEY in the next step.
3
Run Soketi (required for realtime features)
Zepeed uses Soketi as its WebSocket server to power the realtime dashboard data feed and to stream provider testing results back to the UI. Start it before launching Zepeed:
The SOKETI_DEFAULT_APP_ID, SOKETI_DEFAULT_APP_KEY, and SOKETI_DEFAULT_APP_SECRET values must match the PUSHER_APP_ID, PUSHER_APP_KEY, and PUSHER_APP_SECRET you set on the Zepeed container in the next step.
If Soketi runs on a different host than Zepeed, set PUSHER_HOST to that host’s address (instead of 127.0.0.1) when running the Zepeed container.
Wait until you see: [default-account] Default admin account created: admin@zepeed.localThis confirms that migrations ran successfully and the admin account is ready.
7
Follow the first-boot logs
docker logs -f zepeed
Wait until you see: [default-account] Default admin account created: admin@zepeed.localThis confirms that migrations ran successfully and the admin account is ready.
8
Open in your browser
Navigate to http://your-host:8080 and log in with the DEFAULT_ADMIN_EMAIL and DEFAULT_ADMIN_PASSWORD you set in step 3.
Change your password immediately after first login via Profile Settings.
9
Open in your browser
Navigate to http://your-host:8080 and log in with the DEFAULT_ADMIN_EMAIL and DEFAULT_ADMIN_PASSWORD you set in step 3.
Change your password immediately after first login via Profile Settings.
Re-run the same docker run command from step 3. Migrations run automatically on startup. Your volumes (zepeed-storage, zepeed-logs) persist across updates.
To pin a specific version replace :latest with a version tag, e.g. marjose123/zepeed:1.2.0.