MCPSERV.CLUB
File Browser

File Browser

Self-Hosted

Self-hosted file manager for your server

Active(100)
31.7kstars
0views
Updated 3 days ago
File Browser screenshot

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 customcmd feature exposes a JSON‑driven command registry; developers can bind shell scripts or HTTP callbacks to events such as onUpload, onDelete, and onEdit.
  • 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