dzielę się instrukcją uruchomienia sd4linux na mikrotiku.
Postaram się to opisać najprościej jak umiem, wspomagając się w niektórych przypadkach Gemini.
To co na start jest potrzebne to:
1. **Router MikroTik** z architekturą ARM / ARM32 (np. seria RB3011, RB4011, hAP ac3, hAP ax2) oraz oprogramowaniem RouterOS (v7.6 lub nowsze z obsługą kontenerów).
2. Podłączony **pendrive/dysk USB** do routera (sformatowany w systemie ext4).
3. Pobrany i zainstalowany darmowy program **Docker Desktop** na Windows.
Po działaniu Mikrotika ponad 2 doby widzę takie zużycia:
CPU Usage - 3%
Memory Current - 2488 KiB
App Size - 61.8 MiB
Kanały są cały czas dostępne, bez żadnego zamulania samego routera. Mam testowo aktywne 8 urządzeń.
Całość wykonywałem na wersji v7.24
## KROK 1: Przygotowanie środowiska na komputerze (Windows)
Aby kontener zadziałał na routerze MikroTik z procesorem ARM, musimy go najpierw zbudować na komputerze, używając tzw. kompilacji skrośnej (cross-compilation).
1. Zainstaluj i uruchom **Docker Desktop** (w lewym dolnym rogu aplikacji musi świecić się na zielono status *Engine running*).
2. Otwórz menu Start, wpisz **PowerShell**, kliknij prawym przyciskiem myszy i wybierz **Uruchom jako administrator**.
3. Utwórz folder roboczy i przejdź do niego, wklejając:
Code: Select all
mkdir C:\supla
cd C:\supla## KROK 2: Wygenerowanie pliku Dockerfile i kompilacja (PowerShell)
Wklej w PowerShell poniższą bardzo długą linię (w całości!) i zatwierdź **Enter**. Skrypt ten automatycznie stworzy odpowiedni plik `Dockerfile` z łatkami kompatybilności.
Code: Select all
[System.IO.File]::WriteAllBytes("C:\supla\Dockerfile", [System.Convert]::FromBase64String("RlJPTSBkZWJpYW46YnVsbHNleWUtc2xpbSBBUyBidWlsZGVyClJVTiBkcGtnIC0tYWRkLWFyY2hpdGVjdHVyZSBhcm1oZiAmJiBcCiAgICBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgXAogICAgY3Jvc3NidWlsZC1lc3NlbnRpYWwtYXJtaGYgXAogICAgY21ha2UgXAogICAgZ2l0IFwKICAgIGxpYnNzbC1kZXY6YXJtaGYgXAogICAgbGlieWFtbC1jcHAtZGV2OmFybWhmIFwKICAgIGNhLWNlcnRpZmljYXRlcyBcCiAgICBwZXJsCgpSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9TVVBMQS9zdXBsYS1kZXZpY2UuZ2l0IC90bXAvc3VwbGEtZGV2aWNlICYmIFwKICAgIGZpbmQgL3RtcC9zdXBsYS1kZXZpY2UvIC10eXBlIGYgLW5hbWUgIkNNYWtlTGlzdHMudHh0IiAtZXhlYyBzZWQgLWkgJ3MvQ1hYX1NUQU5EQVJEIDIzL0NYWF9TVEFOREFSRCAyMC9nJyB7fSArICYmIFwKICAgIHBlcmwgLWkgLXBlICdzfCNpbmNsdWRlIDx5YW1sLWNwcC95YW1sLmg+fCNpbmNsdWRlIDx5YW1sLWNwcC95YW1sLmg+XG4jaW5jbHVkZSA8c3RyaW5nX3ZpZXc+XG5uYW1lc3BhY2UgWUFNTCB7IHRlbXBsYXRlPD4gc3RydWN0IGNvbnZlcnQ8c3RkOjpzdHJpbmdfdmlldz4geyBzdGF0aWMgTm9kZSBlbmNvZGUoY29uc3Qgc3RkOjpzdHJpbmdfdmlldyYgcmhzKSB7IHJldHVybiBOb2RlKHN0ZDo6c3RyaW5nKHJocykpOyB9IHN0YXRpYyBib29sIGRlY29kZShjb25zdCBOb2RlJiBub2RlLCBzdGQ6OnN0cmluZ192aWV3JiByaHMpIHsgaWYgKCFub2RlLklzU2NhbGFyKCkpIHJldHVybiBmYWxzZTsgcmhzID0gbm9kZS5TY2FsYXIoKTsgcmV0dXJuIHRydWU7IH0gfTsgfXxnJyAvdG1wL3N1cGxhLWRldmljZS9leHRyYXMvcG9ydGluZy9saW51eC9saW51eF95YW1sX2NvbmZpZy5oICYmIFwKICAgIGNkIC90bXAvc3VwbGEtZGV2aWNlL2V4dHJhcy9leGFtcGxlcy9saW51eCAmJiBcCiAgICBta2RpciBidWlsZCAmJiBjZCBidWlsZCAmJiBcCiAgICBjbWFrZSAuLiBcCiAgICAgIC1EQ01BS0VfU1lTVEVNX05BTUU9TGludXggXAogICAgICAtRENNQUtFX1NZU1RFTV9QUk9DRVNTT1I9YXJtIFwKICAgICAgLURDTUFLRV9DX0NPTVBJTEVSPWFybS1saW51eC1nbnVlYWJpaGYtZ2NjIFwKICAgICAgLURDTUFLRV9DWFhfQ09NUElMRVI9YXJtLWxpbnV4LWdudWVhYmloZi1nKysgJiYgXAogICAgbWFrZSAtaiQobnByb2MpCgpGUk9NIC0tcGxhdGZvcm09bGludXgvYXJtL3Y3IGRlYmlhbjpidWxsc2V5ZS1zbGltClJVTiBkcGtnIC0tYWRkLWFyY2hpdGVjdHVyZSBhcm1oZiAmJiBcCiAgICBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgXAogICAgbGlic3NsMS4xOmFybWhmIFwKICAgIGxpYnlhbWwtY3BwMC42OmFybWhmIFwKICAgIGNhLWNlcnRpZmljYXRlcyBcCiAgICAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkNPUFkgLS1mcm9tPWJ1aWxkZXIgL3RtcC9zdXBsYS1kZXZpY2UvZXh0cmFzL2V4YW1wbGVzL2xpbnV4L2J1aWxkL3N1cGxhLWRldmljZS1saW51eCAvdXNyL2xvY2FsL2Jpbi9zZDRsaW51eAoKRU5UUllQT0lOVCBbIi91c3IvbG9jYWwvYmluL3NkNGxpbnV4IiwgIi1jIiwgIi9ldGMvc3VwbGEtZGV2aWNlL3N1cGxhLWRldmljZS55YW1sIl0K"))Następnie zbuduj i wyeksportuj obraz wpisując kolejno (po każdej linijce wciśnij Enter):
Code: Select all
docker build -t sd4linux:arm32 --load .
docker save -o sd4linux.tar sd4linux:arm32---
## KROK 3: Przygotowanie sieci i pamięci na MikroTiku
Uruchom program WinBox, zaloguj się do MikroTika i otwórz terminal (przycisk **New Terminal**).
1. Włącz obsługę kontenerów w RouterOS (jeśli nie jest włączona). Wymaga fizycznego potwierdzenia resetem prądu lub guzikiem na routerze:
Code: Select all
/system/device-mode/update container=yesCode: Select all
/interface/veth/add name=veth-supla address=192.168.88.250/24 gateway=192.168.88.1
/interface/bridge/port/add bridge=bridge interface=veth-suplaCode: Select all
/container/mounts/add name=supla_cfg src=/usb1/supla/config dst=/etc/supla-device
/container/mounts/add name=supla_data src=/usb1/supla/data dst=/root/.supla-device---
## KROK 4: Wgranie obrazu kontenera na MikroTika
1. W WinBoxie po lewej stronie kliknij zakładkę **Files**.
2. Otwórz na komputerze katalog `C:\supla`.
3. Metodą "przeciągnij i upuść" przenieś plik `sd4linux.tar` z Windowsa prosto do katalogu `usb1/supla/` w WinBox.
4. Gdy transfer dobiegnie końca, wklej w terminalu MikroTika komendę dodającą kontener:
Code: Select all
/container/add file=usb1/supla/sd4linux.tar interface=veth-supla root-dir=usb1/supla/root mountlists=supla_cfg,supla_data logging=yes5. Rozpakowywanie archiwum potrwa trochę czasu. Sprawdź status komendą:
Code: Select all
/container/print---
## KROK 5: Utworzenie pliku konfiguracyjnego YAML
Zanim uruchomisz aplikację, przygotuj plik konfiguracyjny z danymi ze swojego konta Supla Cloud. Wklej w terminalu MikroTika (podmieniając adres e-mail i nazwę serwera!):
Code: Select all
/file/set [find name="usb1/supla/config/supla-device.yaml"] contents="name: MikroTik_Router
log_level: debug
state_files_path: "/root/.supla-device"
security_level: 2
supla:
server: svr83.supla.org
mail: [email protected]
channels:
- type: VirtualRelay
name: "Wirtualny Przelacznik WoL"
"---
## KROK 6: Start i rejestracja urządzenia
1. Zaloguj się na swoje konto na stronie [cloud.supla.org](https://cloud.supla.org).
2. Sprawdź czy kłódka u góry strony świeci się na zielono (**Rejestracja urządzeń: Włączona**).
3. W terminalu MikroTika uruchom kontener:
Code: Select all
/container/start [find root-dir~"supla/root"]Code: Select all
/log/print follow where topics~"container"