Aktualizace LockMyCal na novou verzi

LockMyCal je navržen tak, aby aktualizace probíhaly rychle, spolehlivě a s minimálním prostojem. Veškeré databázové migrace Ecto se spouštějí plně automaticky při každém startu nového kontejneru.


Postup aktualizace krok za krokem (Docker Compose)

1. Vytvořte bezpečnostní zálohu databáze

Před každým updatem doporučujeme vytvořit rychlou zálohu:

docker exec -t lockmycal-db pg_dump -U lockmycal lockmycal_prod > pre_upgrade_backup.sql

2. Sestavte novou verzi

V docker-compose.yml (nebo v proměnné LOCKMYCAL_VERSION) nastavte nový tag verze v build.context a sestavte image:

docker compose build --pull app

3. Restartujte kontejnery s novým obrazem

docker compose up -d --remove-orphans

Docker automaticky nahradí starý kontejner novou verzí. LockMyCal při startu zkontroluje schéma databáze, provede potřebné migrace a obnoví spojení v reálném čase.

4. Ověřte zdraví instance

Zkontrolujte startovací logy:

docker compose logs -f app

Měli byste vidět zprávu potvrzující úspěšný start HTTP a WebSocket serveru na portu 4000.


Změny databáze a událostí v kalendáři (1.20.0.1)

Aktualizace na 1.20.0.1 přidává databázové migrace, které se spustí při startu samy (proto zálohu z kroku 1 nevynechávejte):

  • nové tabulky error_tracker_* (sledování chyb) a admin_alert_digest_entries (denní souhrn upozornění),
  • nové sloupce meetings.calendar_uid, meetings.organizer_note a meeting_guests.invited_by.

Událost, kterou LockMyCal zapíše do připojeného kalendáře, nově nese vlastní UID místo UID rezervace (z něj se tvoří odkazy pro zrušení a přesun, takže je to bezpečnější). Schůzky vytvořené dříve si ponechávají původní UID události.

Pokud by se po aktualizaci vyskytla nečekaná nekompatibilita, můžete se kdykoliv vrátit ke konkrétnímu předchozímu tagu:

  1. V docker-compose.yml změňte verzi v build.context zpět na předchozí tag.
  2. Spusťte docker compose up -d --build.
  3. V případě nevratných databázových změn obnovte DB ze zálohy vytvořené v kroku 1.

Změny rozbíjející kompatibilitu

Před aktualizací přes tyto verze zkontrolujte svou konfiguraci:

  • 1.11.1 – Hlavičky odchozích webhooků přejmenovány z X-Tymeslot-* na X-Lockmycal-* (X-Lockmycal-Token, X-Lockmycal-Timestamp) a User-Agent na Lockmycal-Webhooks/1.0. Upravte kontrolu hlaviček na straně příjemce.
  • 1.15.7 – Soubor .env se čte doslova: ${VAR} a $(příkaz) se nerozbalí a # bez mezery před sebou je součástí hodnoty. Hodnoty, které na interpolaci spoléhaly, vypište celé.
  • 1.16.0 – Zoom meetingy se při přeplánování přesouvají; aplikace Zoom potřebuje oprávnění meeting:update:meeting, jinak nastavte ZOOM_UPDATE_SCOPE_ENABLED=false.
  • 1.20.0.1 – Hlavička s ID doručení odchozího webhooku přejmenována z X-Tymeslot-Delivery-Id na X-Lockmycal-Delivery-Id; stará hlavička se už neposílá, hodnota (ID doručení) zůstává stejná. Pokud na straně příjemce podle ní odstraňujete duplicitní doručení, upravte název hlavičky.