Utwórz serwer czatów za pomocą Matrix Synapse i Riot na CentOS 7

Matrix jest otwartym standardowym protokołem komunikacyjnym do zdecentralizowanej komunikacji w czasie rzeczywistym. Matrix jest implementowany jako serwery domowe, które są dystrybuowane przez Internet; stąd nie ma jednego punktu kontroli lub awarii. Matrix zapewnia interfejs API RESTful HTTP do tworzenia rozproszonych serwerów czatów i zarządzania nimi, który obejmuje wysyłanie i odbieranie wiadomości, zapraszanie i zarządzanie członkami czatu, utrzymywanie kont użytkowników oraz zapewnianie zaawansowanych funkcji czatu, takich jak połączenia VoIP i wideo itp. Matrix ustanawia również bezpieczna synchronizacja między serwerami domowymi dystrybuowanymi na całym świecie.

Synapse to implementacja domowego serwera Matrix napisana przez zespół Matrix. Ekosystem Matrix składa się z sieci wielu federacyjnych serwerów domowych rozproszonych na całym świecie. Użytkownik Matrix używa klienta czatu do łączenia się z serwerem domowym, który z kolei łączy się z siecią Matrix. Serwer domowy przechowuje historię czatu i dane logowania tego konkretnego użytkownika.

Wymagania wstępne

  • Instancja serwera Vultr CentOS 7.
  • Użytkownik sudo .

W tym samouczku użyjemy matrix.example.comjako nazwy domeny używanej w Matrix Synapse. Zastąp wszystkie wystąpienia matrix.example.comrzeczywistą nazwą domeny, której chcesz używać na serwerze domowym Synapse.

Zaktualizuj system podstawowy za pomocą przewodnika Jak zaktualizować CentOS 7 . Po zaktualizowaniu systemu przejdź do instalacji Pythona.

Zainstaluj narzędzia programistyczne

Matrix Synapse wymaga do działania Pythona 2.7. Python 2.7 jest fabrycznie zainstalowany we wszystkich instancjach serwera CentOS. Możesz sprawdzić zainstalowaną wersję Pythona.

python -V

Powinieneś otrzymać podobny wynik.

[user@vultr ~]$ python -V
Python 2.7.5

Zmiana domyślnej wersji Pythona może uszkodzić menedżera repozytorium YUM. Jeśli jednak chcesz mieć najnowszą wersję języka Python, możesz wykonać alternatywną instalację bez zastępowania domyślnego języka Python.

Zainstaluj pakiety w Development toolsgrupie, które są wymagane do skompilowania plików instalatora.

sudo yum groupinstall -y "Development tools"

Zainstaluj jeszcze kilka wymaganych zależności.

sudo yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel 

Zainstaluj pip Python. Pip jest menedżerem zależności dla pakietów Pythona.

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Zainstaluj Synapse

Utwórz wirtualne środowisko dla swojej aplikacji Synapse. Środowisko wirtualne Python służy do tworzenia izolowanego środowiska wirtualnego dla projektu Python. Środowisko wirtualne zawiera własne katalogi instalacyjne i nie udostępnia bibliotek globalnym ani innym środowiskom wirtualnym.

sudo virtualenv -p python2.7 /opt/synapse

Podaj własność katalogu bieżącemu użytkownikowi.

sudo chown -R $USER:$USER /opt/synapse/

Teraz aktywuj środowisko wirtualne.

source /opt/synapse/bin/activate

Upewnij się, że masz najnowszą wersję pipi setuptools.

pip install --upgrade pip 
pip install --upgrade setuptools

Zainstaluj najnowszą wersję Synapse za pomocą pip.

pip install https://github.com/matrix-org/synapse/tarball/master

Wykonanie powyższego polecenia zajmie trochę czasu, ponieważ pobiera i instaluje najnowszą wersję Synapse i wszystkie zależności z repozytorium Github.

Instalowanie i konfigurowanie PostgreSQL

Synapse używa SQLite jako domyślnej bazy danych. SQLite przechowuje dane w bazie danych, która jest przechowywana jako płaski plik na dysku. Korzystanie z SQLite jest bardzo proste, ale nie jest zalecane do produkcji, ponieważ jest bardzo powolne w porównaniu do PostgreSQL.

PostgreSQL to obiektowy system relacyjnych baz danych. Konieczne będzie dodanie repozytorium PostgreSQL w systemie, ponieważ aplikacja nie jest dostępna w domyślnym repozytorium YUM.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Zainstaluj serwer bazy danych PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib

Zainicjuj bazę danych.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

Edytuj, /var/lib/pgsql/9.6/data/pg_hba.confaby włączyć uwierzytelnianie oparte na MD5.

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

Znajdź następujące wiersze i zmień peerna trusti idnetna md5.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            idnet
# IPv6 local connections:
host    all             all             ::1/128                 idnet

Po aktualizacji konfiguracja powinna wyglądać następująco.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Uruchom serwer PostgreSQL i włącz go automatycznie podczas uruchamiania.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

Zmień hasło dla domyślnego użytkownika PostgreSQL.

sudo passwd postgres

Zaloguj sie.

sudo su - postgres

Utwórz nowego użytkownika PostgreSQL dla Synapse.

createuser synapse

PostgreSQL zapewnia psqlpowłokę do uruchamiania zapytań w bazie danych. Przejdź do powłoki PostgreSQL, uruchamiając.

psql

Ustaw hasło dla nowo utworzonego użytkownika do bazy danych Synapse.

ALTER USER synapse WITH ENCRYPTED password 'DBPassword';

Zastąp DBPasswordje silnym hasłem i zanotuj je, ponieważ będziemy używać hasła później. Utwórz nową bazę danych dla bazy danych PostgreSQL.

CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;

Wyjdź ze psqlskorupy.

\q

Przełącz się na sudoużytkownika z bieżącego postgresużytkownika.

exit

Będziesz także musiał zainstalować pakiety wymagane przez Synapse do komunikacji z serwerem bazy danych PostgreSQL.

sudo yum -y install postgresql-devel libpqxx-devel.x86_64
source /opt/synapse/bin/activate
pip install psycopg2

Konfigurowanie Synapse

Synapse wymaga pliku konfiguracyjnego, zanim będzie można go uruchomić. Plik konfiguracyjny przechowuje ustawienia serwera. Przełącz się do środowiska wirtualnego i wygeneruj konfigurację dla Synapse.

source /opt/synapse/bin/activate
cd /opt/synapse
python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes

Zastąp matrix.example.comswoją rzeczywistą nazwą domeny i upewnij się, że nazwa serwera jest rozpoznawalna na adres IP twojej instancji Vultr. Podaj, --report-stats=yesjeśli chcesz, aby serwery generowały raporty, podaj, --report-stats=noaby wyłączyć generowanie raportów i statystyk.

Powinieneś zobaczyć podobne wyjście.

(synapse)[user@vultr synapse]$ python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
A config file has been generated in 'homeserver.yaml' for server name 'matrix.example.com' with corresponding SSL keys and self-signed certificates. Please review this file and customise it to your needs.
If this server name is incorrect, you will need to regenerate the SSL certificates

Domyślnie homeserver.yamljest skonfigurowany do korzystania z bazy danych SQLite. Musimy go zmodyfikować, aby używał wcześniej utworzonej bazy danych PostgreSQL.

Edytuj nowo utworzone homeserver.yaml.

nano homeserver.yaml

Znajdź istniejącą konfigurację bazy danych, która korzysta z SQLite3. Skomentuj linie, jak pokazano poniżej. Dodaj także nową konfigurację bazy danych dla PostgreSQL. Upewnij się, że używasz poprawnych poświadczeń bazy danych.

# Database configuration
#database:
  # The database engine name
  #name: "sqlite3"
  # Arguments to pass to the engine
  #args:
    # Path to the database
    #database: "/opt/synapse/homeserver.db"


database:
    name: psycopg2
    args:
        user: synapse
        password: DBPassword
        database: synapse
        host: localhost
        cp_min: 5
        cp_max: 10

Rejestracja nowego użytkownika z interfejsu internetowego jest domyślnie wyłączona. Aby włączyć rejestrację, możesz ustawić enable_registrationna True. Możesz także ustawić tajny klucz rejestracyjny, który pozwoli każdemu zarejestrować się, który ma tajny klucz, nawet jeśli rejestracja jest wyłączona.

enable_registration: False

registration_shared_secret: "YPPqCPYqCQ-Rj,ws~FfeLS@maRV9vz5MnnV^r8~pP.Q6yNBDG;"

Zapisz plik i wyjdź z edytora. Teraz musisz zarejestrować pierwszego użytkownika. Zanim jednak będziesz mógł zarejestrować nowego użytkownika, musisz najpierw uruchomić aplikację.

source /opt/synapse/bin/activate && cd /opt/synapse
synctl start

Powinieneś zobaczyć następujące linie.

2017-09-05 11:10:41,921 - twisted - 131 - INFO - - SynapseSite starting on 8008
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - Starting factory <synapse.http.site.SynapseSite instance at 0x44bbc68>
2017-09-05 11:10:41,921 - synapse.app.homeserver - 201 - INFO - - Synapse now listening on port 8008
2017-09-05 11:10:41,922 - synapse.app.homeserver - 442 - INFO - - Scheduling stats reporting for 3 hour intervals
started synapse.app.homeserver('homeserver.yaml')

Zarejestruj nowego użytkownika Matrix.

register_new_matrix_user -c homeserver.yaml https://localhost:8448

Powinieneś zobaczyć następujące.

(synapse)[user@vultr synapse]$ register_new_matrix_user -c homeserver.yaml https://localhost:8448
New user localpart [user]: admin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success.

Wreszcie, zanim będzie można korzystać z serwera domowego, należy zezwolić na port 8448 przez zaporę. Port 8448jest używany jako bezpieczny port federacyjny. Serwery domowe używają tego portu do bezpiecznej komunikacji między sobą. Za pośrednictwem tego portu można również korzystać z wbudowanego klienta czatu internetowego Matrix.

sudo firewall-cmd --permanent --zone=public --add-port=8448/tcp
sudo firewall-cmd --reload

Możesz teraz zalogować się do klienta czatu internetowego Matrix, przechodząc do https://matrix.example.com:8448swojej ulubionej przeglądarki. Zobaczysz ostrzeżenie o certyfikacie SSL, ponieważ używane certyfikaty są samopodpisane. Nie będziemy używać tego klienta czatu internetowego, ponieważ jest on przestarzały i nie jest już obsługiwany. Spróbuj tylko sprawdzić, czy możesz się zalogować przy użyciu właśnie utworzonego konta użytkownika.

Konfigurowanie Let's Encrypt Certificates

Zamiast używać certyfikatu z podpisem własnym do zabezpieczenia portu federacyjnego, możemy użyć darmowego szyfrowania Let's Encrypt. Darmowe szyfrowanie Let's Encrypt można uzyskać za pośrednictwem oficjalnego klienta Let's Encrypt o nazwie Certbot.

Zainstaluj Certbot.

sudo yum -y install certbot

Dostosuj ustawienia zapory, aby umożliwić standard HTTPi HTTPSporty przez zaporę. Certbot musi nawiązać HTTPpołączenie, aby zweryfikować władzę domeny.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Aby uzyskać certyfikaty z Let's Encrypt CA, musisz upewnić się, że domena, dla której chcesz wygenerować certyfikaty, jest skierowana w stronę serwera. Jeśli tak nie jest, wprowadź niezbędne zmiany w rekordach DNS swojej domeny i poczekaj na propagację DNS przed ponownym żądaniem certyfikatu. Certbot sprawdza urząd domeny przed podaniem certyfikatów.

Teraz użyj wbudowanego serwera WWW w Certbot, aby wygenerować certyfikaty dla swojej domeny.

sudo certbot certonly --standalone -d matrix.example.com

Wygenerowane certyfikaty prawdopodobnie będą przechowywane /etc/letsencrypt/live/matrix.example.com/. Certyfikat SSL będzie przechowywany jako, fullchain.pema klucz prywatny będzie przechowywany jako privkey.pem.

Skopiuj certyfikaty.

sudo cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem

sudo cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

Konieczna będzie zmiana ścieżki do certyfikatów i kluczy z homeserver.yamlpliku. Edytuj konfigurację.

nano /opt/synapse/homeserver.yaml

Znajdź następujące linie i zmodyfikuj ścieżkę.

tls_certificate_path: "/opt/synapse/letsencrypt-fullchain.pem"

# PEM encoded private key for TLS
tls_private_key_path: "/opt/synapse/letsencrypt-privkey.pem"

Zapisz plik i wyjdź z edytora. Uruchom ponownie serwer Synapse, aby zmiany mogły zostać wprowadzone.

source /opt/synapse/bin/activate && cd /opt/synapse
synctl restart

Ważność certyfikatów Let's Encrypt wygasa za 90 dni, dlatego zaleca się skonfigurowanie automatycznego odnawiania certyfikatów za pomocą zadań cron. Cron to usługa systemowa służąca do wykonywania zadań okresowych.

Utwórz nowy skrypt, aby odnowić certyfikaty i skopiuj odnowione certyfikaty do katalogu Synapse.

sudo nano /opt/renew-letsencypt.sh  

Wypełnij plik.

#!/bin/sh

/usr/bin/certbot renew --quiet --nginx
cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

Podaj pozwolenie na wykonanie.

sudo chmod +x /opt/renew-letsencypt.sh

Otwórz plik zadania cron.

sudo crontab -e

Dodaj następujący wiersz na końcu pliku.

30 5 * * 1 /opt/renew-letsencypt.sh

Powyższe zadanie crona będzie uruchamiane w każdy poniedziałek o 5:30. Jeśli certyfikat wygasa, automatycznie go odnowi.

Teraz możesz odwiedzić https://matrix.example.com:8448. Zobaczysz, że nie ma ostrzeżenia SSL przed połączeniem.

Skonfiguruj Nginx z Let's Encrypt

Oprócz zabezpieczonego portu federacyjnego 8448Synapse nasłuchuje również niezabezpieczonego portu klienta 8008. Teraz skonfigurujemy Nginx jako zwrotny serwer proxy do aplikacji Synapse.

sudo yum -y install nginx

Utwórz nowy plik konfiguracyjny.

sudo nano /etc/nginx/conf.d/synapse.conf

Wypełnij plik następującą zawartością.

server {
    listen 80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name matrix.example.com;

    ssl_certificate           /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/matrix.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/synapse.access.log;

    location /_matrix {

      proxy_pass          http://localhost:8008;
      proxy_set_header X-Forwarded-For $remote_addr;

    }
  }

Uruchom ponownie i włącz Nginx, aby automatycznie uruchamiał się podczas uruchamiania.

sudo systemctl restart nginx
sudo systemctl enable nginx

Na koniec możesz sprawdzić, czy dostęp do Synapse można uzyskać za pośrednictwem zwrotnego serwera proxy.

curl https://matrix.example.com/_matrix/key/v2/server/auto

Powinieneś uzyskać podobny wynik.

[user@vultr ~]$ curl https://matrix.example.com/_matrix/key/v2/server/auto
{"old_verify_keys":{},"server_name":"matrix.example.com","signatures":{"matrix.example.com":{"ed25519:a_ffMf":"T/Uq/UN5vyc4w7v0azALjPIJeZx1vQ+HC6ohUGkTSqiFI4WI/ojGpb2763arwSSQLr/tP/2diCi1KLU2DEnOCQ"}},"tls_fingerprints":[{"sha256":"eorhQj/kubI2PEQZyBZvGV7K1x3EcQ7j/AO2MtZMplw"}],"valid_until_ts":1504876080512,"verify_keys":{"ed25519:a_ffMf":{"key":"Gc1hxkpPmQv71Cvjyk+uzR5UtrpmgV/UwlsLtosawEs"}}}

Konfigurowanie usługi systemowej

Zaleca się korzystanie z usługi Systemd do zarządzania procesem serwera Synapse. Użycie Systemd zapewni automatyczne uruchomienie serwera podczas uruchamiania systemu i awarii.

Utwórz nowy plik usługi Systemd.

sudo nano /etc/systemd/system/matrix-synapse.service

Wypełnij plik.

[Unit]
Description=Matrix Synapse service
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/synapse/
ExecStart=/opt/synapse/bin/synctl start
ExecStop=/opt/synapse/bin/synctl stop
ExecReload=/opt/synapse/bin/synctl restart
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=synapse

[Install]
WantedBy=multi-user.target

Teraz możesz szybko uruchomić serwer Synapse.

sudo systemctl start matrix-synapse

Aby zatrzymać lub ponownie uruchomić serwer za pomocą następujących poleceń.

sudo systemctl stop matrix-synapse
sudo systemctl restart matrix-synapse

Możesz sprawdzić status usługi.

sudo systemctl status matrix-synapse

Korzystanie z Riot

Serwer Matrix Synapse jest teraz zainstalowany i skonfigurowany na twoim serwerze. Ponieważ wbudowany klient sieciowy dla Matrix jest nieaktualny, możesz wybierać spośród różnorodnych aplikacji klienckich dostępnych na czacie. Riot to najpopularniejszy klient czatu, który jest dostępny na prawie wszystkich platformach. Możesz użyć hostowanej wersji klienta czatu Riot lub możesz także przechowywać jej kopię na własnym serwerze. Oprócz tego możesz także korzystać z klientów czatu Riot na komputery stacjonarne i telefony komórkowe, które są dostępne dla systemów Windows, Mac, Linux, IOS i Android.

Jeśli chcesz hostować własną kopię klienta Riot, możesz przeczytać dalsze instrukcje instalacji Riot na swoim serwerze. W przypadku klienta hostowanego, stacjonarnego i mobilnego możesz użyć nazwy użytkownika i hasła, aby zalogować się bezpośrednio na serwerze domowym. Wystarczy wybrać my Matrix IDz menu rozwijanego Sign Inopcji i podać nazwę użytkownika i hasło, które utworzyłeś podczas rejestracji nowego użytkownika. Kliknij Custom serveri użyj nazwy domeny swojego wystąpienia Synapse. Ponieważ już skonfigurowaliśmy Nginx, możemy po prostu używać go https://matrix.example.comjako serwera domowego i https://matrix.orgadresu URL serwera tożsamości.

Przykład logowania do Riot

Skonfiguruj Riot na własnym serwerze.

Riot jest również oprogramowaniem typu open source i można go bezpłatnie hostować na własnym serwerze. Nie wymaga żadnej bazy danych ani zależności. Ponieważ mamy już uruchomiony serwer Nginx, możemy go hostować na tym samym serwerze.

Domena lub subdomena, której używasz w Synapse i Riot, muszą być inne, aby uniknąć skryptów między witrynami. Możesz jednak użyć dwóch subdomen tej samej domeny. W tym samouczku będziemy używać riot.example.comjako domeny dla aplikacji Riot. Zamień wszystkie wystąpienia na riot.example.comrzeczywistą domenę lub subdomenę dla aplikacji Riot.

Pobierz Riot na swój serwer.

cd /opt/
sudo wget https://github.com/vector-im/riot-web/releases/download/v0.12.3/riot-v0.12.3.tar.gz

Zawsze możesz znaleźć link do najnowszej wersji na Github Riot .

Wypakuj archiwum.

sudo tar -xzf riot-v*.tar.gz

Zmień nazwę katalogu, aby ułatwić sobie obsługę.

sudo mv riot-v*/ riot/

Ponieważ już zainstalowaliśmy Certbot, możemy generować certyfikaty bezpośrednio. Upewnij się, że domena lub subdomena, której używasz, jest skierowana w stronę serwera.

sudo systemctl stop nginx
sudo certbot certonly --standalone -d riot.example.com

Wygenerowane certyfikaty prawdopodobnie będą przechowywane w /etc/letsencrypt/live/riot.example.com/katalogu.

Utwórz wirtualny host dla aplikacji Riot.

sudo nano /etc/nginx/conf.d/riot.conf

Wypełnij plik.

server {
    listen 80;
    server_name riot.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name riot.example.com;

    ssl_certificate           /etc/letsencrypt/live/riot.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/riot.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    root /opt/riot;
    index index.html index.htm;

    location / {
            try_files $uri $uri/ =404;
    }

    access_log    /var/log/nginx/riot.access.log;

  }

Skopiuj przykładowy plik konfiguracyjny.

sudo cp /opt/riot/config.sample.json /opt/riot/config.json

Teraz edytuj plik konfiguracyjny, aby wprowadzić kilka zmian.

sudo nano /opt/riot/config.json

Znajdź następujące linie.

"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",

Zamień wartość domyślnego adresu URL serwera domowego na adres URL serwera Matrix. W przypadku adresu URL serwera tożsamości można użyć opcji domyślnej lub podać jej wartość na serwerze tożsamości Matrix, czyli https://matrix.org.

"default_hs_url": "https://matrix.example.com",
"default_is_url": "https://matrix.org",

Zapisz plik i wyjdź. Przekaż własność plików użytkownikowi Nginx.

sudo chown -R nginx:nginx /opt/riot/

Uruchom ponownie Nginx.

sudo systemctl restart nginx

Możesz uzyskać dostęp do Riot na https://riot.example.com. Możesz teraz zalogować się przy użyciu wcześniej utworzonej nazwy użytkownika i hasła. Możesz połączyć się przy użyciu domyślnego serwera, ponieważ już zmieniliśmy domyślny serwer Matrix dla naszej aplikacji.

Masz już uruchomiony serwer macierzysty Matrix Synapse. Masz również hostowaną kopię Riot, której możesz użyć do wysłania wiadomości do innych osób przy użyciu jej identyfikatora Matrix, adresu e-mail lub numeru telefonu komórkowego. Zacznij od utworzenia pokoju rozmów na swoim serwerze i zaproś znajomych w Matrix do dołączenia do utworzonego pokoju rozmów.



Leave a Comment

Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS

Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS

Używasz innego systemu? Anchor CMS to bardzo prosty i niezwykle lekki, darmowy i otwarty system zarządzania treścią (CMS) Blog Engine, który

Jak zaktualizować CentOS 7, Ubuntu 16.04 i Debian 8

Jak zaktualizować CentOS 7, Ubuntu 16.04 i Debian 8

Podczas konfigurowania nowego serwera Linux zaleca się aktualizację jądra systemu i innych pakietów do najnowszej stabilnej wersji. W tym artykule

Skonfiguruj klaster RethinkDB w CentOS 7

Skonfiguruj klaster RethinkDB w CentOS 7

Wprowadzenie RethinkDB to baza danych NoSQL, która przechowuje dane jako dokumenty JSON. Ma bardzo intuicyjny język zapytań i funkcje powszechnie dostępne

Skonfiguruj Magento na CentOS 6

Skonfiguruj Magento na CentOS 6

Niezależnie od tego, czy chcesz umieścić zapasy sklepów online, czy po prostu prosty sklep z akcesoriami technicznymi, Magento jest doskonałym rozwiązaniem dla eCommerce online. Ten artykuł

Jak zainstalować i skonfigurować OrientDB Community Edition na CentOS 7

Jak zainstalować i skonfigurować OrientDB Community Edition na CentOS 7

OrientDB to wielomodowy model open source NoSQL DBMS nowej generacji. Dzięki obsłudze wielu modeli danych, OrientDB może zapewnić większą funkcjonalność i elastyczność

Jak zainstalować Neos CMS na CentOS 7

Jak zainstalować Neos CMS na CentOS 7

Neos to innowacyjny system zarządzania treścią typu open source, który doskonale nadaje się do tworzenia i edytowania treści online. Z myślą o autorach i redaktorach, Neo

Jak zainstalować Vtiger CRM Open Source Edition na CentOS 7

Jak zainstalować Vtiger CRM Open Source Edition na CentOS 7

Vtiger CRM to popularna aplikacja do zarządzania relacjami z klientami, która może pomóc przedsiębiorstwom zwiększyć sprzedaż, zapewnić obsługę klienta i zwiększyć zyski. ja

Jak zainstalować MaraDNS na CentOS 6

Jak zainstalować MaraDNS na CentOS 6

MaraDNS to lekki, ale solidny program serwera DNS typu open source. W porównaniu z innymi aplikacjami tego samego rodzaju, takimi jak ISC BIND, PowerDNS i djbdns

Instalowanie Netdata na CentOS 7

Instalowanie Netdata na CentOS 7

Używasz innego systemu? Netdata jest wschodzącą gwiazdą w dziedzinie monitorowania wskaźników systemowych w czasie rzeczywistym. W porównaniu z innymi narzędziami tego samego rodzaju, Netdata:

Jak zainstalować Starbound Server na CentOS 7

Jak zainstalować Starbound Server na CentOS 7

Używasz innego systemu? W tym samouczku wyjaśnię, jak skonfigurować serwer Starbound na CentOS 7. Wymagania wstępne Musisz mieć tę grę na sobie

Clustering RabbitMQ na CentOS 7

Clustering RabbitMQ na CentOS 7

RabbitMQ to broker komunikatów typu open source, który obsługuje AMQP, STOMP i inne technologie komunikacyjne. Jest szeroko stosowany w aplikacjach dla przedsiębiorstw

Skonfiguruj SA-MP San Andreas Multiplayer Server na CentOS 6

Skonfiguruj SA-MP San Andreas Multiplayer Server na CentOS 6

Witamy w innym samouczku Vultr. Tutaj dowiesz się, jak zainstalować i uruchomić serwer SAMP. Ten przewodnik został napisany dla CentOS 6. Wymagania wstępne Będziesz potrzebował

Zainstaluj Elgg na CentOS 7

Zainstaluj Elgg na CentOS 7

Używasz innego systemu? Elgg to silnik sieci społecznościowych typu open source, który umożliwia tworzenie środowisk społecznościowych, takich jak kampusowe sieci społecznościowe

Jak zainstalować serwer RStudio na CentOS 7

Jak zainstalować serwer RStudio na CentOS 7

RStudio Server to internetowa wersja RStudio, która jest serią narzędzi zaprojektowanych w celu ułatwienia kodowania przy użyciu języka programowania R. W thi

Instalowanie Bolt CMS na CentOS 7

Instalowanie Bolt CMS na CentOS 7

Bolt to open source CMS napisany w PHP. Kod źródłowy Bolts jest hostowany na GitHub. Ten przewodnik pokaże Ci, jak zainstalować Bolt CMS na nowym CentOS 7 Vult

Jak zainstalować Elasticsearch na instancji serwera Vultr CentOS 7

Jak zainstalować Elasticsearch na instancji serwera Vultr CentOS 7

Elasticsearch to popularny wyszukiwarka pełnotekstowa i silnik analityczny typu open source. Dzięki swojej wszechstronności, skalowalności i łatwości użytkowania, Elasticsearch jest szeroko rozpowszechniony

Wdróż Kubernetes za pomocą Kubeadm na CentOS 7

Wdróż Kubernetes za pomocą Kubeadm na CentOS 7

Omówienie Ten artykuł ma na celu pomóc ci w szybkim uruchomieniu klastra Kubernetes z kubeadm. W tym przewodniku zostaną wdrożone dwa serwery

Sails.js należy skonfigurować do programowania w CentOS 7

Sails.js należy skonfigurować do programowania w CentOS 7

Używasz innego systemu? Wprowadzenie Sails.js to framework MVC dla Node.js, podobny do Ruby on Rails. Umożliwia tworzenie nowoczesnych aplikacji wer

Jak zainstalować PufferPanel (bezpłatny panel sterowania Minecraft) na CentOS 7

Jak zainstalować PufferPanel (bezpłatny panel sterowania Minecraft) na CentOS 7

Wprowadzenie W tym samouczku zainstaluj PufferPanel na naszym Vultr VPS. PufferPanel to otwarty, darmowy panel kontrolny do zarządzania tobą

Lepsze narzędzia monitorowania dla Ubuntu i CentOS

Lepsze narzędzia monitorowania dla Ubuntu i CentOS

Wprowadzenie Systemy Linux są domyślnie dostarczane z narzędziami do monitorowania, takimi jak top, df i du, które pomagają monitorować procesy i miejsce na dysku. Często jednak są

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.