4.2. Instalace

Aplikaci Elza je možné nainstalovat dvěma způsoby:

  • Instalačními skripty (doporučeno pro Linux) - sada skriptů, která nainstaluje Elzu jako službu systemd a automatizuje nasazování nových verzí, zálohování databáze, kontrolu stavu a bezobslužné aktualizace.

  • Ručně z binární distribuce, v Linuxu nebo ve Windows.

Oba způsoby používají stejnou binární distribuci a stejný konfigurační soubor.

4.2.1. Instalace pomocí instalačních skriptů

Skripty a jejich dokumentace jsou publikovány na adrese https://get.lightcomp.com/elza/ (v angličtině). Vyžadují Linux se systemd, PostgreSQL včetně klientských nástrojů (pg_dump), bash a curl. Instalace se spouští příkazem:

curl -fsSL https://get.lightcomp.com/elza/elza-bootstrap.sh | bash -s -- --home /opt/elza

Bootstrap skript stáhne balík skriptů (ověřený kontrolním součtem) do adresáře /opt/elza/scripts, připraví konfigurační soubor elza-env a nainstaluje jednotky systemd. Po úpravě elza-env (minimálně připojení k databázi) se první nasazení provede příkazem elza-deploy.

Skripty poskytují tyto příkazy:

  • elza-deploy - instalace nebo aktualizace aplikace: zastaví službu, zazálohuje databázi, stáhne distribuci, atomicky přepne na novou verzi, spustí službu a ověří, že běží.

  • elza-backup - záloha databáze pomocí pg_dump s mazáním starých záloh.

  • elza-health - kontrola stavu aplikace a volitelné hlášení stavu dohledovému systému (viz Hlášení stavu dohledovému systému).

  • elza-update - bezobslužná aktualizace na novou verzi.

Databázi je i v tomto případě nutné připravit podle Příprava databáze. Konfigurace vlastní aplikace (elza.yaml) je popsána v kapitole Konfigurace aplikace.

4.2.2. Ruční instalace

Obsah distribuce

Binární distribuce je soubor ZIP, který obsahuje:

  • server/elza-tomcat-<verze>.jar - aplikaci s vloženým webovým serverem,

  • server/config/elza.yaml - vzorovou konfiguraci,

  • server/config/csc-metrics.json - seznam metrik předávaných dohledovému systému (viz Monitorování),

  • packages/ - základní balíčky: package-cz-base (číselníky) a rules-cz-zp2015 (pravidla popisu ZP2015),

  • data/all-institutions-import.xml - seznam akreditovaných archivů v České republice,

  • readme.txt - stručný přehled instalace.

Příprava databáze

  1. Vytvořte pro Elzu databázového uživatele, například elza. Pro přístup aplikace nepoužívejte účet superuživatele.

  2. Vytvořte prázdnou databázi, jejímž vlastníkem je tento uživatel:

    createdb -O elza -E UTF8 -l cs_CZ.UTF-8 -T template0 elza
    

    Locale určuje řazení textů prováděné databází. Použijte locale archivního popisu (pro české archivy češtinu); dostupná locale vypíše příkaz locale -a. Ve Windows je název například Czech_Czechia.1250. Locale nelze po vytvoření databáze změnit.

  3. Povolte v databázi rozšíření PostGIS. Vytvoření rozšíření vyžaduje práva superuživatele, proveďte je proto jako uživatel postgres:

    psql -U postgres -d elza -c "CREATE EXTENSION postgis;"
    

Tabulky vytvoří Elza při prvním spuštění.

Struktura adresářů

Elza potřebuje instalační a pracovní adresář, například:

  • /opt/elza/server - soubor JAR a config/elza.yaml,

  • /opt/elza/work - pracovní adresář.

Ve Windows například D:\Elza\server a D:\Elza\work.

Pro službu vytvořte samostatného uživatele operačního systému, který je vlastníkem pracovního adresáře a má k němu plná práva. V Linuxu je vhodné odkazovat na aktuální JAR symbolickým linkem, aby aktualizace změnila jen link: /opt/elza/server/elza-tomcat.jar -> elza-tomcat-3.4.7.jar.

Pracovní adresář obsahuje:

  • dms/ - binární soubory (přílohy, výstupy, publikace, importní dávky). Jeho strukturu spravuje Elza a nesmí se ručně upravovat; zálohuje se společně s databází (viz Zálohování a obnova).

  • dpkg/ - balíčky načítané při startu (viz Nahrání balíčků).

  • log/ - logy, pokud jsou nastaveny jako ve vzorové konfiguraci.

  • další pracovní data, která si Elza v případě potřeby znovu vytvoří.

Konfigurace

Zkopírujte server/config/elza.yaml do config/elza.yaml vedle souboru JAR a nastavte minimálně:

  • připojení k databázi (elza.data.url, elza.data.user, elza.data.pass),

  • pracovní adresář (elza.workingDir),

  • balíčky, které instalace používá (elza.packages.enabled, viz Nahrání balíčků).

elza:
  data:
    url: jdbc:postgresql://localhost/elza
    user: elza
    pass: tajne
  workingDir: /opt/elza/work
  logFile: ${elza.workingDir}/log/elza.log
  siemLogFile: ${elza.workingDir}/log/siem.log
  packages:
    enabled: [CZ_BASE, ZP2015]

Ostatní nastavení popisuje kapitola Konfigurace aplikace.

Spuštění jako služby

Před nastavením služby aplikaci jednou spusťte z instalačního adresáře a ověřte konfiguraci:

java -jar elza-tomcat.jar

Při prvním spuštění Elza vytvoří databázové schéma. Aplikace je připravena, jakmile log oznámí její spuštění; naslouchá na portu 8080.

Příklad jednotky systemd (/etc/systemd/system/elza.service):

[Unit]
Description=ELZA
After=network.target postgresql.service

[Service]
User=elza
WorkingDirectory=/opt/elza/server
ExecStart=/usr/bin/java -Xmx4g -Dfile.encoding=UTF-8 -jar /opt/elza/server/elza-tomcat.jar
SuccessExitStatus=143
Restart=on-failure

[Install]
WantedBy=multi-user.target

Velikost paměti (-Xmx) upravte podle dostupné paměti. Pracovním adresářem procesu musí být instalační adresář, aby byl nalezen soubor config/elza.yaml. Službu povolíte a spustíte příkazem systemctl enable --now elza. S Restart=on-failure funguje restart z administrace bez dalšího nastavení: aplikace skončí s návratovým kódem 3, po kterém ji jednotka spustí znovu (viz Konfigurace aplikace).

Ve Windows lze Elzu provozovat jako službu pomocí nástroje jako WinSW nebo NSSM, který spouští stejný příkaz java -jar. Viz také dokumentace Spring Boot k nasazení.

4.2.3. První spuštění

První administrátor

Dokud databáze neobsahuje žádného uživatele, zobrazí aplikace místo přihlášení dialog Úvodní nastavení. Ten založí prvního administrátora: uživatele s heslem a oprávněním administrátora.

Varování

Dokud první administrátor neexistuje, může jej založit kdokoli, kdo aplikaci otevře. Založte administrátora hned po prvním spuštění, ještě než aplikaci zpřístupníte v síti, nebo jej nastavte v konfiguraci (viz Uživatelé z konfigurace).

Po stisku Vytvořit administrátora se aplikace přihlásí jako nový administrátor. Heslo musí splňovat pravidla pro hesla (viz Autentizace a zabezpečení); po instalaci jsou všechna pravidla vypnutá.

První administrátor nemá přiřazenou osobu (archivní entitu), protože archivní entity vyžadují nejprve nahrané balíčky. Osobu lze přiřadit později v Administrace > Uživatelé > Upravit. Další uživatelé se zakládají obvyklým způsobem, s osobou.

Uživatelé z konfigurace

Uživatele lze nastavit také v konfiguraci, jako seznam uživatelských jmen a hesel v elza.security.override. Elza seznam uplatní při každém startu bez ohledu na to, zda databáze uživatele obsahuje:

  • Pokud uživatel tohoto jména neexistuje, založí se jako administrátor: uživatel bez osoby, s oprávněním administrátora a bez hesla v databázi. Na prázdné databázi se pak dialog Úvodní nastavení nezobrazí.

  • Pokud uživatel existuje, jeho heslo ani oprávnění v databázi se nemění; deaktivovaný uživatel se aktivuje.

Uvedený uživatel se přihlásí svým vlastním heslem (z databáze, pokud jej má) nebo heslem z konfigurace; stačí kterékoli z nich. Přihlášení heslem z konfigurace nevyžaduje změnu hesla a heslo z konfigurace neexpiruje. Uživatel si může heslo v aplikaci změnit; heslo z konfigurace platí dál, dokud je uživatel v seznamu uveden. Po odebrání uživatele ze seznamu platí jen jeho vlastní heslo - uživatel založený ze seznamu, který si heslo nikdy nenastavil, se nepřihlásí, dokud mu je nenastaví administrátor. Heslo z konfigurace nikdy neplatí pro výchozího uživatele.

elza:
  security:
    override:
      - username: jan.novak
        password: nejake-heslo
      - username: petr.svoboda
        password: jine-heslo

Klíč

Výchozí hodnota

Význam

elza.security.override[].username

(nenastaveno)

Uživatelské jméno.

elza.security.override[].password

(nenastaveno)

Heslo jako prostý text. Neukládá se do databáze; heslo, které nesplňuje pravidla pro hesla, se jen ohlásí varováním v logu aplikace.

Položka bez uživatelského jména nebo hesla, uživatel uvedený dvakrát nebo odstraněné klíče elza.security.admin.username / .password zastaví start s chybou. Pokud jednoho uživatele nelze uplatnit (například jeho jméno je jménem výchozího uživatele a výchozí uživatel je zapnutý), Elza zapíše chybu do logu, uplatní ostatní a nastartuje.

Každý start zapíše do logu aplikace varování pro každého uvedeného uživatele (samotné heslo se nikdy nezapisuje). Při nastaveném elza.siemLogFile zaznamená bezpečnostní auditní log, že je heslo z konfigurace aktivní (override_active), založení nebo aktivaci uživatele, chybu a každé přihlášení heslem z konfigurace (authentication_type OVERRIDE); viz Autentizace a zabezpečení.

Varování

Heslo je uloženo jako prostý text a platí vedle vlastního hesla uživatele. Jakmile položku nepotřebujete, například po prvním startu, odstraňte ji z elza.yaml.

Výchozí uživatel

Nová instalace je přístupná také pod vestavěným výchozím uživatelem (admin s heslem admin), který má oprávnění administrátora; tlačítko Přihlásit dialogu Úvodní nastavení pro něj otevře přihlašovací formulář. Použijte jej jen k vytvoření účtů administrátorů, poté jej vypněte volbou elza.security.allowDefaultUser: false a aplikaci restartujte. Dokud je výchozí uživatel zapnutý, nemůže se první administrátor jmenovat admin. Viz Autentizace a zabezpečení.

Nahrání balíčků

Elza potřebuje číselníky a pravidla popisu z balíčků v adresáři packages/. Doporučeným způsobem je zkopírovat soubory ZIP do podadresáře dpkg/ pracovního adresáře: při každém startu Elza nahraje z tohoto adresáře každý balíček, jehož verze je vyšší než verze již nahraného balíčku. Aktualizace pak jen nahradí soubory v dpkg/ spolu se souborem JAR.

Které balíčky adresáře instalace používá, určuje elza.packages.enabled, seznam kódů balíčků. Při každém startu Elza nahraje z dpkg/ balíčky, které jsou již naimportované, a balíčky uvedené v seznamu, spolu s balíčky, na kterých závisejí; ostatní soubory adresáře ponechá beze změny. Balíček, který nová verze Elzy přidá do packages/, se proto do existující instalace nenaimportuje, pokud není v seznamu uveden. Distribuce obsahuje:

  • CZ_BASE - popis entit podle českého CAM a sdílené číselníky; vyžaduje jej ZP2015,

  • ZP2015 - česká pravidla popisu,

  • ISAAR_CPF - popis entit podle mezinárodního standardu ISAAR(CPF), v angličtině; pro instalace mimo českou praxi nebo vedle CZ_BASE,

  • ISADG - archivní popis souborů podle mezinárodního standardu ISAD(G), v angličtině; pro původce a přístupová místa potřebuje ISAAR_CPF. Viz uživatelská příručka.

Klíč nastavte před prvním startem. Na prázdné databázi bez klíče Elza naimportuje všechny balíčky adresáře. Log startu uvádí naimportované a přeskočené balíčky.

Poznámka

Pokud dpkg/ obsahuje starší verzi balíčku, než je verze již nahraná, aplikace nenastartuje. Starý soubor odstraňte.

Administrace > Správa balíčků (viz Správa balíčků) uvádí balíčky z dpkg/, které nejsou nahrané, a co s každým z nich udělá příští start. Načíst při příštím startu balíček označí: značkou je záznam balíčku bez obsahu a příští start soubor naimportuje (s balíčky, které vyžaduje). Zrušit označení značku odstraní. Stránka pak připomene, že je potřeba restart, a nabídne Restartovat aplikaci: aplikace skončí s návratovým kódem elza.restart.exitCode (výchozí 3) a správce služeb ji spustí znovu; bez správce služeb se jen zastaví (viz Konfigurace aplikace).

Balíčky tam lze také přímo naimportovat; naimportovaný balíček se pak aktualizuje z dpkg/ jako ostatní a vyhledávací index zaregistruje pole jeho nových typů prvků po restartu. Balíček tam smazaný zůstane při příštím startu smazaný, pokud jej klíč neuvádí.

Import institucí

Seznam archivů naimportujte ze souboru data/all-institutions-import.xml volbou Import rejstříkových hesel v modulu Archivní entity.

Další kroky