Installation guide
You need a licence key before you start: the installer downloads the package from us and the key is checked first. Create a free account to get a 7-day trial key in about a minute.
Start the free trialRequirements
- Linux VPS (Ubuntu 22.04+), 2 vCPU, 4 GB RAM, 40 GB disk
- Docker Engine 24+ with Docker Compose v2
- One domain (or subdomain) for the API, one for the portal UI
- A reverse proxy with HTTPS (Plesk, Caddy, or Traefik)
- SMTP credentials for outbound email
Run the installer
One command on your server as root. It downloads the package, generates secrets, builds and starts the containers, and runs the migrations. Replace your-domain.com with the domain you will serve Hostinvo on — it sets your app URL, session domain and CORS origins, and without it you will not be able to sign in after installing.
curl -fsSL https://api.hostinvo.dev/install.sh | bash -s -- --license YOUR-LICENCE-KEY --domain your-domain.comPoint a domain at it
The installer listens on localhost only and prints the port it chose. Put a reverse proxy in front. In Plesk: add the domain, open Apache & nginx Settings, scroll to the nginx section, untick Proxy mode, and paste this into Additional nginx directives — not the Apache boxes above it. A regex location is required; a plain “location /” clashes with the block Plesk generates. Then issue a Let's Encrypt certificate. If that page shows no nginx section, Plesk was installed without the optional nginx component: either add it, or proxy from Apache instead by putting ProxyPass / ProxyPassReverse to the same port in both Additional Apache directives boxes, with RequestHeader set X-Forwarded-Proto matching each box. Put ProxyPass /.well-known ! above the catch-all, or Apache sends the ACME challenge to the container and the certificate cannot be issued or renewed.
location ~ / {
proxy_pass http://127.0.0.1:PORT;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_read_timeout 120s;
client_max_body_size 32m;
}Create your owner account
The installer prints a one-time setup link ending in ?token=… — open it and create the owner account. Treat it like a password: whoever holds it can create the owner account, and anyone opening /install without it gets a sealed page. It stops working the moment setup completes. Lost it? Print it again on the server with the command below. Activate your licence key there, or a 7-day trial starts automatically.
docker compose -f docker-compose.prod.yml exec app php artisan install:linkSet your URL and mail
Mail stays on the log driver until you supply real SMTP, so a missing mail server cannot break the install. Set APP_URL and the MAIL_* values, then restart.
nano /opt/hostinvo/backend/.env.production
cd /opt/hostinvo && docker compose -f docker-compose.prod.yml restart appInstaller options
- --port PORT — the installer picks the first free port from 8080; use this to choose one.
- --bind 0.0.0.0 — expose the port directly instead of binding to localhost behind a proxy.
- --dir PATH — install directory (default /opt/hostinvo).
- --reset — reinstall from scratch: removes the previous install directory and its database and cache volumes. Destroys all data, and is required when reinstalling because each install generates a new database password the old volume would reject.
- If it fails, the installer prints the reason and keeps a full log in /tmp — include it when contacting support.
For full detail — including frontend deployment, backups, and troubleshooting — see the complete installation guide bundled with your release package.
Need a license?
Pick a plan and your license key is emailed to you immediately after payment.
View pricing