Documentation

Deployment Guide

Deploy Absolute DB anywhere — Docker, Kubernetes, Helm, Terraform, bare metal, Homebrew, cloud marketplaces, and Cloudflare Workers.

Bare Metal / Linux

Shell
# One-line install (x86-64 or ARM64)
curl -fsSL https://downloads.absolutedb.com/install.sh | sh

# Manual install from tarball
curl -LO https://absolutedb.com/releases/latest/absdb-linux-amd64.tar.gz
tar -xzf absdb-linux-amd64.tar.gz
sudo mv absdb absdb-server absdb-lite /usr/local/bin/
sudo mkdir -p /var/lib/absdb /etc/absdb /var/log/absdb

# Initialise data directory
absdb-server --init-only --data /var/lib/absdb

# Start server
absdb-server --data /var/lib/absdb \
  --config /etc/absdb/absdb.conf \
  --port 5433 --rest-port 8080

System Requirements

TargetCPURAMDisk
DevelopmentAny x86-64 / ARM64128 MB+100 MB+
Production (small)4 cores4 GBNVMe SSD
Production (large)32+ cores64 GB+NVMe RAID
Embedded / IoTARM Cortex-A (Pi Zero)16 MB+Any flash

Homebrew (macOS)

Shell
# Install (Intel or Apple Silicon — universal binary)
brew tap absolutedb/tap
brew install absdb

# Start as a service
brew services start absolutedb/tap/absdb

# Check status
brew services list | grep absdb

# Upgrade
brew upgrade absdb

The Homebrew formula installs both absdb (CLI) and absdb-server. Data is stored at ~/Library/AbsoluteDB/ by default.

Docker

Shell
# Pull and run
docker run -d \
  --name absdb \
  --restart unless-stopped \
  -p 5433:5433 \
  -p 8080:8080 \
  -p 9090:9090 \
  -p 6379:6379 \
  -v absdb-data:/var/lib/absdb \
  -e ABSDB_PASSWORD=my_secure_password \
  absolutedb/absdb:latest

# With TLS
docker run -d \
  --name absdb \
  -p 5433:5433 -p 8080:8080 \
  -v absdb-data:/var/lib/absdb \
  -v /etc/certs:/etc/absdb/certs:ro \
  -e ABSDB_TLS_CERT=/etc/absdb/certs/server.crt \
  -e ABSDB_TLS_KEY=/etc/absdb/certs/server.key \
  absolutedb/absdb:latest

Environment Variables

VariableDefaultDescription
ABSDB_PASSWORDAdmin password (required)
ABSDB_PORT5433PostgreSQL wire port
ABSDB_DATA_DIR/var/lib/absdbData directory
ABSDB_BUFFER_POOL_MB256LIRS buffer pool size
ABSDB_TLS_CERTTLS certificate path
ABSDB_TLS_KEYTLS private key path
ABSDB_LOG_LEVELINFODEBUG / INFO / WARN / ERROR

Docker Compose

docker-compose.yml
version: "3.9"
services:
  absdb:
    image: absolutedb/absdb:latest
    restart: unless-stopped
    ports:
      - "5433:5433"
      - "8080:8080"
      - "9090:9090"
    volumes:
      - absdb-data:/var/lib/absdb
      - ./absdb.conf:/etc/absdb/absdb.conf:ro
    environment:
      ABSDB_PASSWORD: ${ABSDB_PASSWORD}
    healthcheck:
      test: ["CMD", "absdb-admin", "ping"]
      interval: 30s
      timeout: 5s
      retries: 3

  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9000:9090"

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"

volumes:
  absdb-data:

Kubernetes — Helm Chart

Shell
# Add Helm repo
helm repo add absolutedb https://charts.absolutedb.com
helm repo update

# Install (single node)
helm install absdb absolutedb/absolutedb \
  --namespace absdb --create-namespace \
  --set auth.password=my_secure_password \
  --set storage.size=100Gi \
  --set resources.requests.memory=4Gi

# Install HA cluster (3 replicas, Raft consensus)
helm install absdb absolutedb/absolutedb \
  --namespace absdb --create-namespace \
  --set replicaCount=3 \
  --set auth.password=my_secure_password \
  --set storage.size=500Gi \
  --set resources.requests.memory=16Gi \
  --set tls.enabled=true

# Upgrade
helm upgrade absdb absolutedb/absolutedb \
  --namespace absdb \
  --set image.tag=latest

values.yaml Reference

values.yaml
replicaCount: 3           # 1 = standalone, 3+ = HA cluster

image:
  repository: absolutedb/absdb
  tag: "latest"

auth:
  password: ""            # Set via --set or secret

storage:
  size: 100Gi
  storageClass: "gp3"    # AWS GP3 recommended

resources:
  requests:
    cpu: "2"
    memory: "4Gi"
  limits:
    cpu: "8"
    memory: "16Gi"

tls:
  enabled: false          # Set true for production
  certSecret: absdb-tls

service:
  pg_port: 5433
  rest_port: 8080
  grpc_port: 9090

monitoring:
  serviceMonitor:
    enabled: true         # Prometheus Operator

Kubernetes Operator

Shell + YAML
# Install the operator
kubectl apply -f https://absolutedb.com/deploy/operator.yaml

# Create an AbsoluteDB cluster resource
cat <<EOF | kubectl apply -f -
apiVersion: absdb.io/v1
kind: AbsoluteDB
metadata:
  name: my-cluster
  namespace: production
spec:
  version: "latest"
  replicas: 3
  storage:
    size: 500Gi
    storageClass: gp3
  resources:
    requests:
      cpu: "4"
      memory: "16Gi"
  backup:
    enabled: true
    schedule: "0 2 * * *"   # Daily at 2 AM
    target: s3://my-bucket/absdb-backups/
EOF

Terraform

main.tf
module "absdb_cluster" {
  source  = "absolutedb/absdb/aws"
  version = "~> 8.1"

  cluster_name    = "prod-absdb"
  node_count      = 3
  instance_type   = "r6g.2xlarge"   # ARM Graviton 3
  storage_size_gb = 500
  storage_type    = "gp3"
  multi_az        = true

  vpc_id          = module.vpc.vpc_id
  subnet_ids      = module.vpc.private_subnet_ids

  admin_password  = var.absdb_password

  backup_enabled  = true
  backup_target   = "s3://${aws_s3_bucket.backups.bucket}/absdb/"
  pitr_days       = 7

  tags = {
    Environment = "production"
    Team        = "platform"
  }
}

output "absdb_endpoint" {
  value = module.absdb_cluster.primary_endpoint
}

cPanel / WHMCS Surgical Swap (v8.3 "Bridge")

For shared-hosting servers running cPanel / WHMCS, Absolute DB ships a one-click MariaDB swap wizard. The wizard live-replicates the existing MariaDB datadir, verifies parity via Merkle checksums, then atomically rebinds port 3306 in under 100 ms. Every PHP, Python, Node, Ruby, and Java application reconnects transparently — no code changes.

Install + swap (v8.3 Bridge)
# 1. Install the Absolute DB runtime + cPanel plugin
curl -fsSL https://absolutedb.com/install/cpanel.sh -o cpanel-install.sh
sudo bash cpanel-install.sh --preset webapp

# 2. Open WHM → Home → SQL Services → "Absolute DB Swap"
#    Follow the 8-step wizard (pre-flight → replication → flip → verify)

# 3. After the 7-day safety window, finalise (or rollback):
sudo absdb admin --rollback          # during 7-day window only
sudo absdb admin --finalize-swap     # after window, frees parked MariaDB

See the full cPanel Swap Guide for prerequisites, step-by-step instructions, WHMCS integration, troubleshooting, and FAQ.

systemd Service

/etc/systemd/system/absdb.service
[Unit]
Description=Absolute DB Server
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=absdb
Group=absdb
ExecStart=/usr/local/bin/absdb-server \
    --data /var/lib/absdb \
    --config /etc/absdb/absdb.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
LimitNPROC=32768
OOMScoreAdjust=-500

# Security hardening
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/var/lib/absdb /var/log/absdb
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target
Shell
sudo systemctl daemon-reload
sudo systemctl enable absdb
sudo systemctl start absdb
sudo systemctl status absdb
sudo journalctl -u absdb -f

AWS Marketplace

Absolute DB is available on the AWS Marketplace as a pre-configured AMI and EKS-ready container. One-click deployment with automatic security group configuration.

AWS CLI
# Launch from AMI (us-east-1)
aws ec2 run-instances \
  --image-id ami-0absdb812345 \
  --instance-type r6g.xlarge \
  --key-name my-keypair \
  --subnet-id subnet-abc12345 \
  --security-group-ids sg-absdb \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=absdb-prod}]'

Azure Marketplace

Azure CLI
az group create --name absdb-rg --location eastus

az vm create \
  --resource-group absdb-rg \
  --name absdb-vm \
  --image absolutedb:absolutedb:absdb-enterprise:latest \
  --size Standard_E4s_v5 \
  --admin-username absdbadmin \
  --generate-ssh-keys

# Open firewall ports
az vm open-port --resource-group absdb-rg --name absdb-vm --port 5433
az vm open-port --resource-group absdb-rg --name absdb-vm --port 8080

GCP — GKE Native

Shell
# Deploy to GKE using Helm
gcloud container clusters get-credentials my-cluster --zone us-central1-a

helm repo add absolutedb https://charts.absolutedb.com
helm install absdb absolutedb/absolutedb \
  --namespace absdb --create-namespace \
  --set auth.password=$ABSDB_PASSWORD \
  --set storage.storageClass=standard-rwo \
  --set storage.size=200Gi \
  --set replicaCount=3

Cloudflare Workers (WASM)

wrangler.toml
name = "my-absdb-worker"
main = "src/index.ts"
compatibility_date = "2026-04-01"

[[kv_namespaces]]
binding = "ABSDB_KV"
id = "your-kv-namespace-id"

[build]
command = "npm run build"
src/index.ts
import { AbsDB } from '@absolutedb/wasm';

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const db = await AbsDB.open({ kv: env.ABSDB_KV });
    await db.exec(`CREATE TABLE IF NOT EXISTS visits (
      id   INTEGER PRIMARY KEY,
      url  TEXT,
      ts   TIMESTAMP DEFAULT NOW()
    )`);
    await db.exec("INSERT INTO visits (url) VALUES (?)", [request.url]);
    const rows = await db.query("SELECT COUNT(*) AS total FROM visits");
    return Response.json({ total: rows[0].total });
  }
};

Embedded Deployment (Raspberry Pi / IoT)

Shell
# ARM64 (Raspberry Pi 4/5, AWS Graviton)
curl -LO https://absolutedb.com/releases/latest/absdb-linux-arm64.tar.gz
tar -xzf absdb-linux-arm64.tar.gz

# ARM32 (Raspberry Pi Zero 2W, older Pi)
curl -LO https://absolutedb.com/releases/latest/absdb-linux-armv7.tar.gz
tar -xzf absdb-linux-armv7.tar.gz

# Run embedded lite (SQL + HNSW, no network, ~154 KB)
./absdb-lite /data/sensor.db

# Minimal memory config (idle ~4 MB RAM)
absdb-server --data /data \
  --buffer-pool-mb 4 \
  --max-connections 5 \
  --no-rest \
  --no-grpc \
  --port 5433

Continue Reading

Admin Guide Backup & Restore Enterprise Scale

Ready to run Absolute DB?

~154 KB binary  ·  zero external dependencies  ·  2,737 tests passing  ·  SQL:2023 100%

Download Free → View Pricing All Docs