The Problem
If you self-host FileBrowser, you know the desktop experience is solid. But open it on your phone and you'll hit:
- Tiny touch targets — buttons designed for mouse precision
- Hover-dependent menus — nonexistent on touchscreens
- Preview-second design — it's a file manager, not a file viewer
For mobile, you want the opposite: preview-first, big tap areas, minimal navigation depth.
I tested the major alternatives. Here's the comparison.
Quick Comparison
| Tool | Primary Use | Mobile UX | Self-Host Effort | Customizable | License |
|---|---|---|---|---|---|
| Filestash | File browsing + preview | ⭐⭐⭐⭐ | Docker 1-liner | Yes (Vue/JS) | AGPL-3 |
| AList | Multi-storage aggregator | ⭐⭐⭐⭐ | Docker 1-liner | Limited (Go) | AGPL-3 |
| Dufs | Minimal HTTP file server | ⭐⭐⭐ | Single binary | No | MIT |
| FileBrowser | File management | ⭐⭐ | Docker 1-liner | Limited (Vue) | Apache-2 |
| Nextcloud | Full cloud platform | ⭐⭐ | Complex stack | Yes (PHP) | AGPL-3 |
| Cockpit | Server admin panel | ⭐ | apt install | No | LGPL |
| code-server | Remote VS Code | ⭐ | Docker | Yes | MIT |
Tier 1: Filestash
Best for: Read-only browsing, markdown/code preview, mobile PWA
Filestash connects to your server via SFTP, WebDAV, S3, or Git, and renders a clean mobile-friendly UI. Files open in preview mode by default — markdown renders, code gets syntax highlighting, videos play inline.
Deploy
# docker-compose.yml
version: '3'
services:
filestash:
image: machines/filestash
restart: always
ports:
- "8334:8334"
volumes:
- ./data:/app/data/state
docker compose up -d
# Open http://your-server:8334
# Configure SFTP backend pointing to your server
Mobile PWA Setup
- Open Filestash URL in Safari/Chrome on your phone
- Tap Share → "Add to Home Screen"
- Now it opens fullscreen — no browser chrome, feels like a native app
Why It Works
- Preview-first: Click file → see content immediately
- Touch-friendly: Large tap targets, no hover dependencies
- Frontend is Vue/JS: If you want to customize mobile UX (card layout, feed view, larger buttons), fork and modify
Limitations
- Not perfect on mobile — community notes the webapp can feel sluggish with large directories
- No native iOS/Android app
- AGPL license (important if you distribute modifications)
Tier 2: AList
Best for: Multi-storage browsing, video playback, aggregating cloud + local storage
AList isn't a file browser — it's a storage aggregator with a web frontend. Mount local dirs, Google Drive, S3, OneDrive, WebDAV all in one place.
Deploy
docker run -d --restart=unless-stopped \
-v /etc/alist:/opt/alist/data \
-p 5244:5244 \
-e PUID=0 -e PGID=0 \
--name="alist" \
xhofe/alist:latest
# Get admin password
docker exec -it alist ./alist admin random
# Open http://your-server:5244
Strengths
- Video playback is excellent — streams directly in browser
- Big mobile-friendly buttons
- Multi-backend: Local + cloud drives in one UI
- Active community, regular updates
Limitations
- Built on Go — UI customization requires modifying the embedded frontend
- More suited as a "content aggregator" than a "file browser"
- Overkill if you only need to browse one local directory
Tier 3: Dufs
Best for: Zero-config directory serving, temporary file sharing
Dufs is a single Rust binary. No config, no database, no Docker required (though Docker works too).
Deploy
# Direct binary
curl -fsSL https://github.com/sigoden/dufs/releases/latest/download/dufs-x86_64-unknown-linux-musl -o dufs
chmod +x dufs
./dufs /path/to/your/files -p 5000 --allow-search
# Docker
docker run -v /path/to/files:/data -p 5000:5000 sigoden/dufs /data
Strengths
- Zero overhead — ~5MB binary, no dependencies
- HTTP directory listing with basic file preview
- Built-in upload, search, auth
- Works surprisingly well on mobile (responsive design)
Limitations
- Bare-bones UI — no rich markdown rendering, no fancy preview
- No multi-backend support
- Not designed for heavy daily use
What to Avoid (for Mobile)
❌ Nextcloud / Seafile
Heavy stack (DB + Redis + cron + WebDAV). Slow on mobile. Designed for team collaboration — massive overkill for personal file browsing. If you deploy it for "just viewing files", you'll spend more time maintaining it than using it.
❌ Cockpit
Server admin panel. Has a file section but it's an afterthought. Don't install a 200MB admin suite to browse markdown files.
❌ code-server
VS Code in the browser. Fantastic on iPad with a keyboard. Unusable on a phone screen — too many tiny UI elements, too much complexity.
❌ SFTP Apps (Free Tiers)
Termius and FE File Explorer both work, but free tiers lock key features (device sync, multiple connections). The freemium model is designed to frustrate you into paying.
The Optimal Setup
After testing everything, the best mobile experience comes from layering tools:
Phone (mobile browser)
└── Filestash (browse + preview) ← primary
└── AList (video playback) ← when needed
Desktop (regular browser)
└── FileBrowser (file management)
└── SSH terminal (admin tasks)
Architecture Decision: If You Want to Customize
Both Filestash and AList are open source. Here's where to fork:
| Goal | Fork This | Why |
|---|---|---|
| Mobile UX improvements | Filestash | Vue/JS frontend, easy to modify |
| Add storage backends | AList | Clean Go backend, modular drivers |
| Custom preview engine | Filestash | Plugin-based viewer system |
| API-only file access | AList | Well-documented REST API |
The "ultimate" architecture for power users:
- AList as the storage aggregation layer (handles all backend connections)
- Custom frontend (Next.js/Vue) consuming AList's API
- Feed-based UI (recent files, search-first, no path navigation)
Key Insight
The fundamental problem with phone file browsers isn't the tools — it's the mental model. Desktop file managers assume path-based navigation: /home/user/docs/project/file.md. On a 6-inch screen, this is hostile UX.
The best mobile tools minimize directory traversal:
- Preview-first: Click = see content, not open folder
- Search-first: Find by name, not by path
- Recency-first: Show recent files, not root directory
Pick tools that match this model. Your phone will thank you.
Running a homelab? Filestash + Docker takes 2 minutes to deploy. Try it before building anything custom.
Top comments (0)