SelloraDocumentation v1.1.0
Docs / Getting started

Install on a VPS (Nginx or Apache)

Server block and virtual host examples, permissions and HTTPS for a VPS or dedicated server.

On your own server you point the web server's document root at Sellora's public folder. Everything else (app, config, .env, vendor ...) stays outside the web-accessible area.

1. Install the software#

Example for Ubuntu (adapt for your distribution):

sudo apt update
sudo apt install nginx mariadb-server unzip \
  php8.3-fpm php8.3-cli php8.3-mysql php8.3-bcmath php8.3-curl php8.3-gd \
  php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl php8.3-opcache

Create the database and user as shown in Database and purchase code.

2. Upload the files#

Upload the contents of the sellora folder to, for example, /var/www/sellora and set ownership so the web server can write where it needs to:

sudo mkdir -p /var/www/sellora
sudo unzip sellora.zip -d /var/www/sellora        # adjust to your upload
sudo chown -R www-data:www-data /var/www/sellora
sudo find /var/www/sellora -type d -exec chmod 755 {} \;
sudo find /var/www/sellora -type f -exec chmod 644 {} \;
sudo chmod -R 775 /var/www/sellora/storage /var/www/sellora/bootstrap/cache /var/www/sellora/public/uploads

If public/uploads does not exist yet, create it. The wizard checks all of this and can fix simple permission problems itself.

3a. Nginx#

Create /etc/nginx/sites-available/sellora:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    root /var/www/sellora/public;
    index index.php;

    client_max_body_size 32M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    # Never serve hidden files (.env, .git ...) except the ACME challenge folder
    location ~ /\.(?!well-known).* {
        deny all;
    }

    location ~* \.(?:css|js|woff2?|png|jpe?g|gif|svg|webp|avif|ico)$ {
        expires 30d;
        access_log off;
    }
}

Enable it and reload:

sudo ln -s /etc/nginx/sites-available/sellora /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

3b. Apache#

Enable the rewrite module (sudo a2enmod rewrite) and create /etc/apache2/sites-available/sellora.conf:

<VirtualHost *:80>
    ServerName your-domain.com
    ServerAlias www.your-domain.com
    DocumentRoot /var/www/sellora/public

    <Directory /var/www/sellora/public>
        AllowOverride All
        Require all granted
        Options -Indexes
    </Directory>
</VirtualHost>
sudo a2ensite sellora && sudo systemctl reload apache2

AllowOverride All is required so the .htaccess file inside public is honoured.

4. HTTPS#

Install a free certificate with Certbot:

sudo apt install certbot python3-certbot-nginx     # or python3-certbot-apache
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

Use https:// when the wizard asks for your address, and keep APP_URL in .env set to the HTTPS address. When Sellora runs behind a proxy or load balancer that sets X-Forwarded-Proto: https, it generates HTTPS links automatically.

5. Run the wizard and add the cron job#

Open https://your-domain.com, complete the setup wizard, then add the cron job.

PHP tuning (optional)#

In php.ini (for example /etc/php/8.3/fpm/php.ini): memory_limit = 256M, upload_max_filesize = 32M, post_max_size = 32M, max_execution_time = 120, and make sure opcache.enable=1. Restart PHP-FPM afterwards.

Sellora 1.1.0 documentation · 2026-10-07 · Printed or saved copy? The latest version is always in the Documentation folder of your download.