Installation
Multiple ways to install and deploy LogDeck for your environment.
Docker Compose (Recommended)
Docker Compose is the recommended way to deploy LogDeck. It provides easy configuration and management.
Step 1: Create docker-compose.yml
Create a docker-compose.yml file with the following content:
services:
logdeck:
image: amoabakelvin/logdeck:latest
container_name: logdeck
ports:
- "8123:8080"
environment:
# Optional: Manage multiple Docker hosts
# DOCKER_HOSTS: local=unix:///var/run/docker.sock,prod=ssh://deploy@prod.example.com
# Optional: Enable authentication (or enable it later in Settings)
# JWT_SECRET: your-super-secret-key-min-32-chars
# ADMIN_USERNAME: admin
# ADMIN_PASSWORD: your-bcrypt-hash
# Optional: Coolify integration (persists env var changes across redeployments)
# Host names must match DOCKER_HOSTS
# COOLIFY_CONFIGS: local|https://your-coolify-instance.com|your-api-token
volumes:
# Mount the Docker socket for container management
- /var/run/docker.sock:/var/run/docker.sock
# Mount /proc for system stats (CPU, memory usage)
- /proc:/host/proc:ro
# Persist the config file, stored logs, and alert history
- logdeck-data:/data
# Mount SSH keys if you use ssh:// hosts
# - ~/.ssh:/root/.ssh:ro
restart: unless-stopped
volumes:
logdeck-data:/data volumeLogDeck keeps its config file (hosts, API tokens, alert rules), its stored log history, and its alert history in /data. Without a volume, all of it is written inside the container and lost the moment you recreate it — including every log line you were counting on being able to read back.
Step 2: Start LogDeck
docker-compose up -dStep 3: Verify It's Running
docker-compose psStep 4: Access the Interface
Open your browser and navigate to http://localhost:8123
Docker Run
For a quick deployment without Docker Compose, use the docker run command:
Basic Deployment
docker run -d \
--name logdeck \
-p 8123:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /proc:/host/proc:ro \
-v logdeck-data:/data \
--restart unless-stopped \
amoabakelvin/logdeck:latestWith Authentication
ADMIN_PASSWORD takes a bcrypt hash — generate one with htpasswd -bnBC 10 '' yourPassword | tr -d ':'. See the configuration guide.
docker run -d \
--name logdeck \
-p 8123:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /proc:/host/proc:ro \
-v logdeck-data:/data \
-e JWT_SECRET=your-super-secret-key-min-32-chars \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD='your-bcrypt-hash' \
--restart unless-stopped \
amoabakelvin/logdeck:latestConfigure Multiple Docker Hosts
Manage more than one Docker daemon by setting DOCKER_HOSTS with comma-separated name=host entries.
# Local Docker + remote SSH host
export DOCKER_HOSTS="local=unix:///var/run/docker.sock,prod=ssh://deploy@prod.example.com"
# Then start LogDeck with docker run or docker composeFor ssh:// targets, mount your SSH keys (e.g., ~/.ssh) or forward your SSH agent socket into the container.
Environment Variables
Every variable is optional — LogDeck runs with none of them set. The configuration guide covers each one in full, including the config file that the Settings page writes.
DOCKER_HOSTSComma-separated Docker hosts using name=host format (supports unix://, tcp://, and ssh://). When unset, LogDeck auto-detects a local Docker or Podman socket.
CONFIG_PATHPath to the JSON config file. Its directory also holds the log store and alert history. Defaults to /data/config.json.
READONLY_MODEtrue blocks container actions, stack actions, environment and resource edits, and the web terminal.
LOG_STORE_ENABLEDfalse turns off log persistence and History mode. Default true.
LOG_STORE_PER_CONTAINER_MBRetention cap per container, in MB. Default 50.
LOG_STORE_TOTAL_MBRetention cap for the whole store, in MB. Default 1024.
JWT_SECRETSecret key for signing session tokens.
ADMIN_USERNAMEAdmin username for authentication.
ADMIN_PASSWORDA bcrypt hash of the admin password — never plain text. LogDeck refuses to start if it is malformed. See the configuration guide for how to generate one.
COOLIFY_CONFIGSPer-host Coolify configuration. Format: hostName|apiURL|apiToken,...
Host names must match those in DOCKER_HOSTS. Generate API tokens from your Coolify dashboard under Settings → API Tokens.
Docker Socket Access
The Docker socket (/var/run/docker.sock) provides full access to the Docker daemon. Only run LogDeck on trusted networks or enable authentication to protect access.
LogDeck needs write access to the Docker socket for container management features (start, stop, restart). If you only need log viewing, you can mount it read-only (:ro) and enable read-only mode in LogDeck.
Updating LogDeck
To update to the latest version of LogDeck:
With Docker Compose
docker-compose pull
docker-compose up -dWith Docker Run
docker stop logdeck
docker rm logdeck
docker pull amoabakelvin/logdeck:latest
# Then run your docker run command againInstalling the CLI (Optional)
The logdeck command-line client talks to your running LogDeck server, so you can read logs, check stats, and manage containers from the terminal or from scripts:
curl -fsSL https://raw.githubusercontent.com/AmoabaKelvin/logdeck/main/install.sh | shIt installs a single binary for macOS or Linux (amd64/arm64). See the CLI guide for connecting to your server and the full command reference.
Troubleshooting
Container Won't Start
Check the logs:
docker logs logdeckCan't See Any Containers
Ensure the Docker socket is properly mounted:
docker inspect logdeck | grep docker.sockPort Already in Use
If port 8123 is already in use, change it in your docker-compose.yml or docker run command:
- "8124:8080" # Use port 8124 instead