Skip to content

Full Config Example

Graham Steffaniak edited this page May 15, 2025 · 43 revisions

A config needs to be validated using a few simple rules:

  1. Invalid fields are no longer supported; this helps spot typos. For example, if you type userdefaults instead of userDefaults, it will let you know rather than ignoring all of your userDefault settings you intended to set.
  2. required fields, such as server.sources and different keys based on the settings that you add.
  3. some additional light validation, such as min values for things like minLength for password config if provided.

full config example

Note: you can view the current full config output by going to {basePath}/static/config.generated.yaml with an authenticated user.

server:
  numImageProcessors: 0               # "number of concurrent image processing jobs"
  socket: ""                          # "socket to listen on"
  tlsKey: ""                          # "path to TLS key"
  tlsCert: ""                         # "path to TLS cert"
  disablePreviews: false              # "disable all previews thumbnails, simple icons will be used"
  disablePreviewResize: false         # "disable resizing of previews for faster loading over slow connections"
  disableTypeDetectionByHeader: false # "disable type detection by header, useful if filesystem is slow."
  port: 0                             # "port to listen on"
  baseURL: ""                         # "base URL for the server, the subpath that the server is running on."
  logging:
    - levels: ""                      # "separated list of log levels to enable. (eg. "info|warning|error|debug")"
      apiLevels: ""                   # "separated list of log levels to enable for the API. (eg. "info|warning|error")"
      output: ""                      # "output location. (eg. "stdout" or "path/to/file.log")"
      noColors: false                 # "disable colors in the output"
      json: false                     # "output in json format, currently not supported"
  database: ""                       # "path to the database file"
  sources:                           #  validate:required,dive
    - path: ""                       # "file system path. (Can be relative)"  validate:required
      name: ""                       # "display name"
      config:
        indexingInterval: 0          # "optional manual overide interval in seconds to re-index the source"
        disabled: false              # "disable the indexing of this source"
        maxWatchers: 0               # "number of concurrent watchers to use for this source, currently not supported"
        neverWatchPaths: []
        ignoreHidden: false          # "ignore hidden files and folders."
        ignoreZeroSizeFolders: false # "ignore folders with 0 size"
        exclude:                     # "exclude files and folders from indexing, if include is not set"
          files: []
          folders: []
          fileEndsWith: []
        include: # "include files and folders from indexing, if exclude is not set"
          files: []
          folders: []
          fileEndsWith: []
        defaultUserScope: ""  # "default "/" should match folders under path"
        defaultEnabled: false # "should be added as a default source for new users?"
        createUserDir: false  # "create a user directory for each user"
  externalUrl: ""   # "used by share links if set"
  internalUrl: ""   # "used by integrations if set, this is the url that an integration service will use to communicate with filebrowser"
  cacheDir: ""      # "path to the cache directory, used for thumbnails and other cached files"
  maxArchiveSize: 0 # "max pre-archive combined size of files/folder that are allowed to be archived (in GB)"
auth:
  tokenExpirationHours: 0 # "the number of hours until the token expires. Default is 2 hours."
  methods:
    proxy:                #  validate:omitempty
      enabled: false
      createUser: false   # "create user if not exists"
      header: ""          # "required header to use for authentication. Security Warning: FileBrowser blindly accepts the header value as username."
    noauth: false   # "if set to true, overrides all other auth methods and disables authentication"
    password:       #  validate:omitempty
      enabled: false
      minLength: 0  #  validate:omitempty,min=5
      signup: false # "currently not used by filebrowser"  validate:omitempty
      recaptcha:    # "recaptcha config, only used if signup is enabled"  validate:omitempty
        host: ""    #  validate:required
        key: ""     #  validate:required
        secret: ""  #  validate:required
    oidc:                     #  validate:omitempty
      enabled: false          # "whether to enable OIDC authentication"
      clientId: ""            # "client id of the OIDC application"
      clientSecret: ""        # "client secret of the OIDC application"
      issuerUrl: ""           # "authorization URL of the OIDC provider"
      scopes: ""              # "scopes to request from the OIDC provider"
      userIdentifier: ""      # "the user identifier to use for authentication. Default is "username", can be "email" or "username", or "phone""
      disableVerifyTLS: false # "disable TLS verification for the OIDC provider. This is insecure and should only be used for testing."
      logoutRedirectUrl: ""   # "if provider logout url is provided, filebrowser will also redirect to logout url. Custom logout query params are respected."
  key: ""                  # "the key used to sign the JWT tokens. If not set, a random key will be generated."
  adminUsername: ""        # "the username of the admin user. If not set, the default is "admin"."
  adminPassword: ""        # "the password of the admin user. If not set, the default is "admin"."
  resetAdminOnStart: false # "if set to true, the admin user will be reset to the default username and password on startup."
frontend:
  name: ""                     # "display name"
  disableDefaultLinks: false   # "disable default links in the sidebar"
  disableUsedPercentage: false # "disable used percentage for the sources in the sidebar"
  externalLinks:
    - text: ""                 # "the text to display on the link"  validate:required
      title: ""                # "the title to display on hover"
      url: ""                  # "the url to link to"  validate:required
userDefaults:
  stickySidebar: false     # "keep sidebar open when navigating"
  darkMode: false          # "should dark mode be enabled"
  locale: ""               # "language to use: eg. de, en, or fr"
  viewMode: ""             # "view mode to use: eg. normal, list, grid, or compact"
  singleClick: false       # "open directory on single click, also enables middle click to open in new tab"
  showHidden: false        # "show hidden files in the UI. On windows this includes files starting with a dot and windows hidden files"
  dateFormat: false        # "when false, the date is relative, when true, the date is an exact timestamp"
  gallerySize: 0           # "0-9 - the size of the gallery thumbnails"
  themeColor: ""           # "theme color to use: eg. #ff0000, or var(--red), var(--purple), etc"
  quickDownload: false     # "show icon to download in one click"
  disableOnlyOfficeExt: "" # "comma separated list of file extensions to disable onlyoffice preview for"
  lockPassword: false      # "disable the user from changing their password"
  disableSettings: false   # "disable the user from viewing the settings page"
  preview:
    highQuality: false
    image: false
    video: false
    motionVideoPreview: false
    office: false
    popup: false
  permissions:
    api: false
    admin: false
    modify: false
    share: false
    realtime: false
  loginMethod: "" # "login method to use: eg. password, proxy, oidc"
integrations:
  office:           #  validate:omitempty
    url: ""         # "The URL to the OnlyOffice Document Server, needs to be accessible to the user."  validate:required
    internalUrl: "" # "An optional internal address that the filebrowser server can use to communicate with the OnlyOffice Document Server, could be useful to bypass proxy."
    secret: ""      #  validate:required
  media:           #  validate:omitempty
    ffmpegPath: "" # "path to ffmpeg directory with ffmpeg and ffprobe (eg. /usr/local/bin)"

Clone this wiki locally