Jak zainstalować Synapse Matrix Server z Docker Compose

Przykład ilustrujący: Wyobraź sobie małą grupę wolontariuszy, która chce mieć własny serwer domowy Matrix pod adresem chat.example.com. To hipotetyczna konfiguracja, a nie raport z przetestowanego serwera. Te same kroki można zaadaptować do rzeczywistej domeny, ale należy ostrożnie dobrać nazwę serwera Matrix: Synapse używa jej w identyfikatorach użytkowników i nie można jej później zmienić.

Ten przewodnik opisuje tworzenie usługi Synapse i bazy danych PostgreSQL za pomocą Docker Compose. Oficjalny obraz Dockera firmy Synapse domyślnie uruchamia się z bazą SQLite, co jest wygodne w przypadku jednorazowego testu; dokumentacja Dockera firmy Synapse zaleca PostgreSQL do zastosowań produkcyjnych. Dlatego przykład najpierw generuje konfigurację Synapse, zmienia ustawienia bazy danych na PostgreSQL, a następnie uruchamia oba kontenery. Oficjalny obraz to ghcr.io/element-hq/synapse. Instrukcje i szczegóły obrazu zostały sprawdzone pod kątem aktualnej oficjalnej dokumentacji z 6 października 2026 r.; tagi obrazów i obsługiwane wersje oprogramowania mogą ulec zmianie, dlatego przed wdrożeniem długoterminowym należy zapoznać się z powiązaną dokumentacją.

Czego potrzebujesz przed instalacją

  • Serwer Linux lub inny host obsługujący Dockera z zainstalowanym Docker Engine i wtyczką Docker Compose. Sprawdź, czy Compose jest dostępny docker compose version. Postępuj zgodnie z oficjalnymi instrukcjami instalacji Dockera dla swojego systemu operacyjnego.
  • Domena lub subdomena wskazująca na serwer. W tym przykładzie chat.example.comjest to nazwa serwera Synapse, więc identyfikatory użytkowników lokalnych będą wyglądać następująco @alex:chat.example.com: . Zastąp ją domeną, którą kontrolujesz, przed wygenerowaniem konfiguracji.
  • Odwrotny serwer proxy lub inna metoda zakończenia protokołu TLS do użytku publicznego. Domyślny nasłuchiwacz HTTP w Synapse na porcie 8008nie jest punktem końcowym HTTPS skierowanym do Internetu. Ten przykład Compose wiąże ten port z interfejsem pętli zwrotnej hosta, aby odwrotny serwer proxy na tym samym komputerze mógł się z nim połączyć.

Nazwa w polu „In” SYNAPSE_SERVER_NAMEniekoniecznie musi być adresem URL każdego połączenia klienta. Jeśli chcesz używać krótszych identyfikatorów, na przykład @alex:example.compodczas obsługi klientów z adresu chat.example.com, wymaga to przemyślanej konfiguracji domeny i wykrywania. Zdecyduj o tym przed utworzeniem kont.

1. Utwórz katalog roboczy i hasło do bazy danych

Na serwerze utwórz katalog dla projektu Compose i stałych plików Synapse:

mkdir -p ~/matrix-synapse/data
cd ~/matrix-synapse

Utwórz plik lokalny .env, który będzie odczytywany przez Docker Compose. Wygeneruj długie, losowe hasło za pomocą menedżera haseł lub lokalnego, bezpiecznego generatora i umieść je po POSTGRES_PASSWORD=. W tym przykładzie użyj liter i cyfr, aby uniknąć późniejszych problemów z cytowaniem w YAML. Nie zatwierdzaj tego pliku w publicznym repozytorium i ogranicz jego uprawnienia:

umask 077
nano .env

Plik powinien zawierać jedną linię, na przykład POSTGRES_PASSWORD=replace-with-a-long-random-value. Tekst jest symbolem zastępczym, a nie hasłem do ponownego użycia. Zachowaj hasło dostępne do konfiguracji bazy danych Synapse w kroku 3.

2. Zdefiniuj usługi Synapse i PostgreSQL

Utwórz compose.yamlw katalogu projektu:

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse -d synapse"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 20s

  synapse:
    image: ghcr.io/element-hq/synapse:latest
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      SYNAPSE_SERVER_NAME: chat.example.com
      SYNAPSE_REPORT_STATS: "no"
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8008:8008"

volumes:
  postgres_data:

Zastąp chat.example.comwybraną nazwą serwera. Kontrola stanu PostgreSQL pozwala Compose poczekać na zgłoszenie gotowości bazy danych przed uruchomieniem Synapse. Podany wolumin bazy danych i ./datakatalog zamontowany na hoście przetrwają zamianę kontenerów; samo usunięcie kontenerów nie powoduje ich usunięcia. Unikaj tej opcji, docker compose down -vchyba że celowo chcesz usunąć wolumin bazy danych.

Przykład ma :latestna celu uproszczenie pierwszego pobrania. W przypadku serwera zarządzanego wybierz i zapisz konkretny tag wydania Synapse lub skrót obrazu, a następnie zaktualizuj go w ramach zaplanowanego procesu aktualizacji po zapoznaniu się z informacjami o wydaniu. Nie zakładaj, że latesttag zmienny zachowa tę samą wersję.

3. Wygeneruj konfigurację Synapse i skieruj ją do PostgreSQL

Uruchom oficjalny obraz raz w trybie generowania konfiguracji. Ponieważ Compose montuje się ./dataw /data, wygenerowany klucz konfiguracji i podpisu pozostaje na hoście:

docker compose run --rm synapse generate

To polecenie wykorzystuje nazwę serwera i anonimowe statystyki wybrane ze środowiska Compose. Synapse tworzy również klucz podpisu; należy go przechowywać w katalogu danych i uwzględniać w chronionych kopiach zapasowych. Nie należy go ponownie generować ani usuwać podczas standardowej aktualizacji kontenera.

Otwórz data/homeserver.yamli zastąp wygenerowaną database:sekcję następującymi ustawieniami. Użyj dokładnego hasła z .envsymbolu zastępczego:

database:
  name: psycopg2
  args:
    user: synapse
    password: 'replace-with-the-same-random-value'
    dbname: synapse
    host: postgres
    port: 5432
    cp_min: 5
    cp_max: 10

Zachowaj otaczające wcięcie YAML i upewnij się, że jest tylko jedna aktywna database:sekcja. Nazwa hosta postgresto nazwa usługi Compose, którą kontenery mogą rozwiązywać w swojej współdzielonej sieci domyślnej. Konfiguracja używa udokumentowanej nazwy silnika PostgreSQL firmy Synapse, psycopg2, oraz nazw argumentów bazy danych, w tym dbname.

W tym prostym przykładzie hasło do bazy danych pojawia się zarówno w konfiguracji Synapse, jak i w .envpliku chronionym. Traktuj oba pliki jako sekrety, ogranicz dostęp do hosta i zastosuj dedykowane podejście do zarządzania sekretami, jeśli środowisko wdrożeniowe tego wymaga. Nie wklejaj prawdziwego hasła do logów, zrzutów ekranu ani zgłoszeń do pomocy technicznej.

4. Uruchom Synapse za pomocą Docker Compose

Uruchom stos w tle:

docker compose up -d

Sprawdź stan usługi i przeczytaj logi uruchamiania:

docker compose ps
docker compose logs --tail=100 synapse

Poczekaj, aż Synapse zakończy konfigurację bazy danych po pierwszym uruchomieniu. Uruchomiony kontener oznacza jedynie, że jego proces jest aktywny; przed kontynuacją sprawdź logi pod kątem błędów konfiguracji, bazy danych lub uprawnień. Aby monitorować logi w miarę ich napływania, użyj docker compose logs -f synapsei naciśnij Ctrl+C, aby zatrzymać śledzenie ich bez zatrzymywania kontenera.

5. Zweryfikuj lokalne API i skonfiguruj dostęp publiczny

Z hosta Docker zażądaj punktu końcowego wersji interfejsu API klienta Synapse:

curl -fsS http://127.0.0.1:8008/_matrix/client/versions

Pomyślna odpowiedź to kod JSON opisujący obsługiwane wersje API klienta Matrix. Potwierdza to, że nasłuchiwacz HTTP odpowiada lokalnie; nie dowodzi to jednak, że DNS, HTTPS ani federacja są poprawnie skonfigurowane.

Skonfiguruj odwrotny serwer proxy hosta, aby przekierowywał żądania dla wybranej domeny http://127.0.0.1:8008i uzyskiwał prawidłowy certyfikat TLS. Zachowaj ścieżkę żądania Matrix podczas korzystania z serwera proxy. Następnie sprawdź publiczny punkt końcowy:

curl -fsS https://chat.example.com/_matrix/client/versions

Zastąp przykładową nazwę hosta swoją prawdziwą nazwą. Jeśli klienci muszą wykryć serwer domowy z oddzielnej domeny identyfikatora użytkownika, opublikuj odpowiednie rekordy wykrywania znanych rekordów Matrix dla tego projektu. Federacja wymaga również prawidłowego routingu publicznego i DNS; 8008samo otwarcie portu lokalnego nie zapewnia pełnego wdrożenia publicznego. Przed udostępnieniem usługi zapoznaj się z wytycznymi Synapse dotyczącymi odwrotnego proxy i federacji.

6. Utwórz pierwsze konto administratora

Synapse domyślnie wyłącza rejestrację publiczną. W przypadku serwera prywatnego należy zachować to ustawienie domyślne i utworzyć konta z poziomu wiersza poleceń. Tymczasowo dodaj registration_shared_secretwartość strong do data/homeserver.yaml, a następnie uruchom ponownie Synapse, aby odczytał zmianę:

docker compose restart synapse

Uruchom narzędzie rejestracyjne w kontenerze. Pojawi się monit o podanie nazwy użytkownika i hasła; ustawienie --admintworzy pierwszego administratora:

docker compose exec synapse register_new_matrix_user \
  http://localhost:8008 \
  -c /data/homeserver.yaml \
  --admin

Po utworzeniu konta usuń je registration_shared_secretz konfiguracji i ponownie uruchom Synapse. Pozostawienie skonfigurowanego hasła pozwala każdemu, kto je uzyska, na rejestrację kont standardowych lub administratora za pośrednictwem interfejsu rejestracji. Zaloguj się za pomocą klienta Matrix obsługującego niestandardowe serwery domowe, używając adresu URL serwera dostarczonego przez odwrotny serwer proxy.

Kopie zapasowe, aktualizacje i typowe poprawki

  • Utwórz kopię zapasową właściwych danych: zatrzymaj lub regularnie twórz migawki danych PostgreSQL i twórz kopie zapasowe ./data, w tym konfigurację, nośniki i klucz podpisu. Sama kopia compose.yamlnie przywróci serwera domowego. Przechowuj kopie zapasowe w innym miejscu niż serwer i okresowo sprawdzaj, czy możesz je odczytać.
  • Synapse nie może zapisać do /data: sprawdź własność hosta i uprawnienia do niego ./data. Użytkownik środowiska uruchomieniowego oficjalnego obrazu potrzebuje uprawnień do odczytu konfiguracji i zapisu danych. Dostosuj własność hosta ostrożnie, zamiast ustawiać katalog jako dostępny do zapisu dla wszystkich.
  • Połączenie z bazą danych nie powiodło się: sprawdź, czy konfiguracja bazy danych używa host: postgres, czy hasło jest zgodne .envi czy docker compose logs postgresbaza danych jest prawidłowa. Stan gotowości Compose depends_onzmniejsza liczbę wyścigów startowych, ale nie naprawia nieprawidłowych danych uwierzytelniających.
  • Lokalny interfejs API działa, ale klienci nie mogą się połączyć: sprawdź rekord DNS, certyfikat TLS, serwer proxy odwrotnego (reverse-proxy upstream) i rekordy wykrywania dla wybranej konfiguracji domeny. Mapowanie portów tylko w pętli zwrotnej jest celowe dla serwera proxy tego samego hosta; serwer proxy w innym kontenerze wymaga współdzielonej sieci Docker i innego projektu routingu.
  • Aktualizacja: najpierw wykonaj kopię zapasową, zapoznaj się z informacjami o wydaniu Synapse, zaktualizuj przypięty znacznik obrazu i utwórz usługę docker compose pullponownie za pomocą docker compose up -d. Zachowaj ten sam katalog danych, wolumin bazy danych, nazwę serwera i klucz podpisu.

W przykładowej konfiguracji dla grupy wolontariuszy instalacja kończy się dopiero po udzieleniu odpowiedzi przez lokalny punkt końcowy, udzieleniu odpowiedzi przez punkt końcowy HTTPS za pośrednictwem serwera proxy i możliwości zalogowania się administratora przy użyciu docelowej domeny Matrix ID. Te kontrole są praktycznymi wskaźnikami udanego wdrożenia; nie zastępują one jednak weryfikacji zabezpieczeń, kopii zapasowych, federacji i wymagań operacyjnych przed zaproszeniem szerszej społeczności.

Oficjalne referencje

Zostaw komentarz

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

Porównaj 10 narzędzi do pingowania, które umożliwiają szybkie wykrywanie sieci LAN, skanowanie międzyplatformowe i zarządzanie adresami IP. Dowiedz się, co narzędzie pingujące może Ci powiedzieć, a czego nie.

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

Porównaj sześć narzędzi do zarządzania siecią służących do monitorowania wydajności, obejmujących zasięg SNMP, mapowanie, alerty, modele wdrażania i kompromisy kosztów.

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Porównaj siedem darmowych i otwartych monitorów pingów — od kompletnych pakietów sieciowych po ukierunkowane sondy opóźnień — i wybierz odpowiedni monitor pod kątem dostępności, utraty pakietów i historii.

QoS w sieciach: czym jest jakość usług i jak działa

QoS w sieciach: czym jest jakość usług i jak działa

Dowiedz się, co oznacza QoS w sieciach, w jaki sposób oznaczenia DSCP i kolejki ruchu nadają priorytet aplikacjom głosowym, wideo i biznesowym oraz czego QoS nie jest w stanie naprawić.

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Porównaj niezawodne oprogramowanie serwera SFTP dla systemów Windows i Linux, w tym OpenSSH, Bitvise, SolarWinds i SFTPGo. Znajdź rozwiązanie odpowiednie dla swoich potrzeb w zakresie bezpieczeństwa i transferu plików.

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

Porównaj siedem narzędzi do zarządzania adresami IP służących do wykrywania podsieci, koordynacji DNS i DHCP, inwentaryzacji sieci i otwartego oprogramowania IPAM.

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

Porównaj sześć narzędzi do monitorowania systemu Windows Server pod kątem zbierania danych systemu Windows, widoczności aplikacji, modelu wdrażania i licencjonowania, aby znaleźć odpowiednie rozwiązanie.

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

Porównaj narzędzia do skanowania sieciowego umożliwiające szybkie wykrywanie urządzeń, skanowanie adresów IP na wielu platformach oraz zarządzanie IPAM w przedsiębiorstwie. Znajdziesz tu wskazówki dotyczące dopasowania każdej opcji do swojej sieci.

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Zbuduj praktyczny monitoring sieci z przejrzystym zakresem urządzeń, przydatnymi wskaźnikami wydajności, przydatnymi alertami oraz porównaniem SolarWinds NPM, PRTG i OpManager.

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Użyj opcji --traceroute programu Nmap, aby mapować przeskoki do autoryzowanego hosta, zrozumieć dane wyjściowe dotyczące przeskoków i czasu RTT oraz rozwiązywać problemy z brakującymi odpowiedziami bez nadmiernego skanowania.