Your data. Your server.
Install Storno.ro on your own infrastructure with Docker. Same features, total control, free forever.
Why self-hosting?
Fiscal data is the most sensitive information of your business. Keep it under your control.
Your infrastructure
Data stays on your server. No one else hosts or accesses it.
No phone-home
Zero communication with external servers. Works completely offline, no telemetry.
Total control
You decide where, how, and for how long data is stored. Backups and restores on your terms.
Full compliance
GDPR, internal policies, audits — everything under your control, on your infrastructure.
Installation in 3 steps
From zero to a working instance in less than 5 minutes.
1
Download files
mkdir storno && cd storno curl -O https://raw.githubusercontent.com/stornoro/storno/main/deploy/docker-compose.yml curl -O https://raw.githubusercontent.com/stornoro/storno/main/deploy/.env.example cp .env.example .env
2
Configure
# Generate secrets openssl rand -hex 32 # → APP_SECRET openssl rand -hex 32 # → JWT_PASSPHRASE # Set database password MYSQL_ROOT_PASSWORD=strong-password MYSQL_PASSWORD=strong-password # Add license key LICENSE_KEY=your-license-key
3
Start
docker compose up -d docker compose exec backend php bin/console doctrine:migrations:migrate --no-interaction docker compose exec backend php bin/console app:user:create \ [email protected] \ --password=your-password \ --role=owner
Architecture
5 Docker containers working together. Simple to understand, easy to manage.
Backend
PHP API server (Symfony + Nginx)
:8900
Frontend
Nuxt SSR web application
:8901
MySQL
MySQL 8.0 database
:3306
Redis
Cache, queues, locks
:6379
Centrifugo
WebSockets for real-time updates
:8445
Compatible with Docker Compose and Kubernetes. Reverse proxy recommended (Nginx, Caddy, Traefik) for SSL in production.
Or install with a single command
$ curl -fsSL https://get.storno.ro | bash
The interactive script configures Docker Compose, generates secrets, and starts all services automatically.
Frequently asked questions
Everything you need to know about self-hosting.
The Community plan includes all Starter plan features: electronic invoicing, e-Invoice submission to ANAF, client management, reports, and exports. There is no time limit — it's free forever.
Yes. The license key connects your self-hosted instance to your Storno.ro account. You can generate it for free from Settings → Licensing in the cloud application. Validation occurs once every 24 hours and only transmits the key and instance URL — no other data.
Your instance works normally for a grace period of 7 days using locally cached data. After this period, features are limited until reconnection.
Yes. Purchase a Professional or Business plan from cloud, generate a new license key, and update it in the .env file. At the next sync, your instance will activate the plan's features.
Minimum: 2 CPU cores, 4 GB RAM, 20 GB disk space. Recommended for production: 4 CPU cores, 8 GB RAM, SSD. Storno.ro runs efficiently on any modern VPS (Hetzner, DigitalOcean, etc.).
You can back up the database with mysqldump and Docker volumes. Additionally, Storno.ro supports backup/restore per company via API, ideal for migrations between instances.
Ready to install?
Follow the installation guide or start directly on cloud — you can migrate anytime.