soviez.sh is the official production wizard for Soviez ERP. It prepares the host, provisions isolated Docker tenants, manages HTTPS, and covers day-2 operations such as backup, staging clones, password recovery, and image updates. You remain in full control of the server; Soviez Cloud is used only for licensing and account management.
What the script does
| You interact with | Result |
|---|---|
| Quiet terminal lines | [WAIT] · [OK] · [WARN] · [ERROR] status messages during long operations |
| Detailed setup log | /var/log/soviez_setup.log (written as root for forensic review) |
Requirements
| Item | Minimum |
|---|---|
| Operating system | Ubuntu 22.04 / 24.04 LTS or Debian 11 / 12 |
| Access | sudo or root for most modes |
| CPU / RAM / Disk | 2 vCPU · 4 GB RAM + 2 GB swap · 20 GB+ free SSD |
| Network | Ability to pull postgres:16 and soviez/soviez-erp:latest |
| Domain | FQDN with DNS A/AAAA pointing at this server (required for lasting login sessions) |
For larger operator counts, also review System Requirements.
Quick start
Canonical one-liner (CLI agents hitting https://soviez.sh receive the installer automatically):
curl -sSL https://soviez.sh | bashPrefer an explicit download + mode workflow? Pull from the canonical deploy repository (github.com/Soviez/soviez-deploy), prepare the host once, then create your first tenant:
curl -fsSL https://raw.githubusercontent.com/Soviez/soviez-deploy/main/soviez.sh -o soviez.sh
chmod +x soviez.sh
sudo ./soviez.sh --init # once per server
# Point DNS at this host, then:
sudo ./soviez.sh --new # create first (or next) tenantAfter --new finishes, open the printed https://your.domain URL, enter the Database Master Password shown once on screen, create your database, then activate your license from soviez.com/pricing.
Command menu
| Command | Purpose |
|---|---|
| ./soviez.sh or --init | Prepare the host only (Docker, Nginx, Certbot, firewall). No ERP containers yet. |
| --new | Create a new isolated tenant (database + web + HTTPS) |
| --list | Table of tenants: index, container, domain, Docker status |
| --formsetup | Resume or heal the latest incomplete tenant |
| --formssl [domain] | Repair HTTPS only (Let's Encrypt or self-signed) |
| --update | Pull the latest ERP image and upgrade database schemas |
| --recoverdbpass | Rotate the Database Master Password |
| --backup <tenant> <db> | Archive DB + filestore under /var/soviez/backups |
| --backup-list | List existing backup archives |
| --stage <tenant> <source_db> | Clone database → neutralized "stage" database (+ filestore) |
| --dropstage <tenant> <db> | Drop a neutralized staging database only (safe shield) |
| --reset-pass <tenant> <db> <user> <pass> | Reset an ERP login password |
| --change-domain <tenant> | Move a tenant to a new domain |
| --monitor | Live docker stats for running soviez-* containers |
| --logs <tenant> | Follow web container logs |
Tenant references accept forms such as 1, soviez-web-1, or the web container name (depending on the mode).
Install a new instance (--new)
- Run
--initsuccessfully at least once. - Create DNS records for your FQDN → the server's public IP.
- Run
sudo ./soviez.sh --new. - Confirm the public IP and enter the domain twice when prompted.
- Wait for DNS validation (or carefully use
forceif you accept a temporary mismatch). - Save the Master Password alert immediately — it unlocks the Web Database Manager.
- Visit
https://your.domain, create the database, and activate licensing.
Each --new allocates the next tenant index (.soviez_1.env, .soviez_2.env, …) with its own network, volumes, MAC address, and host port (starting from 8073).
If provisioning stops mid-flight (Nginx / SSL)
sudo ./soviez.sh --formsetupHTTPS-only repairs (Cloudflare proxy / Certbot)
sudo ./soviez.sh --formssl
sudo ./soviez.sh --formssl erp.example.comIf Let's Encrypt fails, self-signed HTTPS on port 443 remains online. Set Cloudflare SSL/TLS mode to Full.
Updates
sudo ./soviez.sh --update- Pulls
soviez/soviez-erp:latest - Upgrades discovered databases
- Recycles web containers
- Leaves Postgres volumes, MAC addresses, ports, and licenses intact
Schedule updates during a maintenance window, verify backups beforehand, and confirm application health afterward.
Backup & inventory
sudo ./soviez.sh --backup soviez-web-1 production
sudo ./soviez.sh --backup-list| Guard | Behavior |
|---|---|
| Free-space check | Requires dump + filestore size plus 5 GB free under /var/soviez/backups |
| Output naming | soviez_backup_tenantN_<db>_YYYYMMDD_HHMMSS.tar.gz |
Restore is a deliberate operations procedure (extract the archive, restore the pg_dump custom format, restore filestore). The wizard does not auto-restore onto a different host.
Staging clones
sudo ./soviez.sh --stage soviez-web-1 production
# test safely on database "stage"
sudo ./soviez.sh --dropstage soviez-web-1 stage--dropstage aborts unless database.is_neutralized=True (Safe Shield), so live production databases cannot be dropped by mistake.
Passwords & domain changes
| Goal | Command |
|---|---|
| Lost Database Master Password | sudo ./soviez.sh --recoverdbpass |
| Forgot ERP user login | sudo ./soviez.sh --reset-pass <tenant> <db> <user> <newpass> |
| New domain for existing tenant | sudo ./soviez.sh --change-domain <tenant> |
Monitoring & logs
sudo ./soviez.sh --list
sudo ./soviez.sh --monitor
sudo ./soviez.sh --logs soviez-web-1
sudo tail -n 200 /var/log/soviez_setup.log--list, --monitor, --logs, and --backup-list keep status on the terminal without flooding the setup log.
After first boot checklist
- HTTPS URL loads with the Soviez ERP Database Manager or login screen
- Master Password stored in your vault
- Company database created
- License activated with the Cloud portal fingerprint
- Optional: place custom addons under
/etc/soviez_web_N/addons - Optional: schedule periodic
--backupjobs
Common problems
| Symptom | What to try |
|---|---|
| Login works then drops | Confirm HTTPS + a real domain (not HTTP or bare IP) |
| 502 Bad Gateway | Run docker ps; compare tenant port vs Nginx upstream |
| Certbot failed | Keep Cloudflare on Full; retry --formssl with grey-cloud DNS |
| DNS loop | Wait for propagation or use temporary force carefully |
| Backup refused | Free disk: need archive size + 5 GB under the backup path |
| Dropstage refused | Target must be a neutralized staging database (Safe Shield) |
Need licensing, migration, or account topics beyond the installer? Visit the Help Center.