I wanted to run my VPN/Tailscale setup past you, see if anybody has suggestions on how I could do things better.
10.0.0.0/24
), router+DNS on 10.0.0.1
, server running docker containers on 10.0.0.2
.*.local.dom.tld
to the server, public DNS points *.dom.tld
to my dynamic public IP.10.0.0.2:443
, forwards to various other services.Goals for Tailscale:
Goals in general:
How I progresed with Tailscale:
100.64.0.2
) available on the host’s default network stack. Containers can use “ports:” to map to 100.64.0.2
(tailscale) and/or 10.0.0.2
(LAN). Bad: tailscale would mess with /etc/resolv.conf
on host. Also bad: tailscale0 on host picked up stuff that binds to 0.0.0.0
.network_mode: host
). Made it leave /etc/resolv.conf
alone. tailscale0 on host stack still picks up everything on 0.0.0.0
.This is kinda where I’m stuck. I can make the tailscale container bridged which would put the tailscale0 interface inside the container. It wouldn’t pick up 0.0.0.0
from host but how would I publish ports to it?
network_mode: container:tailscale
). This would prevent said containers from using “ports:” to map to host anymore. Also, everything they publish locally would end up on tailscale0 whether I like it or not.10.1.1.1
, mirror that from the tailscale container, and target it from other containers explicitly with “ports:” when I want to publish a port to tailscale. Downside: 10.1.1.1
would be in the host’s network stack so still picks up 0.0.0.0
.192.168.1.0/24
and use tailscale serve
to forward specific ports to other containers over that subnet. Unfortunately serve
is fairly limited; it can’t do UDP and technically it refuses to forward TCP either to non-localhost (but you can dump the serve config to JSON, and hack that config, and use it with TS_SERVE_CONFIG=
🤮).A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.
Rules:
Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.
No spam posting.
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it’s not obvious why your post topic revolves around selfhosting, please include details to make it clear.
Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
No trolling.
Resources:
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
https://tailscale.com/blog/docker-tailscale-guide
I used the above link to start on my project. I’m trying to add Tailscale service to my existing docker-compose files to forward all traffic on the primary container to an exit node. It works, but I’m not able to find a way to access the web apps on those containers that are forwarding their traffic. Looks like you are well beyond this guide.
Best of luck.
That guide did help me find out about TS_ env vars, which I don’t think are well documented elsewhere. From what I understand they’re container specific? I think they’re set up by containerboot, which is what the tailscale container image uses to boot.
TS_DEST_IP in particular is a game-changer. Docker needs more options for forwarding ports and interfaces. 🙁 “ports:” only forwards to the host and that’s about it.
You too, what you’re trying to do looks like a challenge as well.