Run with Docker
How to self-host Super Productivity's sync server and web app with Docker. There are three separate setups; pick the one that matches what you need:
| You want to… | Deploy |
|---|---|
| Sync the desktop or mobile apps through your own server | Sync only: a self-hosted SuperSync server (no web app needed) |
| Also use Super Productivity in a browser served from your own server | Web app + sync (optional): the web app container next to a sync backend; not needed for the desktop or mobile apps |
| Sync through a WebDAV server you already run (e.g. Nextcloud) | Existing WebDAV: nothing to deploy; point the apps at your WebDAV server |
To compare the sync providers themselves, see 2.08-Choose-Sync-Backend and 3.08-Sync-Integration-Comparison.
Sync only: self-host SuperSync
SuperSync is the sync server built for Super Productivity. It is still in beta.
Self-hosting is possible, but support for it is limited: issues outside the tested setup below may not get help. The tested self-hosted setup today is:
- an AMD64 (x86-64) Linux host — the server image is published for
linux/amd64only; - a domain name that points at that host, with ports 80 and 443 free, so the bundled Caddy proxy can obtain an HTTPS certificate;
- a working SMTP account, because sign-up needs email verification;
- the desktop (Electron), Android, or iOS apps as clients.
Follow the SuperSync server README — it is the single authoritative install recipe, including the client setup steps. LAN-only installs, running behind an existing reverse proxy, and ARM hosts are not covered by a tested recipe.
Web app + sync
Optional: the desktop and mobile apps do not need it. It is only tested on the same machine; serving it to other devices is up to you.
Run the web app
docker run -d -p 8080:80 johannesjo/super-productivity:latest
Open http://127.0.0.1:8080. The image is published for linux/amd64 and linux/arm64; Docker picks the one matching your host (use --platform to override).
Where your data lives: the web app keeps all tasks in each browser's own storage (IndexedDB) on each device. The container stores nothing. That local copy is neither sync nor a backup: clearing site data, using a private window, or switching browsers or devices starts empty. Use a sync provider to share data between devices, and see 4.23-Managing-Your-Data for backups.
Same machine vs. other devices: http://127.0.0.1:8080 only works on the machine running the container; other devices need an address they can reach, served over HTTPS.
Add sync
The web app talks to the sync backend from the browser, so the backend must accept that origin:
- SuperSync: set up the server as above, then add the web app's exact origin (e.g.
https://sp.example.com) to the server'sCORS_ORIGINS— see the server README configuration. - WebDAV / Nextcloud: the WebDAV server must send CORS headers for the web app's origin. Browsers can block WebDAV requests otherwise; the desktop app avoids this.
Existing WebDAV or Nextcloud
If you already run Nextcloud or another WebDAV server, no extra container is needed (also fine for new setups): pick Nextcloud or WebDAV in the app, see 2.09-Configure-Sync-Backend. The generic WebDAV provider is experimental (the app lists it as "not recommended / no support") because WebDAV servers behave differently.
Bundled WebDAV example (single-machine try-out)
The repository's docker-compose.yaml contains a small example that serves the web app and a WebDAV server from the same host. It is meant for trying things out on one machine, not as a validated production or multi-device setup: its WebDAV server cannot reliably detect two devices writing at the same time.
-
Copy the repo files to a folder (e.g.
sp/):git clone https://github.com/super-productivity/super-productivity.git mkdir -p sp cp super-productivity/docker-compose.yaml sp/ cp super-productivity/webdav.yaml sp/ cd sp -
Edit
webdav.yamlbefore starting: replace the defaultadmin/adminlogin, and set usernames, passwords, and per-user directories under/dataso user data is separate. Do not skip this: Docker publishes ports8080and2345on all network interfaces, over plain HTTP, so other machines on the network can reach them. -
Start the stack. Name the two services explicitly —
docker-compose.yamlalso defines adband asupersyncservice used only by the E2E test suite, which run in test mode and must never be started outside it:docker compose pull app webdav docker compose up -d app webdav -
Open http://127.0.0.1:8080 for the app. In the app, set up sync with WebDAV base URL:
http://127.0.0.1:2345/.127.0.0.1only reaches the server from the same machine.
Prefilled WebDAV settings
The web app container can prefill WebDAV defaults in the sync settings from environment variables: WEBDAV_BASE_URL, WEBDAV_USERNAME and WEBDAV_SYNC_FOLDER_PATH (setting any of these preselects WebDAV), plus SYNC_INTERVAL (minutes), IS_COMPRESSION_ENABLED and IS_ENCRYPTION_ENABLED. No other provider can be prefilled this way, and no passwords are prefilled. See docker-compose.yaml for an example.
Related
1.00-Quickstarts
2.00-How_To
Using Super-Productivity
- 2.01-Downloads and Install
- 2.02-Restore-Data-From-Backup
- 2.03-Add-Tasks
- 2.04-Manage-Subtasks
- 2.05-Manage-Scheduled-Tasks
- 2.06-Manage-Repeating-Tasks
- 2.07-Manage-Task-Integrations
- 2.24-Set-Up-CalDAV
- 2.08-Choose-Sync-Backend
- 2.09-Configure-Sync-Backend
- 2.19-Sync-Proton-Drive-via-rclone
- 2.20-Import-from-Todoist
- 2.21-Manage-Plugins
- 2.22-Import-from-TickTick
- 2.23-Connect-an-AI-Assistant
- 2.13-Run-with-Docker
Contributing to Super-Productivity
- 2.18-Contribute-Translations
- 2.11-Run-the-Development-Server
- 2.16-Set-Up-Development-Environment
- 2.12-Package-the-App
- 2.14-Build-for-Android
- 2.15-Develop-a-Plugin
- 2.17-Add-a-New-Issue-Integration
3.00-Reference
- 3.01-API
- 3.02-Settings-and-Preferences
- 3.03-Keyboard-Shortcuts
- 3.04-Short-Syntax
- 3.05-Web-App-vs-Desktop
- 3.06-User-Data
- 3.07-Issue-Integration-Comparison
- 3.08-Sync-Integration-Comparison
- 3.09-Theming
4.00-Concepts
Data-and-Integrations
Organizing
- 4.06-Project-View
- 4.07-Tag-View
- 4.08-Time-Estimates
- 4.09-Task-Attributes
- 4.10-Task-Notes
- 4.11-Subtasks
Planning
Doing
- 4.01-The-Today-View
- 4.02-Inbox-View
- 4.05-Board-View
- 4.14-How-Time-Is-Logged
- 4.15-Timers-and-Focus-Mode
- 4.16-Break-Reminders
- 4.17-Idle-Time
- 4.08-Time-Estimates
Reviewing
If you have further questions, please refer to the discussions page.