Server Settings
v2.0.0 behavior change
In v2.0.0, server.database is an object with path (and optional migrateFrom during upgrade). Listening, URLs, TLS, WebDAV, and proxy options moved to the top-level http key — see HTTP settings. The database is SQLite, not BoltDB (database.db). The standalone default file is filebrowser.sqlite. Official Docker images default to /home/filebrowser/data/database.sqlite when path is omitted.
Configure server-side behavior: database, caching, indexing, previews, sources, and logging. For port, baseURL, TLS, and reverse-proxy options, see HTTP settings.
Basic Server Configuration
Configuration Options
minSearchLength
Minimum length of search query to begin searching (default: 3)
searchResultsLimit
v2.1.x — Maximum indexed matches returned for one advanced search request (default: 1000). The Advanced Search tool slider and GET /api/tools/search?limit=… are capped to this value. Quick search omits limit and stays at 100; File Size Analyzer (largest=true) stays at 200.
See Advanced Search.
numImageProcessors
Number of concurrent image processing jobs used to create previews. Default is number of CPU cores available.
disablePreviews
Disable all previews and thumbnails. Simple icons will be used instead.
disablePreviewResize
Disable resizing of previews for faster loading over slow connections.
disableTypeDetectionByHeader
Disable type detection by header. Useful if filesystem is slow.
cacheDirCleanup
Whether to automatically cleanup the cache directory. Note: Docker must also mount a persistent volume to persist the cache (default: false).
filesystem
Filesystem settings for file and directory creation permissions.
indexSqlConfig
Index database SQL configuration for performance tuning.
| |
startupIntegrityCheck (default: quickCheck):
If you notice long delays on startup, you could configure this to probe (recommended) or off to reduce the startup check time.
quickCheck— Runs SQLitePRAGMA quick_check. Thorougher on very large databases.probe— Lightweight check (catalog / sample read); faster for huge indexes.off— Minimal check beyond opening the DB; fastest boot, least safety.
sources
Configure file system sources. See Sources configuration for detailed information.
logging
Configure logging output and levels. See Logging configuration for detailed information.
database
SQLite database file path. See database path priority for defaults and env var overrides.
Default locations (v2.0.0+), when path is omitted:
- Standalone:
./filebrowser.sqlite - Docker image:
/home/filebrowser/data/database.sqlite(the image setsFILEBROWSER_DATABASE_PATH). Apathin config replaces that value.
During upgrade from v1.x, set migrateFrom to your renamed BoltDB file. Remove it after migration — see v2 migration guide.
Storage quotas (v2.1.0+) (folder, per-user scope, and share caps) use additional SQLite tables added in v2.1.0. They are created automatically on upgrade; legacy Bolt imports do not carry over quota limits. See Storage quotas (v2.1.0+).
Optional quota counter flush tuning (v2.1.0+):
maxArchiveSize
FileBrowser limits the maximum size of archive and unarchive operations (folder downloads, ZIP handling, etc.). The limit is the combined size of files involved, in gigabytes. Default is 20 GB. Set to 0 for no limit.
This cap exists because archiving uses temporary files under cacheDir and an unlimited value could exhaust disk or memory on the server.
Ensure you have enough free space in cacheDir if you raise this value. That space must be on disk-backed storage (see cacheDir below). Lowering maxArchiveSize only blocks oversized archives; it does not fix out-of-memory failures when cacheDir is on tmpfs.
cacheDir
The cacheDir is a critical configuration that defines where FileBrowser stores temporary files during various operations. By default, a tmp folder is created in the same directory as the program is run, but this may not be ideal. For example unRAID uses a different user by default and that causes permission issues with the default cache directory creation process.
Important Considerations
Permissions: The user running the FileBrowser process must have read/write permissions on the cache directory. This is especially critical in Docker environments. If you’re using unRAID, you must mount a volume for the cache directory. The default container user (if not uid 1000) needs write access to this directory.
Disk Space: The cache directory can grow significantly during large file operations. Monitor disk usage and ensure adequate space. If you are using docker – consider mounting a sufficient volume for temp directory if you need more space.
Reliable: Must be available and not tampered with during runtime. Make sure its not in a location that could be moved or modified by accident. Do not use network locations!
Not tmpfs: Mounting the cache path with --tmpfs, type: tmpfs will cause increased memory and likely to cause OOM errors.
The cacheDir is used by:
- Image preview generation: Thumbnails and processed images are cached
- Archive operations: ZIP extraction and compression temporary files (folder downloads; chunked downloads spool full archives here)
- Search indexing: Index database files under
cacheDir/sql - Document processing: Temporary files during PDF/image conversion
- Video processing: Some media files during video operations
Docker Examples
Basic Docker Setup:
Corresponding config.yaml:
Alternatively, in Docker, we can mount a single directory called data that contains the config, database files, and cacheDir. Check the Standalone docker setup guide to see how it’s done.
Troubleshooting
Folder ZIP download fails (502, broken pipe, container restarts):
Confirm cacheDir is on disk-backed storage, not tmpfs. Check container memory limits and free space at the mounted cache path. See maxArchiveSize for the archive size cap.
Permission Issues:
By default, FileBrowser uses UID 1000 for the user (you can change that):
Next Steps
- HTTP settings — port, baseURL, TLS, WebDAV, trusted headers, and auth rate limiting
- Configure sources
- Set up authentication
- Configure logging