AFFiNE
Workspace that mixes docs, whiteboards and databases, so a page can flip between writing and an endless canvas. Edits sync to this server as you type.
Documents / Productivity / Wiki
Chore and task tracker for households, with natural-language scheduling, assignee rotation, subtasks, points and rewards, labels, NFC tags and a calendar feed.
It's in the main Portainer Templates list, so that's the URL to use, and you get hundreds of other apps with it.
In Portainer, head to Settings --> App Templates, paste this in as the URL and save.
https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json http://<your-server>:2021 in a browser.Save this as compose.yml, then run docker compose up -d next to it.
services:
donetick:
image: donetick/donetick:latest
container_name: donetick
restart: unless-stopped
ports:
- 2021:2021
environment:
DT_SQLITE_PATH: /donetick-data/donetick.db
DT_SERVER_PUBLIC_HOST: http://localhost:2021
volumes:
- donetick-donetick-data:/donetick-data
- donetick-config:/config
volumes:
donetick-donetick-data:
donetick-config:
Or skip the file and start it with one command.
docker run -d \
--name donetick \
--restart unless-stopped \
-p 2021:2021 \
-e DT_SQLITE_PATH=/donetick-data/donetick.db \
-e DT_SERVER_PUBLIC_HOST=http://localhost:2021 \
-v donetick-donetick-data:/donetick-data \
-v donetick-config:/config \
donetick/donetick:latest Open http://<your-host>:2021 and click Create one. Sign-ups stay open: everyone makes their own account, then asks to join your circle with the code under Settings --> Circle Settings, where you accept them. Once everyone's in, add DONETICK_DISABLE_SIGNUP=true to the container's environment. Crash reports and usage analytics stay off unless you tick them on the screen after signing up. Photo attachments and avatars need S3-compatible storage set up as their storage docs say, and uploads fail without it. The phone apps only connect over HTTPS with a real certificate, so they need a proxy in front. The SQLite database lives in the data volume, and the generated login secret and settings (selfhosted.yaml) in the config one. Docs: docs.donetick.com
What the Portainer form asks for. With compose they go in the environment block instead.
| Variable | What it's for | Default |
|---|---|---|
DT_SQLITE_PATH | Database file Keeps the database in the data volume, so leave it as it is. | /donetick-data/donetick.db |
DT_SERVER_PUBLIC_HOST | Address Where you'll open it, like http://192.168.1.10:2021. The calendar feed link is built from this. | http://localhost:2021 |
Change the left side of a port if it clashes with something else on your server. The volumes are where the data lives, so keep them when you update.
| On your server | In the container |
|---|---|
2021 | 2021/tcp |
donetick-donetick-data | /donetick-data |
donetick-config | /config |