dotfiles
Network

The VPS mount

Edit on GitHub

Module: modules/home/services/vps-mount.nix

~/VPS is the KingHost VPS' whole root (/) over rclone SFTP with a VFS cache, so it shows up in Dolphin (the "VPS" place) as a normal folder. It is the twin of ~/FAI-workstation (fai-workstation.md); the cache options and the reason for rclone over SSHFS are explained there.

As v1cferr, on purpose

The mount logs in as v1cferr, the same user as ssh vps. /srv/imobos and the home are writable; whatever root owns (/etc, /var/backups/imobos, /etc/imobos/backup.env) is read-only or closed. Running the remote sftp-server through sudo -n (rclone's server_command) would open all of it, and a wrong drag in a file manager could then take out /etc, the separate /boot partition or the backup secrets. Root edits stay in ssh vps plus sudo, where they are deliberate.

Mounted at login

Unlike the workstation, the VPS is a public host, so there is no tunnel to gate it on: autoMount = true. The network takes a few seconds at login, so StartLimitIntervalSec is cleared and the unit retries every 10 s. The unit is rclone-mount:.@vps.service; its name derives from the mount path "/".

Host and user come from the vps block in ssh.nix, never a second literal, and the key is the existing ~/.ssh/id_ed25519, so there are zero secrets in Nix. ~/VPS is excluded from restic: it is somebody else's FUSE, root cannot lstat it, and the VPS has its own backup.

The key mismatch trap. ~/.ssh/known_hosts holds only the VPS' ed25519 key (the one OpenSSH picked), while Go's SSH library inside rclone offers ECDSA first and then refuses the handshake with knownhosts: key mismatch, even though the host is the same. host_key_algorithms = "ssh-ed25519" pins it to the key that is on file.

A write into a root-owned directory LOOKS like it worked. With vfs-cache-mode = "writes" the write lands in the local cache first, so touch ~/VPS/etc/x succeeds and the file even shows up in the listing. The upload is what fails (Update Create failed: permission denied in journalctl --user -u 'rclone-mount:.@vps'), and rclone keeps retrying it. The file never reaches the VPS; deleting it from ~/VPS drops it from the cache. Measured on 16/10/2026.