DEPLOYMENT

Docker Deployment

Run AxioDB's GUI and TCP server (AxioDBCloud) in a container with one command, then tune it with environment variables when you need volumes, custom ports, or to turn authentication on or off — no rebuild required.

Simple: Run the Container

bash
1docker run -d \
2 --name axiodb-server \
3 -p 27018:27018 \
4 -p 27019:27019 \
5 -e AXIODB_TCP_AUTH=true \
6 -v axiodb-data:/app \
7 theankansaha/axiodb
8
9# Ports:
10# 27018 - HTTP GUI Dashboard
11# 27019 - TCP Remote Access (AxioDBCloud)
12# Volume: /app is the main data directory

TCP authentication is on by default in this image. Log into the GUI at http://localhost:27018 as admin/admin to complete the forced password change before connecting over TCP — see Troubleshooting if you skip this step.

Advanced: Environment Variables, Volumes, Compose

Environment Variables

Every option below has a default matching the image's previous fixed behavior — override any of them with -e VAR=value atdocker run time, no rebuild required.

VariableDefaultDescription
AXIODB_GUItrueEnable the HTTP Control Server / web GUI on port 27018
AXIODB_TCPtrueEnable the AxioDBCloud TCP server on port 27019
AXIODB_TCP_AUTHtrueRequire username/password on TCP connections (same RBAC accounts as the GUI)
AXIODB_TLSfalseEncrypt TCP connections with TLS instead of plaintext (see below)
AXIODB_TLS_CERT_PATH-Path inside the container to a PEM cert file - required when TLS is on
AXIODB_TLS_KEY_PATH-Path inside the container to the matching private key - required when TLS is on
AXIODB_ROOT_NAMEAxioDBName of the root database folder created under the data volume
AXIODB_CUSTOM_PATHcontainer cwdCustom path for database storage inside the container
UV_THREADPOOL_SIZEauto (~4 × allotted CPUs, clamped 4-64)libuv threads for async file I/O/crypto - computed at startup from the container's real cgroup CPU quota; set explicitly to override (the fd/ulimit for socket count is a separate concern, see the README's troubleshooting section)

Ports themselves (27018/27019) aren't configurable via environment variable — remap them at the Docker layer with -p <host-port>:27018 /-p <host-port>:27019.

Disabling TCP Authentication

bash
1# Only do this on a trusted private network, or with AXIODB_TLS=true (see below) -
2# with auth off and no TLS, any client that can reach port 27019 has full database access
3# and traffic is readable by anyone on the network.
4docker run -d \
5 --name axiodb-server \
6 -p 27018:27018 \
7 -p 27019:27019 \
8 -e AXIODB_TCP_AUTH=false \
9 -v axiodb-data:/app \
10 theankansaha/axiodb

Enabling TLS

The TCP protocol is plaintext by default. To encrypt it, you need your own cert + key (AxioDB never generates one for you) mounted into the container - the cert/key env vars must point at the path inside the container, not on your real machine:

bash
1# cert.pem and key.pem are really at /home/you/mycerts/ on your machine.
2# "/certs" below is just a name we're choosing for where they'll appear inside the container.
3docker run -d --name axiodb-server \
4 -p 27018:27018 -p 27019:27019 \
5 -v /home/you/mycerts:/certs:ro \
6 -e AXIODB_TLS=true \
7 -e AXIODB_TLS_CERT_PATH=/certs/cert.pem \
8 -e AXIODB_TLS_KEY_PATH=/certs/key.pem \
9 theankansaha/axiodb

The rule: AXIODB_TLS_CERT_PATH must match the right-hand side of the -v mount (/certs/...), never your real machine's path - the container only sees what you've explicitly mounted into it. See the AxioDBCloud TLS guide for how to generate a cert and configure the client to match.

Data Persistence

Mount a volume at /app so your data survives container restarts and recreation:

bash
1docker run -d \
2 --name axiodb-server \
3 -p 27018:27018 \
4 -p 27019:27019 \
5 -v "$(pwd)/axiodb-data":/app \
6 theankansaha/axiodb

Docker Compose

yaml
1version: "3.8"
2
3services:
4 axiodb:
5 image: theankansaha/axiodb
6 container_name: axiodb-server
7 ports:
8 - "27018:27018"
9 - "27019:27019"
10 environment:
11 - AXIODB_GUI=true
12 - AXIODB_TCP=true
13 - AXIODB_TCP_AUTH=true
14 - AXIODB_ROOT_NAME=AxioDB
15 volumes:
16 - axiodb-data:/app
17 restart: unless-stopped
18
19volumes:
20 axiodb-data:

With TLS enabled, note the two different kinds of entry under volumes: below - ./mycerts:/certs:ro is your real folder (it contains a /), mounted read-only; axiodb-data:/app is a Docker-managed named volume (no /, just a label):

yaml
1version: "3.8"
2
3services:
4 axiodb:
5 image: theankansaha/axiodb
6 container_name: axiodb-server
7 ports:
8 - "27018:27018"
9 - "27019:27019"
10 environment:
11 - AXIODB_GUI=true
12 - AXIODB_TCP=true
13 - AXIODB_TCP_AUTH=true
14 - AXIODB_TLS=true
15 - AXIODB_TLS_CERT_PATH=/certs/cert.pem
16 - AXIODB_TLS_KEY_PATH=/certs/key.pem
17 - AXIODB_ROOT_NAME=AxioDB
18 volumes:
19 - ./mycerts:/certs:ro # your real cert.pem/key.pem folder -> /certs in the container
20 - axiodb-data:/app # Docker-managed volume for database files
21 restart: unless-stopped
22
23volumes:
24 axiodb-data:

Building From Source & Full Troubleshooting

Instructions for building the image yourself, plus a deeper Docker-specific troubleshooting guide (container won't start, port conflicts, data-persistence checks), live in the repository's Docker/README.md — the canonical Docker doc, not duplicated here. For general connection/auth troubleshooting, see the Troubleshooting page.

Connect to Your Container

Once the container is running, connect to it with AxioDBCloud.