Deployment guide

FileRise 3.38.0

Overview

This guide covers launching and using the FileRise 3.38.0 on Ubuntu 24.04 AMI from SecureAnyCloud on Amazon EC2. It is one version of the SecureAnyCloud file sharing and sync listing on AWS Marketplace. You pick it as the software version when you subscribe and launch.

FileRise is an open-source, self-hosted web file manager. In the browser, your team can upload files by drag and drop, with large files sent in resumable chunks. Users can also create folders, move, copy and rename files, tag and search them, and edit text files inline. They can download several files as one zip, extract archives, and restore deleted files from the Recycle Bin.

A file or folder can be shared with a link, optionally password-protected and with an expiry. An administrator adds users and decides, folder by folder, who may see, upload, edit or share what. There is no database to run. Files live on the file system, and users, permissions and metadata live in small files next to them.

This image locks FileRise down. What you get:

  • No default administrator and no open setup page. Upstream FileRise lets the first visitor create the admin account. This image ships no user store at all. It does not serve the site until first boot has created the admin account with a password unique to your instance, stored as a bcrypt hash. First boot also closes the first-run setup and writes the password to /root/filerise-credentials.txt (root only).
  • HTTPS from the first boot. nginx serves FileRise on port 443 with a certificate generated on your instance's first boot. Port 80 redirects to HTTPS, and nginx drops requests for a host name the instance does not serve.
  • Brute-force protection. After five failed sign-ins, further attempts from that address are refused for a while, and the sign-in routes are rate-limited. The session cookie is Secure, HttpOnly and SameSite=Lax, and every sign-in issues a new session ID.
  • Uploads can never run. Your files live on a dedicated data volume (mounted noexec), outside the web server's document root. FileRise returns them only through its signed-in download. PHP files, scripts and hidden dot files are refused as upload, folder, rename and save names, and archive extraction cannot write outside its folder.
  • Cross-site requests are refused. FileRise's API refuses a call that does not come from FileRise's own page. Every change also needs FileRise's per-session token, so another website cannot make your browser download, delete or change files. Share links keep working when you send them to someone.
  • No FileRise Pro code. This is the MIT-licensed FileRise. The routes that would download and install the commercial Pro bundle, or bind a license with filerise.net, are switched off. The folder that Pro would load code from is owned by root and empty.
  • Metadata service blocked. nginx, PHP and the first-boot step that creates your administrator cannot reach the EC2 instance metadata service. A request crafted to make FileRise fetch a URL therefore cannot read the instance's role credentials.
  • Fully patched Ubuntu 24.04 LTS at build time, PHP 8.3 with the latest security fixes, and unattended security upgrades switched on.

The image contains:

  • FileRise 3.38.0 (MIT), the project's own release build, verified against the v3.38.0 source tag, with its bundled DOMPurify updated to 3.4.17
  • PHP 8.3 (FPM) and nginx
  • Ubuntu 24.04 LTS, cloud-init and the AWS Systems Manager agent

The license and exact sources are in /usr/share/doc/filerise/.

Defaults:

  • Default user: ubuntu
  • Architecture: x86_64
  • Recommended instance type: m5.large

Prerequisites

  • An AWS account subscribed to the listing, an EC2 key pair and a VPC subnet
  • A security group that allows TCP 22 (SSH), TCP 443 (FileRise) and TCP 80 (redirects to HTTPS) from your own networks only
1

Launch the instance

In the AWS Marketplace listing, choose Continue to Subscribe, then Continue to Configuration. Pick FileRise 3.38.0 on Ubuntu 24.04 as the software version, choose your Region, and select Launch through EC2.

Choose m5.large, your key pair, a security group as above, and a subnet. The AMI brings an 8 GiB root volume and a separate 20 GiB data volume that holds your files. Raise the data volume under Configure storage if you need more space. You can also grow it later (see Step 9).

With the AWS CLI, replace the values in angle brackets. This command sets the data volume to 100 GiB:

aws ec2 run-instances --region <region> --image-id <ami-id-from-the-listing> \
  --instance-type m5.large --key-name <your-key-pair> \
  --security-group-ids <your-security-group> --subnet-id <your-subnet> \
  --metadata-options HttpTokens=required,HttpEndpoint=enabled \
  --block-device-mappings 'DeviceName=/dev/sdf,Ebs={VolumeSize=100,VolumeType=gp3}' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=filerise}]'
2

Connect to your instance

Connect over SSH. On FileRise 3.38.0 on Ubuntu 24.04, the SSH user is ubuntu.

ssh -i <your-key.pem> ubuntu@<public-ip>
3

Check the services

First boot generates the certificate, creates the administrator and starts the site. This takes a few seconds:

systemctl is-active filerise-host filerise-firstboot php8.3-fpm nginx
active active active active

Only SSH (22) and nginx (80, 443) listen on the network. PHP talks to nginx over a local socket, and the two loopback entries are Ubuntu's local DNS resolver:

sudo ss -lntp | awk 'NR>1 {print $4}' | sort -u
0.0.0.0:22 0.0.0.0:443 0.0.0.0:80 127.0.0.53%lo:53 127.0.0.54:53 [::]:22 [::]:443 [::]:80

The health helper checks that the site, PHP and the data volume answer:

sudo /usr/local/sbin/filerise-health
PRIMARY_HEALTH_OK https://ec2-203-0-113-10.compute-1.amazonaws.com/ (healthz 200, page 200, site config JSON)

If nginx is not running, first boot has not finished, or it failed. In the failed case, the site is never served. Check systemctl status filerise-host filerise-firstboot and journalctl -u filerise-firstboot.

4

Get your URL and password

sudo cat /root/filerise-credentials.txt

Only root can read the file. It holds the address and this instance's administrator sign-in:

# FileRise 3.38.0 - generated on first boot by filerise-firstboot.service
# This password is unique to this instance; none was baked into the image. Keep this file secret. FILERISE_URL=https://ec2-203-0-113-10.compute-1.amazonaws.com/ FILERISE_ADMIN_USER=admin FILERISE_ADMIN_PASSWORD=<FILERISE_ADMIN_PASSWORD> ...

You can confirm the sign-in from the instance itself. The helper checks these things:

  • The redirect works.
  • An anonymous visitor cannot list files.
  • The first-run setup is closed.
  • A wrong password and common defaults are refused.
  • The password signs in through FileRise's own login and lists your files.

Run the helper:

sudo /usr/local/sbin/filerise-cred-roundtrip
OK https 301 + anonymous refused + setup closed + wrong/default passwords refused + admin signs in and lists the root folder
5

Sign in

Open the FILERISE_URL address in your browser. The certificate is self-signed until you install your own (Step 8), so the browser asks you to accept it once. Compare the fingerprint that the browser shows with the one on the instance:

sudo openssl x509 -in /etc/nginx/ssl/filerise.crt -noout -fingerprint -sha256

Sign in as admin with the password from Step 4. A new instance always shows the sign-in page, never a setup form:

FileRise opens on your (empty) root folder. The upload area and the folder tree are on the left, and the file list is on the right:

Change the administrator password to one of your own whenever you like. In FileRise, open the User Panel and change it there. Or change it on the instance with the helper. Use 16 to 128 characters with no spaces. The helper reads the password from standard input, so it never appears in your shell history or the process list, and it updates the credentials file:

sudo filerise-set-password --stdin

Run sudo filerise-set-password without --stdin to generate a new random password instead. Sessions signed in with the old password are signed out. Other users are not affected.

6

Manage files, users and sharing

Drag files or a whole folder onto the Upload Files/Folders area, or click Choose files. New creates folders and files.

Select files to move, copy, rename, tag, download as a zip or delete them. Deleted files go to the Recycle Bin in the folder tree, where an administrator can restore them.

Text files open in the built-in editor. Share creates a link for a file or folder, which you can protect with a password and an expiry.

As admin, open the Admin Panel from the user menu at the top right. Use Users & Access to add users and choose, folder by folder, what each user may view, upload, edit, delete or share. Users see only the folders they have been given:

Things to know:

  • Refused names. FileRise refuses these names when you upload, create, rename or save: PHP files (.php, .phtml, .phar and similar), shell and other script files, .htaccess / .user.ini files, and names that start with a dot. Every other type uploads normally.
  • Direct links. A FileRise download link pasted into a new browser tab's address bar is refused, because it carries no proof that it came from FileRise's page. Use the download action or a share link instead.
  • WebDAV is off until an administrator enables it in the Admin Panel (Auth & WebDAV). It then answers at https://<your-host>/webdav.php/ with the FileRise user's name and password.
  • FileRise Pro features are not available on this image. That covers the sections marked PRO in the Admin Panel and the Pro license and bundle install.
7

Where your files live

Your files are in /var/lib/filerise/uploads on the data volume, owned by the unprivileged filerise account that PHP runs as.

Users, passwords (bcrypt hashes) and folder permissions are in /var/lib/filerise/users. Tags, share links and FileRise's per-instance token key are in /var/lib/filerise/metadata. Only filerise can read these folders:

sudo ls -la /var/lib/filerise
total 40 drwxr-xr-x 7 root root 4096 Oct 30 19:15 . drwxr-xr-x 50 root root 4096 Oct 30 19:04 .. drwx------ 2 root root 16384 Oct 30 19:04 lost+found drwxr-x--- 2 filerise filerise 4096 Oct 30 19:38 metadata drwx------ 2 filerise filerise 4096 Oct 30 19:05 tmp drwxr-x--- 2 filerise filerise 4096 Oct 30 19:05 uploads drwx------ 2 filerise filerise 4096 Oct 30 19:38 users

To copy files in over SSH, write them as that account so that FileRise can manage them. For example:

sudo -u filerise cp /home/ubuntu/report.pdf /var/lib/filerise/uploads/
8

Use your own host name and certificate

Point a DNS record at the instance. An Elastic IP keeps the address across stop and start. Then tell the instance its name.

The command creates a new self-signed certificate for that name. It updates the nginx host rule, the cross-site guard and the address in the credentials file, and it keeps the name across reboots:

sudo filerise-set-hostname files.example.com

To use a certificate from a public authority instead, replace /etc/nginx/ssl/filerise.crt (full chain) and /etc/nginx/ssl/filerise.key (mode 0600, owned by root) with your own. Then run sudo systemctl reload nginx. Running filerise-set-hostname again later replaces them with a new self-signed pair.

9

Check persistence, storage and updates

Every service is enabled, so FileRise returns after a reboot or a stop and start. Your files, users and passwords stay as they are. Unattended security upgrades keep the operating system, PHP and nginx patched:

systemctl is-enabled nginx php8.3-fpm unattended-upgrades
enabled enabled enabled

The data volume is mounted by its file system UUID. To grow it, enlarge the EBS volume in the EC2 console. Then extend the file system online:

sudo resize2fs $(findmnt -no SOURCE /var/lib/filerise)

To back up your files, users and share links, take an EBS snapshot of the data volume, or use AWS Backup on the instance. SecureAnyCloud publishes a new version of the image when a newer FileRise release is available.

Security notes

  • No shared secret ships in the image. No user store, password, password hash, token key, TLS key or credentials file exists until your instance's first boot generates them. nginx refuses to start until first boot has finished.
  • Fail closed. If first boot cannot complete, nothing is served, and FileRise's first-run setup can never be reached from the network.
  • PHP is confined. It runs as the filerise account and can write only FileRise's data folders. It is limited to FileRise's own folders (open_basedir). system, passthru, proc_open and popen are disabled, except for what FileRise needs to start its PHP zip worker. FileRise's code is owned by root and read-only to PHP. Sessions are kept in memory, never on disk.
  • Metadata service blocked. nginx, PHP (including the zip worker it starts) and the first-boot step that creates your administrator are blocked from the EC2 instance metadata service. Only the step that looks up the instance's public name uses it (IMDSv2).
  • Security fixes. FileRise 3.38.0 includes the fixes for every published FileRise advisory, all fixed in 3.37.0 or earlier. Its bundled copy of DOMPurify 3.4.2 had published advisories, although FileRise never called the affected functions. This image replaces it with DOMPurify 3.4.17. PHP is Ubuntu's PHP 8.3 with the fixes for CVE-2026-109618 and CVE-2026-109619.
  • Restrict 22/tcp to your management network, and 80/443 to the networks that use FileRise.

Architecture summary

  • File manager: FileRise 3.38.0 (MIT), code in /var/www/filerise (root-owned), web root public/
  • PHP: PHP 8.3 FPM, pool filerise on a unix socket, account filerise, sessions in /run/filerise
  • Web server: nginx on 443 (HTTPS, per-instance certificate in /etc/nginx/ssl), with 80 redirecting to HTTPS
  • Sign-in: FileRise users, with bcrypt hashes in /var/lib/filerise/users, and the administrator admin
  • Your files: /var/lib/filerise/uploads on the 20 GiB data volume (resizable, mounted noexec)
  • Credentials: /root/filerise-credentials.txt, mode 0600, root only
  • First boot: filerise-host.service (host name and certificate) and filerise-firstboot.service (administrator)
  • Tools: filerise-set-password, filerise-set-hostname, filerise-cred-roundtrip and filerise-health
  • Ports: 22 SSH, 80 redirect, 443 FileRise
  • Base image: Ubuntu 24.04 LTS, fully patched, unattended security upgrades enabled, IMDSv2 required

Support

SecureAnyCloud images come with 24/7 support. Email sales@secureanycloud.com with your AWS account ID and the instance ID. For FileRise itself, see the FileRise project on GitHub.

FileRise is an open source project by error311 and contributors. SecureAnyCloud is not affiliated with or endorsed by the FileRise project.

Deploy on AWS

Launch FileRise 3.38.0 on Ubuntu 24.04 on AWS with 24/7 support from SecureAnyCloud.

View on Marketplace

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on AWS