blog: Tailscale for DDEV: Simple and Secure Project Sharing#423
blog: Tailscale for DDEV: Simple and Secure Project Sharing#423
Conversation
…elopment workflows
…router add-on documentation
…frontend technologies
There was a problem hiding this comment.
I pushed a branch for this https://20250827-atj4me-tailscale.ddev-com-front-end.pages.dev/blog/tailscale-router-ddev-addon/
- Please run
ddev prettierto fix formatting issues. - Maybe add some image to the blog, AI generated is good too.
rfay
left a comment
There was a problem hiding this comment.
Thanks so much for this contribution!
It looks like AI had a big hand in it, and that doesn't appear to be acknowledged here.
- Please massively simplify and shorten in general. You want people to actually read it.
- Remove the intro stuff about how good DDEV is
- Remove the stuff about how good Tailscale is and replace it with a simple explanation of what Tailscale is.
- Simplify sharing into just a statement that
ddev shareuses ngrok but there are other ways. Link to the docs. - In "Introducing ddev-tailscale-router" make it "ddev-tailscale-router Add-on"
- Then simplify it massively. Just say what it does and how to use it.
In general: Remove all the AI stuff and simplify it to say just what you want to say about the add-on and why you made it.
|
I wouldn't say massive, but I mostly used it to make my writing more professional and in Laymans terms, and to refactor to markdown. I also took some time to write intros to everything, since this is first time I am actually writing like this, since I mostly write on Linkedin or Medium. So pardon my ignorance. I learn something new everyday! I will make this more concise as per your sugggestions |
|
Thank you. I've been using AI quite a lot myself, and finding it very useful. But it can be way, way too verbose a lot of times. Please do add credit at the bottom saying what you used and what for. |
…rer usage instructions and improved project sharing capabilities
|
I think it works with mac. I added that disclaimer since I wasn't able to test it.
It is a docker image, so as long as docker runs the image, it should work!
Get Outlook for Android<https://aka.ms/AAb9ysg>
________________________________
From: Stanislav Zhuk ***@***.***>
Sent: Wednesday, August 27, 2025 3:41:52 PM
To: ddev/ddev.com ***@***.***>
Cc: Ajith Thampi Joseph ***@***.***>; Author ***@***.***>
Subject: Re: [ddev/ddev.com] feat: add ddev-tailscale-router add-on documentation for enhanced dev… (PR #423)
@stasadev commented on this pull request.
________________________________
In src/content/blog/tailscale-router-ddev-addon.md<#423 (comment)>:
+### Installation
+
+To get started, follow these steps:
It makes sense to add a warning about Apple Silicone from https://github.com/atj4me/ddev-tailscale-router#getting-started
We have the majority of users on macOS https://ddev.com/blog/stats-on-ddev-usage-nov-2024/#ddevenvironments
It's important to remember where it can be used.
—
Reply to this email directly, view it on GitHub<#423 (review)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ADSMRTZEWWVYSLLFBSXTYST3PYCYBAVCNFSM6AAAAACE4MMXMSVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTCNRRGUZDKNJVGA>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
That is not correct at all. For more background, see this and related blogs: |
|
https://hub.docker.com/r/tailscale/tailscale/tags has arm64 arch. But I'm not sure if the add-on itself is compatible with macOS. |
|
I think it works with UserSpace Networking. I tested it locally, and it worked and platform independent. I will do a whole lot of testing on other devices just to make sure. BTW, I added a disclaimer that it hasn't been tested on Mac |
Pinned comment https://www.youtube.com/watch?v=tqvvZhGrciQ says: I don’t understand the Compose yaml at |
|
When I was developing the addon, it didn't worked with UserSpace Networking true. So I shuffled around a couple of configurations to make it work on 2 projects, and one of them was to turn it Tailscale also recommends to have this container as a sidecar container to handle all traffic ( using This particular mix is slightly different from the usual use cases of running tailscale in a container, because I am literally using an addon solution of tailscale as the main factor in this addon, the funnel and serve. It is like a small slice of a big pie! |
|
I made the changes and released an update here: https://github.com/atj4me/ddev-tailscale-router/releases/tag/2.5 I tested it on my mac, and it was working for me. So I removed the disclaimer. Ideally, it now uses user space networking now. Tailscale doesn't have much documentation on whether one compliments the other, but it seems to be working! Hope others will try it out and gave feedback. Also, I kept the |
|
Awesome. I assume it's an arm64/Apple Silicon mac? |
|
@rfay I don't exactly know. Mine is a 2013 Macbook Air with Intel chip. But I hope it works on new ones too, just need someone to test it 😄 |
|
AFAICT, the only thing left is to add the ACL settings for |
|
Done :) |
|
There is some difference between For example, prerequisites are explained better in |
|
Sorry to be a pain, I just want it to look good in both places. |
|
Sorry, I forgot about the changes in readme. It has been to and fro between readme and this blog. Now I have updated it, didn't include the Tailscale Funnel ACL rule in the blog, as it might change leaving readers with incorrect content. So I added references |
So that was why I couldn't get auth key. |
There was a problem hiding this comment.
Please add information that certificates may take some time to generate (or even add example how to add them manually) because it is confusing when you install the add-on, start the DDEV project, open the Tailscale URL, and it doesn't work.
It works quite unpredictably with TS_PRIVACY=public, I couldn't open it for 10 minutes for some site and then it suddenly started working. Then I deleted the project's device in Tailscale, restarted the project, and it doesn't work for public (but works for private) - I think that's what you mentioned in atj4me/ddev-tailscale-router#13
I don't see such issues with TS_PRIVACY=private.
Edit: or don't add the information I asked for here, it's probably too much for a blog, but add that to README.md, maybe create a new section for Troubleshooting, and add a link from README.md to this blog.
Edit2: and now I waited for 25 minutes, and TS_PRIVACY=public finally worked.
| ddev restart | ||
| ``` | ||
|
|
||
| > **Note:** For public access, you need to configure your [Access Control List (ACL)](https://tailscale.com/kb/1223/funnel#funnel-node-attribute) to enable Funnel. See the [Tailscale Funnel documentation](https://tailscale.com/kb/1223/funnel) for details on setting up the required ACL policy. |
There was a problem hiding this comment.
BTW, it is not clear in their documentation where the "Add funnel to policy" button is located.
But I don't think it's our problem to solve.
You have to:
- Open https://login.tailscale.com/admin/acls
- Click on "JSON editor"

- Scroll down in the right sidebar to see "Add Funnel to policy"

There was a problem hiding this comment.
They added that UI very recently. It wasn't there in July. I guess they still haven't updated the Readme, since this is still in Beta
|
|
||
| Before installing the add-on, you need to set up Tailscale: | ||
|
|
||
| 1. **Install Tailscale** on at least two devices (phone, tablet, or computer) by following the [installation guide](https://tailscale.com/download). This is required to generate an auth key. |
There was a problem hiding this comment.
I tested removing all devices, and it didn't ask me to add more again, so it's really first time setup, that can block people.
|
Or don't add the information I asked for here, it's probably too much for a blog, but add that to README.md, maybe create a new section for Troubleshooting, and add a link from README.md to this blog. |
|
@stasadev I just added a note on the blog. And the certificate issuance is from LetsEncrypt. They are unpredictable. Once you set it up, it won't regenerate the certificate again. And it worked for me with an insecure certificate until it got issued. Don't think that has to do with the blog anyways |
Some new note? I don't see any new changes.
Agreed. |
|
I tried it on phone, and it connected fine. Then I restarted Chrome on macOS and it connected fine. Might have been passage of time or something else? |
rfay
left a comment
There was a problem hiding this comment.
This is a great addition to DDEV sharing techniques! Thanks for sticking with this all the way! It's still a little tweaky, but I'm interested in what else I can learn about tailscale and other usages.
|
|
||
| To switch between modes: | ||
|
|
||
| Switch to public mode (accessible to anyone on the internet): |
There was a problem hiding this comment.
|
One note: This has the same problem as any other sharing technique with WordPress and Magento* (and occasionally some other CMS types), which embed the URL in their database, etc. So won't work OOTB with those. |
|
Thanks for the great work on this! Amazing. It's a great new addition. You can do PRs to this as time goes on to maintain it, and of course you can maintain and improve the add-on readme. |
|
Related, and thank you! |
|
I was going to promote this on the socials, if you give me your various socials I'll tag you. Feel free to PR them into your https://ddev.com/blog/author/ajith-thampi-joseph/ as well, thanks! |
My linkedin is https://www.linkedin.com/in/thampiajit and is kind of the only social I actively use nowadays.
It isn't supposed to be used this way, but this works better for me. My initial use case with TS was remote development, like instead of setting up OpenVPN server or other VPN, I can just install a simple software on all my devices and login, allowing me to access my home server from anywhere in the world, connected to internet and secure. Since I use a server to run ddev and connect using VSCODE Remote SSH for coding, this was the only viable option for me to work, as I can work from anywhere and use the same URL to access ( so no need to change APP_URL in the .env files everytime ). It is a specific usecase, but one I depend on heavily! |



The Issue
Add blog post about ddev-tailscale-router add-on covering integration with Tailscale for secure development environment sharing, cross-device testing, and stable webhook endpoints.
How This PR Solves The Issue
This PR adds a comprehensive blog post that introduces the ddev-tailscale-router add-on to the DDEV community. The post covers:
Manual Testing Instructions
Review https://20250827-atj4me-tailscale.ddev-com-front-end.pages.dev/blog/tailscale-router-ddev-addon/
Automated Testing Overview
No automated tests are needed for this content addition. The blog post follows standard Markdown formatting and DDEV.com content guidelines.
Related Issue Link(s)
Release/Deployment Notes
This is a content-only addition with no code changes. The blog post will be published to the DDEV.com blog upon merge and deployment.