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
.
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}
/var/lib/curo-a${INSTID}
(over si, či ich nemáš na samostatnom disku)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
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é:
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";
};
};
};
}
hosts allow = 192.168.1. localhost
je z tvojho používaného rozsahuINSTID
inštalačným číslom z tvojej inštaláciesudo smbpasswd -U admin
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
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.
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:
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á: