-
-
Notifications
You must be signed in to change notification settings - Fork 43
install setup
You can run FileRise with Docker (recommended) or install it on a PHP web server. This page mirrors the README, with additional details for common setups.
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="change_me" \
-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:latestVisit:
http://your-server-ip:8080
On first launch you will be prompted to create the admin user.
Tip: After permissions are correct, set
CHOWN_ON_START="false"to avoid recursive chowns on every start.
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: "change_me"
SCAN_ON_START: "true" # one-time scan
CHOWN_ON_START: "true" # normalize uploads/metadata perms on first run
volumes:
- ./uploads:/var/www/uploads
- ./users:/var/www/users
- ./metadata:/var/www/metadataBind /var/www/uploads to a dedicated folder (not the root of a massive share). If you want FileRise over an existing share, use a subfolder (e.g. /mnt/media/filerise_root).
- PHP 8.3+
- Web server (Apache / Nginx / Caddy + PHP-FPM)
- PHP extensions:
json,curl,zip,openssl, and standard defaults - No database required
By default FileRise uses absolute paths:
/var/www/uploads/var/www/users/var/www/metadata
Install the app code in /var/www/filerise and set your DocumentRoot to:
/var/www/filerise/public
Get the latest tag from Releases.
cd /var/www
sudo mkdir -p filerise
sudo chown -R $USER:$USER /var/www/filerise
cd /var/www/filerise
VERSION="vX.Y.Z"
ASSET="FileRise-${VERSION}.zip"
curl -fsSL "https://github.com/error311/FileRise/releases/download/${VERSION}/${ASSET}" -o "${ASSET}"
unzip "${ASSET}"cd /var/www
sudo git clone https://github.com/error311/FileRise.git filerise
sudo chown -R $USER:$USER /var/www/filerise
cd /var/www/filerise
composer installsudo mkdir -p /var/www/uploads /var/www/users /var/www/metadata
sudo chown -R www-data:www-data /var/www/uploads /var/www/users /var/www/metadata
sudo chmod -R 775 /var/www/uploads /var/www/users /var/www/metadataDocker creates /var/www/sessions automatically on startup. For manual installs:
- If you keep PHP's default session path, no extra setup is needed.
- If you set
session.save_path = /var/www/sessions(like the Docker image does), create it:
sudo mkdir -p /var/www/sessions
sudo chown -R www-data:www-data /var/www/sessions
sudo chmod 700 /var/www/sessionsFileRise reads the persistent tokens encryption key from the PERSISTENT_TOKENS_KEY environment variable. On manual installs, you must set this yourself so "remember me" tokens are not encrypted with the default fallback key.
Generate a strong key:
openssl rand -base64 32Example output:
m2A6L0x3WnRjYzN6cVhYV3Q2dHhXc0xkQ0V0Q0VjU0RvWm5Qd1E9
Use that generated value in one of the setups below.
If you run FileRise through Apache with PHP as an Apache module, set the environment variable in the vhost:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/filerise/public
SetEnv PERSISTENT_TOKENS_KEY "paste_your_generated_key_here"
</VirtualHost>Then reload Apache:
sudo systemctl reload apache2For PHP-FPM, set the environment variable in the pool config:
; /etc/php/8.3/fpm/pool.d/www.conf
clear_env = no
env[PERSISTENT_TOKENS_KEY] = paste_your_generated_key_hereThen restart PHP-FPM and reload Nginx:
sudo systemctl restart php8.3-fpm
sudo systemctl reload nginxIf you prefer, you can set it at the service level instead of inside the pool file:
sudo systemctl edit php8.3-fpmAdd:
[Service]
Environment="PERSISTENT_TOKENS_KEY=paste_your_generated_key_here"Then restart PHP-FPM:
sudo systemctl daemon-reload
sudo systemctl restart php8.3-fpmCaddy typically passes requests to PHP-FPM, so set the variable in PHP-FPM using one of the methods above.
Set your PERSISTENT_TOKENS_KEY before users start using remember-me tokens and keep it stable.
If you change this key later, previously issued persistent login tokens can no longer be decrypted, so users with remembered sessions will need to log in again.
- Set
FR_PUBLISHED_URLto the public URL (e.g.https://example.com/files). - If your proxy strips the prefix, set
FR_BASE_PATHor sendX-Forwarded-Prefix. - If you are behind a reverse proxy, set
FR_TRUSTED_PROXIESandFR_IP_HEADER.
Uploaded file data and app metadata must go through the API. Do not expose /uploads, /users, or /metadata directly.
Apache:
<LocationMatch "^/(uploads|users|metadata)(?:/|$)">
Require all denied
</LocationMatch>Nginx:
location ~* ^/(uploads|users|metadata)(/|$) {
return 403;
}If you previously added aliases for /uploads, /users, or /metadata, remove them.
- Set
PERSISTENT_TOKENS_KEYto a strong value. - Set
SECURE=truewhen running behind TLS. - Back up
/var/www/uploads,/var/www/users,/var/www/metadata.
Docs · Support · FileRise.net · Changelog
- Admin panel
- Admin gotchas
- Common env vars
- Environment variables full reference
- ACL and permissions
- ACL recipes
- Nginx setup
- Reverse proxy and subpath
- WebDAV
- WebDAV via curl
- WebDAV security and clients
- ONLYOFFICE
- Encryption at rest
- OIDC and SSO
- CIFS share auto metadata
- Sharing and public links
- Upload limits and PHP tuning
- Logs and diagnostics
- Backup and restore
- Upgrade and migration
- Migration checklist
- Maintenance scripts
- Performance quickstart
- Performance tuning
- Security hardening