{"id":168303,"date":"2026-06-02T16:09:54","date_gmt":"2026-06-02T13:09:54","guid":{"rendered":"https:\/\/computingforgeeks.com\/?p=168303"},"modified":"2026-06-02T16:09:54","modified_gmt":"2026-06-02T13:09:54","slug":"install-filebrowser-quantum","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/install-filebrowser-quantum\/","title":{"rendered":"FileBrowser Quantum: OIDC, LDAP and Multi-Source File Manager"},"content":{"rendered":"<p>You have a FileBrowser Quantum server, an identity provider, and an LDAP directory. This guide wires them together so the same file manager accepts single sign-on, directory logins, local accounts with two-factor, and reverse-proxy headers, all from one configuration file. Quantum is the actively developed fork of File Browser, and the auth handling is the main reason to reach for it.<\/p>\n\n<p>We deploy Quantum with Docker Compose behind Nginx, then connect each login method in turn: password plus enforced 2FA, OpenID Connect through Authentik, LDAP against OpenLDAP, and trusted-header auth for a forward-auth proxy. Along the way we cover the multi-source setup, indexed search, thumbnails, sharing, group access control, and the developer API.<\/p>\n\n<p><em>Confirmed working with FileBrowser Quantum v1.3.3-stable on Docker (Debian 13 host) in June 2026, wired to Authentik for OIDC and OpenLDAP for directory logins.<\/em><\/p>\n\n<h2 class=\"wp-block-heading\">What FileBrowser Quantum changes<\/h2>\n\n<p>The classic <a href=\"https:\/\/computingforgeeks.com\/install-filebrowser-linux\/\">File Browser<\/a> is in maintenance mode: security and bug fixes only, no new features. Quantum (the <code>gtsteffaniak<\/code> fork, published as the <code>gtstef\/filebrowser<\/code> image) is where active development happens. It keeps the lightweight single-binary model but rebuilds configuration around a single <code>config.yaml<\/code> instead of the classic CLI and database flags covered in the <a href=\"https:\/\/computingforgeeks.com\/filebrowser-cli-cheat-sheet\/\">File Browser CLI cheat sheet<\/a>.<\/p>\n\n<p>The headline additions for anyone running this for a team:<\/p>\n\n<ul>\n<li><strong>Auth methods:<\/strong> OIDC, LDAP, password with TOTP two-factor, and proxy-header, all enabled side by side.<\/li>\n<li><strong>Multiple sources:<\/strong> serve several roots from one instance, each with its own default-enabled and scope rules.<\/li>\n<li><strong>Indexed search:<\/strong> a SQLite index gives real-time results as you type, with type, size, and date filters.<\/li>\n<li><strong>Richer thumbnails:<\/strong> image, video, office, and 3D-model previews in the listing.<\/li>\n<li><strong>Sharing and ACLs:<\/strong> share links with expiry and passwords, plus directory-level access control scoped to a user or group.<\/li>\n<li><strong>Developer API:<\/strong> long-lived API tokens and a Swagger page at <code>\/swagger<\/code>.<\/li>\n<\/ul>\n\n<p>One thing is deliberately gone: the shell command runner and interactive terminal that classic File Browser shipped (disabled by default since 2.33.8) are removed from Quantum entirely. If you relied on event hooks, that workflow does not carry over.<\/p>\n\n<h2 class=\"wp-block-heading\">Set reusable values<\/h2>\n\n<p>Two hostnames and an email repeat across the certificate, Nginx, and OIDC steps. Export them once so you change one block and paste the rest. Use real names you control; the directory and OIDC pieces only work over HTTPS.<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>export FBQ_DOMAIN=\"files.example.com\"\nexport SSO_DOMAIN=\"sso.example.com\"\nexport ADMIN_EMAIL=\"admin@example.com\"<\/code><\/pre>\n\n\n<p>Point an A record for each name at the host before issuing certificates. The <code>FBQ_DOMAIN<\/code> serves FileBrowser Quantum, and <code>SSO_DOMAIN<\/code> serves the identity provider that issues the OIDC tokens.<\/p>\n\n<h2 class=\"wp-block-heading\">Deploy Quantum with Docker Compose<\/h2>\n\n<p>Quantum reads its config from <code>\/home\/filebrowser\/data\/config.yaml<\/code> and keeps the database next to it. Create a working directory with a <code>data<\/code> folder for the config and two folders to serve as sources:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>mkdir -p ~\/filebrowser\/{data,documents,media}\ncd ~\/filebrowser<\/code><\/pre>\n\n\n<p>Write a minimal <code>data\/config.yaml<\/code> to start. We expand the auth section in later steps; for now this gets the server running with a single admin account:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>server:\n  port: 80\n  sources:\n    - path: \"\/documents\"\n      name: \"Documents\"\nauth:\n  adminUsername: admin\n  methods:\n    password:\n      enabled: true\n      minLength: 8\nfrontend:\n  name: \"Team Files\"<\/code><\/pre>\n\n\n<p>Now the Compose file. The container runs as UID 1000, so the mounted folders must be owned by your user (UID 1000 on most single-user hosts). The admin password comes from an environment variable rather than the config file:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>services:\n  filebrowser:\n    image: gtstef\/filebrowser:1.3.3-stable\n    container_name: filebrowser\n    user: \"1000:1000\"\n    ports:\n      - \"8080:80\"\n    volumes:\n      - .\/data:\/home\/filebrowser\/data\n      - .\/documents:\/documents\n      - .\/media:\/media\n    environment:\n      - FILEBROWSER_ADMIN_PASSWORD=ChangeMe-Strong-2026\n    restart: unless-stopped<\/code><\/pre>\n\n\n<p>Bring it up and watch the startup log, which confirms the config path, the active auth methods, and the sources it indexed:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>docker compose up -d\ndocker logs filebrowser<\/code><\/pre>\n\n\n<p>You should see the version, the config file in use, and the source index build:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>[INFO ] Initializing FileBrowser Quantum (v1.3.3-stable)\n[INFO ] Using Config file        : \/home\/filebrowser\/data\/config.yaml\n[INFO ] Auth Methods             : [password]\n[INFO ] Sources                  : [Documents: \/documents]\n[INFO ] Running at               : http:\/\/0.0.0.0\/<\/code><\/pre>\n\n\n<p>That confirms the container is healthy on port 8080. It is only reachable locally for now, so the next step puts a TLS endpoint in front of it.<\/p>\n\n<h2 class=\"wp-block-heading\">Put Quantum behind Nginx with HTTPS<\/h2>\n\n<p>OIDC redirects and directory logins should run over TLS, so we terminate HTTPS at Nginx and proxy to the container on port 8080. Issue a certificate first. The default HTTP-01 challenge works for any DNS provider once port 80 is reachable:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>sudo certbot certonly --nginx -d \"${FBQ_DOMAIN}\" \\\n  --non-interactive --agree-tos -m \"${ADMIN_EMAIL}\"<\/code><\/pre>\n\n\n<p>If the host sits on a private network with no public port 80, use the DNS-01 challenge with your provider&#8217;s certbot plugin instead. The <a href=\"https:\/\/computingforgeeks.com\/install-nginx-ubuntu-2604-lets-encrypt\/\">Nginx with Let&#8217;s Encrypt walkthrough<\/a> covers both paths in detail.<\/p>\n\n<p>Create the server block. The placeholder <code>FBQ_DOMAIN_HERE<\/code> gets substituted from your shell variable in the next command, and the WebSocket headers keep the live-update connection open:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>server {\n    listen 443 ssl;\n    http2 on;\n    server_name FBQ_DOMAIN_HERE;\n\n    ssl_certificate     \/etc\/letsencrypt\/live\/FBQ_DOMAIN_HERE\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/FBQ_DOMAIN_HERE\/privkey.pem;\n    client_max_body_size 5000m;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n    }\n}\nserver {\n    listen 80;\n    server_name FBQ_DOMAIN_HERE;\n    return 301 https:\/\/$host$request_uri;\n}<\/code><\/pre>\n\n\n<p>Substitute the domain, enable the site, and reload. The <code>X-Forwarded-Proto<\/code> header is what lets Quantum build correct <code>https<\/code> OIDC redirect URLs behind the proxy:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>sudo sed -i \"s\/FBQ_DOMAIN_HERE\/${FBQ_DOMAIN}\/g\" \/etc\/nginx\/sites-available\/filebrowser.conf\nsudo ln -s \/etc\/nginx\/sites-available\/filebrowser.conf \/etc\/nginx\/sites-enabled\/\nsudo nginx -t && sudo systemctl reload nginx<\/code><\/pre>\n\n\n<p>Open <code>https:\/\/files.example.com<\/code> and you land on the Quantum login. With only the password method enabled so far, it shows the username and password fields and nothing else:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-login-oidc.png\" alt=\"FileBrowser Quantum login page with password fields and OpenID Connect button\" class=\"wp-image-168295\" title=\"\"><\/figure>\n\n\n<p>Local accounts work, but the reason to run Quantum is the methods we layer on next. They all live in the same file, so it helps to see how it is organized first.<\/p>\n\n<h2 class=\"wp-block-heading\">Read the config.yaml layout<\/h2>\n\n<p>Everything in Quantum is driven by that one file. The top-level keys are <code>server<\/code> (port, sources, TLS), <code>auth<\/code> (the admin account and every login method), <code>frontend<\/code> (branding and links), and optional <code>integrations<\/code> (for example an OnlyOffice server). The whole file is read on startup, so a change means a restart of the container.<\/p>\n\n<p>The piece that ties the auth methods together lives under <code>auth.methods<\/code>. Each method is its own block with an <code>enabled<\/code> flag, and they coexist: a user can sign in with OIDC while a service account uses LDAP and an admin keeps a local password. The login page renders a button or form for each enabled method automatically.<\/p>\n\n<h2 class=\"wp-block-heading\">Serve multiple sources<\/h2>\n\n<p>A source is a root path Quantum indexes and serves. List more than one under <code>server.sources<\/code>, each with a display name and its own config. Mark the ones every user should see with <code>defaultEnabled: true<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>server:\n  port: 80\n  sources:\n    - path: \"\/documents\"\n      name: \"Documents\"\n      config:\n        defaultEnabled: true\n    - path: \"\/media\"\n      name: \"Media Library\"\n      config:\n        defaultEnabled: true<\/code><\/pre>\n\n\n<p>Mount each path in the Compose file (we already mapped <code>.\/media:\/media<\/code> above), then restart. Both sources now appear in the sidebar with their own usage bars, and the listing renders real thumbnails for images, video, and office files:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-thumbnails-multisource.png\" alt=\"FileBrowser Quantum image thumbnail grid with a multi-source sidebar\" class=\"wp-image-168298\" title=\"\"><\/figure>\n\n\n<p>Each source can also carry <code>createUserDir: true<\/code> to give every user a private home folder, or <code>private: true<\/code> to keep it off the default list. That makes one instance serve shared and per-user storage at the same time.<\/p>\n\n<h2 class=\"wp-block-heading\">Add password logins with enforced 2FA<\/h2>\n\n<p>The password method is the local-account path, and Quantum can require time-based 2FA on top of it. Two settings control this: <code>enforcedOtp<\/code> makes every password user enroll an authenticator, and <code>totpSecret<\/code> is the key Quantum uses to encrypt stored TOTP secrets.<\/p>\n\n<p>The gotcha here is the secret length. Quantum base64-decodes <code>totpSecret<\/code> and the result must be exactly 32 bytes for AES-256, or OTP generation fails with a 500 and the enrollment screen shows &#8220;Generation Failed&#8221;. Generate a correct key with one command:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>openssl rand -base64 32<\/code><\/pre>\n\n\n<p>Pass that value through the environment and turn on enforcement in the config. Add the variable to the Compose <code>environment<\/code> list:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>- FILEBROWSER_TOTP_SECRET=PASTE_BASE64_32_BYTE_KEY_HERE<\/code><\/pre>\n\n\n<p>Then set the password block under <code>auth.methods<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>    password:\n      enabled: true\n      minLength: 8\n      enforcedOtp: true<\/code><\/pre>\n\n\n<p>Restart the container and sign in as the admin. Because 2FA is enforced, Quantum interrupts the login with an enrollment screen: it shows a QR code and the <code>otpauth<\/code> URI to scan, then asks for the first six-digit code to confirm:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-2fa-totp-enrollment.png\" alt=\"FileBrowser Quantum two-factor authentication TOTP QR code enrollment\" class=\"wp-image-168299\" title=\"\"><\/figure>\n\n\n<p>Scan it with any authenticator app, enter the code, and the account is protected from then on. Changing <code>totpSecret<\/code> later invalidates every enrolled user, so set it once and back it up.<\/p>\n\n<h2 class=\"wp-block-heading\">Wire single sign-on with Authentik (OIDC)<\/h2>\n\n<p>OIDC is where Quantum earns its place for a team. We use <a href=\"https:\/\/computingforgeeks.com\/run-keycloak-in-docker-or-podman-with-lets-encrypt-ssl\/\">Keycloak<\/a> or Authentik as the provider; the examples here are Authentik because its issuer URL format is what the Quantum docs reference. The flow is the usual one: Quantum sends the browser to the provider, the user authenticates there, and the provider redirects back with a code Quantum exchanges for the user&#8217;s identity.<\/p>\n\n<p>In Authentik, create an OAuth2\/OpenID provider and an application bound to it. Three settings have to be right or the handshake breaks:<\/p>\n\n<ul>\n<li><strong>Redirect URI<\/strong> (strict): <code>https:\/\/files.example.com\/api\/auth\/oidc\/callback<\/code><\/li>\n<li><strong>Grant types<\/strong> must include <code>authorization_code<\/code>. If this list is empty, the authorize request bounces straight back with <code>invalid_request<\/code> and &#8220;The request is otherwise malformed&#8221;, before any login screen appears.<\/li>\n<li><strong>Scopes<\/strong>: the provider must expose <code>openid<\/code>, <code>email<\/code>, <code>profile<\/code>, and a <code>groups<\/code> mapping so Quantum can read group membership.<\/li>\n<\/ul>\n\n<p>Copy the client ID and client secret from the provider, then add the <code>oidc<\/code> block. The <code>adminGroup<\/code> maps an IdP group to FileBrowser admin, and <code>userIdentifier<\/code> picks which claim becomes the username:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>    oidc:\n      enabled: true\n      clientId: \"filebrowser-client\"\n      clientSecret: \"PASTE_OIDC_CLIENT_SECRET_HERE\"\n      issuerUrl: \"https:\/\/sso.example.com\/application\/o\/filebrowser\/\"\n      scopes: \"openid email profile groups\"\n      userIdentifier: \"preferred_username\"\n      adminGroup: \"filebrowser-admins\"<\/code><\/pre>\n\n\n<p>Restart Quantum and the startup log now reports <code>OIDC Auth configured successfully<\/code>. The login page grows an &#8220;OpenID Connect&#8221; button below the password form. Click it and the browser hands off to Authentik, which authenticates the user and shows a consent screen before redirecting back:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1366\" height=\"900\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-authentik-oidc-consent.jpg\" alt=\"Authentik OIDC consent screen redirecting to FileBrowser Quantum\" class=\"wp-image-168296\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-authentik-oidc-consent.jpg 1366w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-authentik-oidc-consent-300x198.jpg 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-authentik-oidc-consent-1024x675.jpg 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-authentik-oidc-consent-768x506.jpg 768w\" sizes=\"auto, (max-width: 1366px) 100vw, 1366px\" \/><\/figure>\n\n\n<p>Now a user in the <code>filebrowser-admins<\/code> group lands in Quantum as an administrator with no local password ever created. Keep <code>clientSecret<\/code> out of the file in production by passing it through the environment and referencing a secret store.<\/p>\n\n<h2 class=\"wp-block-heading\">Connect an LDAP directory<\/h2>\n\n<p>For an existing directory, the <code>ldap<\/code> method binds Quantum to your server with a service account and looks users up by a filter. The same username and password form handles it: Quantum tries the local database first, then falls through to LDAP. Set up the directory itself with the <a href=\"https:\/\/computingforgeeks.com\/install-openldap-phpldapadmin-ubuntu\/\">OpenLDAP and phpLDAPadmin guide<\/a> if you do not already run one.<\/p>\n\n<p>The config names the server, the search base, the bind account, and the filter that matches a login name to a directory entry:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>    ldap:\n      enabled: true\n      server: \"ldap:\/\/ldap.example.com:389\"\n      baseDN: \"dc=example,dc=com\"\n      userDN: \"cn=admin,dc=example,dc=com\"\n      userPassword: \"PASTE_LDAP_BIND_PASSWORD_HERE\"\n      userFilter: \"(&amp;(uid=%s)(objectClass=inetOrgPerson))\"<\/code><\/pre>\n\n\n<p>The <code>%s<\/code> in the filter is replaced with the login name. The example above is the OpenLDAP convention. For Active Directory, swap the filter to <code>(sAMAccountName=%s)<\/code> and point <code>userDN<\/code> at a domain service account. Use <code>ldaps:\/\/<\/code> on port 636 for an encrypted bind once you confirm the plain bind works.<\/p>\n\n<p>After a restart the log adds <code>LDAP Auth configured successfully<\/code>. A directory user such as <code>jdoe<\/code> now signs in with their LDAP password and no local account is needed.<\/p>\n\n<h2 class=\"wp-block-heading\">Trust a reverse-proxy header<\/h2>\n\n<p>If you already run a forward-auth proxy such as Authelia, oauth2-proxy, or Traefik&#8217;s forward-auth middleware, Quantum can trust the username it injects. The <code>proxy<\/code> method reads a single header:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>    proxy:\n      enabled: true\n      header: \"X-Forwarded-User\"<\/code><\/pre>\n\n\n<p>When that header arrives, Quantum logs the request in as the named user with no password prompt. That convenience is also the risk: anyone who can set the header is that user. Two rules make it safe. The reverse proxy must strip any client-supplied <code>X-Forwarded-User<\/code> and set its own after it authenticates the request, and the Quantum container must only be reachable through that proxy, never directly. Bind the container to localhost and let only Nginx reach it.<\/p>\n\n<h2 class=\"wp-block-heading\">Verify every login method end to end<\/h2>\n\n<p>With all four methods enabled, the startup log reads <code>Auth Methods: [password proxy oidc ldap]<\/code>. The cleanest way to confirm the wiring is the user list under Settings, which records how each account authenticated. After signing in once through each path, the table shows a local admin on password, an OIDC user promoted to admin through the group mapping, an LDAP user, and a proxy user, all in one view:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-user-management-auth-methods.png\" alt=\"FileBrowser Quantum user management showing password, oidc, ldap and proxy login methods\" class=\"wp-image-168297\" title=\"\"><\/figure>\n\n\n<p>Accounts are provisioned on first login, so a user appears in this list only after they have signed in once. The &#8220;Login method&#8221; column is the quickest audit of which identity source each person came through, and the admin checkmark confirms the OIDC group mapping did its job.<\/p>\n\n<h2 class=\"wp-block-heading\">Search, thumbnails, shares, and the API<\/h2>\n\n<p>Beyond auth, the indexed search is the feature people notice first. Quantum maintains a SQLite index per source, so a query returns matches as you type, scoped to the current source and narrowed by type, size, and date filters:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-indexed-search.png\" alt=\"FileBrowser Quantum advanced indexed search with type filters and results\" class=\"wp-image-168301\" title=\"\"><\/figure>\n\n\n<p>Sharing is configurable per link: set an expiry, a password, and whether anonymous visitors or only named users can open it. Directory-level access control sits alongside it, letting you allow or deny a path for a specific user or a whole group, which pairs naturally with the OIDC and LDAP groups you already wired.<\/p>\n\n<p>For automation, an admin can mint long-lived API tokens under Settings, and every API-enabled user gets an interactive Swagger page at <code>\/swagger<\/code> that documents the endpoints for access, shares, users, and resources:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-filebrowser-quantum-swagger-api.png\" alt=\"FileBrowser Quantum Swagger API documentation page\" class=\"wp-image-168300\" title=\"\"><\/figure>\n\n\n<p>That API plus token model is what makes Quantum scriptable in a way the classic build never was, from bulk share creation to monitoring checks.<\/p>\n\n<h2 class=\"wp-block-heading\">Classic File Browser or Quantum: which to run<\/h2>\n\n<p>Both are worth running; they target different needs. Classic is frozen but tiny and rock-steady for a single admin browsing files. Quantum is heavier and moving fast, and it earns that weight the moment more than one person needs access.<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Need<\/th><th>Classic File Browser<\/th><th>FileBrowser Quantum<\/th><\/tr><\/thead><tbody>\n<tr><td>Single admin, one folder<\/td><td>Ideal, smallest footprint<\/td><td>Works, more than you need<\/td><\/tr>\n<tr><td>SSO \/ OIDC login<\/td><td>Not supported<\/td><td>Built in<\/td><\/tr>\n<tr><td>LDAP \/ Active Directory<\/td><td>Not supported<\/td><td>Built in<\/td><\/tr>\n<tr><td>Two-factor (TOTP)<\/td><td>Not supported<\/td><td>Built in, can be enforced<\/td><\/tr>\n<tr><td>Multiple sources<\/td><td>One root<\/td><td>Many, with per-source rules<\/td><\/tr>\n<tr><td>Search<\/td><td>Basic<\/td><td>Indexed, real-time, filtered<\/td><\/tr>\n<tr><td>Shell command hooks<\/td><td>Present (off by default)<\/td><td>Removed<\/td><\/tr>\n<tr><td>Configuration<\/td><td>CLI plus database flags<\/td><td>Single config.yaml<\/td><\/tr>\n<tr><td>Development pace<\/td><td>Maintenance only<\/td><td>Active<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n<p>Run classic when one person needs a quick web view of a directory and you want the smallest possible image. Move to Quantum when you have real users to authenticate, several storage roots to expose, or a directory and identity provider you want files to plug into. Once the OIDC and LDAP handshakes are confirmed in the user list, Quantum behaves like any other service in your single sign-on estate.<\/p>","protected":false},"excerpt":{"rendered":"<p>You have a FileBrowser Quantum server, an identity provider, and an LDAP directory. This guide wires them together so the same file manager accepts single sign-on, directory logins, local accounts with two-factor, and reverse-proxy headers, all from one configuration file. Quantum is the actively developed fork of File Browser, and the auth handling is the &#8230; <a title=\"FileBrowser Quantum: OIDC, LDAP and Multi-Source File Manager\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/install-filebrowser-quantum\/\" aria-label=\"Read more about FileBrowser Quantum: OIDC, LDAP and Multi-Source File Manager\">Read more<\/a><\/p>\n","protected":false},"author":9,"featured_media":168302,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[316,47,50,349],"tags":[205,209],"cfg_series":[39875],"class_list":["post-168303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-containers","category-linux","category-linux-tutorials","category-web-hosting","tag-security","tag-storage","cfg_series-filebrowser-self-hosting"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/168303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=168303"}],"version-history":[{"count":1,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/168303\/revisions"}],"predecessor-version":[{"id":168306,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/168303\/revisions\/168306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/168302"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=168303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=168303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=168303"},{"taxonomy":"cfg_series","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/cfg_series?post=168303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}