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
Copy file name to clipboardExpand all lines: README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -90,6 +90,7 @@ If you would like to add your own config, you can use the [service-template](tem
90
90
| 🗂️ **Copyparty**| A self-hosted file server with accelerated resumable uploads. |[Details](services/copyparty)|
91
91
| 💸 **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)|
92
92
| 🧑🧑🧒🧒 **Gramps Web**| A web-based genealogy platform for collaborative family tree browsing, editing, AI-powered chat, media tagging, mapping, charts, search, and reporting. |[Details](services/grampsweb)|
93
+
|**Subtrackr**| A self-hosted web app to track subscriptions, renewal dates, costs, and payment methods. |[Details](services/subtrackr)|
This Docker Compose configuration sets up [**Subtrackr**](https://github.com/bscott/subtrackr) with Tailscale as a sidecar container, enabling secure access to your self-hosted subscription tracking platform from anywhere on your private Tailscale network. With this setup, your Subtrackr instance remains fully private and accessible only from authorized devices.
4
+
5
+
## Subtrackr
6
+
7
+
[**Subtrackr**](https://github.com/bscott/subtrackr) is an open-source, self-hosted web application for managing and tracking recurring subscriptions. It provides a clean, modern interface to help you monitor costs, renewal dates, and payment methods across all your services. Designed for individuals and households, Subtrackr makes it easy to stay on top of your digital and physical subscriptions without relying on third-party services.
8
+
9
+
## Key Features
10
+
11
+
***Centralized Subscription Management** – Keep all your recurring subscriptions organized in one place.
12
+
***Expense Tracking** – Monitor total spending, breakdowns, and trends across services.
13
+
***Renewal Reminders** – Stay informed with upcoming renewal and billing notifications.
14
+
***Service Categorization** – Group subscriptions by category for clear overviews (e.g., streaming, utilities, software).
15
+
***Payment Method Tracking** – Associate subscriptions with credit cards, bank accounts, or other payment methods.
16
+
***Responsive Web Interface** – A simple, mobile-friendly UI for adding and reviewing subscriptions.
17
+
***Self-Hosted & Open Source** – Run Subtrackr on your own infrastructure with Docker, ensuring privacy and data ownership.
18
+
19
+
## Configuration Overview
20
+
21
+
In this deployment, the `tailscale-subtrackr` service runs the Tailscale client to establish a secure private network. The `subtrackr` container uses `network_mode: service:tailscale-subtrackr` to route all traffic through the Tailscale interface. This ensures that your subscription data, dashboards, and administration interface are only accessible via Tailscale, preventing public exposure.
# Make sure you have updated/checked the .env file with the correct variables.
3
+
# All the ${ xx } need to be defined there.
4
+
# Tailscale Sidecar Configuration
5
+
tailscale:
6
+
image: tailscale/tailscale:latest # Image to be used
7
+
container_name: tailscale-${SERVICE} # Name for local container management
8
+
hostname: ${SERVICE} # Name used within your Tailscale environment
9
+
environment:
10
+
- TS_AUTHKEY=${TS_AUTHKEY}
11
+
- TS_STATE_DIR=/var/lib/tailscale
12
+
- TS_SERVE_CONFIG=/config/serve.json # Tailsacale 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
16
+
#- TS_ACCEPT_DNS=true # Uncomment when using MagicDNS
17
+
volumes:
18
+
- ${PWD}/config:/config # Config folder used to store Tailscale files - you may need to change the path
19
+
- ${PWD}/ts/state:/var/lib/tailscale # Tailscale requirement - you may need to change the path
20
+
devices:
21
+
- /dev/net/tun:/dev/net/tun # Network configuration for Tailscale to work
22
+
cap_add:
23
+
- net_admin # Tailscale requirement
24
+
- sys_module # Tailscale requirement
25
+
#ports:
26
+
# - 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
27
+
# If any DNS issues arise, use your preferred DNS provider by uncommenting the config below
28
+
#dns:
29
+
# - ${DNS_SERVER}
30
+
healthcheck:
31
+
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:41234/healthz"] # Check Tailscale has a Tailnet IP and is operational
32
+
interval: 1m# How often to perform the check
33
+
timeout: 10s# Time to wait for the check to succeed
34
+
retries: 3# Number of retries before marking as unhealthy
35
+
start_period: 10s# Time to wait before starting health checks
36
+
restart: always
37
+
38
+
# ${SERVICE}
39
+
application:
40
+
image: ${IMAGE_URL} # Image to be used
41
+
network_mode: service:tailscale # Sidecar configuration to route ${SERVICE} through Tailscale
42
+
container_name: app-${SERVICE} # Name for local container management
43
+
environment:
44
+
- PUID=1000
45
+
- PGID=1000
46
+
- TZ=Europe/Amsterdam
47
+
- GIN_MODE=release
48
+
- DATABASE_PATH=/app/data/subtrackr.db
49
+
volumes:
50
+
- ${PWD}/${SERVICE}-data/data:/app/data
51
+
depends_on:
52
+
tailscale:
53
+
condition: service_healthy
54
+
# healthcheck:
55
+
# test: ["CMD", "pgrep", "-f", "${SERVICE}"] # Check if ${SERVICE} process is running
56
+
# interval: 1m # How often to perform the check
57
+
# timeout: 10s # Time to wait for the check to succeed
58
+
# retries: 3 # Number of retries before marking as unhealthy
59
+
# start_period: 30s # Time to wait before starting health checks
0 commit comments