Aktualizacja#

vCLU zainstalowany przez install.sh (usługa systemd) aktualizujesz jedną komendą:

curl -sSL https://raw.githubusercontent.com/Domktorymysli/vclu/main/deploy/update.sh | sudo bash

Bez podawania wersji skrypt instaluje najnowsze wydanie z releases. Jeśli ta wersja już działa, kończy się komunikatem Already up to date. i niczego nie zmienia. Gdy poprzednia aktualizacja się nie udała i usługa stoi, instaluje tę wersję jeszcze raz.

Konkretna wersja (np. żeby wrócić do poprzedniej):

curl -sSL https://raw.githubusercontent.com/Domktorymysli/vclu/main/deploy/update.sh | sudo bash -s -- --version v1.3.0

Zainstalowaną wersję sprawdzisz tak:

/opt/vclu/vclu -version

Co robi update.sh#

  1. Sprawdza, czy są curl, tar i gzip. Jeśli czegoś brakuje, kończy się, zanim cokolwiek zmieni, i podpowiada sudo apt-get install -y ....
  2. Odczytuje z usługi systemd katalog instalacji, katalog danych i port panelu. Aktualizacja ich nie zmienia (ponowne uruchomienie instalatora ustawiłoby port 8080).
  3. Pobiera wydanie dla architektury urządzenia (amd64, arm64, armv7, armv6).
  4. Zatrzymuje vCLU i robi kopię zapasową (niżej).
  5. Uruchamia install.sh z wydania: podmienia program, pliki panelu i runtime Lua, zapisuje usługę i ją uruchamia.

Dane (konfiguracja, skrypty Lua, pluginy, historia) zostają na miejscu. Instalator nadpisuje tylko dołączoną dokumentację dla AI w data/clu/docs/ai/.

Kopia zapasowa#

Przed instalacją skrypt pakuje do /opt/vclu/backup-<wersja>-<data>.tar.gz:

W archiwumCo to jest
vclu, web/, runtime/poprzedni program, panel i runtime Lua
vclu.serviceplik usługi systemd
data/konfiguracja (.vclu.json, profile dostępu, klucze), moduły Lua, importy OM, pluginy, KV, parowanie HomeKit

Historia, metryki i kopie zapasowe robione przez sam vCLU (z panelu i przy wdrażaniu modułów) nie trafiają do archiwum (są duże). Archiwum może czytać tylko root, bo konfiguracja zawiera hasła i klucze. Zostają trzy najnowsze archiwa; starsze są usuwane dopiero po udanej aktualizacji.

Jeśli spakowanie się nie uda (np. brak miejsca na karcie), skrypt usuwa niepełne archiwum, uruchamia vCLU z powrotem i przerywa przed instalacją.

Powrót do poprzedniej wersji#

Gdy instalacja się nie uda, skrypt wypisuje gotowe komendy. Ręcznie wygląda to tak:

sudo systemctl stop vclu
cd /opt/vclu && sudo rm -rf web runtime
sudo tar -xzf /opt/vclu/backup-1.3.0-20261015-161230.tar.gz -C /opt/vclu vclu web runtime
sudo tar -xzf /opt/vclu/backup-1.3.0-20261015-161230.tar.gz -C /etc/systemd/system vclu.service
sudo systemctl daemon-reload
sudo systemctl start vclu

Można też po prostu zainstalować poprzednią wersję: ... | sudo bash -s -- --version <poprzednia>.

Konfiguracja z archiwum przydaje się, gdy nowa wersja coś w niej zmieniła. Wypakuj ją obok i porównaj, zanim nadpiszesz:

mkdir /tmp/vclu-restore
sudo tar -xzf /opt/vclu/backup-1.3.0-20261015-161230.tar.gz -C /tmp/vclu-restore data

Zmieniona usługa systemd#

install.sh zapisuje usługę od nowa z szablonu. Jeśli /etc/systemd/system/vclu.service był zmieniony ręcznie (inny interfejs, inny katalog danych), update.sh zatrzyma się i pokaże różnicę, zamiast ją po cichu cofnąć. Własne ustawienia trzymaj w pliku nakładki, którego instalator nie rusza:

sudo systemctl edit vclu

Opcja --force aktualizuje mimo to (kopia starej usługi jest w archiwum). Ta sama opcja instaluje ponownie wersję, która już działa.

Docker#

W Dockerze aktualizacja to nowy obraz; dane są w wolumenie:

docker pull ghcr.io/domktorymysli/vclu:latest
docker rm -f vclu
docker run -d --name vclu --network host -v vclu-data:/data ghcr.io/domktorymysli/vclu:latest

Po aktualizacji#

  • Co się zmieniło: opis wydania w releases i CHANGELOG.md.
  • Logi startu: sudo journalctl -u vclu -n 100.
  • Jeśli opis wydania mówi o ponownym imporcie pliku OM (np. nowe cechy obiektów Grentona), zaimportuj go ponownie w panelu.