Nasazení omnidb-server
Poznámka: od přepsání ve verzi 3.6.x je omnidb-server jediný
nativní binární soubor (žádná oddělená dvojice webserver/websocket-server, žádný
Django/CherryPy/Tornado), který si sám obsluhuje veškeré požadavky přes jeden
port, přičemž pro aktualizace dotazů/konzole/monitoringu na pozadí používá
long-polling namísto websocketů. Neexistuje už ani konfigurační soubor, ani
vestavěná podpora TLS — vše se nastavuje pomocí přepínačů příkazové řádky a
případnou terminaci TLS musí zajistit reverzní proxy před serverem.
Přepínače příkazové řádky
Usage: omnidb-server [options]
Options:
-A, --app run in desktop app mode (always binds loopback-only,
regardless of -H)
-H HOST, --host=HOST listening address (default: 127.0.0.1)
-p PORT, --port=PORT listening port (default: an OS-chosen free port)
-d HOMEDIR, --homedir=HOMEDIR
home directory containing the omnidb.db database and
the temp folder used for exported files
-
-Hurčuje adresu, na které se má naslouchat. Výchozí hodnota je127.0.0.1(pouze loopback) — zadejte0.0.0.0, pokud chcete přijímat připojení z jiných počítačů, nebo konkrétní adresu rozhraní. -
-purčuje port, na kterém se má naslouchat, použitý v URL prohlížeče při přímém přístupu k OmniDB. Pokud jej vynecháte, operační systém vybere volný port a při spuštění jej vypíše na stderr. -
-dumožňuje zvolit složku, do které se ukládáomnidb.db(databáze aplikace) a složkatemppoužívaná pro exportované soubory. Díky této volbě je možné spustit více instancíomnidb-server, každou směřující do jiného adresáře — hodí se to při nasazení v Dockeru, kde do dané složky připojíte svazek (volume).
Bezpečnostní poznámka: server spuštěný s -H nastaveným na
cokoli jiného než loopback by nikdy neměl být zároveň spuštěn s -A/--app
— odkaz pro automatické přihlášení do desktopové aplikace, který tento režim
generuje, má být dostupný pouze lokálně, takže -A vždy vynutí navázání
pouze na loopback bez ohledu na -H, které v takovém případě zcela
ignoruje, aby se předešlo riziku této kombinace.
Podívejme se, jak nasadit omnidb-server v různých scénářích:
Přímé nasazení OmniDB
Spuštění omnidb-server s -H 0.0.0.0 (nebo konkrétním veřejným
rozhraním) jej zpřístupní přímo z jiných počítačů — protože ale neexistuje
vestavěná podpora TLS, znamená to obyčejné, nešifrované HTTP. To se
nedoporučuje pro nic jiného než důvěryhodnou lokální síť: relační
cookies a výsledky dotazů by jinak putovaly nešifrovaně. Pro cokoli
dostupné ze širšího internetu použijte místo přímého vystavení
omnidb-server reverzní proxy s terminací TLS (viz níže).
Nasazení OmniDB za reverzní proxy
Doporučovaný postup: spusťte omnidb-server naslouchající pouze na
127.0.0.1 (výchozí hodnota, takže -H lze vynechat) a nechte terminaci
TLS a předávání obyčejného HTTP lokálně obstarat reverzní proxy, například
Nginx nebo
Caddy.
./omnidb-server -p 9000
Příklad konfigurace Nginx:
server {
listen 443 ssl;
listen [::]:443 ssl;
include snippets/ssl-domain.conf;
include snippets/ssl-params.conf;
server_name domain.org;
client_max_body_size 75M;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl https;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Host $host;
proxy_http_version 1.1;
}
}
Protože je vše (včetně aktualizací dotazů/konzole na pozadí) obsluhováno
přes obyčejný HTTP long-polling namísto websocketů, stačí jediný blok
location / pokrývající celou aplikaci — už neexistuje samostatná cesta
pro upgrade na websocket ani vzor /wss, který by bylo potřeba směrovat
zvlášť.