LinuxCommandLibrary

filebrowser

Manage files through a web interface

TLDR

Start a new server instance serving the current directory

$ filebrowser
copy

Start a new server instance serving a specific root directory
$ filebrowser [[-r|--root]] [path/to/directory]
copy

Start an instance with different host address (defaults to 127.0.0.1) and port (defaults to 8080)
$ filebrowser [[-a|--address]] [host] [[-p|--port]] [port] [[-r|--root]] [path/to/directory]
copy

Start an instance with a specified configuration file, storing the application database in a specific location (defaults to filebrowser.db on the current directory)
$ filebrowser [[-c|--config]] [path/to/file] [[-d|--database]] [path/to/database.db] [[-r|--root]] [path/to/directory]
copy

Set up a different default first-time account username and password (both default to admin) when setting up a new instance
$ filebrowser --username [username] --password [password] [[-r|--root]] [path/to/directory]
copy

Set up the maximum amount of image processors used when generating thumbnails (defaults to 4)
$ filebrowser --img-processors [4] [[-r|--root]] [path/to/directory]
copy

Disable image thumbnails as well as the Command Runner feature, limiting access for hosted script files from being executed inside the app
$ filebrowser --disable-exec --disable-thumbnails [[-r|--root]] [path/to/directory]
copy

Disable resizing of image previews as well as detecting file types by reading their headers
$ filebrowser --disable-preview-resize --disable-type-detection-by-header [[-r|--root]] [path/to/directory]
copy

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.

SEE ALSO

nginx(8), apache2(8), caddy(8), python -m http.server(1), scp(1), sftp(1)

Copied to clipboard