Documentation & Setup

Terra Installation & Operation Guide

Everything you need to run Terra on your own server. Set-up takes about 20 minutes, most of which is Docker downloading in the background. No internet-facing account required.

1. What you need before starting

Ensure your server host meets the following baseline hardware and software prerequisites:

RequirementDetails
Operating systemWindows 10/11 (Pro or Home), Windows Server 2019+, or any modern Linux distribution
DockerDocker Desktop (Windows/Mac) or Docker Engine (Linux) - free download
Memory8 GB RAM minimum, 16 GB recommended
Disk space20 GB free storage space
InternetNeeded for the first install only. After that Terra runs 100% offline.
Free ports3000 (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.

Note for Windows Users: Docker Desktop may ask to enable WSL 2 and prompt for a system restart. Allow it — Terra requires WSL 2 to execute containers properly.

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
Important Backup Warning: This script creates a configuration file named .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"
Use the Managing Director's actual corporate email address: high-value financial approvals and senior maker-checker verification requests are sent there as one-time codes.

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.

  1. Sign in as Admin and navigate to Admin → Settings → Licence.
  2. Copy the Deployment fingerprint string (e.g. 00C6-87FA-7BA2-639A-4576-DC8B).
  3. Email the fingerprint to Amvelt sales/support at the email address on your invoice.
  4. Amvelt returns a signed licence string.
  5. Open .env.docker in Notepad / text editor and paste the string:
    ABS_TERRA_LICENSE=<the string sent to you>
  6. 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 stop

Start Terra

docker compose --env-file .env.docker up -d

Automatic 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:

SettingDescription
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROMOutgoing mail server details for approval notifications and one-time codes.
APP_PORTChange default web UI port 3000 if port 3000 is occupied.
NEXT_PUBLIC_SITE_URLSet 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
SymptomCause & Solution
port is already allocatedPort 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 completeDatabase 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.

Need technical assistance?

Contact Amvelt support at hello@amvelt.com or call +91 91758 87184. Include your deployment fingerprint and Docker log output.

Chat on WhatsApp Send Email