| Aktualizováno 05.06.2023 | Jazyky: CZ, EN, FR, PL |

Hostování vlastního serveru SMP

Přehled

SMP server je relay server používaný k předávání zpráv v síti SimpleX. Aplikace SimpleX Chat mají přednastavené servery (pro mobilní aplikace jsou to smp11, smp12 a smp14.simplex.im), ale konfiguraci aplikace můžete snadno změnit a používat jiné servery.

Klienti SimpleX pouze určují, který server bude použit pro příjem zpráv, a to pro každý kontakt (nebo spojení skupiny s členem skupiny) zvlášť, přičemž tyto servery jsou pouze dočasné, protože adresa pro doručování se může změnit.

Upozornění: když změníte servery v konfiguraci aplikace, ovlivní to pouze to, který server bude použit pro nové kontakty, stávající kontakty se na nové servery automaticky nepřesunou, ale můžete je přesunout ručně pomocí tlačítka "Změnit adresu příjmu" na stránkách s informacemi o kontaktech/členech - brzy bude automatizováno.

Instalace

  1. Nejprve nainstalujte smp-server:

Ruční instalace vyžaduje několik předběžných úkonů:

  1. Vytvoření uživatele a skupiny pro smp-server:

    sudo useradd -m smp
    
  2. Vytvořte potřebné adresáře a přiřaďte jim oprávnění:

    sudo mkdir -p /var/opt/simplex /etc/opt/simplex
    sudo chown smp:smp /var/opt/simplex /etc/opt/simplex /etc/opt/simplex
    
  3. Povolte port smp-server ve firewallu:

    # Pro Ubuntu
    sudo ufw allow 5233/tcp
    # Pro Fedora
    sudo firewall-cmd --permanent --add-port=5223/tcp && \
    sudo firewall-cmd --reload
    
  4. Volitelné - Pokud používáte distribuci s systemd, vytvořte soubor /etc/systemd/system/smp-server.service s následujícím obsahem:

    [Unit]
    Description=SMP server
    [Service]
    User=smp
    Group=smp
    Type=simple
    ExecStart=smp-server start
    ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"'
    KillSignal=SIGINT
    TimeoutStopSec=infinity
    Restart=vždy
    RestartSec=10
    LimitNOFILE=65535
    [Install]
    WantedBy=multi-user.target
    

    A spusťte sudo systemctl daemon-reload.

Konfigurace

Chcete-li zjistit, které možnosti jsou k dispozici, spusťte smp-server bez příznaků:

sudo su smp -c smp-server

...
Dostupné příkazy:
  init Inicializace serveru - vytvoří /etc/opt/simplex a
                           /var/opt/simplex adresáře a konfigurační soubory.
  start Spustí server (konfigurace:
                           /etc/opt/simplex/smp-server.ini).
  delete Odstranění konfiguračních a protokolových souborů

Další nápovědu můžete získat příkazem sudo su smp -c "smp-server <příkaz> -h"

Poté musíme nakonfigurovat smp-server:

Interaktivně

Spusťte následující příkaz:

sudo su smp -c "smp-server init"

Je třeba zvážit několik možností:

  • Povolit ukládání protokolu pro obnovení front a zpráv při restartu serveru (Yn):

    Zadáním y povolíte ukládání a obnovu spojení a zpráv při restartu serveru.

    Pozor: je důležité použít SIGINT pro restart serveru, protože jinak nebudou nedoručené zprávy obnoveny. Spojení budou obnovena bez ohledu na to, jakým způsobem je server restartován, protože na rozdíl od zpráv jsou při každé změně přidávána do protokolu pouze pro doplnění.

  • Zapnout protokolování denních statistik (yN):

    Zadáním y povolíte protokolování statistik ve formátu CSV, které lze například použít k zobrazení souhrnných grafů využití v Grafanu.

Tyto statistiky zahrnují denní počty vytvořených, zajištěných a smazaných front, odeslaných a přijatých zpráv a také denní, týdenní a měsíční počty aktivních front (tj. front, které byly použity pro nějaké zprávy). Domníváme se, že tyto informace neobsahují nic, co by umožňovalo korelovat různé fronty jako patřící stejným uživatelům, ale pokud se domníváte, že to lze nějak zneužít, dejte nám prosím důvěrně vědět.

  • Vyžadovat heslo pro vytvoření nové fronty zpráv?

    Zadejte r nebo své libovolné heslo pro ochranu heslem smp-server nebo n pro vypnutí ochrany heslem.

  • Zadejte FQDN serveru nebo IP adresu pro certifikát (127.0.0.1):

    Zadejte svou doménu nebo ip adresu, na které běží váš smp-server - bude zahrnuta do certifikátů serveru a také vypsána jako součást adresy serveru.

Prostřednictvím voleb příkazového řádku

Spusťte následující příkaz:

sudo su smp -c "smp-server init -h"

...
Dostupné možnosti:
  -l,--store-log Povolit protokol úložiště pro perzistenci
  -s,--daily-stats Povolí protokolování denních statistik serveru
  -a,--sign-algorithm ALG Algoritmus podpisu používaný pro certifikáty TLS:
                           ED25519, ED448 (výchozí: ED448).
  --ip IP IP adresa serveru, používaná jako Common Name pro TLS online
                           certifikátu, pokud není zadáno FQDN
                           (výchozí: "127.0.0.1")
  -n,--fqdn FQDN FQDN serveru použitý jako Common Name pro certifikát TLS online
                           certifikát
  --no-password Povolit vytváření nových front bez hesla
  --password PASSWORD Nastavení hesla pro vytváření nových front zpráv
  -y,--yes Neinteraktivní inicializace pomocí příkazového řádku
                           volby
  -h,--help Zobrazí text nápovědy

Měli byste určit, které příznaky jsou pro váš případ použití potřebné, a poté spustit smp-server init s příznakem -y pro neinteraktivní inicializaci:

sudo su smp -c "smp-server init -y -<vůj příznak> <vaše volba>"

Spusťte například:

sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --heslo test"

a inicializujte konfiguraci smp-serveru pomocí:

  • obnovení spojení a zpráv při restartu serveru (příznak -l),
  • IP adresa 192.168.1.5,
  • chránit smp-server heslem test.

Poté je instalace dokončena a ve výstupu teminálu byste měli vidět něco takového:

Certificate request self-signature ok
subject=CN = 127.0.0.1
Server je inicializován, konfiguraci můžete upravit v souboru /etc/opt/simplex/smp-server.ini.
Spusťte `smp-server start` pro spuštění serveru.
----------
Měli byste bezpečně uložit soukromý klíč CA a odstranit jej ze serveru.
Pokud dojde ke kompromitaci pověření TLS serveru, lze tento klíč použít k podpisu nového, přičemž zůstane zachována stejná identita serveru a navázaná spojení.
Umístění soukromého klíče CA: /etc/opt/simplex/ca.key.
----------
SMP server v3.4.0
Otisk prstu: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Adresa serveru: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>

Výše uvedená adresa serveru by měla být použita v konfiguraci klienta a pokud jste přidali heslo k serveru, mělo by být sdíleno s ostatními lidmi pouze tehdy, když jim chcete povolit používat váš server pro příjem zpráv (všechny vaše kontakty budou moci posílat zprávy, protože nevyžadují heslo). Pokud jste při inicializaci předali IP adresu nebo názvy hostitelů, budou vypsány jako součást adresy serveru, jinak nahraďte <hostnames> skutečnými adresami serverů.

Dokumentace

Všechny potřebné soubory pro smp-server jsou umístěny ve složce /etc/opt/simplex/.

Uložené zprávy, spojení, statistiky a protokol serveru jsou umístěny ve složce /var/opt/simplex/.

Adresa serveru SMP

Adresa serveru SMP má následující formát:

smp://<otisk prstu>[:<heslo>]@<jméno_veřejného_hostitele>[,<jméno_hostitele>]
  • <otisk prstu>

    Váš otisk certifikátu smp-server. Otisk svého certifikátu můžete zkontrolovat v souboru /etc/opt/simplex/fingerprint.

  • nepovinné <heslo>

    Vaše nakonfigurované heslo smp-serveru. Nakonfigurované heslo můžete zkontrolovat v souboru /etc/opt/simplex/smp-server.ini v sekci [AUTH] v poli create_password:.

  • <public_hostname>, volitelně <onion_hostname>.

    Vaše nakonfigurované jméno (jména) hostitele smp-serveru. Nakonfigurované hostitele můžete zkontrolovat v souboru /etc/opt/simplex/smp-server.ini, v části [TRANSPORT] v poli host:.

Příkazy Systemd

Chcete-li spustit smp-server při startu hostitele, spusťte:

sudo systemctl enable smp-server.service

Vytvořen symlink /etc/systemd/system/multi-user.target.wants/smp-server.service → /etc/systemd/system/smp-server.service.

Chcete-li spustit smp-server, spusťte:

sudo systemctl start smp-server.service

Chcete-li zkontrolovat stav smp-serveru, spusťte:

sudo systemctl status smp-server.service

● smp-server.service - server SMP
     Načteno: načteno (/etc/systemd/system/smp-server.service; povoleno; předvolba dodavatele: povoleno)
     Aktivní: aktivní (běží) od so 2022-11-23 19:23:21 UTC; před 1min 48s
   Hlavní PID: 30878 (smp-server)
     CGroup: /docker/5588ab759e80546b4296a7c50ffebbb1fb7b55b8401300e9201313b720989aa8/system.slice/smp-server.service
             └─30878 smp-server start

Nov 23 19:23:21 5588ab759e80 systemd[1]: Spuštěn SMP server.
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: SMP server v3.4.0
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Adresa serveru: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Uložit protokol: /var/opt/simplex/smp-server-store.log
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Naslouchání na portu 5223 (TLS)...
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: neaktivní klienti nevypršeli.
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: vytváření nových front vyžaduje heslo

Chcete-li zastavit smp-server, spusťte:

sudo systemctl stop smp-server.service

Chcete-li zkontrolovat ocas protokolu smp-server, spusťte:

sudo journalctl -fu smp-server.service

Nov 23 19:23:21 5588ab759e80 systemd[1]: Spuštěn SMP server.
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: SMP server v3.4.0
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Adresa serveru: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Uložit protokol: /var/opt/simplex/smp-server-store.log
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Naslouchání na portu 5223 (TLS)...
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: neaktivní klienti nevypršeli.
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: vytváření nových front vyžaduje heslo

Monitoring

Statistiky smp-serveru pro Grafana dashboard můžete povolit nastavením hodnoty on v souboru /etc/opt/simplex/smp-server.ini v sekci [STORE_LOG] v poli log_stats:.

Protokoly budou uloženy jako soubor csv v souboru /var/opt/simplex/smp-server-stats.daily.log. Pole pro soubor csv jsou:

fromTime,qCreated,qSecured,qDeleted,msgSent,msgRecv,dayMsgQueues,weekMsgQueues,monthMsgQueues
  • fromTime - časová značka; datum a čas události

  • qCreated - int; vytvořené fronty

  • qSecured - int; vytvořené fronty

  • qDeleted - int; smazané fronty

  • msgSent - int; odeslané zprávy

  • msgRecv - int; přijaté zprávy

  • dayMsgQueues - int; aktivní fronty za den

  • weekMsgQueues - int; aktivní fronty za týden

  • monthMsgQueues - int; aktivní fronty za měsíc

Pro import csv do Grafana je třeba:

  1. Nainstalovat zásuvný modul Grafana: Grafana - CSV datasource

  2. Povolit místní režim připojením následujícího:

    [plugin.marcusolsson-csv-datasource].
    allow_local_mode = true
    

    ... do /etc/grafana/grafana.ini

  3. Přidejte zdroj dat CSV:

    • V postranní nabídce klikněte na záložku Configuration (ikona ozubeného kola).
    • V pravém horním rohu karty Zdroje dat klikněte na tlačítko Přidat zdroj dat.
    • Do vyhledávacího pole zadejte "CSV" a vyhledejte zdroj dat CSV.
    • Klikněte na výsledek hledání s nápisem "CSV".
    • Do pole URL zadejte soubor, který odkazuje na obsah CSV
  4. Hotovo! Měli byste být schopni vytvořit vlastní řídicí panel se statistikami.

Další dokumentaci naleznete na adrese: CSV Data Source for Grafana - Documentation

Konfigurace aplikace pro použití serveru

Chcete-li aplikaci nakonfigurovat tak, aby používala váš server pro zasílání zpráv, zkopírujte jeho úplnou adresu včetně hesla a přidejte ji do aplikace. Máte možnost používat svůj server společně s přednastavenými servery nebo bez nich - můžete je odebrat nebo zakázat.

Adresu svého serveru můžete také sdílet se svými přáteli tak, že je necháte naskenovat QR kód z nastavení serveru - ten bude obsahovat heslo serveru, takže budou moci přijímat zprávy i prostřednictvím vašeho serveru.

Upozornění: pro podporu hesla je třeba mít SMP server verze 4.0. Pokud již máte nasazený server, můžete heslo přidat přidáním do souboru INI serveru.

     

© 2020-2023 SimpleX | Projekt s otevřeným zdrojovým kódem