Linux - systemd
Możliwa jest także instalacja i zarządzanie aplikacją za pomocą serwisu systemd. Jest to preferowana metoda, jeśli uruchamiamy aplikację za pomocą Podman'a.
Wymagania systemowe
- Docker
- Podman
Analogicznie jak w przypadku instalacji z użyciem Docker Compose wymagany jest zainstalowany Docker Engine zgodnie z oficjalną dokumentacją.
Wymagany jest zainstalowany Podman zgodnie z oficjalną dokumentacją.
Należy się upewnić, że zainstalowany Podman jest w wersji 4.0.0 lub wyższej:
podman --version
Załadowanie obrazów
W przypadku używania Podman, zastąp poniższe wywołania komendy docker
komendą podman
.
Najnowsze obrazy są dostępne na publicznym docker registry: downloads.traptech.pl
W celu pobrania obrazu z wykorzystaniem registry należy wykonać polecenie:
docker pull downloads.traptech.pl/trapinit:0.17.2
Po poprawnym wykonaniu polecenia, obraz o nazwie downloads.traptech.pl/trapinit:0.17.2
będzie dostępny
na lokalnej maszynie.
Pamiętaj o podaniu poprawnej wersji, aktualną najnowszą wersję możesz sprawdzić na downloads.traptech.pl
Ładowanie obrazów offline
Jeśli maszyna na której chcemy uruchomić aplikację nie ma dostępu do internetu, możemy
ręcznie ściągnąć spakowany obraz .tar.gz
ze strony downloads.traptech.pl.
Następnie, po przekopiowaniu paczki w dowolny sposób na docelową maszynę (np. za pomocą scp
), możemy załadować
obraz następującymi komendami:
docker load -i TrapInit-docker-v0.17.2.tar.gz
docker image tag downloads.traptech.pl/trapinit:0.17.2 trapinit:0.17.2
Uruchomienie
Po poprawnym załadowaniu obrazów należy stworzyć plik z konfiguracją oraz nowy serwis systemd.
Plik z konfiguracją
Tworzymy nowy plik w ścieżce /etc/trapinit/config.env
:
InitialConfig__Admin__Login=admin
InitialConfig__Admin__Password=<losowe hasło admina>
JwtSettings__SecretKey=<losowy ciąg znaków>
PublicUrl=https://my-domain.pl/
HttpsSettings__Mode=SelfSigned
Należy pamiętać o odpowiednim uzupełnieniu JwtSettings__SecretKey
, InitialConfig__Admin__Password
i PublicUrl
.
JwtSettings__SecretKey
musi mieć odpowiednią długość (przynajmniej 32 znaki).
InitialConfig__Admin__Password
jest potrzebny tylko do pierwszego logowania - po czym hasło administratora
można zmienić w UI aplikacji, a tą wartość konfiguracyjną usunąć z docker-compose.yml
.
PublicUrl
musi określać adres, pod jakim będzie otwierania aplikacja. Ustawienie to określa w jaki sposób
będą z aplikacją komunikowały się sensory. Może to być poprawny adres HTTP jeśli skonfigurowaliśmy DNS, lub
adres IP (np. https://10.10.102.100/
).
Powyższy przykładowy plik docker-compose.yml
zawiera minimum opcji, aby aplikacja uruchomiła się poprawnie.
Pełną listę opcji konfiguracyjnych znajdziemy tutaj
Serwis systemd
Tworzymy nowy plik na podstawie poniższego przykładu.
Jeśli serwis ma być określony dla całego systemu, umieszczamy go w /etc/systemd/system/trapinit.service
Jeśli serwis ma być określony dla specyficznego użytkownika, umieszczamy go w ~/.config/systemd/user/trapinit.service
.
Należy wtedy pamiętać o dodawaniu flagi --user
do podanych wywołań systemctl
.
- Docker
- Podman
[Unit]
Description=TrapInit management panel
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
Restart=always
ExecStartPre=-/usr/bin/docker exec %n stop
ExecStartPre=-/usr/bin/docker rm %n
ExecStartPre=-/usr/bin/docker volume create %n
ExecStart=/usr/bin/docker run --rm --name %n \
-v %n:/data \
-p 80:80 \
-p 443:443 \
--env-file /etc/trapinit/config.env \
downloads.traptech.pl/trapinit:0.17.2
[Install]
WantedBy=default.target
[Unit]
Description=TrapInit management panel
[Service]
TimeoutStartSec=0
Restart=always
ExecStartPre=-/usr/bin/podman exec %n stop
ExecStartPre=-/usr/bin/podman rm %n
ExecStartPre=-/usr/bin/podman volume create %n
ExecStart=/usr/bin/podman run --rm --name %n \
-v %n:/data \
-p 80:80 \
-p 443:443 \
--env-file /etc/trapinit/config.env \
downloads.traptech.pl/trapinit:0.17.2
[Install]
WantedBy=default.target
Następnie, wykonujemy systemctl daemon-reload
, aby załadować do systemd nowo utworzony serwis.
Na koniec uruchamiamy serwis za pomocą systemctl enable --now trapinit.service
.
Po tej operacji instancja powinna być gotowa do użytku.