Оновлення
Як дізнатися про нову версію
Section titled “Як дізнатися про нову версію”Кожна версія сайту має номер виду 1.2.0. Поточний номер видно:
- в адмін-панелі — «Версія 1.1.0» внизу бокового меню (клік відкриває «Що нового»);
- у
https://school.example.ua/health— поле"version".
Раз на добу сайт питає GitHub, чи вийшла новіша версія (звідки питати — UPDATE_REPO у .env).
Якщо так, адміністратор бачить на дашборді: «Доступна версія 1.2.0 — як оновити →» з
посиланням на сторінку релізу. Там описано, що змінилося. Той самий номер — у полі
"latestVersion" повної відповіді /health (з заголовком Authorization: Bearer <HEALTH_TOKEN>;
без нього /health показує лише status і version).
Сам сайт нічого не завантажує й не встановлює — оновлення завжди робите ви, коли вирішите.
Повідомлення не буде, якщо:
UPDATE_REPOпорожній абоUPDATE_CHECK=0;UPDATE_REPOвказує на приватний репозиторій — GitHub не показує його релізи без входу, і дашборд мовчить. Офіційні релізи — уtabula-cms/tabula.
Пробні версії (з суфіксом, наприклад 1.2.0-rc.1) дашборд не пропонує.
Як оновити
Section titled “Як оновити”-
Прочитайте, що змінилося, — сторінку релізу за посиланням на дашборді.
-
Зробіть бекап: в адмін-панелі «Бекапи» → «Зробити бекап».
-
На сервері:
Terminal window ssh deploy@<IP>cd /opt/tabula/appgit fetch --tagsgit checkout v1.2.0nano .env # APP_IMAGE=ghcr.io/tabula-cms/tabula:1.2.0docker compose -f docker-compose.prod.yml pulldocker compose -f docker-compose.prod.yml run --rm --no-deps --user root app chown -R app:app /data /backupsdocker compose -f docker-compose.prod.yml up -dgit checkoutоновлює файли запуску (docker-compose.prod.yml, шаблон nginx, скрипти): вони живуть у репозиторії, а не в образі, тож мають відповідати версії образу.Рядок із
chownвіддає каталогиdataіbackupsкористувачу, від якого працює сайт у новому образі. Зазвичай він нічого не змінює, але коли цей користувач у новій версії інший (так було з переходом на версію, що вийшла після 1.1.0), без нього сайт не зможе записувати базу й бекапи. -
Перевірте:
curl -s https://school.example.ua/healthпоказує"version":"1.2.0";- внизу бокового меню адмін-панелі — «Версія 1.2.0»;
- сайт відкривається, в адмін-панель можна увійти.
Зміни в базі даних, потрібні новій версії, виконуються самі при її першому запуску.
Старі образи займають місце на диску. Після успішного оновлення їх можна прибрати — ця команда
видаляє образи, якими не користується жоден контейнер і які старші за тиждень (попередню версію
на випадок повернення pull за потреби завантажить знову):
docker image prune -af --filter "until=168h"Без -a (docker image prune -f) видаляються лише образи без назви — старі версії з номером
лишилися б на диску.
Не ставте :latest замість номера в APP_IMAGE: тоді будь-який pull оновить сайт, щойно
вийде нова версія, а не тоді, коли ви вирішили.
Якщо після оновлення щось зламалось — повернутися назад
Section titled “Якщо після оновлення щось зламалось — повернутися назад”Поверніть попередній номер версії:
cd /opt/tabula/appgit checkout v1.1.0nano .env # APP_IMAGE=ghcr.io/tabula-cms/tabula:1.1.0docker compose -f docker-compose.prod.yml pulldocker compose -f docker-compose.prod.yml run --rm --no-deps --user root app chown -R app:app /data /backupsdocker compose -f docker-compose.prod.yml up -dЗміни в базі даних назад не відкочуються: попередня версія працює з новішою базою, поки нова версія не прибрала з бази те, на що покладається стара. Якщо після повернення сайт усе одно не працює, відновіть бекап, зроблений перед оновленням (крок 2), — див. Бекапи і відновлення.
Опишіть, що саме зламалось, автору проєкту (див. SECURITY.md для
вразливостей і Issues проєкту для решти).