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:

  1. Local NAS (primary)
  2. Remote NAS (off-site)
  3. 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

TaskTool
Browse files from phoneFileBrowser
Share a file with someoneFileBrowser share link
Sync documents to off-site backupRclone sync (cron)
Encrypt and upload to cloudRclone crypt
Move old downloads to archiveRclone 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.