Dropserver Progress - June and July 2025
This is the progress report for Dropserver for June and July 2025. The previous report is here.
In June I finally finished up the integration of Tailscale into Dropserver, then went on vacation. What remained of July was not terribly productive, but it was a good opportunity to think about where I should be going with this project.
Tailscale Integration
There were 21 commits in June. Lots of little things of course but some were the result of finally figuring out an effective UI for creating and managing a Tailscale node.
Tailscale connection UI
I have found that the most reliable way to create a node in fewer steps is to use an auth key generated from the Tailscale admin panel.
By comparison, when using a login link, tags have to be specified (without typos) and are not applied reliably. Furthermore you usually end up interacting with the Tailscale admin UI anyways to remove key expiry for example (which should happen automatically, but once again, not reliable.)
So I simplified the UI by removing the tags input line and I encourage users to create an auth key. Though if they don’t that’s fine too. Dropserver will show the login link and will detect misconfigurations (missing tags, etc…) and guide the user to a fix.
I also tweaked the Control URL. No more “leave blank to use Tailscale”. Now Tailscale.com is explicitly shown as the default control URL along with an affordance to “use alt control URL”.
By eliminating tags from the inputs the dialog becomes 25% simpler (3 lines instead of 4). Of those three lines, the “Hostname” line has a good default, the “Control URL” will be left untouched by most users, so all that’s left is the “Auth Key”. Not bad? See image below.

Here is what it looks like if you created a node but you are missing tags (and also do not have HTTPS turned on):

Commits fa8ebe8, 3f66f20 and 136d0d9.
Bug / poor behavior in tsnet
While working on validating Control URLs I found that tsnet
does not error or timeout if you tell it to use a Control URL that is non-existent. I filed a bug with Tailscale.
If a user puts a typo in their control URL they will get no feedback whatsoever because of this. The UI will just sit there saying it’s waiting on a connection. Not Cool.
Release (Finally)
I tagged and pushed v0.14.0 on June 28. 🎉
And promptly went on vacation. 😴
What Next?
Back from vacation I found myself not too terribly motivated to dive back into Dropserver. I usually prefer to leave with an unfinished project waiting, it makes it easier to get back into it. Also Tailscale integration took far too long, so I’m not surprised to feel the need to take some distance.
After a few days hints of motivation appeared. With Tailscale done, I feel free to work on anything that could improve Dropserver. The question is what. Here are some possible directions:
Make DS easier to install on more hosts
This is the direction that I thought I should do while working on the Tailscale stuff. The Tailscale integration into Dropserver means you can have a usefully connected instance without doing anything like buying a domain name, opening ports, and making your network reachable by the outside world.
Since Dropserver already focuses on making app installations trivially easy, the only remaining hurdle is the installation of Dropserver itself! I had originally thought that I’d offer a DS hosted service to get around this problem, but at this point I don’t think that’s the right approach. DS is about self hosting. (And I don’t want to try to run such a service!)
So making ds-host as easy as possible to install, and making it installable on the computers and OS that a user has at home is key. This implies work on a number of areas:
- Rethink the config file to eliminate as many things that can be moved to the admin UI.
- Add a way to change the ds-host config without hand-editing a config file (maybe using a CLI or GUI program)
- Use operating system defaults for data and working directories instead of asking the admin to specify them.
- Find ways of packaging DS so that it can be more easily installed on Linux
- Make a build and maybe a package for Raspberry Pi
- Make a build for MacOS.
ds-host
works fine on MacOS, I ran it on that platform throughout the development of the Tailscale integration. - Continue to try to get it to run on Windows. That starts with getting a version of
ds-dev
to run on Windows, then work onds-host
.
Honestly that’s a lot and I won’t tackle all this at once. In the meantime there are other things I should look at.
Improve user management
Tailscale integration forced some changes in how I think about users (both appspace users and users of the instance). In particular each user can have multiple ways of authenticating (username + password, tailnet ID, etc…). Also, the concept of “DropID” which ties a user’s identity to a domain name no longer makes sense since ds-host
instances can be hidden from the public Internet thanks to Tailscale.
It would be worthwhile to remove the concept of DropID from the system (though it is used in quite a few places so that has a domino effect unfortunately), and develop the “Contacts” functionality to make adding users to appspaces easier.
Better backups
One project I’m definitely working on now is to move my own personal instance of ds-host
from a VM on the public cloud to my Proxmox instance running right here in my office. This is what Tailscale enables and I’m excited to disappear my instance from the public net.
But this begs the question: what happens if my VM or its host blows up? All of a sudden I am responsible for my own backups 😓. I have 17,299 notes in my personal note taking/journaling app that runs on Dropserver so this is quite important to me!
Of course I set up automated VM backups but it would be nice to have more granular backups of just the Dropserver data. It’s clear that ds-host
should come with the ability to generate and save backups of the instance data, or of individual appspace data, to an external source automatically.
Work on more apps
When I work heavily on a capability like Tailscale integration, I don’t have any time left to improve the few existing apps or add new ones. I wouldn’t mind spending some time on this now.
Time Marches On
I don’t expect to get huge amounts done in August with the kids out of school but whatever I do, I’ll try to make it a small project to avoid stretching months between releases.