Účetní systém Flexi/Flexibee společnosti ABRA používám řadu let. Od nasazení ve virtuálním serveru až po kontejnery Docker nebyl s instalací ani upgradem žádný problém.
To se změnilo s verzí 2023.3. Vydavatel v popisu změn poukazuje na aktualizaci databázového systému na serverech s operačním systémem linux. Nicméně to není jediná důležitá změna. Tou druhou je potřeba systemd. Pokud chceme používat předchozích verze, nemusí být tato podmínka splněna. Systemd ale nelze momentálně spustit v běžném kontejneru Docker.
Bohužel ani rok po vydání Ubuntu 22.04 není provoz databázového systému na této verzi Ubuntu možná. Důvodů je několik:
- Podporovaná Java verze 8, proklamovaná možnost instalace s Java 11 není bohužel možná a nelze ji provést;
- databázový systém Postgresql 10 – 13, instalovaná verze 14 není s Flexibee kompatibilní.
A protože používám Docker, strávil jsem nad řešením problémů s instalací celou noc.
Můj popis instalace nebude nikterak obsáhlý. Případným zájemcům však může ukázat cestu a ušetřit drahocenný čas.
Hostitelský linux
Místo upgrade, který nefunguje, jsem zvolil novou instalaci. To ze dvou důvodů: postgresql < 14, jre = 8.
Aby bylo možné v kontejneru provozovat systemd, je potřeba startovat jádro hostitelského systému (v mém případě Arch Linux) s parametrem systemd.unified_cgroup_hierarchy=0. Pokud používáme GRUB, je nastavení jednoduché:
1 |
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 systemd.unified_cgroup_hierarchy=0" |
Po spuštění grub-mkconfig -o /boot/grub/grub.cfg
restartujeme Ubuntu.
Docker kontejner Ubuntu 20.04
Jako obraz Ubuntu se systemd je možné použít jrei/systemd-ubuntu.
1 |
docker run -it --name flexibee --cgroupns=host --tmpfs /tmp --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup -p 5434:5434 jrei/systemd-ubuntu:20.04 |
Kontejner se bude jmenovat flexibee. Po jeho vytvoření zůstane spuštěn na popředí. Proto je vhodné otevřít druhý terminál pro pokračování v instalaci.
Spuštění kontejneru provádíme příkazem docker start flexibee
, vypnutí příkazem docker stop flexibee
.
Instalace závislostí a nastavení prostředí
Ve druhém terminálu se připojíme ke kontejneru flexibee:
1 |
docker exec -it flexibee /bin/bash |
Při instalaci balíčku Flexibee dojde k instalaci potřebných závislostí, nicméně je potřeba provést nastavení prostředí – lokalizaci.
1 2 |
apt update apt install wget dialog locales vim |
V souboru /etc/locale.gen povolíme cs_CZ.UTF-8 a změny zapíšeme:
1 2 3 4 5 6 |
locale-gen export LC_ALL=cs_CZ.UTF-8 export LANG=cs_CZ.UTF-8 export LANGUAGE=cs_CZ.UTF-8 update-locale "LANG=cs_cz.utf-8 LANGUAGE=cs_CZ.UTF-8 LC_ALL=cs_CZ.UTF-8" dpkg-reconfigure locales |
Nyní je potřeba se z kontejneru odhlásit a znovu přihlásit.
Instalace Flexibee
V kontejneru je po přihlášení nutné ručně stáhnout instalační balíček a provést jeho instalaci:
1 2 |
wget https://download.flexibee.eu/download/2023.3/2023.3.0/flexibee_2023.3.0_all.deb apt install ./flexibee_2023.3.0_all.deb |
Bude staženo a nainstalováno opravdu velké množství závislostí, které ale pro provoz serveru potřeba nebudou.
Po instalaci Flexibee se bohužel nezobrazil dialog pro výběr typu provozovaná instance, a proto je v souboru /etc/default/flexibee nutné nastavit FLEXIBEE_CFG=server
.
Po restartu kontejneru by měl server fungovat bez problému.
Pokud se provádí obnova zálohy, je nutné nejdříve nainstalovat verzi Flexibee, ve které byla záloha provedena, až následně poslední dostupnou verzi Flexibee.
Bash aliasy pro ovládání
Pro jednodušší ovládání z příkazové řádky jsem si vytvořil aliasy. Jejich nastavení se provádí v souboru ~/.bashrc:
1 2 3 |
alias flexibee_bash='docker exec -it flexibee /bin/bash' alias flexibee_docker_start='docker start flexibee' alias flexibee_docker_stop='docker stop flexibee' |
Závěr
Jak už to bývá, popis vypadá poměrně jednoduše, ale dopracování se k funkční instalaci trvalo jednu bezesnou noc. Tak snad to někomu pomůže…