Product Guide

Sovereign Deployment via Soviez.sh

The official production wizard for installing and operating Soviez ERP on your own Linux server — host preparation, isolated Docker tenants, HTTPS, backups, and updates.

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 withResult
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

ItemMinimum
Operating systemUbuntu 22.04 / 24.04 LTS or Debian 11 / 12
Accesssudo or root for most modes
CPU / RAM / Disk2 vCPU · 4 GB RAM + 2 GB swap · 20 GB+ free SSD
NetworkAbility to pull postgres:16 and soviez/soviez-erp:latest
DomainFQDN 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 | bash

Prefer 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) tenant

After --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

CommandPurpose
./soviez.sh or --initPrepare the host only (Docker, Nginx, Certbot, firewall). No ERP containers yet.
--newCreate a new isolated tenant (database + web + HTTPS)
--listTable of tenants: index, container, domain, Docker status
--formsetupResume or heal the latest incomplete tenant
--formssl [domain]Repair HTTPS only (Let's Encrypt or self-signed)
--updatePull the latest ERP image and upgrade database schemas
--recoverdbpassRotate the Database Master Password
--backup <tenant> <db>Archive DB + filestore under /var/soviez/backups
--backup-listList 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
--monitorLive 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)

  1. Run --init successfully at least once.
  2. Create DNS records for your FQDN → the server's public IP.
  3. Run sudo ./soviez.sh --new.
  4. Confirm the public IP and enter the domain twice when prompted.
  5. Wait for DNS validation (or carefully use force if you accept a temporary mismatch).
  6. Save the Master Password alert immediately — it unlocks the Web Database Manager.
  7. 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 --formsetup

HTTPS-only repairs (Cloudflare proxy / Certbot)

sudo ./soviez.sh --formssl
sudo ./soviez.sh --formssl erp.example.com

If 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
GuardBehavior
Free-space checkRequires dump + filestore size plus 5 GB free under /var/soviez/backups
Output namingsoviez_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

GoalCommand
Lost Database Master Passwordsudo ./soviez.sh --recoverdbpass
Forgot ERP user loginsudo ./soviez.sh --reset-pass <tenant> <db> <user> <newpass>
New domain for existing tenantsudo ./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 --backup jobs

Common problems

SymptomWhat to try
Login works then dropsConfirm HTTPS + a real domain (not HTTP or bare IP)
502 Bad GatewayRun docker ps; compare tenant port vs Nginx upstream
Certbot failedKeep Cloudflare on Full; retry --formssl with grey-cloud DNS
DNS loopWait for propagation or use temporary force carefully
Backup refusedFree disk: need archive size + 5 GB under the backup path
Dropstage refusedTarget must be a neutralized staging database (Safe Shield)

Need licensing, migration, or account topics beyond the installer? Visit the Help Center.