.NET

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

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ášť.