FileBrowser¶
FileBrowser is a web-based file manager for browsing and managing files on the px3 NAS node. It provides a user-friendly interface to access storage across the homelab infrastructure.
Overview¶
| Property | Value |
|---|---|
| Location | px3 (UK Homelab NAS) |
| Host IP | REDACTED_IP7 |
| Port | 8080 |
| URL | https://files.charliehub.net |
| Auth | FileBrowser built-in (username/password) |
| Root Directory | /mnt/filebrowser |
| Database | /etc/filebrowser/filebrowser.db |
Quick Start¶
- Open https://files.charliehub.net
- Log in with FileBrowser credentials
- Browse and manage files on NAS
Accessible Storage¶
FileBrowser exposes the following storage via symlinks in /mnt/filebrowser/:
| Path | Size | Purpose |
|---|---|---|
| NAS-Storage → /mnt/nas-storage | 1.8TB | Primary NAS storage |
| USB-Drive → /mnt/usb-wd | External | USB backup drive |
NAS-Storage Contents¶
/mnt/nas-storage/
├── .private/ # Private user directories (restricted)
│ └── charles/ # Charles's personal files
├── public/ # Public shared files (readable by all)
├── synced/ # Team synchronized files
├── dump/ # General file dump
├── snippets/ # Code snippets
├── images/ # Media library
├── template/ # Template files
└── lost+found/ # Recovered files (if any)
User Access Control¶
Current Users¶
| Username | Scope | Admin | Permissions |
|---|---|---|---|
| admin | / (root) | Yes | Full access |
| charles | / (root) | Yes | Full access |
Authentication Flow¶
1. User visits https://files.charliehub.net
↓
2. Traefik routes to FileBrowser (SSL termination)
↓
3. User logs in with FileBrowser credentials
↓
4. User sees file browser
Architecture¶
Service Configuration¶
Systemd Service (on px3)
[Unit]
Description=File Browser
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/filebrowser \
-d /etc/filebrowser/filebrowser.db \
-r /mnt/filebrowser \
-p 8080 \
-a 0.0.0.0
Restart=on-failure
Traefik Route (on hub2)
# /opt/charliehub/traefik/config/dynamic/filebrowser.yml
http:
routers:
filebrowser-charliehub-net:
entryPoints: [websecure]
rule: Host(`files.charliehub.net`)
service: filebrowser-charliehub-net-service
tls:
certResolver: letsencrypt
# No Authelia - FileBrowser has its own authentication
services:
filebrowser-charliehub-net-service:
loadBalancer:
servers:
- url: http://REDACTED_IP7:8080
Key Components¶
- hub2 (Traefik): Entry point, SSL termination
- px3 (FileBrowser): File serving, built-in authentication
- WireGuard VPN: Secure network tunnel between hub2 and px3
Managing Users¶
Add New User with Restricted Access¶
# SSH to px3
ssh root@px3
# Stop filebrowser service
systemctl stop filebrowser.service
# Add user with scope-based access (only sees specific directory)
/usr/local/bin/filebrowser -d /etc/filebrowser/filebrowser.db users add contractor password \
--scope /NAS-Storage/synced \
--perm.admin=false \
--perm.create --perm.delete --perm.download
# Restart service
systemctl start filebrowser.service
Available Permissions¶
perm.admin- Admin panel accessperm.create- Create files/directoriesperm.delete- Delete files/directoriesperm.rename- Rename itemsperm.modify- Edit filesperm.share- Create share linksperm.download- Download filesperm.execute- Run commands (if enabled)
Add Path-Based Restrictions¶
# Deny access to .private folders for a user
/usr/local/bin/filebrowser -d /etc/filebrowser/filebrowser.db rules add \
"^/NAS-Storage/\.private/.*" --regex --username contractor
Update User Password¶
# Change password for existing user
/usr/local/bin/filebrowser -d /etc/filebrowser/filebrowser.db users update username --password newpassword
Remove User¶
/usr/local/bin/filebrowser -d /etc/filebrowser/filebrowser.db users rm username
Operations¶
Check Service Status¶
# On px3
systemctl status filebrowser.service
journalctl -u filebrowser.service -f
View Configuration¶
# On px3 (stop service first)
systemctl stop filebrowser.service
/usr/local/bin/filebrowser -d /etc/filebrowser/filebrowser.db config cat
systemctl start filebrowser.service
Restart Service¶
# On px3
systemctl restart filebrowser.service
Test Local Access¶
HEAD Requests Return 404
FileBrowser does not properly support HTTP HEAD requests (curl -I).
Always use GET requests for testing:
# WRONG - returns 404
curl -I http://REDACTED_IP7:8080
# CORRECT - returns 200
curl -s -o /dev/null -w "%{http_code}" http://REDACTED_IP7:8080
# From px3 CT
wget -qS -O /dev/null http://localhost:8080
# From hub2 (via WireGuard)
curl -s -o /dev/null -w "%{http_code}" http://REDACTED_IP7:8080
Test Public Access¶
# Test via HTTPS (should return 200)
curl -s -o /dev/null -w "%{http_code}" https://files.charliehub.net
Troubleshooting¶
504 Gateway Timeout / Connection Refused¶
Symptom: https://files.charliehub.net returns 504 or connection refused
Cause: Network misconfiguration on CT 3117 (FileBrowser container)
Checks: 1. Verify hub2 can reach FileBrowser:
# From hub2
curl -s -o /dev/null -w "%{http_code}" http://REDACTED_IP7:8080
# Should return 200
-
Check CT network configuration:
# From px3 pct config 3117 | grep net0 # Should show: ip=REDACTED_IP7/24,gw=REDACTED_IP -
Verify bidirectional connectivity:
# From hub2 ping -c 2 REDACTED_IP7 # From px3 pct exec 3117 -- ping -c 2 REDACTED_IP # hub2 WireGuard IP
Common Issue - Wrong Netmask:
If the CT has /16 instead of /24, it thinks the entire 10.44.x.x range is local and tries to ARP for hub2's WireGuard IP instead of routing through the gateway.
Fix:
# On px3 - correct the netmask and gateway
pct set 3117 -net0 name=eth0,bridge=vmbr0,gw=REDACTED_IP,hwaddr=BC:24:11:1F:C0:8F,ip=REDACTED_IP7/24,type=veth
pct reboot 3117
Cannot Access Files from Browser¶
Symptom: Login works but directory listing shows 403 or 404
Checks: 1. Verify filebrowser is running:
systemctl status filebrowser.service
-
Verify storage is accessible:
ls -la /mnt/filebrowser/ ls -la /mnt/nas-storage/ -
Check filebrowser logs:
journalctl -u filebrowser.service -n 50 -
Verify user has proper permissions:
systemctl stop filebrowser.service /usr/local/bin/filebrowser -d /etc/filebrowser/filebrowser.db users ls systemctl start filebrowser.service
Network Unreachable¶
Symptom: Cannot connect to https://files.charliehub.net or times out
Checks: 1. Verify DNS resolution:
dig files.charliehub.net
# Should return 51.68.235.106 (hub2's IP)
-
Verify Traefik route exists:
# On hub2 docker logs charliehub-traefik | grep filebrowser -
Verify px3 connectivity:
# From hub2 ping REDACTED_IP7 curl -s -o /dev/null -w "%{http_code}" http://REDACTED_IP7:8080 -
Check firewall:
# On px3 ss -tlnp | grep 8080
Security Notes¶
- Built-in Authentication: FileBrowser uses its own user database for authentication
- Not directly accessible from the internet (only via hub2 reverse proxy)
-
Accessible only through WireGuard-connected Traefik
-
HTTPS Only: All traffic encrypted via Let's Encrypt certificates
-
User Isolation: Use scopes and rules to restrict user access to specific directories
-
Password Requirements: Minimum 12 characters enforced by FileBrowser
Backup & Recovery¶
Backup FileBrowser Database¶
The FileBrowser database contains all user accounts, settings, and permissions:
# On px3
sudo cp /etc/filebrowser/filebrowser.db /backup/filebrowser-$(date +%Y%m%d).db
Restore FileBrowser Database¶
# On px3
systemctl stop filebrowser.service
sudo cp /backup/filebrowser-YYYYMMDD.db /etc/filebrowser/filebrowser.db
systemctl start filebrowser.service
Version Information¶
- FileBrowser Version: 2.53.0
- Deployment Date: 2026-01-14
- Last Updated: 2026-01-21