Title: File transfer made easier with Tailscale
Author: Solène
Date: 08 March 2026
Tags: security privacy linux vpn
Description: In this blog post, I share my small changes to improve the
user experience to transfer files using Tailscale
# Introduction
Since I started using Tailscale (using my own headscale server), I've
been enjoying it a lot. The file transfer feature is particularly
useful with other devices.
This blog post explains my small setup to enhance the user experience.
# Quick introduction
Tailscale is a network service that allows to enroll devices into a
mesh VPN based on WireGuard, this mean every peer connects to every
peers, this is not really manageable without some lot of work. It also
allows automatic DNS assignment, access control, SSH service and lot of
features.
Tailscale refers to both the service and the client. The service is
closed source, but not the client. There is a reimplementation of the
server called Headscale that you can use with the tailscale client.
(HTM) Tailscale official website
(HTM) Headscale official website
# Automatically receive files
When you want to receive a file from Tailscale on your desktop system,
you need to manually run `tailscale file get --wait $DEST`, this is
rather not practical and annoying to me.
I wrote a systemd service that starts the tailscale command at boot,
really it is nothing fancy but it is not something available out of the
box.
In the directory `~/.config/systemd/user/` edit the file
`tailscale-receiver.service` with this content:
```
[Unit]
Description=tailscale receive file
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/tailscale file get --wait --loop /%h/Documents/
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
```
The path `/%h/Documents/` will expand to `/$HOME/Documents/` (the first
/ may be too much, but I keep it just in case), you can modify it to
your needs.
Enable and start the service with the command:
```
systemctl --user daemon-reload
systemctl --enable --now tailscale-receiver.service
```
# Send files from Nautilus
When sending files, it is possible to use `tailscale file cp $file
$target:` but it is much more convenient to have it directly from the
GUI, especially when you do not know all the remotes names. This also
makes it easier for family member who may not want to fire up a
terminal to send a file.
Someone wrote a short python script to add this "Send to" feature to
Nautilus
(HTM) Script flightmansam/nautilus-sendto-tailscale-python
Create the directory `~/.local/share/nautilus-python/extensions/` and
save the file `nautilus-send-to-tailscale.py` in it.
Make sure you have the package "nautilus-python" installed, on Fedora
it is `nautilus-python` while on Ubuntu it is `python3-nautilus`, so
your mileage may vary.
Make sure to restart nautilus, a `killall nautilus` should work but
otherwise just logout the user and log back. In Nautilus, in the
contextual menu (right click), you should see "Send to Tailscale" and a
sub menu should show the hosts.
# Conclusion
Tailscale is a fantastic technology, having a mesh VPN network allows
to secure access to internal services without exposing anything to the
Internet. And because it features direct access between peers, it also
enables some interesting uses like fast file transfer or VOIP calls
without a relay.