Skip to content
Docs
opendesk.shOpen app

Self-hosting

Run opendesk on your own server. Free forever, the same code as the hosted service.

Self-hosted opendesk is free forever and runs exactly the same code as opendesk.sh. You own the server, the database and every email in it.

Terminal window
curl -fsSL https://opendesk.sh/install.sh | sh

New here? The self-host quickstart walks through it from an empty server.

A self-hosted install is four containers on one machine, behind one domain:

A self-hosted install on one server and one domain. Browsers reach Caddy over HTTPS on port 443. Caddy sends /socket to the realtime gateway and everything else to opendesk. opendesk, which runs the API, the workers, the web app and an embedded NATS, publishes events over NATS to the realtime gateway and keeps its data in Postgres. Realtime, opendesk and Postgres sit on an internal network; only Caddy is published.desk.example.com, one serverinternal networkBrowserweb app, appsand chat widgetcaddyHTTPS, ports 80, 443realtimelive events, presenceopendeskAPI, workers, web appNATS, embeddedpostgresthe only datastore:443/socketeverything elseevents over NATSSQLthe only published service
Four containers behind one domain. Only Caddy is published; the rest talk on an internal network.
Service Role
caddy HTTPS with automatic certificates. Routes /socket to the realtime gateway and everything else to opendesk.
opendesk The Go API, background workers, the web app (SERVE_WEB=true), and NATS, embedded.
realtime The Elixir realtime gateway for live events, presence and typing. It holds no database connection.
postgres The only datastore.

There is no Redis and no message broker to run: background jobs live in Postgres, and NATS is built into the opendesk binary.

The installer puts an opendesk-ctl helper next to your docker-compose.yml (default /opt/opendesk):

Terminal window
/opt/opendesk/opendesk-ctl status # containers, health, version
/opt/opendesk/opendesk-ctl logs opendesk # follow logs: opendesk, realtime, postgres, caddy
/opt/opendesk/opendesk-ctl backup # database dump, data volume and .env
/opt/opendesk/opendesk-ctl upgrade # back up, then move to the newest release

Edit this page on GitHub