| Updated 05.06.2023 | Języki: PL, EN, FR, CZ |

Hostowanie własnego serwera SMP

Informacje ogólne

Serwer SMP to serwer przekaźnikowy używany do przekazywania wiadomości w sieci SimpleX. Aplikacje SimpleX Chat mają wstępnie ustawione serwery (dla aplikacji mobilnych są to smp11, smp12 i smp14.simplex.im), ale można łatwo zmienić konfigurację aplikacji, aby korzystać z innych serwerów.

Klienty SimpleX określają tylko, który serwer jest używany do odbierania wiadomości, oddzielnie dla każdego kontaktu (lub połączenia grupowego z członkiem grupy), a serwery te są tylko tymczasowe, ponieważ adres dostawy może ulec zmianie.

Uwaga: gdy zmienisz serwery w ustawieniach aplikacji, wpłynie to tylko na to, który serwer będzie używany dla nowych kontaktów, istniejące kontakty nie zostaną automatycznie przeniesione na nowe serwery, ale możesz przenieść je ręcznie za pomocą przycisku "Zmień adres odbiorczy" na stronie z informacjami kontaktu/członka - wkrótce zostanie to zautomatyzowane.

Instalacja

  1. Najpierw zainstaluj smp-server:

Instalacja ręczna wymaga kilku kroków wstępnych:

  1. Zainstaluj binarkę:

    • Używając oficjalnych binarek:

      curl -L https://github.com/simplex-chat/simplexmq/releases/latest/download/smp-server-ubuntu-20_04-x86-64 -o /usr/local/bin/smp-server && chmod +x /usr/local/bin/smp-server
      
    • Budowanie z kodu źródłowego:

      Zobacz Build from source: Using your distribution

  2. Utwórz użytkownika i grupę dla smp-server:

    sudo useradd -m smp
    
  3. Utwórz niezbędne katalogi i przypisz uprawnienia:

    sudo mkdir -p /var/opt/simplex /etc/opt/simplex
    sudo chown smp:smp /var/opt/simplex /etc/opt/simplex
    
  4. Zezwól na port smp-server w firewallu:

    # Dla Ubuntu
    sudo ufw allow 5223/tcp
    # Dla Fedory
    sudo firewall-cmd --permanent --add-port=5223/tcp && \
    sudo firewall-cmd --reload
    
  5. Opcjonalnie - Jeśli używasz dystrybucji z systemd, utwórz plik /etc/systemd/system/smp-server.service z następującą zawartością:

    [Unit]
    Description=SMP server systemd service
    
    [Service]
    User=smp
    Group=smp
    Type=simple
    ExecStart=/usr/local/bin/smp-server start +RTS -N -RTS
    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"'
    LimitNOFILE=65535
    KillSignal=SIGINT
    TimeoutStopSec=infinity
    
    [Install]
    WantedBy=multi-user.target
    

    I uruchom sudo systemctl daemon-reload.

Instalacja Tora

smp-server można również zainstalować jako serwer działający w sieci tor. Uruchom następujące polecenia jako użytkownik root.

  1. Zainstaluj Tor:

    Zakładamy, że używasz dystrybucji opartych na Ubuntu/Debian. Jeśli nie, zapoznaj się z oficjalną dokumentacją tor lub poradnikiem dla Twojej dystrybucji.

    • Skonfiguruj oficjalne repozytorium Tor PPA:

      CODENAME="$(lsb_release -c | awk '{print $2}')"
      echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
      deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
      
    • Zimportuj klucz repozytorium:

      curl --proto '=https' --tlsv1.2 -sSf https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
      
    • Zaktualizuj indeks repozytorium:

      apt update
      
    • Zainstaluj paczkę tor:

      apt install -y tor deb.torproject.org-keyring
      
  2. Skonfiguruj tor:

    • Konfiguracja pliku:

      Otwórz konfigurację tora w wybranym edytorze (nano,vim,emacs, itp.):

      vim /etc/tor/torrc
      

      I umieść następujące linie na dole konfiguracji. Zwróć uwagę na linie zaczynające się od #: są to komentarze dotyczące poszczególnych opcji.

      # Włącz logowanie (w przeciwnym razie tor nie wyda adresu onion).
      Log notice file /var/log/tor/notices.log
      # Włącz routowanie single hop (2 opcje poniżej są zależne od trzeciej). Zmniejszy to opóźnienie w zamian za anonimowość (jako że tor działa równolegle z serwerem smp i adres onion będzie wyświetlany w klientach, jest to całkowicie w porządku).
      SOCKSPort 0
      HiddenServiceNonAnonymousMode 1
      HiddenServiceSingleHopMode 1
      # Katalog hostów i mapowanie portów usługi ukrytej smp-server
      HiddenServiceDir /var/lib/tor/simplex-smp/
      HiddenServicePort 5223 localhost:5223
      
    • Utwórz katalogi:

      mkdir /var/lib/tor/simplex-smp/ && chown debian-tor:debian-tor /var/lib/tor/simplex-smp/ && chmod 700 /var/lib/tor/simplex-smp/
      
  3. Uruchom tor:

    Włącz usługę systemd oraz uruchom tor. Oficjalny tor jest nieco kłopotliwy przy pierwszym uruchomieniu i może nie utworzyć adresu hosta cebuli, więc na wszelki wypadek uruchamiamy go ponownie.

    systemctl enable tor && systemctl start tor && systemctl restart tor
    
  4. Wyświetla onionowego hosta:

    Wykonaj następujące polecenie, aby wyświetlić adres onionowego hosta:

    cat /var/lib/tor/simplex-smp/hostname
    

Configuration

Aby zobaczyć, jakie opcje są dostępne, wykonaj smp-server bez flag:

sudo su smp -c smp-server

...
Available commands:
  init                     Initialize server - creates /etc/opt/simplex and
                           /var/opt/simplex directories and configuration files
  start                    Start server (configuration:
                           /etc/opt/simplex/smp-server.ini)
  delete                   Delete configuration and log files

Możesz uzyskać dalszą pomoc, wykonując polecenie sudo su smp -c "smp-server <command> -h"

Następnie musimy skonfigurować smp-server:

Interaktywnie

Wykonaj poniższe polecenie:

sudo su smp -c "smp-server init"

Istnieje kilka opcji, które należy rozważyć:

  • Enable store log to restore queues and messages on server restart (Yn):

    Wpisz y, aby włączyć zapisywanie i przywracanie połączeń i wiadomości po ponownym uruchomieniu serwera.

    Uwaga: ważne jest, aby użyć SIGINT do ponownego uruchomienia serwera, ponieważ w przeciwnym razie niedostarczone wiadomości nie zostaną przywrócone. Połączenia zostaną przywrócone niezależnie od sposobu ponownego uruchomienia serwera, ponieważ w przeciwieństwie do wiadomości są one dodawane do dziennika append-only.

  • Enable logging daily statistics (yN):

    Wpisz y, aby włączyć logowanie statystyk w formacie CSV, mogą one być przykładowo użyte do pokazania wykresów użycia w Grafana.

Statystyki te obejmują dzienną liczbę utworzonych, zabezpieczonych i usuniętych kolejek, wysłanych i odebranych wiadomości, a także dzienną, tygodniową i miesięczną liczbę aktywnych kolejek (tj. kolejek, które były używane do wysyłania wiadomości). Uważamy, że informacje te nie zawierają niczego, co pozwoliłoby na skorelowanie różnych kolejek jako należących bezpośrednio do użytkowników, ale prosimy o poufne poinformowanie nas, jeśli uważasz, że można to w jakikolwiek sposób nadużyć.

  • Require a password to create new messaging queues?

    Wpisz r lub dowolne hasło, aby zabezpieczyć hasłem smp-server, lub n, aby wyłączyć ochronę hasłem.

  • Enter server FQDN or IP address for certificate (127.0.0.1):

    Wprowadź domenę lub adres IP, na którym działa Twój smp-server - zostanie on zamieszczony w certyfikatach serwera, a także wyświetlony jako część adresu serwera.

Za pomocą opcji wiersza poleceń

Wykonaj poniższe polecenie:

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

...
Available options:
  -l,--store-log           Enable store log for persistence
  -s,--daily-stats         Enable logging daily server statistics
  -a,--sign-algorithm ALG  Signature algorithm used for TLS certificates:
                           ED25519, ED448 (default: ED448)
  --ip IP                  Server IP address, used as Common Name for TLS online
                           certificate if FQDN is not supplied
                           (default: "127.0.0.1")
  -n,--fqdn FQDN           Server FQDN used as Common Name for TLS online
                           certificate
  --no-password            Allow creating new queues without password
  --password PASSWORD      Set password to create new messaging queues
  -y,--yes                 Non-interactive initialization using command-line
                           options
  -h,--help                Show this help text

Powinieneś określić, które flagi są potrzebne dla Twojego zastosowania, a następnie wykonać smp-server init z flagą -y dla nieinteraktywnej inicjalizacji:

sudo su smp -c "smp-server init -y -<your flag> <your option>"

Przykładowo, uruchom:

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

aby zainicjować konfigurację smp-server z:

  • przywracaniem połączeń i wiadomości po ponownym uruchomieniu serwera (flaga -l),
  • adresem IP 192.168.1.5,
  • zabezpieczeniem smp-server hasłem test.

Po tym instalacja jest ukończona i powinieneś zobaczyć coś takiego:

Certificate request self-signature ok
subject=CN = 127.0.0.1
Server initialized, you can modify configuration in /etc/opt/simplex/smp-server.ini.
Run `smp-server start` to start server.
----------
You should store CA private key securely and delete it from the server.
If server TLS credential is compromised this key can be used to sign a new one, keeping the same server identity and established connections.
CA private key location: /etc/opt/simplex/ca.key
----------
SMP server v3.4.0
Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>

Powyższy adres serwera powinien być użyty w konfiguracji klienta, a jeśli dodałeś hasło serwera, powinno ono być udostępnione innym osobom tylko wtedy, gdy chcesz zezwolić im na korzystanie z Twojego serwera do odbierania wiadomości (wszystkie Twoje kontakty będą mogły wysyłać wiadomości, ponieważ nie wymaga to hasła). Jeśli podałeś adres IP lub nazwę hosta podczas instalacji, zostanie to wyświetlone jako część adresu serwera, w przeciwnym razie zastąp <hostnames> rzeczywistymi adresami serwerów.

Dokumentacja

Wszystkie niezbędne pliki dla smp-server znajdują się w folderze /etc/opt/simplex/.

Przechowywane wiadomości, połączenia, statystyki i dziennik serwera znajdują się w folderze /var/opt/simplex/.

Adres serwera SMP

Adres serwera SMP ma następujący format:

smp://<odcisk_palca>[:<hasło>]@<publiczna_nazwa_hosta>[,<onionowa_nazwa_hosta>]
  • <odcisk_palca>

    To odcisk palca certyfikatu Twojego smp-server. Odcisk palca certyfikatu możesz sprawdzić w /etc/opt/simplex/fingerprint.

  • opcjonalnie <hasło>

    To ustawione przez Ciebie hasło Twojego smp-server. Możesz sprawdzić to hasło w pliku /etc/opt/simplex/smp-server.ini, w sekcji [AUTH] w polu create_password:.

  • <publiczna_nazwa_hosta>, optional <onionowa_nazwa_hosta>

    To skonfigurowane przez Ciebie nazwy hosta Twojego smp-server. Nazwy hostów możesz sprawdzić w pliku /etc/opt/simplex/smp-server.ini, w sekcji [TRANSPORT] w polu host:.

Komendy systemd

Aby uruchomić smp-server przy starcie hosta, uruchom:

sudo systemctl enable smp-server.service

Created symlink /etc/systemd/system/multi-user.target.wants/smp-server.service → /etc/systemd/system/smp-server.service.

Aby uruchomić smp-server, uruchom:

sudo systemctl start smp-server.service

Aby sprawdzić status smp-server, uruchom:

sudo systemctl status smp-server.service

● smp-server.service - SMP server
     Loaded: loaded (/etc/systemd/system/smp-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-11-23 19:23:21 UTC; 1min 48s ago
   Main PID: 30878 (smp-server)
     CGroup: /docker/5588ab759e80546b4296a7c50ffebbb1fb7b55b8401300e9201313b720989aa8/system.slice/smp-server.service
             └─30878 smp-server start

Nov 23 19:23:21 5588ab759e80 systemd[1]: Started 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]: Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Store log: /var/opt/simplex/smp-server-store.log
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Listening on port 5223 (TLS)...
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: not expiring inactive clients
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires password

Aby zatrzymać smp-server, uruchom:

sudo systemctl stop smp-server.service

Aby sprawdzić zawartość dziennika smp-server, uruchom:

sudo journalctl -fu smp-server.service

Nov 23 19:23:21 5588ab759e80 systemd[1]: Started 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]: Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Store log: /var/opt/simplex/smp-server-store.log
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Listening on port 5223 (TLS)...
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: not expiring inactive clients
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires password

Monitorowanie

Możesz włączyć statystyki smp-server dla dashboardu Grafana ustawiając wartość on w /etc/opt/simplex/smp-server.ini, w sekcji [STORE_LOG] w polu log_stats:.

Logi będą przechowywane jako plik csv w /var/opt/simplex/smp-server-stats.daily.log. Pola dla pliku csv to:

fromTime,qCreated,qSecured,qDeleted,msgSent,msgRecv,dayMsgQueues,weekMsgQueues,monthMsgQueues
  • fromTime - timestamp; data i godzina zdarzenia

  • qCreated - int; utworzone kolejki

  • qSecured - int; ustanowione kolejki

  • qDeleted - int; usunięte queues

  • msgSent - int; wysłane wiadomości

  • msgRecv - int; odebrane wiadomości

  • dayMsgQueues - int; aktywnych kolejek podczas dnia

  • weekMsgQueues - int; aktywnych kolejek w tygodniu

  • monthMsgQueues - int; aktywnych kolejek w miesiącu

Aby zaimportować csv do Grafana należy:

  1. Zainstalować wtyczkę Grafana: Grafana - CSV datasource

  2. Zezwolić na tryb lokalny, dołączając następujące elementy:

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

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

  1. Dodaj źródło danych CSV:
  • W menu bocznym kliknij zakładkę Configuration (ikona koła zębatego)
  • Kliknij Add data source (Dodaj źródło danych) w prawym górnym rogu zakładki Data Sources (Źródła danych).
  • Wpisz "CSV" w polu wyszukiwania, aby znaleźć źródło danych CSV.
  • Kliknij wynik wyszukiwania z napisem "CSV".
  • W polu URL wprowadź plik wskazujący na zawartość CSV.
  1. Gotowe! Teraz możesz utworzyć własny pulpit nawigacyjny ze statystykami.

Dalsza dokumentacja znajduje się na stronie: CSV Data Source for Grafana - Documentation.

Aktualizowanie twojego serwera SMP

Aby zaktualizować smp-server do najnowszej wersji, wybierz metodę instalacji i postępuj zgodnie z instrukcjami:

  • Manualnie

    1. Zatrzymaj serwer:
      sudo systemctl stop smp-server
      
    2. Zaktualizuj binarkę:
       curl -L https://github.com/simplex-chat/simplexmq/releases/latest/download/smp-server-ubuntu-20_04-x86-64 -o /usr/local/bin/smp-server && chmod +x /usr/local/bin/smp-server
      
    3. Uruchom serwer:
      sudo systemctl start smp-server
      
  • Używając oficjalnego skryptu instalacyjnego

    1. Uruchom:
      sudo simplex-servers-update
      
    2. Gotowe!
  • Używając kontenera Dockera

    1. Zatrzymaj i usuń kontener:
      docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/smp-server --format="\{\{.ID\}\}"))
      
    2. Pobierz najnowszą wersję kontenera:
      docker pull simplexchat/smp-server:latest
      
    3. Uruchom nowy kontener:
      docker run -d \
        -p 5223:5223 \
        -v $HOME/simplex/smp/config:/etc/opt/simplex:z \
        -v $HOME/simplex/smp/logs:/var/opt/simplex:z \
        simplexchat/smp-server:latest
      
  • Linode Marketplace

    1. Pobierz najnowsze obrazy:
      docker-compose --project-directory /etc/docker/compose/simplex pull
      
    2. Zrestartuj kontenery:
      docker-compose --project-directory /etc/docker/compose/simplex up -d --remove-orphans
      
    3. Usuń niepotrzebne obrazy:
      docker image prune
      

Konfigurowanie aplikacji do korzystania z serwera

Aby skonfigurować aplikację do korzystania z serwera wiadomości, skopiuj jego pełny adres, w tym hasło, i dodaj go do aplikacji. Możesz używać swojego serwera razem z predefiniowanymi serwerami lub bez nich - możesz je usunąć lub wyłączyć.

Możliwe jest również udostępnienie adresu swojego serwera znajomym, pozwalając im zeskanować kod QR z ustawień serwera - będzie on zawierał hasło serwera, dzięki czemu będą mogli również otrzymywać wiadomości za pośrednictwem twojego serwera.

Uwaga: Do obsługi haseł wymagany jest serwer SMP w wersji 4.0. Jeśli już posiadasz serwer, możesz dodać hasło do niego poprzez wpisanie hasła do pliku INI serwera.

     

© 2020-2023 SimpleX | Projekt Open-Source