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) aadmin_alert_digest_entries(denní souhrn upozornění), - nové sloupce
meetings.calendar_uid,meetings.organizer_noteameeting_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.
Návrat k předchozí verzi (Rollback)
Pokud by se po aktualizaci vyskytla nečekaná nekompatibilita, můžete se kdykoliv vrátit ke konkrétnímu předchozímu tagu:
- V
docker-compose.ymlzměňte verzi vbuild.contextzpět na předchozí tag. - Spusťte
docker compose up -d --build. - 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-*naX-Lockmycal-*(X-Lockmycal-Token,X-Lockmycal-Timestamp) a User-Agent naLockmycal-Webhooks/1.0. Upravte kontrolu hlaviček na straně příjemce. - 1.15.7 – Soubor
.envse č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 nastavteZOOM_UPDATE_SCOPE_ENABLED=false. - 1.20.0.1 – Hlavička s ID doručení odchozího webhooku přejmenována z
X-Tymeslot-Delivery-IdnaX-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.