Tools
mumpeer
Mały relay dla bezpośrednich połączeń Mumcorda między użytkownikami, na przykład do udostępniania ekranu albo obrazów w pełnym rozmiarze. Gdy dwie osoby nie mogą się połączyć bezpośrednio, za CGNAT, ostrymi zaporami albo w sieciach bez UDP, albo nie chcą pokazywać swojego adresu IP, obie łączą się zamiast tego z relayem. On tylko przekazuje zaszyfrowane pakiety, jak serwer TURN.
Obok twojego serwera Mumble
Społeczność uruchamia mumpeer obok swojego serwera Mumble, razem z botem relay mumbot peer. Bot ogłasza relay i rozdaje krótkotrwałe tokeny. Serwer Mumble pozostaje niezmieniony.
Tylko zweryfikowani użytkownicy
Token działa tylko dla dokładnie dwóch certyfikatów, raz po każdej stronie i domyślnie przez 120 sekund. Relay nigdy nie przekazuje nigdzie indziej i nigdy sam nie otwiera połączeń, więc nie jest otwartym proxy.
Szyfrowanie end-to-end
To, co przechodzi przez relay, to osobne zaszyfrowane połączenie między dwoma użytkownikami, przypięte do ich certyfikatów Mumble. Relay nie może go ani odczytać, ani zmienić.
Przez prawie każdą zaporę
QUIC przez UDP albo, gdzie UDP jest zablokowany, TLS przez TCP. Oba na porcie 443 i z TLS 1.3.
Całkowicie opcjonalne
Mumcord działa też bez bota i relaya. W Mumcordzie wybierasz sam: relay wyłączony, tylko gdy połączenie bezpośrednie zawiedzie, albo zawsze.
Co może zobaczyć operator
- Adresy IP obu użytkowników sesji
- Które dwa certyfikaty ze sobą rozmawiają
- Ile danych płynie i kiedy
- Nie treść: jest szyfrowana end-to-end. Mumcord mówi ci o tym, zanim użyjesz relaya
- Nigdy nie są logowane: pełne adresy IP, pełne skróty certyfikatów, tokeny ani zawartość pakietów
Uruchom go w Dockerze
Wpisz długi losowy sekret do .env jako PEER_API_SECRET (na przykład z openssl rand -hex 32). Z przykładu relaya Mumbota zapisz mumpeer.example.toml jako mumpeer.toml i ustaw w nim public_host, a bot.example.toml jako bot.toml. Potem uruchom relay i bota razem:
services:
mumpeer:
image: ghcr.io/mumcord/mumpeer:0.1.0
restart: unless-stopped
environment:
MUMPEER_API_SECRET: ${PEER_API_SECRET:?set PEER_API_SECRET in .env}
ports: ["443:443/udp", "443:443/tcp"]
volumes:
- ./mumpeer.toml:/config/mumpeer.toml:ro
- mumpeer-data:/var/lib/mumpeer
mumbot:
image: ghcr.io/mumcord/mumbot:0.2.0
command: ["peer"]
restart: unless-stopped
network_mode: "service:mumpeer"
environment:
MUMBOT_CONFIG: /config/bot.toml
MUMBOT_PEER_API_SECRET: ${PEER_API_SECRET:?set PEER_API_SECRET in .env}
volumes:
- ./bot.toml:/config/bot.toml:ro
- mumbot-data:/data
healthcheck:
disable: true
volumes:
mumpeer-data:
mumbot-data: Przy pierwszym uruchomieniu odcisk relaya pojawia się w logu. Bot ogłasza go Mumcordowi, nic więcej nie trzeba udostępniać. Otwórz UDP i TCP na porcie 443, API zostaje między relayem a botem. Mumcord używa relaya od wersji 0.5.0.