Obsah

Konfigurácia NixOS

Zálohovanie servera

Poskytujeme centralizované zálohovacie úložisko pre používateľov AIS Curo a návod ako nastaviť zálohovanie vlastného NixOS servera na NAS zariadenie.

Databáza AIS Curo umožňuje vytvorenie zálohy bez nutnosti vypnúť program. Dokumenty do nej pribúdajú a zneplatňujú sa, čo vytvára optimálne podmienky pre tzv. prírastkové zálohovanie. Takéto zálohy v objeme narastajú predvídateľným a pomalým tempom. Je možné z nich obnoviť stav k rôznym dátumom podľa rotačnej schémy.

Tento typ zálohy sa odporúča aj v prípade konfigurácie so záložným serverom. Replikácia databázy prenáša všetky zmeny a pokiaľ teda nastane chybné zmazanie alebo zmena údajov (z dôvodu softwarovej chyby alebo obsluhy), tak sa tieto zmeny zreplikujú v reálnom čase a nie je spôsob ako sa vrátiť k pôvodným dátam.

Vytvoríš a upravíš súbor: /etc/nixos/backup.nix

{ config, pkgs, ... }:

{
  imports =
    [
    ];

  # start backup manually: systemctl start curomd-backup-task  
  # check log: journalctl -fu curomd-backup-task.service
  
  systemd.services.curomd-backup-task = {
    serviceConfig.Type = "oneshot";
    path = with pkgs; [ bash ];
    environment = { LANG = "C"; HOME="/root"; TMPDIR="/tmp"; };
    script = ''
      bash /opt/curo/backup.sh
    '';
  };
  systemd.timers.curomd-backup-task = {
    wantedBy = [ "timers.target" ];
    partOf = [ "curomd-backup-task.service" ];
    timerConfig = {
      OnCalendar = "*-*-* 21:00:00";
      Unit = "curomd-backup-task.service";
    };
  };
}

Obsah súboru /opt/curo/backup.sh je potrebné upraviť pre konkrétne prostredie. V prípade používania platenej zálohovacej služby Curo vyzerá jeho obsah takto:

#!/usr/bin/env sh

INSTID=<cislo Curo licencie>
ZALOHOVACI_KLUC=<zalohovaci kluc opravnujuci pouzivanie zal. sluzby Curo>

# aktualizacia programu
/opt/curo/curo-backup self-update

# zaloha dokumentov
/opt/curo/curo-backup backup -q /var/lib/curo-${INSTID}/storage --from-hash "${ZALOHOVACI_KLUC}" 

# zaloha databazy
/opt/curo/curo-backup backup -q /var/lib/curo-${INSTID} --from-hash "${ZALOHOVACI_KLUC}"

Vyššie použitý program curo-backup je modifikovaná verzia nástroja Restic, ktorá vie identifikovať súbory, ktoré je potrebné zálohovať pre účely AIS Curo.

V prípade, že chceš zálohovať systém na lokálne riešenie, môžeš použiť ľubovolný zálohovací nástroj, prípadne vytvoriť Restic kompatibilné úložisko podľa návodu v ich dokumentácii.

Aj pri použití vlastného zálohovacieho riešenia odporúčam vytvoriť vyššie uverený /etc/nixos/backup.nix a len modifikovať obsah súboru /opt/curo/backup.sh.

Čo zálohovať?

Doplnková služba centralizovaného zálohovania na naše servre je realizovaná programom curo-backup, ktorý analyzuje, ktoré adresáre je potrebné zálohovať v závislosti od spôsobu inštalácie Curo.

Táto stránka sa venuje inštalácii CuroMD v prostredí NixOS. Zálohovať je potrebné:

Informáciu, kde sa tieto adresáre nachádzajú nájdeš na stŕake O Curo.

Aj bez objednania služby centralizovaného zálohovania je možné využiť program curo-backup na získanie zoznamu adresárov, ktoré je potrebné zálohovať.

# stiahneme curo-backup
sudo -i
curl -L https://dl.curo.sk/curo-backup/linux/curo-backup -O /opt/curo/curo-backup
chmod +x /opt/curo/curo-backup

# po prvom stiahnuti mozeme aktualizovat program prikazom
sudo /opt/curo/curo-backup self-update

# ako ziskame zoznam adresarov urcenych na zalohovanie
export INSTID=XXXXX
/opt/curo/curo-backup what /var/lib/curo-a${INSTID} --inst-id ${INSTID}

Zoznam vrátený príkazom curo-backup what je optimálny, čo sa týka veľkosti vzniknutých záloh. Vo všeobecnosti sa odporúča zálohovať v prostredí NixOS nasledovné:

/var/lib/couchdb/_dbs.couch
/var/lib/couchdb/_nodes.couch
/var/lib/couchdb/shards
/var/lib/curo-aXXXXX/storage
/var/lib/curo-aXXXXX/binstore-files
/var/lib/curo-aXXXXX/blo-recovery
/var/lib/curo-aXXXXX/config-pzs
/var/lib/curo-aXXXXX/curo-md.config.js
/var/lib/curo-aXXXXX/curo-md.config.json
/var/lib/curo-aXXXXX/curomd.config.js
/var/lib/curo-aXXXXX/ez-recovery
/var/lib/curo-aXXXXX/memoize/blo-elab
/var/lib/curo-aXXXXX/memoize/blo-lieky
/var/lib/curo-aXXXXX/memoize/blo-pacient
/var/lib/curo-aXXXXX/memoize/cache.json.delete
/var/lib/curo-aXXXXX/memoize/ez-map.loki
/var/lib/curo-aXXXXX/memoize/udzs
/var/lib/curo-aXXXXX/memoize/union-lieky
/var/lib/curo-aXXXXX/memoize/union-pacient
/var/lib/curo-aXXXXX/memoize/vszp-lieky
/var/lib/curo-aXXXXX/memoize/vszp-pacient
/var/lib/curo-aXXXXX/queuedb
/var/lib/curo-aXXXXX/union-recovery
/var/lib/curo-aXXXXX/uzavierka
/var/lib/curo-aXXXXX/vszp-recovery

Po obnove z takýchto záloh neobsahuje databáza indexy a ich vytvorenie môže nejakú dobu trvať.

Úplne najjednoduchší zoznam, ktorý má najrýchlejšiu trajektóriu od obnovy po používanie je:

/var/lib/couchdb
/var/lib/curo-aXXXXX

Replikácia databázy

Pre zákazníkov, ktorý chcú mať pri výpadku servera záložné riešenie umožňuje AIS Curo naištalovať CuroMD riešenia na dva servre s aktívnou replikáciou databázy a synchronizáciou dokumentov.

V prípade výpadku hlavné servera je potom možné:

Ako reaktivovať hlavný server

Ako zaradiť pôvodný hlavný server späť ako záložný

Zdielanie diskového priestoru pre používateľov Windows

Súbor /etc/nixos/custom-configuration.nix sa po inštalácii odkazuje na prázdny súbor /etc/nixos/samba.nix.

dynamický script v príprave

Podľa svojich potrieb uprav súbor /etc/nixos/samba.nix. Ako základ použi nasledovný obsah a uprav ho podľa inštrukcií pod ním.

{ config, pkgs, ... }:

{
  # aby bolo server vidiet v Explorery Widnows 10
  services.samba-wsdd.enable = true;
  networking.firewall.allowedTCPPorts = [ 5357 ];
  networking.firewall.allowedUDPPorts = [ 3702 ];
  
  # Samba konfiguracia
  services.samba = {
    # https://search.nixos.org/options?channel=21.11&show=services.samba.openFirewall&from=0&size=50&sort=relevance&type=packages&query=services.samba
    enable = true;
  
    # automaticky nakonfiguruje firewall
    openFirewall = true;
  
    # existujuci pouzivatel (admin) bude mat pristup
    # MUSIS sa aktivovat heslo tomuto pouzivatelovi (to heslo neopravnuje pristup cez ssh)
    # `smbpasswd -A admin`
    securityType = "user";
  
    extraConfig = ''
      workgroup = WORKGROUP
      server string = Curo server a dokumenty
      server role = standalone server   

      security = user 
      use sendfile = yes
      hosts allow = 192.168.1. localhost
      hosts deny = 0.0.0.0/0
      
      guest account = nobody
      map to guest = bad user
  
      dns proxy = no
      #log file = /var/log/samba/log.%m
      max log size = 1000
    '';
    shares = {
      docs = {
        path = "/var/lib/curo-INSTID/storage";
        browseable = "yes";
        "writable" = "yes";
        "public" = "no";
        "read only" = "no";
        "guest ok" = "no";
        "create mask" = "0644";
        "directory mask" = "0755";
        "force user" = "root";
        "force group" = "root";
      };
    };
  };
}

Na klientovi použi explorer, alebo cmd:

# https://www.lifewire.com/net-use-command-2618096
# zoznam diskov poskytovanych zo servera (nahrad meno servera)
net view \\SERVER
# pripoj disk aj po restarte a uloz prihlasovacie heslo
net use x: \\SERVER\docs /user:admin /savecred /persistent:yes
# zrusit pripojenie disku
net use x: /delete

Grafické prostredie CuroUI v NixOS

Z dôvodu nekompatibility knižníc z NCZI projektu eZdravie s inými operačnými systémami ako je Windows, nie je možné prevádzkovať na NixOS náš Curo eZdravie server obsluhujúci HPRO kartu. Viac v texte nižšie.

Použitie NixOS na klientskej stanici je vhodné hlavne pre stanice, kde nie je potrebné zadávať PIN pre HPRO kartu. Samotná inštalácia stanice prebieha podobne, ako servera, s tým rozdielom, že sa nainštalujú aj ovládače grafickej karty a grafické prostredie.

Všetko potrebné k vytvoreniu pracovnej stanice s AIS Curo nájdeš tu.

eZdravie HPRO karta a Linux

S eZdravie komunikuje CuroMD server. Služby karty nevyužíva priamo, ale nájde si v sieti program Curo eZdravie Server, ktorý je z dôvodu rozhodnutí NCZI viazaný na prostredie Windows a komunikuje s čítačkou kariet cez USB pripojenie. Komunikácia s kartou občas vyžaduje zadanie PIN kódu zo strany používateľa.

To má za následok:

Virtuálna privátna sieť (VPN)

Počítače umiestnené na rôznych fyzických lokalitách (ambulancie vo viacerých budovách/poschodiach, putujúci lekári, práca z domu) nedokážu z dôvodu bezpečnosti navzájom komunikovať priamo cez verejnú Internetovú sieť. Existuje možnosť cez sieť Internet vytvoriť bezpečnú virtuálnu sieť (VPN), cez ktorú je komunikácia zašifrovaná.

Takáto sieť je oproti lokálnej sieti výrazne pomalšia, čo môže predstavovať problém pre databázy založené na prístpe k súborom. Curo využíva klient/server architektúru a pomalosť takéhoto prepojenia komfort práce používateľa neovplyvňuje.

Vytvorenie bezpečnej VPN je pomerne komplexná záležitosť, ktorá vyžaduje:

NixOS obsahuje tak server, ako aj klient komponenty potrebné pre vytvorenie VPN a po prekonaní istej technickej náročnosti je možné vytvoriť vlastnú VPN.

Okrem technickej náročnosti sa stretávame s problémom, že ambulancie nemajú oprávnenie konfigurovať aktívne prvky siete (napr. sú pripojené do Internetu v rámci podnájmu). V takomto prípade sa nedá VPN vytvoriť bez aspoň jedného počítača umiestneného mimo siete klienta, čo býva spojené s nákladmi.

Preto poskytujeme svojim klientom službu zriadenia VPN pre účely prevádzky AIS Curo (viď. aktuálny cenník), ktorá:


Verzia: 0.1.0 © Curo s.r.o. | Táto stránka nepoužíva keksíky a nepotrebuje JavaScript.
Komunikujeme cez  Matrix