Thanks for helping expand these Tailscale sidecar examples. Keeping services aligned with the template makes it easier for users to migrate existing Compose stacks without breaking them.
- Copy
templates/service-templateintoservices/<service-name>and rename the compose and README files accordingly. - Update
compose.yaml:- Keep the Tailscale container named
tailscale-<service>and the app container namedapp-<service>. - Set
IMAGE_URL,SERVICEPORT, and any other app variables in.env; do not commit secrets or real auth keys. - Leave
network_mode: service:tailscalein place and keepdepends_onusing the Tailscale health check. - Keep the
portssection commented unless LAN exposure is required; explain why in the README if you expose anything. - Adjust volumes to match the service, and pre-create bind-mount paths so Docker does not create root-owned folders. (optional)
- If the service needs devices (GPU, render, fuse, etc.) or extra capabilities, add them explicitly and mention them in the README. (optional)
- Keep the Tailscale container named
- Update
"Proxy":"http://127.0.0.1:80"incompose.yamlwith the app's actual internal port; it does not consume.envvalues automatically. RemoveTS_SERVE_CONFIGif Serve/Funnel is not needed. - Fill in the service README using the template:
- Briefly describe the app and why Tailscale helps.
- List prerequisites (user in
dockergroup, GPU/group membership, devices). - Call out gotchas: initial admin setup, default credentials, path expectations, required group IDs, or config directory names that must change.
- Clarify MagicDNS/HTTPS steps (
TS_ACCEPT_DNS), optional 0.0.0.0 port exposure, and any health checks. - Link to upstream service docs and any official setup videos.
- Sanity-check the stack with
docker compose configfrom the service directory to catch typos and missing variables.
- Keep the sidecar pattern intact (
network_mode: service:tailscale, health checks,depends_on). - Avoid removing existing volumes or changing container names unless the change is clearly documented in the README.