Managing Terabytes of Home Storage
Data lives on NAS devices. Multiple locations. Different purposes.
Managing files across terabytes using only SSH is efficient but not always convenient. Sometimes I just need to drag-and-drop a PDF or preview an image from my phone.
The Stack
FileBrowser - Web-based file manager for visual access Rclone - Command-line sync tool for automated backups and cloud integration
Together, they create a self-hosted “Dropbox-like” experience.
FileBrowser Setup
FileBrowser is a single Go binary. Deploy it via Docker:
version: '3'
services:
filebrowser:
image: filebrowser/filebrowser
container_name: filebrowser
volumes:
- /mnt/storage:/srv
- ./filebrowser.db:/database.db
ports:
- "8080:80"
environment:
- PUID=1000
- PGID=1000
Point /mnt/storage at your NAS mount. The web interface gives you:
- Directory browsing
- File preview (images, PDFs, text files)
- Upload/download
- Basic user management
- Sharing links
Access it through a Cloudflare Tunnel for secure remote access without port forwarding.
Rclone for Sync
While FileBrowser handles human interaction, Rclone handles machine tasks: syncing between storage locations, cloud backups, encrypted archives.
Setting Up Remotes
rclone config
Define remotes for each storage location:
[local-nas]
type = sftp
host = 192.168.1.10
user = admin
[remote-nas]
type = sftp
host = 192.168.20.10
user = admin
[cloud-encrypted]
type = crypt
remote = gdrive:/backup
password = *** encrypted ***
The crypt remote is an encrypted overlay on Google Drive. Data is encrypted before upload, decrypted on download. Google sees encrypted blobs.
Sync Commands
Mirror local to remote:
rclone sync /mnt/storage/documents remote-nas:/documents
Encrypted cloud backup:
rclone sync /mnt/storage/critical cloud-encrypted:/critical --fast-list
Move old files to archive:
rclone move /mnt/storage/downloads remote-nas:/archive/downloads \
--min-age 30d
Automated Sync
Cron job for nightly sync:
# /etc/cron.d/rclone-sync
0 2 * * * root /usr/bin/rclone sync /mnt/storage/documents cloud-encrypted:/documents --log-file /var/log/rclone.log
Runs at 2 AM. Logs to file for debugging.
The Architecture
┌─────────────────────────────────────────────────────┐
│ FileBrowser │
│ (Web UI) │
└───────────────────────┬─────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ Local NAS │
│ /mnt/storage │
└───────────┬─────────────────────────┬───────────────┘
│ │
┌───────▼───────┐ ┌───────▼───────┐
│ Remote NAS │ │ Cloud (Encrypted) │
│ (rclone) │ │ (rclone crypt) │
└───────────────┘ └───────────────────┘
Three copies of critical data:
- Local NAS (primary)
- Remote NAS (off-site)
- Cloud (encrypted, disaster recovery)
Security
FileBrowser:
- Behind a Cloudflare Tunnel (Zero Trust)
- Requires SSO authentication
- Internal user auth as a second layer
Rclone:
- SSH keys for NAS-to-NAS sync (no passwords)
- Encryption for cloud storage
- Bandwidth limiting to avoid saturating connections
# Limit to 10 Mbps for cloud uploads
rclone sync /data cloud-encrypted:/data --bwlimit 10M
Use Cases
| Task | Tool |
|---|---|
| Browse files from phone | FileBrowser |
| Share a file with someone | FileBrowser share link |
| Sync documents to off-site backup | Rclone sync (cron) |
| Encrypt and upload to cloud | Rclone crypt |
| Move old downloads to archive | Rclone move —min-age |
Why Not Just Cloud Storage?
- Cost - Terabytes in the cloud gets expensive
- Speed - Local NAS is gigabit; cloud is limited by upload speed
- Control - My data, my drives, my encryption keys
- Privacy - Nothing leaves the network unless I explicitly sync it
Cloud storage is for backup and disaster recovery. The NAS is the source of truth.
FileBrowser for humans. Rclone for machines. Both for terabytes.