posted: 2025/01/28 18:41
edited: 2025/01/28 19:06
dufs[1] -- the distinctive file utility server -- is a decent cloud storage replacement for those looking to move away from third-party services like google drive or proton drive. it supports webdav and https file transfer protocols.
it's very easy to set up and get going in nixos using a docker container.
first, enable docker in your configuration.nix
:
virtualisation.docker.enable = true;
then define a docker container, either in your configuration.nix
or in a custom module:
virtualisation.oci-containers = {
backend = "docker";
containers.dufs = {
# automatically restart server after reboot
autoStart = true;
image = "sigoden/dufs";
ports = [
"5000:5000"
];
# the files i want to serve are in /srv/dufs
volumes = [
"/srv/dufs:/data"
];
# tells dufs to serve the files in the docker volume /data
cmd = [
"-A"
"/data"
];
};
};
rebuild your configuration using nixos-rebuild switch
and head on over to http://localhost:5000
to behold your lovely files.
you can use tailscale[2] to access the files on other devices inside (and outside) of your home network. tailscale is like a crazy-fast vpn with a bunch of other comfort features like magic dns[3], keyless ssh[4] and easy https[5].
to enable it in nixos, add the following to your configuration.nix
:
services.tailscale.enable = true;
networking.firewall.trustedInterfaces = [ "tailscale0" ];
once again, rebuild your configuration using nixos-rebuild switch
and run tailscale up
to start tailscale.
i recommend enabling magic dns in admin console > dns > magic dns, but if you prefer not to, your server's ip address will be visible by running tailscale ip -4
.
head over to http://<hostname or ip>:5000
on one of your other machines running tailscale to upload, download, and view your self-hosted files.
as for client recommendations, round sync[6] on android is quite good. it supports both webdav and https remotes, i chose to use webdav when connecting.
thanks for stopping by ^.^
[1] dufs
[2] tailscale
[3] magic dns
[4] tailscale ssh
[5] tailscale https
[6] round sync