How to Install FileRun on Ubuntu Server with Apache/Nginx
FileRun is a self-hosted file management system that serves as an alternative to commercial cloud storage, photo management, and streaming platforms. It accesses files directly from the underlying server file system without requiring a separate indexing stage, offering native compatibility with desktop synchronization tools, automatic file versioning, guest access roles, and an integrated media player.
FileRun Features
- Direct file system access with no indexing database overhead required.
- Broad ecosystem compatibility, supporting connection hooks from standard cloud synchronization desktop clients.
- Automatic file version tracking and change histories.
- Fully brandable layout matrices allowing custom administrative logos and design layouts.
- Extendable plugin architecture to natively view or edit office documents, CAD files, and media payloads.
Prerequisites
- An Ubuntu server with at least 1GB of RAM.
- An active domain or subdomain with an A record properly mapped to your server IP address via a domain registrar.
- A pre-configured web environment stack. FileRun is written in PHP and relies on a MySQL/MariaDB backend. Ensure you have installed either a LAMP stack or a LEMP stack before proceeding.
Step 1: Download FileRun
Log into your remote server via SSH. Execute the following commands to download the latest production archive package, establish the directory structure, and assign correct ownership flags to the web server process daemon:
sudo apt install unzip
wget -O FileRun.zip https://filerun.com/download-latest
sudo mkdir -p /var/www/filerun/
sudo unzip FileRun.zip -d /var/www/filerun/
sudo chown www-data:www-data /var/www/filerun/ -R
Step 2: Create a Database and User in MariaDB
Log into your database management shell execution environment:
sudo mysql
Create an isolated database container alongside a dedicated tracking user profile with strong authentication credentials:
create database filerun;
create user filerun@localhost identified by 'your_secure_password';
grant all privileges on filerun.* to filerun@localhost;
flush privileges;
exit;
Step 3: Create Web Server Configurations
You can choose to serve your application files through either the Apache or Nginx web server engine.
Option A: Apache Virtual Host Definition
Create a new configuration routing file within your virtual host directory mapping structure:
sudo nano /etc/apache2/sites-available/filerun.conf
Add the following configuration layout block, replacing filerun.example.com with your custom domain name:
<VirtualHost *:80>
ServerName filerun.example.com
DocumentRoot /var/www/filerun
<Directory "/var/www/filerun">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/filerun.error.log
CustomLog ${APACHE_LOG_DIR}/filerun.access.log combined
</VirtualHost>
Enable the Apache rewrite module engine, register the virtual site layout map, and restart the service:
sudo a2enmod rewrite
sudo a2ensite filerun.conf
sudo systemctl restart apache2
Option B: Nginx Virtual Server Definition
Generate a dedicated server block configuration definition map within the Nginx include tree:
sudo nano /etc/nginx/conf.d/filerun.conf
Add the following tracking blocks, ensuring you point the FastCGI socket handler path (fastcgi_pass) to your system's specific PHP-FPM active environment version:
server {
listen [::]:80;
listen 80;
server_name filerun.example.com;
access_log /var/log/nginx/filerun.access.log;
error_log /var/log/nginx/filerun.error.log;
root /var/www/filerun/;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php;
}
client_max_body_size 500M;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
gzip_proxied any;
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
Verify configurations for correct formatting logic and reload the Nginx instance:
sudo nginx -t
sudo systemctl reload nginx
Step 4: Install Dependencies and Enable ionCube Decryption Layers
FileRun employs ionCube tools to wrap its core application code layout layers securely. To load and decrypt the system files properly, download and hook the official ionCube loader engine extension alongside supporting server packages:
sudo apt install imagemagick ffmpeg php-imagick php7.4-mysql php7.4-fpm php7.4-common php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
sudo tar -xzf ioncube_loaders_lin_x86-64.tar.gz -C /usr/lib/php
Injecting Extension Settings (Apache Environment)
Declare a priority loader include script file inside your web handler configuration stack:
sudo nano /etc/php/7.4/apache2/conf.d/00-ioncube.ini
Add the extension target directory rule:
zend_extension = /usr/lib/php/ioncube/ioncube_loader_lin_7.4.so
Create a second settings adjustment profile file to align execution allocations to standard runtime parameters:
sudo nano /etc/php/7.4/apache2/conf.d/filerun.ini
Populate the file with the following baseline runtime variables:
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
allow_url_fopen = On
memory_limit = 128M
max_execution_time = 300
upload_max_filesize = 500M
post_max_size = 500M
date.timezone = "UTC"
Save changes and perform a soft restart against your web server:
sudo systemctl reload apache2
Injecting Extension Settings (Nginx Environment)
Open the primary configuration parameters profile inside your system environment:
sudo nano /etc/php/7.4/fpm/php.ini
Add the baseline zend extension directive mapping line immediately beneath the initial [PHP] initialization block marker statement:
zend_extension=/usr/lib/php/ioncube/ioncube_loader_lin_7.4.so
Create a supplemental custom environmental adjustments config map layout:
sudo nano /etc/php/7.4/fpm/conf.d/10-ioncube.ini
Populate the file with matching performance limits:
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
allow_url_fopen = On
memory_limit = 128M
max_execution_time = 300
upload_max_filesize = 500M
post_max_size = 500M
date.timezone = "UTC"
Save configurations and cycle the background service instances to pick up changes:
sudo systemctl restart nginx php7.4-fpm
Step 5: Enable HTTPS via Let's Encrypt TLS Automation
Secure the transaction channels to your workspace interface by deploying standard network cryptographic tracking wrappers through Certbot:
sudo apt update
sudo apt install certbot
# For Nginx Environments
sudo apt install python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d filerun.example.com
# For Apache Environments
sudo apt install python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d filerun.example.com
Step 6: Finalize Installation via the Web-Based Wizard
Open your local web browser and load your secure tracking location at https://filerun.example.com. Follow the on-screen configuration matrix prompts:
- The interface checks environment status rules to confirm PHP capability variables map out correctly.
- Input your MariaDB database schema name, assigned user identity, and matching authorization secret parameters generated during Step 2.
- The system returns an autogenerated superuser admin credential block. Log in with those parameters.
Upon initial entry, the platform requires you to declare a path to a home folder target matrix on the server system where files will reside. Create an isolated storage layer path in your server console, grant write permissions to the system user pool, and assign that configuration path string inside the application dashboard interface panel:
sudo mkdir /var/www/superuser
sudo chown www-data /var/www/superuser/ -R
To hook external synchronization client software tools or mobile backup packages, navigate to the Security configuration panel inside the web control workspace and activate the native API interface layout flags.