Last updated:
How to install Paymenter
The open-source billing platform for hosting providers on your own server or with Docker – step by step.
Paymenter is open-source billing and store software for hosting providers, digital products and services. This guide covers installing it on your own Linux server – bare metal or with Docker – and the steps that matter for running it safely afterwards.
Requirements
- A Linux server such as Ubuntu 24.04 or Debian 12, with root or sudo access
- A domain pointing to the server (for HTTPS)
- PHP 8.3 with the usual Laravel extensions, MariaDB or MySQL, Redis, Nginx and Composer
- About 30 minutes
Option A: bare-metal installation
1. Install packages. Install PHP 8.3 and its extensions, MariaDB, Redis, Nginx and Composer. The exact package list for your distribution is in the official Paymenter documentation.
2. Create the database. Create a database and a dedicated user with rights on that database only:
CREATE DATABASE paymenter;
CREATE USER 'paymenter'@'127.0.0.1' IDENTIFIED BY 'a-strong-password';
GRANT ALL PRIVILEGES ON paymenter.* TO 'paymenter'@'127.0.0.1';
FLUSH PRIVILEGES;
3. Download Paymenter. Fetch the latest release into /var/www/paymenter and set write permissions:
mkdir -p /var/www/paymenter && cd /var/www/paymenter
curl -Lo paymenter.tar.gz https://github.com/paymenter/paymenter/releases/latest/download/paymenter.tar.gz
tar -xzvf paymenter.tar.gz && rm paymenter.tar.gz
chmod -R 755 storage/* bootstrap/cache/
4. Configure. Create the environment file, install dependencies, generate the key:
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
php artisan storage:link
Then add your database credentials to .env (DB_DATABASE, DB_USERNAME, DB_PASSWORD).
Important: Keep a copy of
APP_KEYfrom.envsomewhere else. It encrypts sensitive data – if it is lost, that data cannot be recovered, not even from a database backup.
5. Set up and initialise the database.
php artisan migrate --force --seed
php artisan app:init
php artisan app:user:create
app:init asks for your company name and URL, app:user:create creates your admin account.
6. Background services. Paymenter needs a cron job for scheduled tasks and a queue worker for emails and provisioning:
# crontab -e (as root)
* * * * * php /var/www/paymenter/artisan schedule:run >> /dev/null 2>&1
Run the queue worker as a systemd service (php artisan queue:work, user www-data, Restart=always) and enable it with systemctl enable --now.
7. Web server and HTTPS. Add an Nginx server block with document root /var/www/paymenter/public and get a certificate, for example with Certbot. Finally set the owner: chown -R www-data:www-data /var/www/paymenter/*.
Option B: Docker
Paymenter provides official containers and a Compose file:
- Take the Compose file and
.envfrom the official documentation and set passwords. - Start the containers:
docker compose up -d. - Initialise once:
docker compose exec paymenter php artisan app:initanddocker compose exec paymenter php artisan app:user:create. - Put a reverse proxy with HTTPS in front, such as Traefik or Nginx.
Docker keeps Paymenter isolated from the host and makes updates easier. Custom themes are built inside the container, not on the host – keep that in mind for extensions such as Tindra.
After installing: the five most important steps
- Backups: back up the database,
.envandstorage/regularly – to a separate system. - Updates: keep Paymenter and the operating system current; back up before every update.
- Email: configure and test SMTP, otherwise invoices and password links never arrive.
- Payment gateway: enable at least one gateway and place a test order.
- Legal pages: publish your legal notice, privacy policy and terms before the store goes public.
How Holzmodem can help
Tindra lets you design your home page and store without code, AuthentikSSO adds single sign-on and Faktora creates EN 16931 e-invoices. If you would rather not run Paymenter yourself, we can do it for you with managed self-hosting.
Frequently asked questions
Yes. Paymenter is open source under the MIT licence. You only pay for the server and, if needed, commercial extensions.
Current versions require PHP 8.3 with the usual Laravel extensions.
Rather not handle it yourself?
Managed self-hosting