docs: replace meet.cryptopro.ru with meet.small-dm.ru as default

This commit is contained in:
zarazaex69
2026-05-18 23:37:10 +03:00
parent d872f3c900
commit 31796efe15
14 changed files with 30 additions and 30 deletions

View File

@@ -11,7 +11,7 @@ auth:
# For jitsi: full conference URL (https://host/room or host/room).
# Must match the server.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet.small-dm.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# Or use key_file: "./olcrtc.key" to keep the secret out of this file.

View File

@@ -103,7 +103,7 @@ Enter choice [1-4, default: 1]:
Выбери сервис. Полную матрицу совместимости смотри в [settings.md](settings.md).
**По умолчанию `jitsi`** — стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet.cryptopro.ru`).
**По умолчанию `jitsi`** — стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet.small-dm.ru`).
### Transport (как именно передавать данные)
@@ -130,7 +130,7 @@ Enter choice [1-4, default: 1]:
Enter Room ID:
```
Для **jitsi** — полный URL комнаты в формате `https://host/room` (например `https://meet.cryptopro.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet.
Для **jitsi** — полный URL комнаты в формате `https://host/room` (например `https://meet.small-dm.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet.
Для **telemost** и **wbstream** - создай руму через сайт ([телемост](https://telemost.yandex.ru/), [wbstream](https://stream.wb.ru)) и вставь её ID.

View File

@@ -147,7 +147,7 @@ openssl rand -hex 32
### jitsi + datachannel (рекомендуется)
Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже — `meet.cryptopro.ru` (публичный CryptoPro Jitsi), но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.).
Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже — `meet.small-dm.ru`, но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.).
Создай YAML конфиг:
@@ -158,7 +158,7 @@ link: direct
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/myroom"
id: "https://meet.small-dm.ru/myroom"
crypto:
key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799"
net:
@@ -234,7 +234,7 @@ link: direct
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/myroom"
id: "https://meet.small-dm.ru/myroom"
crypto:
key: "<hex-key-такой-же-как-на-сервере>"
net:

View File

@@ -12,7 +12,7 @@ auth:
# For jitsi: full conference URL (https://host/room or host/room).
# For telemost / wbstream / jazz: room ID returned by the service.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet.small-dm.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# 32-byte hex (64 chars). Generate with: openssl rand -hex 32

View File

@@ -30,11 +30,11 @@
**WBStream:** все транспорты кроме datachannel работают. DataChannel в обычном guest flow без выдавания модератора не работает — WB Stream выдаёт токены с `canPublishData=false`, и DC не маршрутизирует данные.
**Jitsi:** datachannel стабильно проходит — реализован поверх colibri-ws bridge channel и шлёт байты через `EndpointMessage{raw}` broadcast. Подходит для self-hosted и публичных Jitsi Meet инстансов без аутентификации (`https://meet.cryptopro.ru/...`, `https://meet.jit.si/...` и т.п.). Видео-транспорты (vp8channel, seichannel, videochannel) экспонируют sendable VideoTrack через pion PeerConnection после Jingle session-accept, но Jicofo требует дополнительных протокольных шагов (LastN, ReceiverVideoConstraints, source-add) для маршрутизации видео — поэтому они помечены `~` (best effort).
**Jitsi:** datachannel стабильно проходит — реализован поверх colibri-ws bridge channel и шлёт байты через `EndpointMessage{raw}` broadcast. Подходит для self-hosted и публичных Jitsi Meet инстансов без аутентификации (`https://meet.small-dm.ru/...`, `https://meet.jit.si/...` и т.п.). Видео-транспорты (vp8channel, seichannel, videochannel) экспонируют sendable VideoTrack через pion PeerConnection после Jingle session-accept, но Jicofo требует дополнительных протокольных шагов (LastN, ReceiverVideoConstraints, source-add) для маршрутизации видео — поэтому они помечены `~` (best effort).
**Jitsi + seichannel — отдельная оговорка.** SEI NAL-юниты идут пассажиром в H.264 видеопотоке, а Jicofo на self-hosted инстансах (например `meet.cryptopro.ru`) периодически режет/откладывает upstream видео когда ресивера в комнате формально нет — для нас это выглядит как `seichannel ack timeout` при формально живом PeerConnection. В steady-state транспорт работает, но e2e матрица помечает его `Unstable` (флаппит): зелёного и красного результата в CI достаточно, тест suite на этом не валится. Для надёжной передачи данных через jitsi предпочтительнее `datachannel` или `vp8channel`.
**Jitsi + seichannel — отдельная оговорка.** SEI NAL-юниты идут пассажиром в H.264 видеопотоке, а Jicofo на self-hosted инстансах (например `meet.small-dm.ru`) периодически режет/откладывает upstream видео когда ресивера в комнате формально нет — для нас это выглядит как `seichannel ack timeout` при формально живом PeerConnection. В steady-state транспорт работает, но e2e матрица помечает его `Unstable` (флаппит): зелёного и красного результата в CI достаточно, тест suite на этом не валится. Для надёжной передачи данных через jitsi предпочтительнее `datachannel` или `vp8channel`.
**Рекомендуемая комбинация: `jitsi + datachannel`** — стабильно работает на любом self-hosted или публичном Jitsi Meet (например `meet.cryptopro.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` — стабильно для коммерческих сценариев, не требует специальных прав.
**Рекомендуемая комбинация: `jitsi + datachannel`** — стабильно работает на любом self-hosted или публичном Jitsi Meet (например `meet.small-dm.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` — стабильно для коммерческих сценариев, не требует специальных прав.
Скорость по убыванию: `datachannel` > `vp8channel` > `seichannel` > `videochannel`

View File

@@ -223,7 +223,7 @@ data: data
### jitsi + datachannel
```text
olcrtc://jitsi?datachannel@https://meet.cryptopro.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub
olcrtc://jitsi?datachannel@https://meet.small-dm.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub
```
`<RoomID>` для jitsi — полный URL комнаты в формате `https://host/room` (или `host/room`). Поддерживается любой self-hosted Jitsi Meet инстанс без аутентификации; для публичных серверов вроде `meet.jit.si` тот же формат.
@@ -236,7 +236,7 @@ link: direct
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/myroom"
id: "https://meet.small-dm.ru/myroom"
crypto:
key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799"
net:

View File

@@ -41,7 +41,7 @@ type Provider struct{}
// Engine reports which engine consumes credentials from this auth provider.
func (Provider) Engine() string { return "jitsi" }
const defaultServiceURL = "https://meet.cryptopro.ru"
const defaultServiceURL = "https://meet.small-dm.ru"
// DefaultServiceURL returns the default Jitsi Meet service URL used by config
// defaults and interactive helpers.

View File

@@ -21,7 +21,7 @@ func TestParseRoomURL(t *testing.T) {
room string
wantErr bool
}{
{name: "https url", raw: "https://meet.cryptopro.ru/" + testRoom, host: "meet.cryptopro.ru", room: testRoom},
{name: "https url", raw: "https://meet.small-dm.ru/" + testRoom, host: "meet.small-dm.ru", room: testRoom},
{name: "http url", raw: "http://" + testHost + "/" + testRoom, host: testHost, room: testRoom},
{name: "scheme-less", raw: "meet.example.com/" + testRoom, host: "meet.example.com", room: testRoom},
{name: "trailing slash", raw: "https://" + testHost + "/" + testRoom + "/", host: testHost, room: testRoom},
@@ -54,14 +54,14 @@ func TestParseRoomURL(t *testing.T) {
func TestProviderIssue(t *testing.T) {
creds, err := Provider{}.Issue(context.Background(), auth.Config{
RoomURL: "https://meet.cryptopro.ru/olcrtc",
RoomURL: "https://meet.small-dm.ru/olcrtc",
Name: "olcrtc-test",
})
if err != nil {
t.Fatalf("Issue: %v", err)
}
if creds.URL != "meet.cryptopro.ru" {
t.Fatalf("URL = %q, want %q", creds.URL, "meet.cryptopro.ru")
if creds.URL != "meet.small-dm.ru" {
t.Fatalf("URL = %q, want %q", creds.URL, "meet.small-dm.ru")
}
if got := creds.Extra[CredentialKeyRoom]; got != "olcrtc" {
t.Fatalf("room = %q, want %q", got, "olcrtc")

View File

@@ -45,7 +45,7 @@ const (
localDNSServer = "127.0.0.1:53"
videoHWNone = "none"
testClientDeviceID = "client-1"
defaultJitsiRoomURL = "https://meet.cryptopro.ru/deadbeef"
defaultJitsiRoomURL = "https://meet.small-dm.ru/deadbeef"
)
var (
@@ -405,7 +405,7 @@ func realE2ECaseExpectation(carrierName, transportName string) realE2EExpectatio
//
// seichannel is marked Unstable: SEI NAL data piggybacks on
// the H.264 video stream, and Jicofo's bandwidth allocator
// for self-hosted Jitsi instances (e.g. meet.cryptopro.ru)
// for self-hosted Jitsi instances (e.g. meet.small-dm.ru)
// periodically suppresses the video upstream when there's
// no obvious viewer demand, which manifests as recurring
// "seichannel ack timeout" against an otherwise healthy
@@ -437,7 +437,7 @@ func realE2EExpectationLabel(expectation realE2EExpectation) string {
// logUnstableOutcome records the result of an Unstable matrix entry
// without failing the test. Unstable combos exist to keep the matrix
// honest about transports that flap against a particular carrier
// (e.g. seichannel against meet.cryptopro.ru's bandwidth allocator)
// (e.g. seichannel against meet.small-dm.ru's bandwidth allocator)
// while still surfacing whether the run happened to pass or fail.
func logUnstableOutcome(t *testing.T, label, carrierName, transportName string, err error) {
t.Helper()
@@ -575,9 +575,9 @@ func realRoomURL(ctx context.Context, t *testing.T, carrierName string) string {
return room
case "jitsi":
// Jitsi has no notion of "creating" a room — names are conjured
// on first join. The default flag points at meet.cryptopro.ru
// (a CryptoPro-operated public Jitsi instance). When the flag is
// left at its default value, a per-process random suffix is appended
// on first join. The default flag points at meet.small-dm.ru
// by default. When the flag is left at its default value, a
// per-process random suffix is appended
// to the slug: two participants share a single room by design (one
// pair, one shared key), so any third participant — including another
// concurrent test process with the same shared key — would corrupt

View File

@@ -138,7 +138,7 @@ type bridgeOutbound struct {
// New creates a new Jitsi engine session.
//
// cfg.URL carries the Jitsi host (e.g. "meet.cryptopro.ru") — populated by the
// cfg.URL carries the Jitsi host (e.g. "meet.small-dm.ru") — populated by the
// jitsi auth provider after parsing the user-supplied room URL. cfg.Extra
// must contain the room name under the "room" key.
func New(_ context.Context, cfg engine.Config) (engine.Session, error) {

View File

@@ -15,7 +15,7 @@
//
// sess, err := olcrtc.New(ctx, olcrtc.Config{
// Auth: "jitsi",
// RoomID: "https://meet.cryptopro.ru/myroom",
// RoomID: "https://meet.small-dm.ru/myroom",
// })
//
// Import the implementations you need via blank imports, or call [RegisterDefaults]:

View File

@@ -7,7 +7,7 @@
// srv := tunnel.New(tunnel.Config{
// Transport: "datachannel",
// Carrier: "jitsi",
// RoomURL: "https://meet.cryptopro.ru/myroom",
// RoomURL: "https://meet.small-dm.ru/myroom",
// KeyHex: "<64-char hex>",
// DNSServer: "1.1.1.1:53",
// AuthHook: func(deviceID string, claims map[string]any) (string, error) {

View File

@@ -133,8 +133,8 @@ echo "[*] Using transport: $TRANSPORT"
echo ""
if [ "$AUTH" = "jitsi" ]; then
read -p "Jitsi base URL [default: https://meet.cryptopro.ru/]: " JITSI_BASE_INPUT
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.cryptopro.ru/}
read -p "Jitsi base URL [default: https://meet.small-dm.ru/]: " JITSI_BASE_INPUT
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.small-dm.ru/}
JITSI_BASE_URL="${JITSI_BASE_URL%/}"
read -p "Enter Jitsi room name or URL: " JITSI_ROOM_INPUT

View File

@@ -151,8 +151,8 @@ if [ "$CARRIER" = "jazz" ]; then
;;
esac
elif [ "$CARRIER" = "jitsi" ]; then
read -p "Jitsi base URL [default: https://meet.cryptopro.ru/]: " JITSI_BASE_INPUT
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.cryptopro.ru/}
read -p "Jitsi base URL [default: https://meet.small-dm.ru/]: " JITSI_BASE_INPUT
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.small-dm.ru/}
JITSI_BASE_URL="${JITSI_BASE_URL%/}"
echo "Room options:"