OpenHAB: Automatický backup do GITu

Eduard Štůla
3 min readNov 24, 2019

--

OpenHAB je populární open-source řešení domácího centra pro chytrou domácnost. Jedna z prvních věcí, kterou jsem řešil, byl backup. Jednou z doporučených možností je dělat pravidelný backup celého systému na USB flash disk. Já jsem chtěl navíc vyřešit geograficky nezávislý backup nastavení OpenHABU.

Pro upřesnění dodávám, že OpenHAB v ukázce využívá distribuci Openhabian.

Proč do GITu?

Možná to zní trochu divně používat GIT jako backup úložiště, ale má to hned několik výhod. Ty zásadní jsou: jednoduchost, geografická nezávislost, prakticky neomezené úložiště zdarma (bavíme se o zálohách čistě nastavení, které mají několik jednotek KB, ne celého systému).

Nemám jinde soukromý server, takže rsync by mi nepomohl. Propojovat GoogleDrive nebo OneDrive mi přišlo zase zbytečně složité.

Jak na to?

1. Vytvoříme si soukromý repozitář např. na Gilab.com

2. OpenHAB obsahuje šikovný nástroj, který udělá zálohu do jednoho .zip souboru všech Items, Sitemaps, Rules atd.

můžeme vyzkoušet z konzole spuštěním:

sudo openhab-cli backup

Vytvoří se .zip soubor v umístění /var/lib/openhab2/backups/. Velikost souboru je v řádu jednotek KB.

3. Inicializujeme GIT ve složce se zálohami.

Důležitý moment je změnit adresu repozitáře z gitlab.com na login:password@gitlab.com. Kde místo login vyplňte vaše přihlašovací jméno ke GitLabu a místo password heslo.

cd /var/lib/openhab2/backups/
git init
git remote add origin https://login:password@gitlab.com/login/openhab-gitlab-backup.git
git add .
git commit -m “Initial commit”
git config — global user.name “Your name”
git config — global user.email “your e-mail address”
git push -u origin master

Pokud se vše povedlo, měli bychom v GitLabu mít náš první vytvořený backup.

4. Vytvoříme jednoduchý bash script, který nám bude zálohy provádět “na zavolanou”

Vytvoříme soubor autobackup a uložíme si ho třeba k zálohám, tedy do složky /var/lib/openhab2/backups/. Bude obsahovat následující řádky:

Script nejdříve nechá udělat zálohu a následně ji commitne a pushne do GITu.

5. Automatické spouštění zálohy

K tomu využijeme jednoduchý nástroj CRON, který je součástí systému. Menší komplikací je, že openhab-cli potřebuje k vytvoření zálohy root práva (sudo). Proto musíme upravit crontab za roota. Každý uživatel má totiž vlastní crontab konfiguraci. To uděláme takto:

sudo crontab -e

… a přidáme řádek, který znamená, aby se náš script pouštěl každý den o půlnoci:

0 0 * * * sh /var/lib/openhab2/backups/autobackup > /dev/null 2>&1

Ukázka crontab

Díky tomu, že jsme na začátku zapsali remote-url ve tvaru login:password@gitlab.com, tak git nebude potřebovat zadávat při každé akci přihlašovací údaje.

V posledním kroku musíme nastavit jméno a e-mail do GITu. To jsme sice uždělali. Ale za sebe. Musíme ještě za uživatele root, jelikož i příkaz “git” se spouští za uživatele root. Jméno a e-mail jsi můžete vymyslet:

sudo git config — global user.name “openhab”
sudo git config — global user.email “openhab@opehnab.org”

Závěrem

Do budoucna mám v plánu ještě soubor rozbalit a verzovat jenom změny, aby repozitář nebyl plný zabalených souborů.

Výhodou celého řešení je, že až vám na barák spadne meteorit, můžete si postavit úplně stejný dům a nastavit si úplně stejně OpenHAB jako před tím :)

--

--