Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
745624b
compose.yml and .env added to paperless service.
Apr 5, 2026
ed87cd3
Include paperless service README
Apr 5, 2026
8ae55d8
Error paperless service README
Apr 5, 2026
822a8df
Add PUID, GUID to environment. Align environment variables with templ…
Apr 6, 2026
24300ec
Merge branch 'main' into main
michaelhodges Apr 6, 2026
24686d6
Remove volumes and incorporate the local storage principle as outline…
Apr 6, 2026
216de08
Restored comments.
Apr 6, 2026
3659a92
Merge branch 'main' into main
michaelhodges Apr 6, 2026
534c6dc
Place TZ in .env
Apr 6, 2026
242a5e2
Add TZ variable to environment.
Apr 6, 2026
ad8683b
Merge remote-tracking branch 'refs/remotes/origin/main'
Apr 6, 2026
e853e86
Revert "Restored comments."
Apr 6, 2026
5fb8e45
Restore Comments
Apr 6, 2026
d424bca
Revert
michaelhodges Apr 7, 2026
740dc96
Merge branch 'HEAD' of git@github.com:michaelhodges/ScaleTail.git
michaelhodges Apr 7, 2026
14d6ab4
Revert changes made to template files.
michaelhodges Apr 7, 2026
3338b80
Set SERVICEPORT to 80 in .env configuration
crypt0rr Apr 7, 2026
082675a
Update to include paperless-ngx
michaelhodges Apr 7, 2026
dd4b2ed
Merge remote-tracking branch 'refs/remotes/origin/main'
michaelhodges Apr 7, 2026
e4dd62b
Merge branch 'main' into main
michaelhodges Apr 7, 2026
6ecf741
Update README with Tailscale service configuration
crypt0rr Apr 8, 2026
18f1816
Add audiobooks, podcasts and metadata volumes.
michaelhodges Apr 8, 2026
d6d5822
Move TZ environment variable to .env file
michaelhodges Apr 8, 2026
1d2f1ea
Merge branch 'tailscale-dev:main' into main
michaelhodges Apr 8, 2026
0380348
Fix indentation.
michaelhodges Apr 8, 2026
387ed23
Merge pull request #1 from michaelhodges/template_update
michaelhodges Apr 8, 2026
d15e260
Delete templates/service-template/.env
michaelhodges Apr 9, 2026
5b79393
Create .env
michaelhodges Apr 9, 2026
40e1b28
Update compose.yaml
michaelhodges Apr 9, 2026
4e3323a
Merge branch 'main' into main
crypt0rr Apr 9, 2026
c298f9f
Merge branch 'tailscale-dev:main' into main
michaelhodges Apr 10, 2026
d57cd8b
Merge branch 'tailscale-dev:main' into main
michaelhodges Apr 10, 2026
ff8dbed
Merge branch 'tailscale-dev:main' into main
michaelhodges Apr 11, 2026
e58d871
Merge branch 'tailscale-dev:main' into main
michaelhodges Apr 12, 2026
a1c4a1e
Merge branch 'tailscale-dev:main' into tailscale-app-connector
michaelhodges Apr 12, 2026
c4527e8
Merge remote-tracking branch 'refs/remotes/origin/tailscale-app-conne…
michaelhodges Apr 12, 2026
460f923
Change service name
michaelhodges Apr 12, 2026
e075e98
New service Tailscale App Connector
michaelhodges Apr 12, 2026
fc45096
Update .env
michaelhodges Apr 12, 2026
0c1505d
Merge branch 'main' into tailscale-app-connector
crypt0rr Apr 13, 2026
b288bfa
Merge branch 'main' into tailscale-app-connector
crypt0rr Apr 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ ScaleTail provides ready-to-run [Docker Compose](https://docs.docker.com/compose
| 🌐 **Rustdesk Server** | RustDesk is an open source remote control alternative for self-hosting and security. | [Details](services/rustdesk-server)|
| 🔒 **Technitium DNS** | An open-source DNS server that can be used for self-hosted DNS services. | [Details](services/technitium) |
| 🌐 **Traefik** | A modern reverse proxy and load balancer for microservices. | [Details](services/traefik) |
| 🌐 **Tailscale App Connector Node** | Configure a device to act as a App connector node for your Tailscale network. | [Details](services/tailscale-app-connector-node) |
| 🚀 **Tailscale Exit Node** | Configure a device to act as an exit node for your Tailscale network. | [Details](services/tailscale-exit-node) |
| 🌐 **Tailscale Subnet Router Node** | Configure a device to act as a subnet router node for your Tailscale network. | [Details](services/tailscale-subnet-router-node) |

Expand Down
22 changes: 22 additions & 0 deletions services/tailscale-app-connector-node/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#version=1.1
#URL=https://github.com/tailscale-dev/ScaleTail
#COMPOSE_PROJECT_NAME= # Optional: only use when running multiple deployments on the same infrastructure.

# Service Configuration
SERVICE=app-connector
IMAGE_URL=tailscale/tailscale

# Network Configuration
SERVICEPORT= # Port to expose to local network. Uncomment the "ports:" section in compose.yaml to enable.
DNS_SERVER=9.9.9.9

# Tailscale Configuration
TS_AUTHKEY=

# Optional Service variables
# PUID=1000

#Time Zone setting for containers
TZ=Europe/Amsterdam # See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

# Any Container environment variables are declared below. See https://docs.docker.com/compose/how-tos/environment-variables/
16 changes: 16 additions & 0 deletions services/tailscale-app-connector-node/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Tailscale App Connector Node Configuration

This Docker Compose configuration sets up a Tailscale an App Connector Node, allowing devices in your Tailscale network to route their traffic securely through this node to internet services.

## Tailscale App Connector Node

App connectors let you route Tailscale network (known as a tailnet) traffic to your software as a service (SaaS), cloud, and self-hosted applications, letting users and devices on the tailnet access applications by domain names instead of IP addresses. You can also incorporate monitoring, optimization, security, and reliability into your app connector setup. [See the App Connector documents for more information:](https://tailscale.com/docs/features/app-connectors/how-to/setup)

## Configuration Overview

In this setup, the `tailscale` service runs a Tailscale container configures it as an App Connector Node.

- **TS_AUTHKEY**: This environment variable in the .env file is where you insert your Tailscale authentication key.
- **TS_EXTRA_ARGS**: The `--advertise-connector` flag is used to designate this container as a App Connector Node within your Tailscale network.
- **Sysctls**: The system controls `net.ipv4.ip_forward` and `net.ipv6.conf.all.forwarding` are enabled to allow IP forwarding, which is necessary for routing traffic through the Exit Node.
- **Network Mode**: The `bridge` network mode is used to create a virtual network interface for the container, enabling it to handle traffic routing.
36 changes: 36 additions & 0 deletions services/tailscale-app-connector-node/compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
services:
# Make sure you have updated/checked the .env file with the correct variables.
# All the ${ xx } need to be defined there.
# Tailscale Sidecar Configuration
tailscale:
image: tailscale/tailscale:latest # Image to be used
container_name: tailscale-${SERVICE} # Name for local container management
hostname: ${SERVICE} # Name used within your Tailscale environment
environment:
- TS_AUTHKEY=${TS_AUTHKEY}
- TS_STATE_DIR=/var/lib/tailscale
- TS_EXTRA_ARGS=--advertise-connector
- TS_USERSPACE=false
- TS_ENABLE_HEALTH_CHECK=true # Enable healthcheck endpoint: "/healthz"
- TS_LOCAL_ADDR_PORT=127.0.0.1:41234 # The <addr>:<port> for the healthz endpoint
#- TS_ACCEPT_DNS=true # Uncomment when using MagicDNS
- TS_AUTH_ONCE=true
volumes:
- ./ts/state:/var/lib/tailscale # Tailscale requirement - you may need to change the path
devices:
- /dev/net/tun:/dev/net/tun # Network configuration for Tailscale to work
dns:
- ${DNS_SERVER}
sysctls:
net.ipv4.ip_forward: 1
net.ipv6.conf.all.forwarding: 1
cap_add:
- net_admin # Tailscale requirement
network_mode: bridge
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:41234/healthz"] # Check Tailscale has a Tailnet IP and is operational
interval: 1m # How often to perform the check
timeout: 10s # Time to wait for the check to succeed
retries: 3 # Number of retries before marking as unhealthy
start_period: 10s # Time to wait before starting health checks
restart: always
2 changes: 1 addition & 1 deletion services/tailscale-exit-node/.env
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#COMPOSE_PROJECT_NAME= # Optional: only use when running multiple deployments on the same infrastructure.

# Service Configuration
SERVICE=tailscale-exit-node
SERVICE=exit-node
IMAGE_URL=tailscale/tailscale

# Network Configuration
Expand Down