Tools

mumpeer

Малко реле за директните връзки на Mumcord между потребители, например за споделяне на екрана или за изображения в пълен размер. Когато двама души не могат да се достигнат директно, зад CGNAT, строги защитни стени или в мрежи без UDP, или не искат да показват IP адреса си, и двамата се свързват към релето. То само предава криптираните пакети, като TURN сървър.

Последна версия: v0.1.0

До твоя Mumble сървър

Общност пуска mumpeer до своя Mumble сървър, заедно с бота за релето mumbot peer. Ботът обявява релето и раздава краткотрайни токени. Mumble сървърът остава непроменен.

Само проверени потребители

Токенът важи само за точно два сертификата, по веднъж от всяка страна и по подразбиране 120 секунди. Релето никога не препраща никъде другаде и никога само не отваря връзки, така че не е отворен прокси.

Криптирано от край до край

Това, което минава през релето, е отделна криптирана връзка между двамата потребители, вързана към техните Mumble сертификати. Релето не може нито да я чете, нито да я променя.

През почти всяка защитна стена

QUIC върху UDP или, където UDP е блокиран, TLS върху TCP. И двете на порт 443 и с TLS 1.3.

Напълно по избор

Mumcord работи и без бот и реле. В Mumcord избираш ти: релето изключено, само когато директната връзка не успее, или винаги.

Какво може да види операторът

  • IP адресите на двамата потребители в една сесия
  • Кои два сертификата си говорят
  • Колко данни текат и кога
  • Не и съдържанието: то е криптирано от край до край. Mumcord ти го казва, преди да използваш реле
  • Никога не се записват: пълни IP адреси, пълни хешове на сертификати, токени и съдържание на пакети

Пусни го с Docker

Запиши дълга случайна тайна в .env като PEER_API_SECRET (например от openssl rand -hex 32). От примера за релето на Mumbot запази mumpeer.example.toml като mumpeer.toml и задай в него public_host, а bot.example.toml като bot.toml. После стартирай релето и бота заедно:

docker-compose.yml
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:

При първия старт отпечатъкът на релето се показва в лога. Ботът го обявява на Mumcord, не е нужно да се споделя нищо друго. Отвори UDP и TCP на порт 443, API-то остава между релето и бота. Mumcord използва релето от версия 0.5.0.

Сътрудници

Изходен код Пълното ръководство в README → Идеи и грешки →