Sources are the core concept in FileBrowser - each source represents a file system location users can access.

Basic Configuration

Single Source

YAML
1
2
3
4
5
6
7
server:
  sources:
    - path: "/path/to/files" # Do not use a root "/" directory or include the "/var" folder
      config:
        defaultEnabled: true
auth:
  adminUsername: admin

When only one source is configured, source paths will be available at http://your-server/files/path/to/file.

Multiple Sources

YAML
1
2
3
4
5
6
7
8
9
server:
  port: 80
  sources:
    - path: "/path/to/source1" # enabled for all users
      name: "My Files"
      config:
        defaultEnabled: true
    - path: "/path/to/source2" # not default enabled!
      name: "Secured Files"

Common Patterns

Personal User Directories

Creating user directories for each user where

YAML
1
2
3
4
5
6
7
server:
  sources:
    - path: "/home/users"
      config:
        defaultEnabled: true
        createUserDir: true
        #defaultUserScope: "/" # when createUserDir is false

Shared + Personal

YAML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
server:
  sources:
    - path: "/shared/common"
      name: "Shared Files"
      config:
        defaultEnabled: true
    - path: "/shared/users"
      name: "My Files"
      config:
        private: true

Source Configuration Options

path

File system path. Can be relative or absolute. Required.

YAML
1
2
3
server:
  sources:
    - path: "/data/files"

name

Display name for the source. Optional. If not set, uses the base name of the path.

YAML
1
2
3
4
server:
  sources:
    - path: "/data/files"
      name: "My Files"

config.defaultEnabled

Should be added as a default source for new users? Default: false.

YAML
1
2
3
4
5
server:
  sources:
    - path: "/data/files"
      config:
        defaultEnabled: true

config.defaultUserScope

This is the directory path that a user is given access to by default. This is also the parent directory path used if you enable createUserDir.

For example if the source is /, and you configure defaultUserScope: /users and also enable createUserDir, then a user named graham will have a scope directory created at /users/graham and that will be their root directory.

Defaults to root of index /. Should match folders under path. Used when createUserDir is false.

YAML
1
2
3
4
5
server:
  sources:
    - path: "/home/users"
      config:
        defaultUserScope: "/"

config.createUserDir

Create a user directory for each user under defaultUserScope + /+ username. Default: false.

YAML
1
2
3
4
5
6
7
server:
  sources:
    - path: "/home/users"
      config:
        defaultEnabled: true
        createUserDir: true
        defaultUserScope: "/"

This creates /home/users/username for each user. For example, a user graham would get a folder created at /home/users/graham and that would be their user scope. They wouldn’t be able to access /home/users/ folder.

config.denyByDefault

Deny access unless an “allow” access rule was specifically created. Default: false.

YAML
1
2
3
4
5
server:
  sources:
    - path: "/data"
      config:
        denyByDefault: true

See Access Rules for more information.

config.private

Designate source as private – currently just means no sharing permitted. Default: false.

YAML
1
2
3
4
5
server:
  sources:
    - path: "/private/data"
      config:
        private: true

config.disabled

Disable the source. Useful so you don’t need to remove it from the config file. Default: false.

YAML
1
2
3
4
5
server:
  sources:
    - path: "/old/data"
      config:
        disabled: true

config.useLogicalSize

Calculate sizes based on logical size instead of disk utilization (du -sh). Folders will be 0 bytes when empty. Default: false.

YAML
1
2
3
4
5
server:
  sources:
    - path: "/data"
      config:
        useLogicalSize: false

config.rules

List of item rules to apply to specific paths. See Advanced Source Configuration for detailed information on rule options.

YAML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
server:
  sources:
    - path: "/data"
      config:
        rules:
          - neverWatchPath: ""
            includeRootItem: ""
            fileStartsWith: ""
            folderStartsWith: ""
            fileEndsWith: ""
            folderEndsWith: ""
            folderPath: ""
            filePath: ""
            fileName: ""
            folderName: ""
            viewable: false
            ignoreHidden: false
            ignoreZeroSizeFolders: false
            ignoreSymlinks: false

Next Steps