| 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
-
Nejprve nainstalujte
smp-server
:-
Ruční nasazení:
-
Alternativně můžete
smp-server
nasadit pomocí:
-
Ruční instalace vyžaduje několik předběžných úkonů:
-
Vytvoření uživatele a skupiny pro
smp-server
:sudo useradd -m smp
-
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
-
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
-
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í vGrafanu
.
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 heslemsmp-server
nebon
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
heslemtest
.
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 policreate_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 polihost:
.
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:
-
Nainstalovat zásuvný modul Grafana: Grafana - CSV datasource
-
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
-
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
-
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.