1. What you need before starting
Ensure your server host meets the following baseline hardware and software prerequisites:
| Requirement | Details |
|---|---|
| Operating system | Windows 10/11 (Pro or Home), Windows Server 2019+, or any modern Linux distribution |
| Docker | Docker Desktop (Windows/Mac) or Docker Engine (Linux) - free download |
| Memory | 8 GB RAM minimum, 16 GB recommended |
| Disk space | 20 GB free storage space |
| Internet | Needed for the first install only. After that Terra runs 100% offline. |
| Free ports | 3000 (the application web UI) and 8000 (data API service) |
Installing Docker
- Windows / Mac: Download Docker Desktop from docker.com/products/docker-desktop, run the installer, restart when prompted, and launch Docker Desktop until it displays Engine running.
- Linux: Follow the official guide at docs.docker.com/engine/install for your distribution.
To verify Docker is ready, open PowerShell or terminal and execute:
docker --version
2. Copy package folder to your server
Place the extracted deployment folder in a permanent directory, for example C:\Terra on Windows or /opt/terra on Linux. All setup commands below are run from inside that directory.
Open a command shell inside the directory:
- Windows: Open C:\Terra in File Explorer, click the address bar, type powershell, and press Enter.
- Linux: Run cd /opt/terra in your terminal console.
3. Load the Terra software images
The two .tar files in the images/ folder contain the pre-packaged application and database migration container images. Import them into Docker:
docker load -i images/absterra-app.tar
docker load -i images/absterra-migrate.tar
Each command finishes with Loaded image: .... This only has to be executed once per server.
4. Generate unique security keys
Terra requires a unique set of database passwords and JWT signing keys. These are generated on your server and are known only to you — Amvelt never sees them.
If Node.js is installed locally, execute:
node scripts/gen-supabase-keys.mjs
If Node.js is not installed, run the generator through Docker without installing anything:
docker run --rm -v "${PWD}:/w" -w /w node:20-alpine node scripts/gen-supabase-keys.mjs
.env.docker. Back up this file somewhere safe off the server. If lost, your encrypted database records cannot be restored or read.
5. Start the Terra Container Stack
Launch the containers in detached background mode:
docker compose --env-file .env.docker up -d
The first startup downloads supporting containers and takes 5–15 minutes depending on your internet connection speed. Subsequent restarts take under 30 seconds.
Check that all container services are running properly:
docker compose --env-file .env.docker ps
All core services should display status Up. The database migration worker migrate is expected to display status Exited (0) — it executes once to set up the database schema and then exits safely.
6. Create your first Managing Director account
A fresh installation has zero user accounts, and public self-registration is disabled for security. Create the initial administrator account with this command:
node scripts/bootstrap-admin.mjs "md@yourcompany.com" "ChooseAStrongPassword"
Or via Docker if Node.js is not installed:
docker run --rm --network host -v "${PWD}:/w" -w /w node:20-alpine node scripts/bootstrap-admin.mjs "md@yourcompany.com" "ChooseAStrongPassword"
You can now open a browser and sign in at http://localhost:3000.
7. Activate your licence key
Terra operates in a limited demo mode until licensed.
- Sign in as Admin and navigate to Admin → Settings → Licence.
- Copy the Deployment fingerprint string (e.g.
00C6-87FA-7BA2-639A-4576-DC8B). - Email the fingerprint to Amvelt sales/support at the email address on your invoice.
- Amvelt returns a signed licence string.
- Open
.env.dockerin Notepad / text editor and paste the string:ABS_TERRA_LICENSE=<the string sent to you> - Restart the app service:
docker compose --env-file .env.docker up -d app
Licensed modules unlock instantly upon restart.
8. Everyday Operations & Data Backups
Stop Terra
docker compose --env-file .env.docker stopStart Terra
docker compose --env-file .env.docker up -dAutomatic Server Boot Restart
Docker automatically starts Terra on system boot as long as Docker Desktop or Docker Engine service is configured to auto-start with Windows/Linux.
Automated Database & File Backups
Execute this command to export a compressed archive of your entire database and document storage:
docker run --rm -v abs-terra_db-data:/data -v "${PWD}:/backup" alpine tar czf /backup/terra-backup.tar.gz /data
Copy terra-backup.tar.gz and .env.docker to offsite backup storage weekly. Together they form a 100% complete restore point.
9. Optional Environment Settings
Edit .env.docker to customize ports or configure corporate SMTP email for notifications:
| Setting | Description |
|---|---|
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM | Outgoing mail server details for approval notifications and one-time codes. |
APP_PORT | Change default web UI port 3000 if port 3000 is occupied. |
NEXT_PUBLIC_SITE_URL | Set if staff access Terra over custom corporate intranet hostname instead of IP/localhost. |
10. Troubleshooting & Support
View live container diagnostics:
docker compose --env-file .env.docker logs app| Symptom | Cause & Solution |
|---|---|
port is already allocated | Port 3000 or 8000 is occupied. Set APP_PORT=3100 in .env.docker and restart. |
| Browser: "can't reach this page" | Container startup in progress. Wait 60 seconds, then run docker compose ps to confirm Up. |
service "migrate" didn't complete | Database worker timed out. Simply re-run docker compose --env-file .env.docker up -d. |
| Licence says "wrong deployment" | Fingerprint changed due to host rebuild. Request an updated licence key from Amvelt. |
