> Źródło: https://redai.pl/dev/jak-instancja-pobiera-i-instaluje-moduly/ (dokumentacja modułów portalu redAi). Cała dokumentacja w jednym pliku: https://redai.pl/dev/moduly.md

## Jak instancja pobiera i instaluje moduły

**Katalog.** Każda instancja raz dziennie pyta redai.pl o katalog: jakie moduły może zainstalować i jakie są najnowsze zaakceptowane wersje. Administrator może zapytać od razu przyciskiem **„Sprawdźcie teraz”** w **Administracja › Moduły** (pasek „Katalog modułów redAi” nad listą). Przy okazji instancja zgłasza, które moduły ma i w jakich wersjach, dlatego na koncie developera widzicie, gdzie stoi która wersja.

**Instalacja.** Instancja nigdy nie instaluje nowego modułu sama. Administrator wybiera moduł z katalogu (moduły redAi w swoich kategoriach, moduły innych autorów w kategorii „Moduły innych developerów”) i klika instaluj. Instancja:

1. pobiera paczkę i sprawdza jej sumę kontrolną,
2. rozpakowuje ją obok i sprawdza manifest (klucz, wersja),
3. odkłada obecny folder modułu jako kopię i wstawia nowy na jego miejsce,
4. uruchamia migracje, jeśli moduł jest włączony,
5. odświeża skille czatu i widoki.

Świeżo zainstalowany moduł jest wyłączony, dopóki administrator go nie włączy i nie wybierze, kto ma dostęp.

**Aktualizacja.** Karta modułu w Modułach ma kartę „Wersja”: numer, lista zmian, źródło i przycisk „Zaktualizujcie do X”. Aktualizacja idzie tą samą drogą co instalacja. Poprzednia wersja zostaje jako kopia (instancja trzyma dwie ostatnie). **Jeśli cokolwiek pójdzie źle** (migracja, błąd przy starcie), instancja sama wraca do poprzedniej wersji i pokazuje błąd administratorowi.

**Wymuszone aktualizacje.** Wydanie wchodzi na instancję samo, bez klikania administratora, gdy:

- moduł jest prywatny i już zainstalowany (każda zaakceptowana wersja wchodzi sama na instancje z listy), albo
- redAi oznaczy wydanie jako wymuszone (np. poprawka bezpieczeństwa w module publicznym).

Wymuszona aktualizacja wchodzi przy najbliższym sprawdzeniu katalogu. Gdy trzeba szybciej, możemy z naszej strony kazać instancjom sprawdzić katalog od razu: instancja przyjmuje sygnał od ręki i aktualizuje się w tle, nowa wersja jest widoczna na koncie po chwili. Jeśli potrzebujecie tego dla swojego modułu, napiszcie do nas.

**Przywrócenie.** W karcie „Wersja” administrator ma przycisk „Przywróćcie X”, który cofa moduł do poprzedniej wersji (dane zostają, migracji nie cofamy). Wersja cofnięta w ten sposób nie wgra się już sama, nawet jeśli jest wymuszona albo moduł jest prywatny. Administrator wgra ją przyciskiem „Zaktualizujcie do X”, a każde **nowsze** wydanie znowu wejdzie automatycznie. Jeśli ktoś cofnął Wasz moduł, poprawcie błąd i wydajcie wyższą wersję.

Moduły położone ręcznie w `narzedzia/` (bez katalogu) działają dalej, ale nie dostają aktualizacji z katalogu.

