Has anyone successfully set up TSDProxy?

I’d like to add a dedicated Tailscale node for each of my services running on Docker, with the eventual goal of making certain services public via Tailscale Funnel.

I tried, rather unsuccessfully, to set up TSDProxy as it seems like a much more elegant solution than setting up Tailscale sidecars for each service. Well, not only was I not successful, but it actually kind of wrecked my networking configuration in a deeper way that required a system reboot! I don’t remember or understand what happened exactly, but it was a disaster. Mind you, it installs just fine by following the instructions on the TSDProxy installation guide, but when I try to actually add a service to it, it goes into a death loop and wreaks havoc.

Has anyone successfully set up TSDProxy, and if so, can you please share your docker compose? Thanks!

I have TSDProxy setup to the point where my apps are registered with tailscale. But for some reasons i cannot access them with using that tailscale IP addresses or domain names. Trying to figure out why now.

OK I figured it out.

Here is the areas that I had trouble.

First, you need to go to:
DNS - Tailscale
and under “HTTPS Certificates” at the bottom, enable https if you have not done so already.

Here is my TSDProxy compose file (if “latest” doesn’t work use “1” instead):

services:
  tsdproxy:
    image: almeidapaulopt/tsdproxy:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /mnt/Virtualization/docker/tsdproxy/data:/data
      - /mnt/Virtualization/docker/tsdproxy/config:/config
    restart: unless-stopped
    ports:
      - "8080:8080"
volumes:
  datadir:

If you have another container that uses 8080 already you will need to change the port. - e.g., calibre used 8080. I deleted 8080 from calibre which resolved the conflict.

Second each container will need you to specify some parameters. In particular you will need to specify the port to be used. It does not appear to work without the port specified (even if there is only one port), you will need to add at least two labels (the enable label and the port).
labels:
tsdproxy.enable: “true”
tsdproxy.container_port: “xyz”

Here is an example of one of the containers that i have (handbrake) note that the port used by this container is normally 5800 so i have specified that to be passed to TSDProxy.

version: "3"
services:
  handbrake:
    image: jlesage/handbrake
    container_name: handbrake-portainer
    labels:
      tsdproxy.enable: "true"
      tsdproxy.container_port: "5800"
    environment:
      - USER_ID=3001
      - GROUP_ID=3001
    ports:
      - 5800:5800
    volumes:
      - /mnt/Virtualization/docker/handbrake/config:/config:rw
      - /mnt/Virtualization/docker/handbrake:/storage:ro
      - /mnt/Primary_1/Master/handbrake/watch:/watch:rw
      - /mnt/Primary_1/Master/handbrake/output:/output:rw
      - /mnt/Primary_1/Master/handbrake/trash:/trash:rw
networks: {}

Hi,

Are you using version 25.04? I think I’ve tried everything, but I simply can’t get it to work.

I’ve tested both V1 and V2 of TSDProxy with the same result: it correctly detects the apps and creates the machines in Tailscale (which also show up as online), but when I try to access the addresses, nothing happens.