Chcete mít jistotu, že vaše data a kalendářní záznamy neopouštějí vaši infrastrukturu? LockMyCal je postavený na open-source jádru a můžete ho provozovat na vlastním serveru – na VPS, v domácím labu nebo ve firemní síti. V tomto článku projdeme celé nasazení přes Docker Compose.

Proč vlastní server

  • Plná kontrola nad daty – schůzky, kontakty i přístupové údaje zůstávají u vás.
  • Bez limitů tarifů – všechny funkce včetně automatizací, analytiky a plateb jsou zdarma.
  • Integrace s interní sítí – kalendář na firemním Exchange nebo Nextcloudu, video na vlastním Jitsi serveru.

Počítejte ale s tím, že aktualizace, zálohy a zabezpečení jsou ve vaší režii.

Co budete potřebovat

  • Linuxový server s Dockerem a Docker Compose (postačí malé VPS od 1 vCPU a 1 GB RAM).
  • Doménu s DNS záznamem směřujícím na server.
  • SMTP server nebo účet u e-mailové služby (Postmark, SendGrid, Mailgun…) pro odesílání potvrzení.

1. Sestavení image a docker-compose.yml

LockMyCal zatím nemá veřejně publikovaný Docker image – image si sestavíte sami ze zdrojového kódu. Docker Compose si repozitář stáhne sám, nemusíte nic klonovat:

services:
  app:
    build:
      context: https://github.com/lockmycal/lockmycal.git#main
      dockerfile: Dockerfile.docker
    image: lockmycal:main
    restart: unless-stopped
    env_file:
      - .env
    environment:
      DATABASE_HOST: db
      DATABASE_PORT: 5432
    ports:
      - "127.0.0.1:4000:4000"
    depends_on:
      db:
        condition: service_healthy
    volumes:
      - app_data:/app/data

  db:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: lockmycal
      POSTGRES_USER: lockmycal
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U lockmycal -d lockmycal"]
      interval: 5s
      timeout: 5s
      retries: 12

volumes:
  app_data:
  pgdata:

Za # v adrese repozitáře můžete uvést konkrétní verzi. Veřejný repozitář github.com/lockmycal/lockmycal se připravuje.

2. Soubor .env

Vedle docker-compose.yml vytvořte .env s minimální konfigurací:

SECRET_KEY_BASE=...        # openssl rand -base64 64
DATA_ENCRYPTION_KEY=...    # openssl rand -base64 48
PHX_HOST=rezervace.vasedomena.cz
POSTGRES_USER=lockmycal
POSTGRES_DB=lockmycal
POSTGRES_PASSWORD=silne_heslo

EMAIL_ADAPTER=smtp
EMAIL_FROM_ADDRESS=rezervace@vasedomena.cz
SMTP_HOST=smtp.vasedomena.cz
SMTP_PORT=587
SMTP_USERNAME=rezervace@vasedomena.cz
SMTP_PASSWORD=...

DATA_ENCRYPTION_KEY šifruje přístupové údaje k integracím – po nastavení ho už neměňte a pečlivě zálohujte. Hodnoty v .env se čtou doslova, ${VAR} se nerozbaluje.

3. Spuštění

docker compose up -d --build
docker compose logs -f app

První sestavení chvíli trvá. Při startu proběhnou databázové migrace automaticky. První uživatel, který se zaregistruje, se stane administrátorem.

4. Reverzní proxy a HTTPS

Aplikaci vystavte přes reverzní proxy (Caddy, Nginx, Traefik…) s HTTPS. Důležité je předávání WebSocket spojení – rozhraní LockMyCal běží v reálném čase přes Phoenix LiveView. Hotové konfigurace najdete v dokumentaci.

5. Aktualizace a zálohy

  • Aktualizace: změňte verzi v build.context a spusťte docker compose build --pull app && docker compose up -d. Před aktualizací si přečtěte změny rozbíjející kompatibilitu.
  • Zálohy: pravidelně zálohujte databázi (pg_dump), datový svazek /app/data a soubor .env se šifrovacím klíčem.

Co dál

Propojte kalendáře, videoslužby a platby podle dokumentace – kompletní přehled konfigurace je v referenci proměnných prostředí.