2025-03-03 04:40:56 -05:00
2025-04-09 02:20:16 -04:00

FileRise

GitHub stars Docker pulls Docker CI CI Demo Release License Discord Sponsor on GitHub Support on Ko-fi

FileRise is a modern, self-hosted web file manager / WebDAV server.
Drag & drop uploads, ACL-aware sharing, OnlyOffice integration, and a clean UI — all in a single PHP app that you control.

  • 💾 Self-hosted “cloud drive” Runs anywhere with PHP (or via Docker). No external DB required.
  • 🔐 Granular per-folder ACLs View / Own / Upload / Edit / Delete / Share, enforced across UI, API, and WebDAV.
  • 🔄 Fast drag-and-drop uploads Chunked, resumable uploads with pause/resume and progress.
  • 🌳 Scales to huge trees Tested with 100k+ folders in the sidebar tree.
  • 🧩 ONLYOFFICE support (optional) Edit DOCX/XLSX/PPTX using your own Document Server.
  • 🌍 WebDAV Mount FileRise as a drive from macOS, Windows, Linux, or Cyberduck/WinSCP.
  • 📊 Storage / disk usage summary CLI scanner with snapshots, total usage, and per-volume breakdowns in the admin panel.
  • 🎨 Polished UI Dark/light mode, responsive layout, in-browser previews & code editor.
  • 🔑 Login + SSO Local users, TOTP 2FA, and OIDC (Auth0 / Authentik / Keycloak / etc.) with optional auto-provisioning, IdP-admin role sync, and Pro user-group mapping.
  • 🛡️ ClamAV virus scanning (Core) + Pro virus log Optional integration with ClamAV to scan uploads, plus a Pro virus detection log in the admin panel with CSV export.
  • 👥 Pro: user groups, client portals & storage explorer Group-based ACLs, brandable client upload portals, and an ncdu-style explorer to drill into folders, largest files, and clean up storage inline.

Full list of features available at Full Feature Wiki

FileRise

💡 Looking for FileRise Pro (brandable header, user groups, client upload portals, license handling)? Check out filerise.net FileRise Core stays fully open-source (MIT).



1. What FileRise does

FileRise turns a folder on your server into a web-based file explorer with:

  • Folder tree + breadcrumbs for fast navigation
  • Multi-file/folder drag-and-drop uploads
  • Move / copy / rename / delete / extract ZIP
  • Public share links (optionally password-protected & expiring)
  • Tagging and search by name, tag, uploader, and content
  • Trash with restore/purge
  • Inline previews (images, audio, video, PDF) and a built-in code editor

Everything flows through a single ACL engine, so permissions are enforced consistently whether users are in the browser UI, using WebDAV, or hitting the API.

Login & SSO (OIDC roles + groups)

FileRise supports local accounts, TOTP 2FA, and modern OIDC providers (Auth0, Authentik, Keycloak, …).
Beyond “just login”, OIDC can now drive roles and Pro user groups:

  • 🧑‍💻 Auto-provision users
  • 👑 IdP-driven admin role
  • 👥 Pro: OIDC groups → FileRise Pro user groups
  • 🧪 Admin: OIDC connectivity test

➡️ Full docs: OIDC / SSO setup


The easiest way to run FileRise is the official Docker image.

Option A Quick start (docker run)

docker run -d \
  --name filerise \
  -p 8080:80 \
  -e TIMEZONE="America/New_York" \
  -e TOTAL_UPLOAD_SIZE="10G" \
  -e SECURE="false" \
  -e PERSISTENT_TOKENS_KEY="default_please_change_this_key" \
  -e SCAN_ON_START="true" \
  -e CHOWN_ON_START="true" \
  -v ~/filerise/uploads:/var/www/uploads \
  -v ~/filerise/users:/var/www/users \
  -v ~/filerise/metadata:/var/www/metadata \
  error311/filerise-docker:latest

Then visit:

http://your-server-ip:8080

On first launch youll be guided through creating the initial admin user.

💡 After the first run, you can set CHOWN_ON_START="false" if permissions are already correct and you dont want a recursive chown on every start.

⚠️ Uploads folder recommendation

Its strongly recommended to bind /var/www/uploads to a dedicated folder (for example ~/filerise/uploads or /mnt/user/appdata/FileRise/uploads), not the root of a huge media share.

If you really want FileRise to sit “on top of” an existing share, use a subfolder (e.g. /mnt/user/media/filerise_root) instead of the share root, so scans and permission changes stay scoped to that folder.


Option B docker-compose.yml

services:
  filerise:
    image: error311/filerise-docker:latest
    container_name: filerise
    ports:
      - "8080:80"
    environment:
      TIMEZONE: "America/New_York"
      TOTAL_UPLOAD_SIZE: "10G"
      SECURE: "false"
      PERSISTENT_TOKENS_KEY: "default_please_change_this_key"
      SCAN_ON_START: "true"   # auto-index existing files on startup
      CHOWN_ON_START: "true"  # fix permissions on uploads/users/metadata on startup
    volumes:
      - ./uploads:/var/www/uploads
      - ./users:/var/www/users
      - ./metadata:/var/www/metadata

Bring it up with:

docker compose up -d

Common environment variables

Variable Required Example What it does
TIMEZONE America/New_York PHP / container timezone.
TOTAL_UPLOAD_SIZE 10G Max total upload size per request (e.g. 5G, 10G). Also used to set PHP upload_max_filesize and post_max_size, and Apache LimitRequestBody.
SECURE false true when running behind HTTPS / a reverse proxy, else false.
PERSISTENT_TOKENS_KEY change_me_super_secret Secret used to sign “remember me”/persistent tokens. Do not leave this at the default.
DATE_TIME_FORMAT Optional Y-m-d H:i Overrides DATE_TIME_FORMAT in config.php (controls how dates/times are rendered in the UI).
SCAN_ON_START Optional true If true, runs scan_uploads.php once on container start to index existing files.
CHOWN_ON_START Optional true If true (default), recursively chowns uploads/, users/, and metadata/ to www-data:www-data on startup. Set to false if you manage ownership yourself.
PUID Optional 99 If running as root, remap www-data user to this UID (e.g. Unraids 99).
PGID Optional 100 If running as root, remap www-data group to this GID (e.g. Unraids 100).
HTTP_PORT Optional 8080 Override Apache Listen 80 and vhost port with this port inside the container.
HTTPS_PORT Optional 8443 If you terminate TLS inside the container, override Listen 443 with this port.
SERVER_NAME Optional files.example.com Sets Apaches ServerName (defaults to FileRise if not provided).
LOG_STREAM Optional error Controls which logs are streamed to container stdout: error, access, both, or none.
VIRUS_SCAN_ENABLED Optional true If true, enable ClamAV-based virus scanning for uploads.
VIRUS_SCAN_CMD Optional clamscan Command used to scan files. Can be clamscan, clamdscan, or a wrapper with flags.
CLAMAV_AUTO_UPDATE Optional true If true and running as root, call freshclam on startup to update signatures.
SHARE_URL Optional https://files.example.com Overrides the base URL used when generating public share links (useful behind reverse proxies).

If DATE_TIME_FORMAT is not set, FileRise uses the default from config/config.php (currently m/d/y h:iA). 🗂 Using an existing folder tree

  • Point /var/www/uploads at the folder you want FileRise to manage.
  • Set SCAN_ON_START="true" on the first run to index existing files, then usually set it to "false" so the container doesnt rescan on every restart.
  • CHOWN_ON_START="true" is handy on first run to fix permissions. If you map a large share or already manage ownership yourself, set it to "false" to avoid recursive chown on every start.

Volumes:

  • /var/www/uploads your actual files
  • /var/www/users user & pro jsons
  • /var/www/metadata tags, search index, share links, etc.

More Docker / orchestration options (Unraid, Portainer, k8s, reverse proxy, etc.)


3. Manual install (PHP web server)

Prefer bare-metal or your own stack? FileRise is just PHP + a few extensions.

Requirements

  • PHP 8.3+
  • Web server (Apache / Nginx / Caddy + PHP-FPM)
  • PHP extensions: json, curl, zip (and usual defaults)
  • No database required

Steps

  1. Clone or download FileRise into your web root:

    git clone https://github.com/error311/FileRise.git
    
  2. Create data directories and set permissions:

    cd FileRise
    mkdir -p uploads users metadata
    chown -R www-data:www-data uploads users metadata   # adjust for your web user
    chmod -R 775 uploads users metadata
    
  3. (Optional) Install PHP dependencies with Composer:

    composer install
    
  4. Configure PHP (upload limits / timeouts) and ensure rewrites are enabled.

    • Apache: allow .htaccess or copy its rules into your vhost.
    • Nginx/Caddy: mirror the basic protections (no directory listing, block sensitive files).
  5. Browse to your FileRise URL and follow the admin setup screen.

For detailed examples and reverse proxy snippets, see the Installation page in the Wiki Install & Setup.


4. WebDAV & ONLYOFFICE (optional)

WebDAV

Once enabled in the Admin panel, FileRise exposes a WebDAV endpoint (e.g. /webdav.php). Use it with:

  • macOS Finder Go → Connect to Server → https://your-host/webdav.php/
  • Windows File Explorer Map Network Drive → https://your-host/webdav.php/
  • Linux (GVFS/Nautilus) dav://your-host/webdav.php/
  • Clients like Cyberduck, WinSCP, etc.

WebDAV operations honor the same ACLs as the web UI.

See: WebDAV

ONLYOFFICE integration

If you run an ONLYOFFICE Document Server you can open/edit Office documents directly from FileRise (DOCX, XLSX, PPTX, ODT, ODS, ODP; PDFs view-only).

Configure it in Admin → ONLYOFFICE:

  • Enable ONLYOFFICE
  • Set your Document Server origin (e.g. https://docs.example.com)
  • Configure a shared JWT secret
  • Copy the suggested Content-Security-Policy header into your reverse proxy

Docs: ONLYOFFICE


5. Security & updates

  • FileRise is actively maintained and has published security advisories.
  • See SECURITY.md and GitHub Security Advisories for details.
  • To upgrade:
    • Docker: docker pull error311/filerise-docker:latest and recreate the container with the same volumes.
    • Manual: replace app files with the latest release (keep uploads/, users/, metadata/, and your config).

Please report vulnerabilities responsibly via the channels listed in SECURITY.md.


6. Community, support & contributing

  • 🧵 GitHub Discussions & Issues: ask questions, report bugs, suggest features.
  • 💬 Unraid forum thread: for Unraid-specific setup and tuning.
  • 🌍 Reddit / self-hosting communities: occasional release posts & feedback threads.

Contributions are welcome — from bug fixes and docs to translations and UI polish.
See CONTRIBUTING.md for guidelines.

If FileRise saves you time or becomes your daily driver, a on GitHub or sponsorship is hugely appreciated:


7. License & third-party code

FileRise Core is released under the MIT License see LICENSE.

It bundles a small set of well-known client and server libraries (Bootstrap, CodeMirror, DOMPurify, Fuse.js, Resumable.js, sabre/dav, etc.).
All third-party code remains under its original licenses.

See THIRD_PARTY.md and the licenses/ folder for full details.

8. Press

Description
🗂️ Lightweight, self-hosted web-based file manager with multi-file upload, editing, and batch operations – built with PHP & JavaScript for seamless file and folder management (Docker & Unraid ready).
Readme MIT 92 MiB
Languages
JavaScript 52.5%
PHP 38.7%
CSS 5.7%
HTML 2.2%
Shell 0.6%
Other 0.3%