Run the GTD software Everdo inside a Docker container and access it via your browser. This setup enables remote synchronization and leverages the excellent Docker GUI baseimage by jlesage.
- Quickstart
- Disclaimer and Warning
- Motivation
- Technical Details
- Build & Deploy (Detailed)
- VNC Password
- Synchronization Setup
- Secure Remote Access Options
services:
everdo-docker:
image: everdo-docker
container_name: everdo
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin # <- Change to your timezone
ports:
- 5800:5800
- 5900:5900
volumes:
- /home/user/docker-volumes/everdo/config:/config/xdg/config # <- Change to your desired directory
restart: unless-stoppedRun it:
git clone https://github.com/P9k/everdo_dockerized.git(Clone the Github repository)cd everdo_dockerizeddocker buildx build -t everdo-docker .(Build the image using the recommended BuildKit method) or use the legacy way:docker build -t everdo-docker .- Edit
compose.yamlas necessary (volumes:section)docker compose up -d(Run the service in the background)
Then open http://localhost:5800 (or replace localhost with your server IP). You should see the Everdo welcome screen.
For synchronization setup and remote access (VPN or reverse proxy), see this section below.
I am not affiliated with the developer of Everdo and do not own any rights to the software. This project merely provides an alternative way to run Everdo in Docker. Everdo is proprietary software. While the free version can be used indefinitely with certain limitations (number of projects, areas, etc.), the full functionality requires a one-time purchase of the Pro version.
Warning: Exposing your Everdo instance to the public internet even via reverse proxy using TLS encryption is risky! Both design and implementation errors can lead to data leaks or compromise. If you require remote access to the dockerized Everdo instance, prefer methods like a VPN into your home network (Wireguard, Tailscale).
I’ve been using Everdo for years and appreciate its clean design and incorporation ofthe "Getting Things Done" (GTD) methodology.
Everdo supports two sync methods:
- Local Network Sync (free, requires one device as the sync server)
- Encrypted Sync Service (ESS) (cloud-based, subscription fee)
As Everdo is designed with a local-first philosophy, there is no official web version. Since I run a headless home server with multiple Docker services, I explored using jlesage’s Docker GUI baseimage to run Everdo in Docker and access it remotely via a browser and noVNC.
- Base image: Ubuntu 24.04 LTS from jlesage
- Everdo installation: latest .deb package (version 1.9.0)
-
Clone this repository (requires Dockerfile, startapp.sh, compose.yaml).
-
Build the local image using the Dockerfile:
- Deploy the container using
docker composeor a tool like Portainer. - Adjust the persistent volume path to retain your data across restarts.
- Published ports:
5800-> Browser-based GUI (via noVNC)5900-> VNC client
- Deploy the container using
-
Access Everdo in your browser:
- Example:
http://192.168.178.2:5800orhttp://my-homelab:5800. You should see the Everdo welcome screen.
- Example:
Note that you can also add a password to the VNC interface for additional security when accessing the GUI via the browser, if necessary. You can find the instructions here.
-
(Optional but recommended) Unlock Pro Features
Place your purchased key file in the everdo directory inside the persistent volume.
In Everdo, select Add Product Key → navigate to /config/xdg/config/everdo → activate.
-
Enable the API
Go to Settings → API
Set IP/Hostname →
0.0.0.0(Optional) Change the API Key
Enable the checkbox and restart the container
On startup, you should see a notification that the API is listening.
-
Configure Sync Server
Go to Settings → Sync
Set Sync Mode →
ServerRestart the container
-
Connect Client(s)
On your Everdo client device:
-
Set Sync Mode →
Manual Client -
Enter server hostname, port and API key
-
Test using “Manual Actions” to confirm the connection
-
Once manual sync works, switch to Client mode and restart the container. This enables automatic synchronization.
Directly exposing port `11111`` on your router is discouraged.
Instead, use one of the following safer methods:
Set up a VPN (e.g., Wireguard or Tailscale) to securely access your home network and the Everdo sync server. In this case, just follow the official Everdo local sync setup documentation.
Use a reverse proxy such as Caddy to expose Everdo securely. You need either a static IP or a dynamic DNS service like deSEC.
Example Caddyfile configuration for forwarding everdosync.mydomain.com (with TLS) to Everdo’s API within the internal Docker network:
https://everdosync.mydomain.com:443 {
reverse_proxy everdo:11111 {
transport http {
tls_insecure_skip_verify
}
}
}
After restarting Caddy, requests to https://everdosync.mydomain.com → are forwarded with TLS encryption → internal Everdo API.