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
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/axiodb8
9# Ports:10# 27018 - HTTP GUI Dashboard11# 27019 - TCP Remote Access (AxioDBCloud)12# Volume: /app is the main data directoryTCP 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.
| Variable | Default | Description |
|---|---|---|
| AXIODB_GUI | true | Enable the HTTP Control Server / web GUI on port 27018 |
| AXIODB_TCP | true | Enable the AxioDBCloud TCP server on port 27019 |
| AXIODB_TCP_AUTH | true | Require username/password on TCP connections (same RBAC accounts as the GUI) |
| AXIODB_TLS | false | Encrypt 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_NAME | AxioDB | Name of the root database folder created under the data volume |
| AXIODB_CUSTOM_PATH | container cwd | Custom path for database storage inside the container |
| UV_THREADPOOL_SIZE | auto (~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
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 access3# 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/axiodbEnabling 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:
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/axiodbThe 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:
1docker run -d \2 --name axiodb-server \3 -p 27018:27018 \4 -p 27019:27019 \5 -v "$(pwd)/axiodb-data":/app \6 theankansaha/axiodbDocker Compose
1version: "3.8"2
3services:4 axiodb:5 image: theankansaha/axiodb6 container_name: axiodb-server7 ports:8 - "27018:27018"9 - "27019:27019"10 environment:11 - AXIODB_GUI=true12 - AXIODB_TCP=true13 - AXIODB_TCP_AUTH=true14 - AXIODB_ROOT_NAME=AxioDB15 volumes:16 - axiodb-data:/app17 restart: unless-stopped18
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):
1version: "3.8"2
3services:4 axiodb:5 image: theankansaha/axiodb6 container_name: axiodb-server7 ports:8 - "27018:27018"9 - "27019:27019"10 environment:11 - AXIODB_GUI=true12 - AXIODB_TCP=true13 - AXIODB_TCP_AUTH=true14 - AXIODB_TLS=true15 - AXIODB_TLS_CERT_PATH=/certs/cert.pem16 - AXIODB_TLS_KEY_PATH=/certs/key.pem17 - AXIODB_ROOT_NAME=AxioDB18 volumes:19 - ./mycerts:/certs:ro # your real cert.pem/key.pem folder -> /certs in the container20 - axiodb-data:/app # Docker-managed volume for database files21 restart: unless-stopped22
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.
