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:8384replacing 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
anonymousenable=NO
localenable=YES
writeenable=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://
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.