Overview
Discover what makes File Browser powerful
File Browser is a lightweight, self‑hosted web file manager written in Go. It exposes a rich HTTP API that lets developers embed or extend the interface, while also offering a polished single‑page application (SPA) for direct interaction. At its core, the tool maps a specified directory on the host filesystem to a virtual file system that can be navigated, uploaded to, downloaded from, and edited via the browser. The application supports user authentication, role‑based access control, and custom command hooks that can trigger external scripts or services during file operations. Because the entire runtime is a single compiled binary, deployment is straightforward and can be packaged in Docker or run natively on any platform that supports Go binaries.
RESTful File Operations
WebSocket Notifications
Command Hooks
User & Role Management
Overview
File Browser is a lightweight, self‑hosted web file manager written in Go. It exposes a rich HTTP API that lets developers embed or extend the interface, while also offering a polished single‑page application (SPA) for direct interaction. At its core, the tool maps a specified directory on the host filesystem to a virtual file system that can be navigated, uploaded to, downloaded from, and edited via the browser. The application supports user authentication, role‑based access control, and custom command hooks that can trigger external scripts or services during file operations. Because the entire runtime is a single compiled binary, deployment is straightforward and can be packaged in Docker or run natively on any platform that supports Go binaries.
Architecture & Technical Stack
File Browser is built entirely in Go (Golang), leveraging the standard library’s net/http for routing and TLS handling. The front‑end is a Vue.js SPA that communicates with the Go back‑end through RESTful endpoints and WebSocket streams for real‑time file system events. Persistence is optional: the application can run in a stateless mode where all user data and permissions are stored in a SQLite database, or it can be configured to use an external PostgreSQL/MySQL instance for larger deployments. Configuration is expressed in JSON/YAML, enabling programmatic manipulation or templating via tools like Helm or Terraform. The codebase is modular; the core server, authentication middleware, and command executor are separated into packages, allowing developers to fork or replace components with minimal friction.
Core Capabilities & APIs
- RESTful File Operations:
GET /files,POST /upload,DELETE /file/{path}, etc., provide CRUD semantics for files and directories. - WebSocket Notifications: Clients receive real‑time updates when files are modified, facilitating synchronized editing or live dashboards.
- Command Hooks: The
customcmdfeature exposes a JSON‑driven command registry; developers can bind shell scripts or HTTP callbacks to events such asonUpload,onDelete, andonEdit. - User & Role Management: Built‑in LDAP/Basic auth support and JSON Web Tokens (JWT) enable integration into existing authentication infrastructures.
- API Documentation: GoDoc links expose the full public API surface, making it straightforward to generate SDKs or wrapper libraries in other languages.
Deployment & Infrastructure
Self‑hosting is intentionally simple: a single binary plus optional database. The project ships with a Docker image (filebrowser/filebrowser) that can be run with a minimal docker run command, but it also supports Kubernetes deployments via the provided Helm chart. For high‑availability scenarios, multiple instances can be load‑balanced behind an NGINX or Traefik reverse proxy; the stateless nature of the Go server means that any instance can serve any request, provided they share a common database and file storage (e.g., NFS or cloud object storage). The binary’s small footprint (<10 MB) and lack of external runtime dependencies make it suitable for edge devices, VMs, or containerized micro‑services.
Integration & Extensibility
File Browser’s extensibility centers around its command hooks and webhook support. Developers can bind arbitrary scripts to file events, enabling workflows such as automatic thumbnail generation, virus scanning, or CI/CD pipeline triggers. The API also exposes a /webhooks endpoint that accepts POST payloads, allowing integration with services like GitHub Actions or Slack. Custom themes can be applied by overriding the Vue.js templates, and the application exposes a /config endpoint for dynamic runtime reconfiguration without restarting the server. Because it is written in Go, developers can import the library into their own projects to expose file‑management features as a sub‑service.
Developer Experience
The project’s documentation is comprehensive, covering configuration, API reference, and contribution guidelines. The GitHub repository maintains a clear issue triage process and a discussion forum for non‑bug topics, which helps new contributors find guidance. The codebase follows idiomatic Go conventions and is well‑tested (over 90 % coverage), ensuring reliability. Community support is active on IRC (#filebrowser on freenode) and Discord, providing real‑time help for integration questions. The Apache 2.0 license gives developers the freedom to use, modify, and redistribute the software in commercial or open‑source projects without licensing constraints.
Use Cases
- Private Cloud Storage: Small teams can deploy File Browser on a dedicated server to replace proprietary cloud services, retaining full control over data.
- Developer Tooling: Integrate the file manager into CI/CD pipelines to expose build artifacts or logs via a web interface.
- Media Asset Management: Use custom commands to auto‑process images or videos (e.g., generating thumbnails) while providing a user‑friendly editor.
- Educational Environments: Deploy in classrooms to give students a sandboxed file system with role‑based access, ideal for coding assignments or collaborative projects.
Advantages
File Browser offers a high degree of performance thanks to Go’s efficient concurrency model and minimal runtime overhead. Its flexibility stems from a modular design that allows swapping out authentication back‑ends, databases, or even the front‑end framework. The licensing (Apache 2.0) eliminates vendor lock‑in and permits commercial deployment without royalty fees, unlike some cloud‑native file managers that require paid subscriptions. Finally, the ability to run as a single binary simplifies operations and reduces attack surface, making it an attractive choice for developers seeking a secure, self‑hosted file
Open SourceReady to get started?
Join the community and start self-hosting File Browser today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Cypht
Unified webmail client that aggregates all your email accounts
ERPNext
Open‑source ERP for end‑to‑end business management
Wakupator
Wake LAN machines on demand with IP spoofing
InvoicePlane
Self‑hosted invoicing and client management
Fork Recipes
Elegant recipe manager for the modern kitchen
Open Source Routing Machine
Fast C++ engine for routing on OpenStreetMap data
