filebrowser
Manage files through a web interface
TLDR
Start a new server instance serving the current directory
Start a new server instance serving a specific root directory
Start an instance with different host address (defaults to 127.0.0.1) and port (defaults to 8080)
Start an instance with a specified configuration file, storing the application database in a specific location (defaults to filebrowser.db on the current directory)
Set up a different default first-time account username and password (both default to admin) when setting up a new instance
Set up the maximum amount of image processors used when generating thumbnails (defaults to 4)
Disable image thumbnails as well as the Command Runner feature, limiting access for hosted script files from being executed inside the app
Disable resizing of image previews as well as detecting file types by reading their headers
SYNOPSIS
filebrowser [command] [options]
Examples:
filebrowser --port 8080 --root /srv/data
filebrowser config init
filebrowser users add john doe123
PARAMETERS
--address, -a <IP_ADDRESS>
Binds the server to a specific IP address (e.g., 0.0.0.0 for all interfaces, 127.0.0.1 for localhost).
--port, -p <PORT_NUMBER>
Specifies the port number on which the server will listen (default: 8080).
--root, -r <PATH>
Sets the root directory from which files will be served and managed. All operations are confined to this directory.
--database, -d <PATH>
Specifies the path to the SQLite database file where user data, settings, and other configurations are stored.
--log, -l <PATH>
Redirects server logs to the specified file instead of standard output.
--username <USERNAME>
Sets the initial username for the default admin user if one is created upon first run.
--password <PASSWORD>
Sets the initial password for the default admin user if one is created upon first run.
--no-auth
Disables authentication. WARNING: This makes your file browser accessible to anyone without credentials and is highly insecure for public exposure.
--auth.method <METHOD>
Configures the authentication method (e.g., json for internal user management, proxy for external authentication, oauth for OAuth providers).
--locale <LANG_CODE>
Sets the language for the user interface (e.g., en, es, fr).
--baseurl <URL_PATH>
Specifies a base URL path if filebrowser is served under a subdirectory (e.g., behind a reverse proxy at example.com/files).
--version
Displays the current version of the filebrowser application.
--help
Shows the help message, including all available commands and options.
DESCRIPTION
filebrowser is a standalone web application written in Go, designed to provide a user-friendly web interface for managing files and directories. It allows users to browse, upload, download, delete, rename, and move files directly from a web browser. Known for its ease of deployment (as a single binary) and low resource usage, it's often utilized for simple file sharing, media serving, or as a personal cloud solution.
It's an excellent choice for quickly setting up a secure and accessible way to manage files on a server or a local machine without needing a full-fledged web server stack. Its capabilities extend to user management, permission control, and theme customization, making it versatile for various file-serving needs.
CAVEATS
Security Risks: Running filebrowser with --no-auth or weak credentials can expose your files to unauthorized access, especially if publicly accessible. Always use strong passwords and consider running it behind a robust reverse proxy with additional security layers.
Resource Usage: While lightweight, heavy concurrent usage or operations on very large files can consume significant system resources (CPU, RAM, I/O).
Not a Core Utility: filebrowser is a third-party application, not a standard Linux system command, and must be installed separately. It typically runs as a long-running service or in a Docker container.
<I>SUBCOMMANDS</I>
filebrowser offers several subcommands to manage its behavior and data, rather than just options for the main run process:
config: Used to initialize, set, get, or list server configuration options (e.g., filebrowser config init).
users: Manages user accounts, including adding, updating, deleting, or listing users and their permissions (e.g., filebrowser users add).
plugins: Deals with plugin management (less common for typical usage).
version: Displays detailed version information of the application and its components.
<I>DEPLOYMENT METHODS</I>
filebrowser can be deployed in several ways:
Standalone Binary: The most common method involves downloading the pre-compiled executable for your specific operating system and running it directly.
Docker Container: A Docker image is officially provided, allowing for easy, portable, and isolated deployments.
Systemd Service: On Linux systems, it can be configured to run as a systemd service, ensuring it starts automatically on boot and runs in the background.
HISTORY
filebrowser was initially created by Hujun (with significant contributions from other developers) as a personal project, leveraging the Go programming language. It quickly gained traction due to its simplicity, cross-platform compatibility (being a single executable), and low resource footprint. Its design philosophy has always focused on ease of deployment and providing essential file management features via a web interface, making it a popular choice for quick file sharing and personal cloud setups since its early development.