You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| 📋 **Formbricks**| A self-hosted, open-source platform for collecting user feedback, surveys, and NPS. |[Details](services/formbricks)|
156
156
| 🏦 **Subtrackr**| A self-hosted web app to track subscriptions, renewal dates, costs, and payment methods. |[Details](services/subtrackr)|
157
157
| 🗃️ **Vaultwarden**| An unofficial Bitwarden server implementation written in Rust. |[Details](services/vaultwarden)|
158
+
| ✅ **Vikunja**| A self-hosted task and project management platform with projects, reminders, labels, recurring tasks, and collaboration features. |[Details](services/vikunja)|
158
159
| 💸 **Wallos**| An open-source, self-hostable web app to track and manage your recurring subscriptions and expenses, with multi-currency support, customizable categories, and statistics. |[Details](services/wallos)|
This Docker Compose configuration sets up **Vikunja** with Tailscale as a sidecar container, enabling secure, private access to your task management system over your Tailnet. With this setup, your Vikunja instance is only reachable from authorized devices, keeping your tasks, projects, and personal data off the public internet.
4
+
5
+
## Vikunja
6
+
7
+
[Vikunja](https://vikunja.io) is an open-source, self-hosted task management and to-do list application designed as a privacy-focused alternative to tools like Todoist, Trello, and Asana. It supports projects, tasks, labels, reminders, recurring tasks, and team collaboration.
8
+
9
+
Vikunja is ideal for individuals or teams who want full ownership of their productivity data while maintaining a modern and feature-rich task management experience. Pairing it with Tailscale ensures that your task system remains private while still being accessible from anywhere on your Tailnet.
10
+
11
+
## Key Features
12
+
13
+
- Projects, tasks, and sub-tasks with flexible organization
14
+
- Labels, priorities, due dates, and reminders
15
+
- Recurring tasks and advanced filtering
16
+
- Collaboration and shared projects
17
+
- REST API and integrations
18
+
- Clean web UI and mobile app support
19
+
20
+
## Configuration Overview
21
+
22
+
In this setup, the `tailscale-vikunja` service runs Tailscale, which manages secure networking for Vikunja. The `vikunja` service uses the Tailscale network stack via Docker's `network_mode: service:` configuration. This ensures the application is only accessible through your Tailnet unless you explicitly expose ports.
23
+
24
+
### Service-Specific Notes
25
+
26
+
- On first launch, you will need to create an admin account via the web UI
27
+
- Default URL will be your Tailscale IP or MagicDNS name
28
+
- Vikunja stores data in its configured database (SQLite by default unless changed)
# Make sure you have updated/checked the .env file with the correct variables.
12
+
# All the ${ xx } need to be defined there.
13
+
# Tailscale Sidecar Configuration
14
+
tailscale:
15
+
image: tailscale/tailscale:latest # Image to be used
16
+
container_name: tailscale-${SERVICE} # Name for local container management
17
+
hostname: ${SERVICE} # Name used within your Tailscale environment
18
+
environment:
19
+
- TS_AUTHKEY=${TS_AUTHKEY}
20
+
- TS_STATE_DIR=/var/lib/tailscale
21
+
- TS_SERVE_CONFIG=/config/serve.json # Tailscale Serve configuration to expose the web interface on your local Tailnet - remove this line if not required
- TS_LOCAL_ADDR_PORT=127.0.0.1:41234 # The <addr>:<port> for the healthz endpoint
25
+
#- TS_ACCEPT_DNS=true # Uncomment when using MagicDNS
26
+
- TS_AUTH_ONCE=true
27
+
configs:
28
+
- source: ts-serve
29
+
target: /config/serve.json
30
+
volumes:
31
+
- ./config:/config # Config folder used to store Tailscale files - you may need to change the path
32
+
- ./ts/state:/var/lib/tailscale # Tailscale requirement - you may need to change the path
33
+
devices:
34
+
- /dev/net/tun:/dev/net/tun # Network configuration for Tailscale to work
35
+
cap_add:
36
+
- net_admin # Tailscale requirement
37
+
#ports:
38
+
# - 0.0.0.0:${SERVICEPORT}:${SERVICEPORT} # Binding port ${SERVICE}PORT to the local network - may be removed if only exposure to your Tailnet is required
39
+
# If any DNS issues arise, use your preferred DNS provider by uncommenting the config below
40
+
#dns:
41
+
# - ${DNS_SERVER}
42
+
healthcheck:
43
+
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:41234/healthz"] # Check Tailscale has a Tailnet IP and is operational
44
+
interval: 1m# How often to perform the check
45
+
timeout: 10s# Time to wait for the check to succeed
46
+
retries: 3# Number of retries before marking as unhealthy
47
+
start_period: 10s# Time to wait before starting health checks
48
+
restart: always
49
+
50
+
# ${SERVICE}
51
+
application:
52
+
image: ${IMAGE_URL} # Image to be used
53
+
network_mode: service:tailscale # Sidecar configuration to route ${SERVICE} through Tailscale
54
+
container_name: app-${SERVICE} # Name for local container management
0 commit comments