img configuring a raspberry pi 4b for syncthing and vsftp mini rack software configurations

Configuring a Raspberry Pi 4B for SyncThing and vsFTP

Setting Up a Mini Rack: Essential Software Configurations for Your Homelab

I use a Raspberry Pi 4B in a compact rack to run local file services. This guide walks through the software setup I use for SyncThing and vsFTP. It gives commands, config snippets and testing steps so you can copy and adapt the setup for a LAN-only mini rack.

Getting Started with Your Raspberry Pi 4B

Selecting the Right Raspberry Pi Model

I recommend a Raspberry Pi 4B with 4 GB or 8 GB RAM for smoother behaviour when running SyncThing and vsFTP alongside occasional other services. Choose the 4B for its USB 3 ports and gigabit Ethernet; both matter when you attach an external SSD and need reliable LAN throughput. If you plan heavy sync jobs, pick 8 GB.

Preparing Your Raspberry Pi for Setup

Flash Raspberry Pi OS Lite (64-bit preferred) to an SD card. Boot the Pi and complete the initial setup.

Essential commands I run first:

  • Update packages and reboot if kernels change:

    sudo apt update
    sudo apt full-upgrade -y
    sudo reboot

  • Create a mount point for the external SSD and get its UUID:

    sudo blkid
    sudo mkdir -p /mnt/storage

  • Add an /etc/fstab entry by UUID so the drive mounts on boot. Example fstab line:

    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/storage ext4 defaults,noatime 0 2

Replace the UUID with the one you saw from blkid. I format the SSD as ext4 unless you need NTFS for cross-platform compatibility.

Make sure SSH is enabled if you prefer headless work:

sudo systemctl enable ssh
sudo systemctl start ssh

Installing the Required Software

I install syncthing and vsftpd from Debian/Ubuntu repos for simplicity. On Raspberry Pi OS the commands are:

sudo apt install -y syncthing vsftpd

When the package installs, syncthing provides a systemd user unit. Do not run syncthing as root. Use the pi user or a dedicated user. For FTP, vsftpd will run as a system service.

If you want newer syncthing builds, follow Syncthing’s APT repo instructions. I stick to the repo version unless a feature in a newer release is required.

Setting Up SyncThing and vsFTP

Configuring SyncThing for File Synchronisation

Start syncthing under your regular user:

systemctl –user enable syncthing
systemctl –user start syncthing

Open the web GUI from a browser on the LAN at http://<pi-ip>:8384. Default device ID is shown there.

Practical settings I use:

  • Set a root folder on the mounted SSD, for example /mnt/storage/sync.
  • Configure folder type as simple sync and set appropriate ignore patterns (e.g. *.tmp).
  • Enable GUI authentication: Settings → GUI → Use HTTPS and set a username and password. Generate or paste a self-signed cert if you prefer.
  • Limit listening addresses to the LAN interface if you want LAN-only: Settings → GUI → GUI Listen Addresses, use http://192.168.1.10:8384 replacing with Pi’s LAN IP.

Share the folder with other devices by adding their device ID. SyncThing handles versioning and conflict files; pick a versioning strategy that matches how often you modify files. I use simple file versioning with a small number of versions to limit disk use.

Setting Up vsFTP for File Transfers

Edit /etc/vsftpd.conf to make vsftpd LAN-only and reasonably locked down. Key options I set:

listen=YES
listenaddress=192.168.1.10
anonymous
enable=NO
localenable=YES
write
enable=YES
chrootlocaluser=YES
pasvminport=40000
pasvmaxport=40100

Bind to the Pi’s LAN IP with listen_address so vsftpd does not accept connections from other interfaces. Create a dedicated local user for FTP access and set its home to the shared path:

sudo adduser ftpshare –home /mnt/storage/ftp –shell /usr/sbin/nologin
sudo passwd -l ftpshare # lock shell login, keep FTP account active

If FTP clients require write access, set ownership and permissions carefully on /mnt/storage/ftp.

Restart the service:

sudo systemctl restart vsftpd

Testing Your Network Configuration

Check services and ports:

ss -tuln | grep -E “8384|21|40000”

Test SyncThing GUI from a laptop on the LAN by visiting http://<pi-ip>:8384. For FTP, test with a client pointing to the Pi’s LAN IP and passive ports you set. Use curl to check HTTP endpoints:

curl -I http://:8384

If passive FTP fails, confirm the passive port range is allowed through the Pi’s firewall (UFW or iptables). Example UFW rules:

sudo ufw allow from 192.168.1.0/24 to any port 21
sudo ufw allow from 192.168.1.0/24 to any port 40000:40100 proto tcp

Run a sync job and check transfer speeds to confirm USB 3 and gigabit Ethernet are giving expected throughput.

Securing Your Setup for Local Access

Locking services to LAN is the main security move for a mini rack facing only a home network. Extra steps I follow:

  • Bind SyncThing and vsftpd to the Pi’s LAN IP.

  • Require GUI authentication and HTTPS for SyncThing.

  • Use a dedicated, chrooted FTP user with a non-login shell.

  • Apply UFW rules that only allow the home subnet to access ports 21, 8384 and the passive range.

  • Keep OS and packages updated. Schedule a weekly check:

    sudo apt update && sudo apt upgrade -y

Backups matter. Run a weekly sync snapshot to a second drive or off-site mirror if the data is important. Keep logs modest and rotate them so the SSD does not fill.

Concrete outcome: a Raspberry Pi 4B in a mini rack, serving fast local sync via SyncThing and LAN-only FTP via vsftpd, with the SSD mounted reliably and firewall rules that minimise exposure. Test after each change, record IPs, ports and users, and keep the Pi updated.

Leave a Reply

Your email address will not be published. Required fields are marked *

Prev
Cleaning duplicate data to streamline backups
img cleaning duplicate data to streamline backups homelab storage optimisation

Cleaning duplicate data to streamline backups

Optimising Your Homelab: Storage and Backup Strategies I keep my homelab

Next
Restoring your Nest Thermostat with NoLongerEvil firmware
img restoring your nest thermostat with nolongerevil firmware nest thermostat firmware

Restoring your Nest Thermostat with NoLongerEvil firmware

Nest Thermostat Firmware: restore local control with NoLongerEvil

You May Also Like