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:
Do not skip the /data volume

LogDeck 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 -d

Step 3: Verify It's Running

docker-compose ps

Step 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:latest

With 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:latest

Configure 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 compose

For 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.

Server Configuration
DOCKER_HOSTS

Comma-separated Docker hosts using name=host format (supports unix://, tcp://, and ssh://). When unset, LogDeck auto-detects a local Docker or Podman socket.

CONFIG_PATH

Path to the JSON config file. Its directory also holds the log store and alert history. Defaults to /data/config.json.

READONLY_MODE

true blocks container actions, stack actions, environment and resource edits, and the web terminal.

Log Persistence (Optional)
On by default; these only change retention
LOG_STORE_ENABLED

false turns off log persistence and History mode. Default true.

LOG_STORE_PER_CONTAINER_MB

Retention cap per container, in MB. Default 50.

LOG_STORE_TOTAL_MB

Retention cap for the whole store, in MB. Default 1024.

Authentication (Optional)
Leave these unset to run without authentication, or to enable it from the Settings page instead
JWT_SECRET

Secret key for signing session tokens.

ADMIN_USERNAME

Admin username for authentication.

ADMIN_PASSWORD

A 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 Integration (Optional)
Leave unset if not using Coolify.
COOLIFY_CONFIGS

Per-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

Security Note
Mounting the Docker socket gives LogDeck access to your Docker daemon

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 -d

With Docker Run

docker stop logdeck
docker rm logdeck
docker pull amoabakelvin/logdeck:latest
# Then run your docker run command again

Installing 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 | sh

It 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 logdeck

Can't See Any Containers

Ensure the Docker socket is properly mounted:

docker inspect logdeck | grep docker.sock

Port 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
Need More Help?
If you're still having issues, please open an issue on GitHub with details about your setup and the error you're seeing.