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
Option A: Provide your own keystore (recommended baseline)
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.