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.contexta spusťtedocker 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/dataa soubor.envse š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í.