Provomatic

Installation

Provomatic runs on your own server. With some Linux experience the installation takes about 20 minutes.

About the beta: this guide describes the installation for beta participants. Version 1.0 comes as a ready package with built files and an updater in the admin area; steps 2 to 4 will then be shorter.

Requirements

Operating systemLinux, recommended Debian 12/13 or Ubuntu 22.04/24.04
PHP8.3 or newer (8.4 recommended) with the extensions bcmath, ctype, curl, dom, fileinfo, gd, intl, mbstring, openssl, pdo_mysql, sodium, tokenizer, xml and zip
DatabaseMariaDB 10.6+ or MySQL 8.0+
Web servernginx (recommended) or Apache, HTTPS with a valid certificate (for example Let’s Encrypt)
ToolsComposer 2, Node.js 20+ and npm (only to build the interface)
Server2 vCPU, 2 GB RAM, 10 GB disk or more; outgoing HTTPS to payment providers, panels and the licence server
DomainYour own domain or subdomain, for example shop.yourhosting.com – the licence covers exactly one domain

Run Provomatic on its own server or VM, not on the same server as your game panel.

Installation

  1. Install packages

    Example for Debian 13 with PHP 8.4:

    apt update
    apt install -y nginx mariadb-server composer nodejs npm unzip \
      php8.4-fpm php8.4-bcmath php8.4-curl php8.4-gd php8.4-intl php8.4-mbstring \
      php8.4-mysql php8.4-xml php8.4-zip
  2. Create the database

    mariadb -e "CREATE DATABASE provomatic CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER provomatic@localhost IDENTIFIED BY 'A-LONG-PASSWORD';
      GRANT ALL ON provomatic.* TO provomatic@localhost;"
  3. Unpack and configure

    Unpack the package to /var/www/provomatic and create the configuration:

    cd /var/www/provomatic
    cp .env.example .env
    nano .env    # APP_URL, DB_DATABASE, DB_USERNAME, DB_PASSWORD, MAIL_*

    Important: APP_URL is the https:// address where shop and customer area are reachable. Set APP_ENV=production and APP_DEBUG=false.

  4. Dependencies and database

    composer install --no-dev --optimize-autoloader
    npm ci && npm run build
    php artisan key:generate --force
    php artisan migrate --force
    php artisan provomatic:sync-permissions
    php artisan provomatic:sync-themes
    php artisan storage:link
    php artisan optimize
    chown -R www-data:www-data storage bootstrap/cache

    key:generate creates the key Provomatic uses to encrypt credentials. Back up the .env file – without this key, stored API keys can no longer be read.

  5. Create the first admin

    php artisan provomatic:create-admin --name="Your Name" --email=admin@yourhosting.com

    You will be asked for the password. On the first sign-in at /admin you set up two-factor sign-in.

Web server

Example for nginx. The document root is always the public folder:

server {
    listen 80;
    listen [::]:80;
    server_name shop.yourhosting.com;
    root /var/www/provomatic/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.4-fpm.sock;
    }
    location ~ /\.(?!well-known) { deny all; }
}

Then set up HTTPS, for example with certbot --nginx -d shop.yourhosting.com.

Cron job and queue

Provomatic handles provisioning, webhooks and scheduled tasks in the background. This needs a cron job and a permanently running queue worker.

Cron job (/etc/cron.d/provomatic):

* * * * * www-data cd /var/www/provomatic && php artisan schedule:run >> /dev/null 2>&1

Queue worker as a systemd service (/etc/systemd/system/provomatic-queue.service):

[Unit]
Description=Provomatic queue worker
After=network.target mariadb.service

[Service]
User=www-data
WorkingDirectory=/var/www/provomatic
ExecStart=/usr/bin/php /var/www/provomatic/artisan queue:work --sleep=3 --tries=1 --max-time=3600
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now provomatic-queue

Setup in the admin area

After signing in, the setup wizard guides you through the basics:

  1. Company: name, address, contact, bank account – shown on invoices and in the legal notice.
  2. Taxes: standard taxation or small business, VAT ID, tax number, OSS.
  3. Invoices: number ranges, payment term, design and footer.
  4. General: language, currency, theme.

Then add your panel under Infrastructure → Servers, product groups and products under Catalogue, your payment providers under Settings → Payments (see setting up payments) and legal notice, terms, privacy policy and withdrawal notice under Website → Legal texts.

Licence

Enter your licence key on the Licence page in the admin area. It covers exactly one domain. Provomatic confirms the licence regularly with the licence server, sending the licence key, domain and version – no customer or revenue data. Without a licence Provomatic runs in test mode.

Updates

Until the updater arrives with version 1.0, install updates like this:

cd /var/www/provomatic
php artisan down
# unpack the new files (.env and storage/ stay)
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan provomatic:sync-permissions
php artisan provomatic:sync-themes
php artisan optimize
php artisan queue:restart
php artisan up

Before every update, back up the database and the storage/ folder. Finalised invoices live in storage/app and must be kept for 10 years.

Interested in the beta?

Provomatic is in development. Write to us if you would like to try it with your hosting company before the launch.

Get in touch