Skip to content

Installation

Carlo edited this page Jun 17, 2026 · 2 revisions

Prerequisites

  • Docker (version 24+)
  • Docker Compose (V2, included with Docker Desktop)
  • The following ports must be available:
    • 8080 — Backend API (Only if API must be reachable from outside of docker network)
    • 5173 — Frontend

Quick Start

1. Create docker-compose.yml

services:
  mariadb:
    image: mariadb:11
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: CHANGEME_DB_PASSWORD
      MARIADB_DATABASE: CHANGEME_DB_NAME
    volumes:
      - mariadb_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 5

  backend:
    image: ghcr.io/alleslockr/alleslocker-backend:latest
    restart: unless-stopped
    #ports:
    #  - "8080:8080" Only if you want to expose the api
    environment:
      SPRING_DATASOURCE_URL: jdbc:mariadb://mariadb:3306/CHANGEME_DB_NAME
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: CHANGEME_DB_PASSWORD
      SPRING_JPA_HIBERNATE_DDL_AUTO: update
      SECURITY_JWT_SECRET: CHANGEME_JWT_SECRET
      SECURITY_JWT_EXPIRATION: CHANGEME_JWT_EXPIRATION_MS
      APP_SECURITY_MASTER_KEY: CHANGEME_MASTER_KEY
      APP_CORS_ALLOWED_ORIGINS: CHANGEME_CORS_ORIGINS
    depends_on:
      mariadb:
        condition: service_healthy

  frontend:
    image: ghcr.io/alleslockr/alleslocker-frontend:latest
    restart: unless-stopped
    ports:
      - "5173:80"
    environment:
      VITE_API_URL: CHANGEME_API_URL
    depends_on:
      - backend

volumes:
  mariadb_data:

2. Replace placeholders

Placeholder Description Example value
CHANGEME_DB_PASSWORD MariaDB root password s3cure!Passw0rd
CHANGEME_DB_NAME Database name alleslocker
CHANGEME_JWT_SECRET Secret key for signing JWT tokens (min 32 chars, random hex recommended) a1b2c3d4e5f6... (64 hex chars)
CHANGEME_JWT_EXPIRATION_MS JWT token validity in milliseconds 86400000 (24 hours)
CHANGEME_MASTER_KEY AES key for encrypting vendor API credentials at rest (32 base64 chars) generate via openssl rand -base64 32
CHANGEME_CORS_ORIGINS Comma-separated list of allowed frontend origins http://localhost:5173,https://yourdomain.com
CHANGEME_API_URL Backend URL the frontend talks to http://localhost:8080 or https://api.yourdomain.com

3. Start all services

docker compose up -d

Check that all containers are running:

docker compose ps

4. View logs

docker compose logs -f

Stopping

docker compose down          # stops and removes containers
docker compose down -v       # stops and removes containers + volumes (WARNING: deletes all data)

Updating

docker compose pull           # pulls the latest images from GHCR
docker compose up -d          # recreates containers with updated images
docker image prune -f         # cleans up old dangling images

Clone this wiki locally