Skip to content

02 Install with Docker

Run Athene as a container with persistent mounts for data, config, and logs. This gives you a fast first deployment and a stable base for upgrades, backup, and troubleshooting.

Use Docker Hub image jadaptive/athene:latest.

2.1 Prerequisites

  • Docker installed on the host.
  • Local directories for Athene runtime data.
  • Free host ports for HTTP (19191) and optional HTTPS (19443).

2.2 Quick Start

Pull the image and create persistent directories:

docker pull jadaptive/athene:latest
mkdir -p ./docker/workspace ./docker/config/tls ./docker/logs

Run Athene:

docker run --rm \
  --name athene \
  -p 19191:19191 \
  -p 19443:19443 \
  -p 19222:19222 \
  -e REPOSITORY_USERNAME=admin \
  -e REPOSITORY_PASSWORD=admin \
  -v "$(pwd)/docker/workspace:/var/lib/athene/workspace" \
  -v "$(pwd)/docker/config:/var/lib/athene/config" \
  -v "$(pwd)/docker/logs:/var/lib/athene/logs" \
  jadaptive/athene:latest

Alternative quick start with Docker Compose:

mkdir -p ./docker/workspace ./docker/config ./docker/logs
cat > compose.yaml <<'YAML'
services:
  athene:
    image: jadaptive/athene:latest
    ports:
      - "19191:19191"
      - "19443:19443"
      - "19222:19222"
    environment:
      REPOSITORY_USERNAME: admin
      REPOSITORY_PASSWORD: admin
    volumes:
      - ./docker/workspace:/var/lib/athene/workspace
      - ./docker/config:/var/lib/athene/config
      - ./docker/logs:/var/lib/athene/logs
YAML
docker compose up -d

If you just want to try Athene out, move on to 03 First-Time Setup and Access.

2.3 Environment Variables

Variable Default Purpose
ATHENE_HTTPS_PORT 19443 HTTPS listener port in the container.
ATHENE_SSH_PORT 19222 SSH/SFTP listener port in the container.
ATHENE_SSL_ENABLED true Enables Athene HTTPS listener.
ATHENE_SSL_KEY_STORE /var/lib/athene/config/tls/athene.p12 Path to the TLS keystore used by HTTPS.
ATHENE_SSL_KEY_STORE_PASSWORD changeit Keystore password.
ATHENE_SSL_KEY_STORE_TYPE PKCS12 Keystore format.
ATHENE_SSL_KEY_ALIAS athene Alias of the keypair inside the keystore.
ATHENE_WORKSPACE_ROOT /var/lib/athene/workspace Repository workspace root path.
ATHENE_CONFIG_ROOT /var/lib/athene/config Runtime configuration root path.
ATHENE_LOGS_ROOT /var/lib/athene/logs Log output directory.
ENABLE_CONSOLE_LOG true Enables console log output in addition to file logs.
ATHENE_MAX_FILE_SIZE 1GB Maximum single upload file size.
ATHENE_MAX_REQUEST_SIZE 1GB Maximum upload request size.
ATHENE_ALWAYS_ALLOW_CIDRS 127.0.0.1/32,172.0.0.0/8 CIDRs allowed to access /athene/** without bearer auth.
REPOSITORY_USERNAME admin Username for simple authentication mode.
REPOSITORY_PASSWORD admin Password for simple authentication mode.

Tip

Do not skip persistent mounts for workspace and config. Without them, each restart behaves like a fresh instance and hides real operational signals.

2.4 Optional HTTPS Setup

Generate a local keystore:

mkdir -p ./docker/config/tls
keytool -genkeypair \
  -alias athene \
  -keyalg RSA \
  -keysize 2048 \
  -storetype PKCS12 \
  -keystore ./docker/config/tls/athene.p12 \
  -validity 3650 \
  -storepass changeit \
  -keypass changeit \
  -dname "CN=localhost, OU=Dev, O=Athene, L=Local, ST=Local, C=US"

Then set ATHENE_SSL_ENABLED=true and validate:

curl -k https://localhost:19443/athene/debian/list-packages

Option B: Let Athene generate a local development certificate

If ATHENE_SSL_ENABLED=true and no keystore file is present, Athene attempts to generate a localhost development certificate automatically with keytool.

Use this for lab speed, not for production trust.

Option C: Terminate TLS at Aegis Gateway

If you want simpler certificate operations across multiple internal services, place Athene behind Aegis Gateway and terminate TLS at the edge.

Aegis Gateway works as an SSL reverse proxy so you can expose one hardened HTTPS endpoint and route to multiple internal targets behind your firewall.

See: Aegis Gateway Documentation

Next chapter: 03 First-Time Setup and Access.