Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

A

Admin

@Admin
administrators
Сводка
Сообщения
360
Темы
82
Поделиться
0
Группы
1
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • Справка по Synadm
    A Admin

    Команда synadm regtok


    Использование: synadm regtok [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      Управление токенами регистрации.
    
    Опции:
      -h, --help                      Показать это сообщение и выйти.
    
    Команды:
      delete                          Удалить токен регистрации.
      details                         Показать подробную информацию о указанном токене.
      list                            Показать список токенов регистрации.
      new                             Создать новый токен регистрации.
      update                          Обновить существующий токен регистрации.
    

    Краткое пояснение

    Команда synadm regtok предназначена для управления токенами регистрации (registration tokens) в Synapse.

    Что такое токены регистрации?
    Это специальные одноразовые или многоразовые коды/ссылки, которые позволяют пользователям зарегистрироваться на вашем сервере, даже если открытая регистрация полностью отключена (enable_registration: false в конфиге).
    Токены очень удобны для:

    • закрытых сообществ
    • корпоративных серверов
    • приглашения конкретных людей
    • контроля количества регистраций
    • установки срока действия или ограничения по количеству использований

    Краткое описание каждой подкоманды

    Команда Что делает Типичные случаи использования
    delete Полностью удаляет токен регистрации Токен больше не нужен или был скомпрометирован
    details Показывает всю информацию о токене: кто создал, срок действия, сколько раз использован и т.д. Проверить статус конкретного токена
    list Выводит список всех существующих токенов с их статусами и параметрами Посмотреть, какие токены активны, сколько осталось использований
    new Создаёт новый токен с заданными параметрами (срок, количество использований, заметка и т.д.) Создать приглашение для нового пользователя или группы
    update Изменяет существующий токен (например, продлить срок, изменить лимит использований) Обновить параметры уже созданного токена

    Примеры использования

    # Показать все токены регистрации
    synadm regtok list
    
    # Создать новый токен на 10 использований, действителен 30 дней
    synadm regtok new --uses-allowed 10 --expiry 30d --note "Приглашение для команды разработки"
    
    # Посмотреть подробности конкретного токена
    synadm regtok details токен_строка_здесь_например_abc123xyz
    
    # Обновить токен — увеличить количество использований до 20
    synadm regtok update abc123xyz --uses-allowed 20
    
    # Удалить ненужный токен
    synadm regtok delete abc123xyz
    

    Важные замечания

    • Токены работают только если в конфиге Synapse включён параметр registration_shared_secret (или аналогичный механизм).
    • После создания токена его нужно передать пользователю (например, в виде ссылки https://ваш.домен/register?token=abc123xyz).
    • Токены не дают прав администратора — это просто способ зарегистрироваться.
    • После исчерпания лимита использований или истечения срока токен становится неактивным автоматически.
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm raw


    Использование: synadm raw [ОПЦИИ] КОНЕЧНАЯ_ТОЧКА
      Выполнение произвольного запроса к Synapse Admin API.
    
      Аргумент "КОНЕЧНАЯ_ТОЧКА" — это часть URL, которая идёт _после_ настроенного
      "Synapse base URL" и "Synapse Admin API path" (см. команду ``synadm config``).
      Пример: запрос к API "Query User Account" будет выглядеть так:
      ``synadm raw v2/users/%40testuser%3Aexample.org``.
      Кодирование URL (URL encoding) необходимо выполнять вручную на этом этапе.
      Рекомендуется включить отладочный вывод с помощью глобального флага ``-vv``.
    
    Опции:
      -m, --method [get|post|put|delete]
                                      HTTP-метод, который будет использован для запроса.
                                      [по умолчанию: get]
    
      Данные: [взаимоисключающие]
        -d, --data ТЕКСТ                JSON-строка, которая будет отправлена в теле запроса
                                        для методов post, put и delete — передаётся как строка.
                                        Обязательно экранируйте её от интерпретации оболочкой,
                                        используя одинарные кавычки. Пример:
                                        '{"key1": "value1", "key2": 123}' [по умолчанию: {}]
    
        -f, --data-file ИМЯ_ФАЙЛА       Прочитать JSON-данные из файла.
                                        Чтобы читать из стандартного ввода (stdin), укажите
                                        "-" в качестве имени файла.
    
      -h, --help                      Показать это сообщение и выйти.
    

    Краткое пояснение

    Команда synadm raw — это самый мощный и гибкий инструмент в synadm.
    Она позволяет отправить любой запрос к Admin API Synapse, даже если для этой операции ещё нет отдельной удобной подкоманды.

    Зачем это нужно

    • Выполнять новые или экспериментальные запросы к Admin API
    • Делать массовые операции (например, сброс пароля нескольким пользователям)
    • Получать данные, которые synadm пока не умеет красиво показывать
    • Отлаживать и тестировать API напрямую

    Как правильно указывать конечную точку
    После настроенного базового URL и пути Admin API (обычно http://localhost:8008/_synapse/admin/) вы добавляете только оставшуюся часть.
    Примеры:

    • v2/users/@testuser:example.org → запрос информации о пользователе
    • v1/reset_password/@user:domain.com → сброс пароля
    • v2/rooms/!roomid:domain.com → информация о комнате

    Обратите внимание:

    • Символы @, :, ! и т.д. нужно закодировать в URL-формате:
      @ → %40
      : → %3A
      ! → %21
      Пример: @testuser:example.org → %40testuser%3Aexample.org

    Примеры использования

    # Получить информацию о пользователе (GET-запрос)
    synadm raw v2/users/%40rootadmin%3Aтвой.домен.com
    
    # Сбросить пароль пользователя (POST-запрос)
    synadm raw --method post v1/reset_password/%40rootadmin%3Aтвой.домен.com \
      --data '{"new_password": "НовыйПароль123!", "logout_devices": true}'
    
    # Удалить комнату (DELETE-запрос)
    synadm raw --method delete v2/rooms/%21комната%3Aтвой.домен.com
    
    # Отправить данные из файла
    synadm raw --method post v1/some_endpoint --data-file request.json
    

    Полезные советы

    • Всегда используйте -vv для отладки — это покажет полный запрос и ответ:
      synadm -vv raw v2/users/%40user%3Adomain.com
    • Данные в --data обязательно экранируйте одинарными кавычками, иначе оболочка сломает JSON.
    • Если команда возвращает ошибку 401/403 — проверьте токен в конфиге (synadm config -u).
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm notice


    Использование: synadm notice [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      Отправка сообщений пользователям.
    
    Опции:
      -h, --help                      Показать это сообщение и выйти.
    
    Команды:
      send                            Отправить серверные уведомления (server notices) пользователям на локальном homeserver.
    

    Краткое пояснение

    Команда synadm notice предназначена для отправки официальных серверных уведомлений (server notices) всем или части пользователей вашего Synapse-сервера.

    Что такое server notices в Matrix/Synapse?
    Это специальные системные сообщения, которые появляются у пользователей в виде отдельной комнаты «Server Notices» (или «Уведомления сервера»).
    Они выглядят как сообщения от сервера (не от какого-то пользователя), и их нельзя удалить или скрыть обычными средствами.
    Обычно используются для:

    • важных объявлений от администратора сервера
    • предупреждений о технических работах
    • уведомлений о нарушении правил
    • информации о смене политики сервера
    • сообщений о необходимости обновить клиент и т.д.

    На данный момент доступна только одна подкоманда:

    • send — отправка уведомления

    Примеры использования

    # Отправить простое уведомление всем пользователям
    synadm notice send --message "Внимание! Сегодня в 20:00 будут технические работы на сервере. Ожидайте перерывов в работе."
    
    # Отправить уведомление только администраторам
    synadm notice send --message "Обновление сервера завершено успешно." --admin
    
    # Отправить уведомление с указанием темы (отображается жирным)
    synadm notice send --message "Важно: изменение политики конфиденциальности" --subject "Изменение правил"
    
    # Отправить уведомление только одному пользователю
    synadm notice send --message "Ваш аккаунт будет деактивирован через 7 дней из-за неактивности." --user @username:твой.домен.com
    

    Полезные флаги (обычно указываются при вызове send) :

    • --message "Текст..." — основной текст уведомления (обязательно)
    • --subject "Заголовок" — тема/заголовок (отображается жирным)
    • --admin — отправить только пользователям с правами администратора
    • --user @user:domain.com — отправить конкретному пользователю
    • --non-interactive / --yes — отключить подтверждение перед отправкой (для скриптов)

    Важные замечания

    • Уведомления видны только локальным пользователям вашего сервера (не федеративным).
    • После отправки уведомление появляется в специальной приватной комнате «Server Notices» у каждого получателя.
    • Пользователь не может удалить эту комнату или скрыть уведомления — они останутся навсегда.
    • Используйте с осторожностью — слишком много или раздражающих уведомлений могут отпугнуть пользователей.
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm media


    Использование: synadm media [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      Управление локальными и удалёнными медиафайлами.
    
    Опции:
      -h, --help                      Показать это сообщение и выйти.
    
    Команды:
      delete                          Удалить локальные медиафайлы по ID, размеру или возрасту
      list                            Показать список локальных медиафайлов по комнате или пользователю
      protect                         Защитить конкретные медиафайлы от помещения в карантин
      purge                           Удалить старые кэшированные удалённые медиафайлы
      quarantine                      Поместить медиафайлы в карантин в комнатах, по пользователям или по ID медиа
      unquarantine                    Убрать медиафайлы из карантина
    

    Краткое пояснение

    Команда synadm media предназначена для управления медиафайлами на сервере Synapse:

    • локальными — загруженными пользователями вашего сервера (хранятся в /var/lib/matrix-synapse/media)
    • удалёнными — кэшированными с других серверов (через федерацию)

    Основные сценарии использования:

    • очистка места на диске
    • удаление нежелательного / запрещённого контента
    • защита важных файлов от автоматического удаления или карантина
    • карантин подозрительных или спамовых медиафайлов

    Краткое описание каждой подкоманды

    Команда Что делает Типичные случаи использования
    delete Удаляет локальные медиафайлы по ID, размеру, возрасту или другим критериям Очистка старых аватарок, больших видео, файлов старше N дней
    list Показывает список локальных медиафайлов, фильтруя по комнате или пользователю Узнать, кто и что загружал в конкретную комнату
    protect Защищает отдельные медиафайлы от помещения в карантин и автоматического удаления Сохранить важные документы, фото, видео от чистки
    purge Удаляет старые кэшированные удалённые медиафайлы (с других серверов) Очистка кэша федерации (обычно для экономии места)
    quarantine Помещает медиафайлы в карантин (по комнатам, пользователям или конкретным ID) Блокировка спама, CSAM, запрещённого контента
    unquarantine Убирает файлы из карантина (возвращает в нормальное состояние) Отмена ошибочного карантина

    Примеры использования

    # Показать все локальные медиафайлы пользователя
    synadm media list --user @rootadmin:твой.домен.com
    
    # Показать медиафайлы в конкретной комнате
    synadm media list --room !комната:твой.домен.com
    
    # Удалить все локальные медиа старше 180 дней
    synadm media delete --before 180d
    
    # Поместить в карантин все медиа конкретного пользователя
    synadm media quarantine --user @spammer:твой.домен.com
    
    # Защитить конкретный медиафайл от удаления
    synadm media protect mxc://твой.домен/идентификатор_файла
    
    # Удалить старый кэш удалённых медиа (старше 90 дней)
    synadm media purge --before 90d
    

    Важные замечания

    • Многие операции необратимы (особенно delete и purge).
    • Перед массовым удалением рекомендуется сделать бэкап директории /var/lib/matrix-synapse/media.
    • Карантин не удаляет файлы физически — они просто становятся недоступными для скачивания.
    • Для полной очистки после карантина используйте delete или purge.
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm matrix


    Использование: synadm matrix [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      Выполнение вызовов Matrix API.
    
    Опции:
      -h, --help                      Показать это сообщение и выйти.
    
    Команды:
      login                           Войти в Matrix с помощью имени пользователя и пароля и получить access-токен.
      raw                             Выполнить произвольный запрос к Matrix API.
    

    Краткое пояснение

    Команда synadm matrix предназначена для работы с обычным Client-Server API Matrix (не с Admin API Synapse).
    Это полезно в случаях, когда нужно выполнить действия от имени обычного пользователя (а не администратора), например:

    • получить access-токен для дальнейшего использования в скриптах
    • выполнить любой запрос к стандартному Matrix API (отправка сообщений, получение статуса и т.д.)

    На данный момент доступны только две подкоманды:

    1. login — вход по логину и паролю с получением токена
      (аналогично тому, как это делает клиент Element при первом входе)

    2. raw — произвольный HTTP-запрос к любому пути Matrix API
      (очень мощный инструмент для продвинутых пользователей и отладки)

    Примеры использования (на русском)

    # 1. Войти под пользователем и получить токен
    synadm matrix login --user @rootadmin:твой.домен.com --password ТвойПароль123!
    
    # Полученный токен можно использовать дальше, например:
    # synadm config -t "полученный_токен"
    
    # 2. Произвольный запрос (пример: узнать, кто я)
    synadm matrix raw GET /_matrix/client/v3/account/whoami
    

    Важные замечания

    • Для команды login нужно, чтобы регистрация была разрешена или пользователь уже существовал.
    • Команда raw требует, чтобы у пользователя был действующий токен (можно задать через --token или через конфиг synadm).
    • Это низкоуровневый инструмент — он не имеет красивого вывода, как остальные команды synadm.
    • Используйте с осторожностью: неправильные запросы могут повлиять на аккаунт пользователя.

    Если нужна более подробная справка по одной из подкоманд (login или raw), выполните в терминале:

    synadm matrix login --help
    synadm matrix raw --help
    
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm history


    Использование: synadm history [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      Удаление исторических событий из базы данных Synapse.
    
    Опции:
      -h, --help                      Показать это сообщение и выйти.
    
    Команды:
      purge                           Удалить события комнаты до определённого момента времени или до определённого...
      purge-status                    Просмотреть статус недавней операции удаления истории.
    

    Краткое пояснение (на русском)

    Команда synadm history предназначена для управления удалением старой истории сообщений (purge history) в комнатах Synapse. Это полезно для:

    • уменьшения размера базы данных
    • соблюдения требований GDPR / удаления старых данных
    • очистки комнат от спама или нежелательного контента в прошлом

    На данный момент доступны две подкоманды:

    1. purge — запуск удаления событий комнаты до указанного момента времени или до определённого события.
    2. purge-status — проверка статуса уже запущенной (или недавно завершённой) операции удаления истории.

    Примеры использования (на русском)

    # Запустить удаление всех событий в комнате до 1 января 2025 года
    synadm history purge !комната:твой.домен.com --before 2025-01-01
    
    # Запустить удаление событий старше 365 дней
    synadm history purge !комната:твой.домен.com --before-ts $(date -d "-365 days" +%s000)
    
    # Посмотреть статус последней операции удаления
    synadm history purge-status
    

    Важно знать

    • Удаление истории — необратимая операция.
    • Synapse удаляет события только из своей базы (локально), но они могут остаться на других серверах федерации.
    • Процесс может занять много времени на больших комнатах и нагружать сервер.
    • Перед запуском рекомендуется сделать резервную копию базы PostgreSQL.

    Если нужна более подробная справка по одной из подкоманд (purge или purge-status), выполните в терминале:

    synadm history purge --help
    synadm history purge-status --help
    
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm group


    Использование: synadm group [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      Управление группами (сообществами).
    
    Опции:
      -h, --help                      Показать это сообщение и выйти.
    
    Команды:
      delete                          Удалить локальную группу (сообщество).
    

    Краткое пояснение

    Команда synadm group предназначена для управления группами / сообществами (Matrix Communities / Groups) на вашем сервере Synapse.

    На момент версии synadm 0.49.x (и большинства актуальных версий на 2025–2026 год) доступна только одна подкоманда:

    • delete — удаление локальной группы (сообщества), созданной на вашем сервере.

    Пример использования:

    # Удалить сообщество с идентификатором +community:yourdomain.com
    synadm group delete +community:yourdomain.com
    

    Важные замечания

    • Удаляются только локальные группы (те, которые созданы на вашем сервере).
    • Федеративные группы (созданные на других серверах) удалить через эту команду нельзя.
    • Перед удалением synadm обычно запрашивает подтверждение (если не использовать --yes или --non-interactive).
    • После удаления группа исчезает из списка сообществ, но старые сообщения и членство в комнатах могут сохраниться (зависит от настроек Synapse).

    Если вам нужна более полная справка по подкоманде delete — выполните:

    synadm group delete --help
    
    Synapse Admin

  • Справка по Synadm
    A Admin

    Команда synadm config


    Использование: synadm config [ОПЦИИ]
      Изменение конфигурации synadm.
      Детали конфигурации обычно всегда запрашиваются в интерактивном режиме.
      Параметры командной строки переопределяют предлагаемые по умолчанию значения в подсказках.
    
    Опции:
      -u, --user ТЕКСТ                Имя администратора, которому разрешён доступ
                                      к Admin API Synapse.
      -t, --token ТЕКСТ               Access-токен администратора.
      -b, --base-url ТЕКСТ            Базовый URL, на котором запущен Synapse.
                                      Обычно это https://localhost:8008 или
                                      https://localhost:8448. Если Admin API Synapse
                                      настроен на доступ из внешнего мира, то это
                                      может быть, например: https://example.org:8448
      --protocol [http|unix]          Протокол для связи с Synapse. Может быть
                                      домен/IP и порт с http(s), либо unix-сокет.
      -p, --admin-path ТЕКСТ          Путь, по которому Synapse предоставляет Admin API,
                                      обычно значение по умолчанию подходит большинству установок.
      -m, --matrix-path ТЕКСТ         Путь, по которому Synapse предоставляет обычные Matrix API,
                                      обычно значение по умолчанию подходит большинству установок.
      -w, --timeout ЦЕЛОЕ_ЧИСЛО       Время в секундах, в течение которого synadm должен ждать
                                      ответа от Admin API или Matrix API.
                                      По умолчанию 7 секунд.
      -o, --output [yaml|json|minified|human|pprint]
                                      Как synadm по умолчанию отображает данные.
                                      Режим 'human' — табличный или списочный вид в зависимости
                                      от полученных данных, но часто требует много места по
                                      горизонтали для корректного отображения.
                                      'json' — отформатированный JSON.
                                      'minified' — сжатый JSON, удобен для использования в скриптах.
                                      'pprint' — форматированный вывод с помощью встроенного
                                      модуля pprint в Python.
                                      'yaml' — компромисс между читаемостью человеком и машиной,
                                      требует меньше ширины терминала, чем 'human', и является
                                      форматом по умолчанию в свежих установках.
                                      Формат вывода по умолчанию всегда можно переопределить
                                      глобальным переключателем --output/-o
                                      (например: 'synadm -o pprint user list').
      -d, --server-discovery [well-known|dns]
                                      Метод обнаружения «собственного имени homeserver».
                                      Поскольку ни один из существующих на данный момент
                                      конечных точек Admin API не предоставляет эту информацию,
                                      для помощи используется federation API (и другие).
                                      При значении "well-known" URI federation API пытается
                                      быть получен через well-known ресурс настроенного
                                      "Synapse base URL".
                                      При значении "dns" используется SRV-запись доменного
                                      имени, найденного в "Synapse base URL".
                                      После получения federation URI можно извлечь имя homeserver.
                                      Если в "Synapse base URL" содержится "localhost", предполагается,
                                      что требуемый federation API уже слушает на localhost:порт
                                      (конечная точка "keys" Matrix API).
                                      Если и это не срабатывает, в качестве последнего средства
                                      имя homeserver можно просто сохранить напрямую в конфигурацию
                                      через параметр "homeserver".
                                      Обратите внимание: получение имени homeserver выполняется
                                      только тогда, когда подкоманда synadm в нём нуждается
                                      (например некоторые подкоманды media и user), и при этом
                                      директива "homeserver" в конфиге установлена в "auto-retrieval".
      -n, --homeserver ТЕКСТ          Имя хоста homeserver Synapse. Обычно matrix.ДОМЕН или ДОМЕН.
                                      Значение по умолчанию 'auto-retrieval' будет пытаться
                                      обнаружить имя с помощью метода, заданного в --server-discovery.
      -i, --ssl-verify                Включать или отключать проверку SSL-сертификатов.
                                      Установите False, чтобы разрешить самоподписанные сертификаты.
      -h, --help                      Показать это сообщение и выйти.
    
    Synapse Admin

  • Справка по Synadm
    A Admin

    Общая справка:

    Использование: synadm [ОПЦИИ] КОМАНДА [АРГУМЕНТЫ]...
      CLI-утилита для администрирования Matrix-Synapse
    
    Опции:
      --version                       Показать версию и выйти.
      -v, --verbose                   Включить логи уровня INFO (-v) или DEBUG (-vv) в консоль.
      --no-confirm, --batch, --yes, --non-interactive, --scripting
                                      Включить неинтерактивный режим. Используйте с осторожностью!
                                      Этот режим:
                                        - Отключает все интерактивные запросы подтверждения.
                                        - Отключает автоматический перевод unix-времени в читаемый формат.
      -o, --output [yaml|json|minified|human|pprint|y|j|m|h|p|]
                                      Переопределить формат вывода по умолчанию.
                                      'human' — табличный или списочный вид (в зависимости от данных),
                                      требует много места по горизонтали для красивого отображения.
                                      'json' — отформатированный JSON.
                                      'minified' — сжатый JSON, удобен для скриптов.
                                      'pprint' — форматированный вывод с помощью модуля pprint в Python.
                                      'yaml' — компромисс между читаемостью человеком и машиной,
                                      требует меньше ширины терминала, чем 'human', и является
                                      форматом по умолчанию в свежих установках.
      -c, --config-file ПУТЬ          Путь к файлу конфигурации. [по умолчанию:
                                      ~/.config/synadm.yaml]
      -h, --help                      Показать эту справку и выйти.
    
    Команды:
      config     Изменить конфигурацию synadm.
      group      Управление группами (сообществами).
      history    Удаление исторических событий из базы данных Synapse.
      matrix     Выполнение вызовов Matrix API.
      media      Управление локальными и удалёнными медиафайлами.
      notice     Отправка сообщений пользователям.
      raw        Выполнение произвольного запроса к Synapse Admin API.
      regtok     Управление токенами регистрации.
      room       Управление комнатами и членством в комнатах.
      user       Просмотр, добавление, изменение, деактивация/удаление пользователей,
                 сброс паролей.
      version    Получить версию сервера Synapse.
    
    Synapse Admin

  • Установка Synadm
    A Admin

    Настройка Synadm


    Сразу после установки запустите настроку утилиты с помощью команды:

    synadm config
    

    Вот подробное описание вопросов, которые задаст мастер настройки:

    1. Synapse admin user name []:

    Что это
    Локальная часть имени администратора (без @ и домена).
    Т.е. если в Synapse есть администратор с логоном root, то полный MXID будет @root:ваш.домен.tld.

    Зачем нужен

    • synadm использует это имя для формирования запросов к Admin API, когда нужно указать, от чьего имени выполняется действие.
    • Это поле помогает synadm понять, чей именно access token вы используете.
    • В некоторых командах (например synadm user details) это имя подставляется автоматически, если не указан другой пользователь.

    Взаимосвязь

    • Прямо влияет на поле Homeserver name (см. ниже) — если вы выбрали auto-retrieval, synadm попытается узнать домен именно из этого MXID.
    • Если имя указано неправильно → команды с --user-id по умолчанию могут не сработать.

    Рекомендация
    Указывайте реальное имя существующего администратора.
    Если введёте выдуманное — потом можно изменить через synadm config -u.


    2. Synapse admin user token [NOT SET]:

    Что это
    Access token администратора (строка вида syt_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX).

    Зачем нужен
    Это основной способ аутентификации synadm при обращении к Admin API Synapse.
    Без правильного токена почти все команды будут возвращать 401 Unauthorized.

    Взаимосвязь

    • Токен привязан к конкретному пользователю (который вы указали в поле 1).
    • Если токен от другого пользователя → команды выполнятся от его имени (если у него есть права).
    • Токен должен быть действующим и принадлежать пользователю с правами администратора.

    Что делать, если токена пока нет
    Можно ввести любой текст на первом этапе (чтобы пройти wizard), а потом обновить:

    synadm config -t "syt_настоящий_токен"
    

    Где взять
    Element → Настройки → Справка и о программе → Access Token.


    3. Synapse protocol (http, unix) [http]:

    Что это
    Протокол, по которому synadm будет подключаться к Synapse.

    Варианты

    • http — обычное http-подключение (по TCP, например http://localhost:8008)
    • unix — подключение через unix-сокет (файл на диске, например /var/run/synapse.sock)

    Взаимосвязь
    Определяет, как интерпретировать следующее поле — Synapse base URL.
    Если выбрали unix → в следующем поле нужно будет указать путь к сокету, а не URL.

    Рекомендация
    Оставляйте http — это стандарт для большинства установок Synapse (особенно в deb-пакете).


    4. Synapse base URL (or path to socket) [http://localhost:8008]:

    Что это
    Адрес, по которому synadm будет обращаться к серверу Synapse.

    Варианты

    • http://localhost:8008 — стандартный порт Client-Server API в deb-пакете
    • https://matrix.ваш.домен.tld — если у вас настроен reverse-proxy с TLS
    • /var/run/synapse.sock — если используете unix-сокет

    Взаимосвязь

    • Должен соответствовать настройкам listeners в homeserver.yaml Synapse.
    • Если Synapse слушает только на 127.0.0.1 — localhost подойдёт идеально.
    • Если вы указали https — следующий параметр Verify certificate станет важным.

    Рекомендация
    Для контейнера и локального доступа — оставляйте http://localhost:8008.


    5. Synapse Admin API path [/_synapse/admin]:

    Что это
    Базовый путь к Admin API на вашем сервере.

    Зачем
    Synapse по умолчанию использует именно /_synapse/admin.
    Некоторые форки или кастомные сборки могут иметь другой путь.

    Взаимосвязь
    synadm добавляет этот путь ко всем запросам.
    Например:
    http://localhost:8008/_synapse/admin/v2/users

    Рекомендация
    Оставляйте дефолтное значение — /_synapse/admin.


    6. Matrix API path [/_matrix]:

    Что это
    Базовый путь к стандартному Matrix Client-Server API.

    Зачем
    Некоторые команды synadm (особенно из группы matrix) используют обычный Matrix API, а не Admin API.

    Взаимосвязь
    Используется для команд типа synadm matrix whoami, synadm matrix login и т.д.

    Рекомендация
    Оставляйте дефолт — /_matrix.


    7. Default output format (yaml, json, minified, human, pprint):

    Что это
    Формат, в котором synadm будет показывать результаты по умолчанию.

    Варианты

    • human — красивые таблицы/списки в терминале (самый читаемый)
    • yaml — структурированный, удобно копировать в конфиги
    • json — обычный JSON
    • minified — сжатый JSON (для скриптов)
    • pprint — красивый вывод через Python pprint

    Взаимосвязь
    Можно переопределить в любой команде флагом --output или -o, например:
    synadm user list -o json

    Рекомендация
    human — лучший выбор для работы в терминале.


    8. Default http timeout [30]:

    Что это
    Сколько секунд synadm будет ждать ответа от Synapse перед тем, как выдать ошибку таймаута.

    Взаимосвязь
    Если сервер очень медленный (например, через интернет с большим пингом) — можно увеличить до 60–120.
    Для localhost — 30 секунд более чем достаточно.

    Рекомендация
    Оставляйте 30.


    9. Homeserver name ("auto-retrieval" or the domain part in your MXID) [auto-retrieval]:

    Что это
    Домен вашего сервера (server_name в Synapse).

    Варианты

    • auto-retrieval — synadm сам спросит у сервера (через .well-known или /_matrix/versions)
    • конкретный домен — например matrix.example.com

    Взаимосвязь

    • Если вы выбрали auto-retrieval → следующий параметр Server discovery mode становится активным.
    • Используется для формирования правильных путей и проверки токена.

    Рекомендация
    Оставляйте auto-retrieval — это самый надёжный вариант.


    10. Verify certificate [True]:

    Что это
    Включена ли проверка SSL/TLS-сертификата при подключении по https.

    Взаимосвязь

    • Если вы используете http://localhost:8008 — проверка не применяется (игнорируется).
    • Если укажете https://... → при True synadm будет проверять сертификат (и может упасть, если он самоподписанный).

    Рекомендация
    Оставляйте True. Если используете самоподписанный сертификат — потом можно изменить на False через synadm config -u.


    11. Server discovery mode (used with homeserver name auto-retrieval) (well-known, dns) [well-known]:

    Что это
    Способ, которым synadm узнаёт настоящий домен сервера, если выбран auto-retrieval.

    Варианты

    • well-known — через файл /.well-known/matrix/server или /.well-known/matrix/client (рекомендуемый)
    • dns — через SRV-записи в DNS (_matrix._tcp.example.com)

    Взаимосвязь
    Работает только если Homeserver name = auto-retrieval.
    well-known — это то, что используют почти все клиенты и инструменты.

    Рекомендация
    Оставляйте well-known.


    Итоговая взаимосвязь (коротко)

    admin user name → используется для формирования MXID и привязки токена
              ↓
    admin user token → основной ключ аутентификации
              ↓
    protocol + base URL → куда именно synadm подключается
              ↓
    Admin API path + Matrix API path → правильные пути внутри URL
              ↓
    output format → как показывать результаты
              ↓
    timeout → сколько ждать ответа
              ↓
    Homeserver name + discovery mode → помогает правильно формировать запросы и проверять окружение
              ↓
    Verify certificate → безопасность при использовании https
    

    После завершения wizard все эти параметры сохраняются в файле /root/.config/synadm.yaml и используются по умолчанию во всех командах.

    Если захотите что-то поменять позже — просто выполните synadm config -u (обновление интерактивно) или измените файл вручную.

    Synapse Admin

  • Установка Synadm
    A Admin

    Основные характеристики synadm

    • Назначение — удобный интерфейс командной строки ко всем (или почти всем) возможностям Admin API Synapse.

    • Сайт / репозиторий — https://codeberg.org/synadm/synadm (проект переехал туда с GitHub)

    • Документация — https://synadm.readthedocs.io/

    • Установка (Debian/Ubuntu, включая контейнеры Incus с Debian):

      sudo apt update
      sudo apt install python3-pip
      pip3 install synadm --user   # или с sudo pip3 install synadm
      

      Или через pipx (рекомендуется для изоляции):

      sudo apt install pipx
      pipx install synadm
      

    После установки командой pipx install synadm может появиться примерно такое сообщение:

    ⚠ Note: '/root/.local/bin' is not on your PATH environment variable. These apps will not be > > globally accessible until your PATH is updated. Run pipx ensurepath to automatically add it, > > or manually modify
        your PATH in your shell's config file (i.e. ~/.bashrc).
    done! ✨ 🌟 ✨

    Это значит, что команда synadm уже лежит в директории /root/.local/bin, но оболочка (bash) её пока не видит, потому что эта папка не добавлена в переменную PATH для пользователя root.

    Самый простой способ исправить
    1. Выполните команду, которую предлагает pipx:

      pipx ensurepath
      

      Она добавит строку вида export PATH="$HOME/.local/bin:$PATH" в твой ~/.profile (или ~/.bashrc, в зависимости от версии pipx и Debian).

    2. После выполнения перезагрузите оболочку (или выйдите и войдите заново в контейнер, если это контейнер Incus), чтобы изменения применились:

      exec bash   # или просто выйдите из контейнера и зайдите снова: exit → incus exec ...
      
    3. Проверьте, что всё заработало:

      which synadm          # должен показать /root/.local/bin/synadm
      synadm --version      # должен вывести версию, например 0.49.2
      

    Если pipx ensurepath говорит что-то вроде «already in PATH» или не помогло — сделайте вручную (это надёжнее).

    Ручной способ (если ensurepath не сработал)

    Откройте файл ~/.profile (для root это /root/.profile) :

    nano /root/.profile
    

    В самый конец добавьте:

    # pipx binaries
    if [ -d "$HOME/.local/bin" ] ; then
        PATH="$HOME/.local/bin:$PATH"
    fi
    

    Сохраните (Ctrl+O → Enter → Ctrl+X), затем обновите текущую сессию:

    source /root/.profile
    # или просто
    exec bash
    

    Проверьте снова which synadm — должно работать.

    Почему это происходит именно с root

    • pipx по умолчанию ставит пакеты в ~/.local/bin (для текущего пользователя).
    • В Debian для root по умолчанию ~/.local/bin не входит в PATH (в отличие от обычных пользователей в некоторых дистрибутивах).
    • pipx ensurepath как раз и добавляет эту директорию автоматически.
    Synapse Admin

  • Incus - восстановление пропавшего доступа к сети
    A Admin

    Почему в контейнере интернет / apt может не работать

    В обычной системе (не в контейнере) всё обычно работает «из коробки», потому что там сеть настраивается автоматически.

    В контейнере всё немного по-другому:

    1. Контейнер получает интернет через хост-машину (компьютер, на котором запущен Incus).
    2. DNS (то, что превращает google.com в IP-адрес) тоже должен приходить от хоста.
    3. Очень часто в новых Debian/Ubuntu внутри контейнера включается штука под названием systemd-resolved — она пытается сама настроить DNS, но в контейнере у неё это получается плохо или вообще не получается.
    4. В итоге в файле /etc/resolv.conf оказывается либо пусто, либо только строка nameserver 127.0.0.53, либо вообще ничего полезного → интернет не работает, apt update зависает или очень медленно идёт.

    Это одна из самых частых проблем у новичков с контейнерами.

    Самый простой и надёжный способ исправить (для большинства случаев)

    Зайдите в контейнер и выполните эти 4 команды подряд:

    # 1. Отключаем систему, которая мешает
    systemctl disable --now systemd-resolved
    
    # 2. Удаляем старый (неправильный) файл
    rm -f /etc/resolv.conf
    
    # 3. Создаём нормальный файл с публичными DNS-серверами
    echo "nameserver 8.8.8.8"     > /etc/resolv.conf
    echo "nameserver 1.1.1.1"    >> /etc/resolv.conf
    
    # 4. (опционально) Защищаем файл от перезаписи
    chattr +i /etc/resolv.conf
    

    После этого сразу попробуйте:

    ping 8.8.8.8
    ping google.com
    apt update
    

    Должно заработать почти мгновенно.

    Почему именно эти DNS-сервера

    • 8.8.8.8 → Google Public DNS
    • 1.1.1.1 → Cloudflare DNS

    Они быстрые, надёжные, находятся по всему миру и почти никогда не падают.

    Что будет после перезагрузки контейнера?

    Если вы не поставили chattr +i, то после перезапуска контейнера файл /etc/resolv.conf может снова стать неправильным.

    Тогда просто повторите команды 1–3 заново (или сделайте маленький скрипт, который запускается при старте).

    Короткая памятка (скопируйте и сохраните)

    # Быстрый фикс DNS в контейнере Debian/Ubuntu
    systemctl disable --now systemd-resolved
    rm -f /etc/resolv.conf
    echo "nameserver 8.8.8.8" > /etc/resolv.conf
    echo "nameserver 1.1.1.1" >> /etc/resolv.conf
    # Чтобы не слетало после перезагрузки:
    chmod 644 /etc/resolv.conf
    
    # Проверка
    ping google.com
    apt update
    

    Теперь интернет должен работать стабильно.

    LXC

  • Список сетевых утилит
    A Admin

    Для нормального мониторинга и управления сетью на Linux (в частности Debian/Ubuntu) в 2025–2026 годах большинство администраторов ставят следующий набор утилит. Уровни: must-have (ставят почти всегда), очень полезные (80–90% случаев) и специализированные (по ситуации).

    Must-have (базовый набор, ставьте всегда)

    sudo apt update
    sudo apt install -y \
        iproute2          # ip, ss, tc — современная замена ifconfig/netstat/route
        net-tools         # ifconfig, netstat, route (ещё часто нужны для старых скриптов)
        iputils-ping      # ping (иногда не стоит по умолчанию)
        traceroute        # классический traceroute
        dnsutils          # dig, nslookup
        whois
        curl              # тестирование HTTP/HTTPS/API
        wget
        tcpdump           # захват и анализ пакетов (самый мощный CLI сниффер)
        ethtool           # просмотр и настройка параметров сетевой карты
    

    Очень полезные (рекомендуется ставить почти всегда)

    Эти утилиты дают реальное понимание «что сейчас происходит в сети».

    sudo apt install -y \
        iftop             # топ потребителей трафика в реальном времени (по соединениям)
        nethogs           # топ потребителей трафика по процессам (очень удобно!)
        nload             # красивый график входящего/исходящего трафика
        bmon              # ещё один монитор пропускной способности
        vnstat            # статистика трафика по дням/месяцам (сохраняет историю)
        iptraf-ng         # интерактивный монитор (IP-трафик, TCP/UDP и т.д.)
        mtr               # комбинация ping + traceroute в реальном времени
        speedtest-cli     # тест скорости интернета (ookla)
        iperf3            # тестирование пропускной способности между двумя точками
    

    Для глубокого анализа и отладки

    sudo apt install -y \
        wireshark         # GUI-анализатор пакетов (tshark — консольная версия)
        tshark            # только консольная версия wireshark (без GUI)
        ngrep             # grep для сетевых пакетов
        lsof              # посмотреть, какие процессы держат порты/соединения
        netcat-openbsd    # nc — швейцарский нож для TCP/UDP
        socat             # более мощный аналог nc
        nmap              # сканирование портов, обнаружение устройств
    

    Минимальный «стартовый» набор одной командой (самое популярное в 2025–2026)

    sudo apt install -y \
        iproute2 net-tools dnsutils tcpdump ethtool \
        iftop nethogs nload mtr iperf3 speedtest-cli \
        curl wget traceroute whois \
        nmap lsof
    

    Краткая шпаргалка — для чего что используют чаще всего

    Задача Основные утилиты Альтернативы / продвинутые
    Посмотреть IP, маршруты, интерфейсы ip a, ip r, ip link ifconfig, route (устаревшие)
    Активные соединения ss -tuln, ss -tunap netstat
    Кто жрёт трафик прямо сейчас iftop, nethogs iptraf-ng, bmon
    История трафика за день/месяц vnstat —
    Захват пакетов tcpdump tshark, wireshark
    Тест скорости до интернета speedtest-cli fast-cli
    Тест между двумя серверами iperf3 -s / iperf3 -c —
    Путь пакетов + задержки mtr 8.8.8.8 traceroute + ping
    DNS-отладка dig +short, dig @1.1.1.1 nslookup, drill
    Настройки сетевой карты ethtool eth0 —

    Если вы работаете с серверами → добавьте vnstat + nethogs + iftop + mtr — это золотой стандарт 2025–2026 годов для быстрого понимания ситуации.

    Если мониторите много серверов → смотрите в сторону Netdata, Prometheus + node_exporter, Zabbix-agent или Cockpit (с плагином network).

    Программное обеспечение

  • Jitsi Meet vs TrueConf Server
    A Admin

    Сильные плюсы Jitsi Meet по сравнению с TrueConf Server

    Jitsi Meet выделяется как open-source решение, которое предлагает большую гибкость и контроль без компромиссов, характерных для проприетарных продуктов вроде TrueConf. Вот ключевые преимущества, которые делают его сильнее в определенных сценариях (особенно для тех, кто ценит свободу, кастомизацию и отсутствие скрытых ограничений):

    • Полностью open-source и бесплатный без ловушек: В отличие от TrueConf, где free-версия требует ежегодного продления и ограничивает конференции до 10 участников, Jitsi не имеет лицензионных ограничений, vendor-lock-in или скрытых платежей. Вы можете использовать его вечно без активации, и весь код доступен для аудита или модификации.
    • Полный контроль над данными и приватностью: Само-хостинг позволяет держать все данные на вашем сервере, без облачных зависимостей. Это идеально для compliance (GDPR, HIPAA) и конфиденциальных сред, где TrueConf free все равно требует интернета для активации и имеет лимиты на внешние подключения (1 гость, 1 SIP).
    • Браузерный доступ без установки: Участники присоединяются по ссылке через любой браузер (WebRTC), без нужды в клиенте. Это упрощает использование для внешних пользователей, в то время как TrueConf требует установки приложений для полного функционала, что может быть барьером.
    • Гибкость интеграций и расширяемость: Легко интегрируется с Matrix для persistent чатов, Rocket.Chat, SIP/H.323 (без лимитов в free), и другими системами. Активное сообщество предлагает плагины для AI (шумоподавление, фон), записи, стриминга — вещи, которые в TrueConf доступны только в paid-версиях.
    • Масштабируемость через аппаратные ресурсы: Без искусственных лимитов — до 75+ участников в HD с правильной настройкой (Jitsi Videobridge для распределения нагрузки). Для больших групп можно кластеризовать серверы, что делает его подходящим для крупных событий, где TrueConf free ограничен 10 участниками.
    • Активное сообщество и низкие затраты на поддержку: Тысячи пользователей (market share 14.38% vs 0% у TrueConf), форумы, GSoC-проекты для новых фич. Это снижает зависимость от вендора — в отличие от TrueConf, где enterprise-кастомизация платная.
    • Лучшая производительность в малых/средних группах: Адаптивное качество видео, низкие требования к bandwidth. Идеально для команд до 10-20 человек, где не нужна 4K, но важна стабильность без браузерных лимитов TrueConf.

    Эти плюсы особенно сильны для разработчиков, малого бизнеса или организаций с IT-командой, где кастомизация важнее "из коробки" фич.

    Можно ли сделать Jitsi лучше TrueConf, и как это сделать

    Jitsi можно сделать лучше TrueConf в большинстве аспектов, благодаря open-source природе — вы не ограничены вендором и можете добавить любые фичи, превзойдя даже платные версии TrueConf (например, по масштабу, интеграциям или кастомным workflow). TrueConf закрытый, так что улучшения там только через апгрейд, в то время как Jitsi позволяет бесконечную эволюцию. Вот пошаговый план, как это реализовать (на основе документации и практик сообщества):

    1. Базовая установка и оптимизация сервера: Начните с self-hosting на Linux (Ubuntu/Debian). Используйте Nginx как фронтенд для обработки веб-запросов (снижает нагрузку на Java). Перейдите на JRE11 для jicofo и videobridge — это повысит производительность. Добавьте TURN-сервер для лучшей NAT-прохождения. Это уже сделает Jitsi стабильнее TrueConf free в сетях с проблемами.

    2. Кастомизация конфигурации: Редактируйте config.js (в /etc/jitsi/meet/) для базовых улучшений: отключите ненужные фичи (AEC, NS для аудио), добавьте startWithAudioMuted=true для приватности, настройте интерфейс (удалите брендинг, кнопки). Используйте URL-параметры для динамических ссылок (например, bypass pre-join экран). Это сделает UI чище и удобнее, чем в TrueConf.

    3. Добавление продвинутых фич через API и SDK:

      • Используйте iFrame API для встраивания в ваш сайт с кастомным контролем (events, user access).
      • React SDK для мобильных/веб-приложений — добавьте кастомный UI, опросы, реакции.
      • Lib-jitsi-meet для полного перестроения: создайте свой фронтенд с 4K-поддержкой, AI (интегрируйте библиотеки вроде TensorFlow для шумоподавления или фона).
        Это позволит превзойти TrueConf в enterprise-фичах, как удаленное управление или транскрипция, без платных апгрейдов.
    4. Масштабирование и интеграции: Добавьте несколько Videobridge для распределения нагрузки (кластеринг) — поддержка 100+ участников без лимитов. Интегрируйте с Matrix для persistent чатов, PBX для SIP/H.323 (неограниченно), или DLP для security. Для AI — подключите внешние сервисы (например, для транскрипции). Это сделает Jitsi мощнее TrueConf Enterprise в многопользовательских сценариях.

    5. Улучшение security и брендинга: Внедрите MFA, шифрование E2EE, кастомные зоны. Для брендинга: измените CSS/JS для логотипов, тем. Используйте сообщество (форум jitsi.org) для плагинов — добавьте вещи вроде webinar-регистрации или мониторинга, как в TrueConf paid.

    Затраты: Время разработчика (Node.js, React), но бесплатно. Если нет команды — нанимайте фрилансеров или используйте форки вроде eduMeet. В итоге Jitsi станет "вашим" продуктом, превосходящим TrueConf по гибкости, стоимости и масштабу.

    Разная информация

  • Jitsi Meet vs TrueConf Server
    A Admin

    TrueConf предлагает бесплатную версию TrueConf Server Free, которую можно скачать с официального сайта и использовать даже в коммерческих целях без ограничения по времени (требуется только ежегодное продление лицензии через сайт). Это само-хостинговое решение для видеоконференций, чатов и совместной работы, предназначенное для установки на собственном сервере (Windows, Linux или Docker).

    Выгода TrueConf от бесплатной раздачи

    TrueConf использует фримиум-модель (freemium): бесплатная версия привлекает пользователей, особенно малые команды или организации, тестирующие продукт, и служит входной точкой для апселлинга (upsell) на платные версии. Компания монетизирует через продажу лицензий на основе количества активных PRO-пользователей, предлагая расширенные функции для крупных предприятий (например, конференции до 2000 участников, больше подключений к SIP/H.323, полную оффлайн-активацию без интернета). Кроме того, бесплатная версия помогает TrueConf (российская компания, ориентированная на безопасность и on-premise-решения) расширять базу пользователей, собирать отзывы и конкурировать с облачными сервисами вроде Zoom, подчеркивая контроль над данными в корпоративной сети. Они также предлагают скидки до 50% для образования, здравоохранения и НКО, чтобы охватить больше сегментов.

    Сравнение с установкой Jitsi Meet на свой сервер

    TrueConf Server Free и Jitsi Meet — оба бесплатные само-хостинговые решения для видеоконференций, но они различаются по функционалу, масштабируемости и подходу. TrueConf — это готовый all-in-one продукт с акцентом на enterprise-функции, а Jitsi — открытый исходный код на базе WebRTC, требующий больше настройки для полного использования. Вот сравнение в таблице:

    Аспект TrueConf Server Free Jitsi Meet
    Развертывание On-premise (свой сервер), hybrid или cloud. Установка за 15 минут на Windows/Linux/Docker. Требует интернет для активации, но работает в закрытой сети. On-premise или cloud. Требует установки дополнительного ПО (например, для SIP) и кастомной разработки для полного функционала.
    Масштабируемость До 1000 онлайн-пользователей, но групповые конференции — до 10 участников (PRO). Один гость и одно SIP-подключение. Платная версия — до 2000 участников. До 75 участников в HD-конференции (35 на экране). Ограничено производительностью сервера и браузера; для больших групп нужна тюнинг.
    Функции видеоконференций 4K-видео, неограниченные 1:1-звонки, групповые режимы (ролевые, лекции), экраноподеление в 4K, аннотации, удаленное управление десктопом, опросы, реакции. AI: шумоподавление, размытие фона. HD-видео, браузерные встречи (WebRTC), экраноподеление, чат в встрече. Нет нативного 4K, AI-фич или удаленного управления без доп.разработки.
    Коллаборация и чаты Встроенный мессенджер: личные/групповые чаты, обмен файлами, статусы присутствия, поиск контактов, боты, синхронизация истории. Интеграция с календарями (Outlook). Чат только в рамках встречи (не persistent). Нет встроенного мессенджера; требует интеграции с другими инструментами (например, Matrix).
    Интеграции Нативная поддержка SIP/H.323 (1 подключение в free), PBX, Active Directory/LDAP, SSO. Совместимость с Zoom/Webex. API и SDK для кастомизации. SIP (нестабильный, с доп.ПО), нет H.323. Требует кастомной разработки для интеграций. Поддержка через браузер.
    Безопасность On-premise: данные остаются в сети компании, SVC-кодирование для низкой нагрузки. Интеграция с AD/SSO. Полный контроль. Open-source: уязвим к рискам из-за публичного кода. Зависит от настройки сервера; данные в вашей сети, но браузерные ограничения.
    Ценообразование Бесплатно навсегда (ежегодное продление). Платные апгрейды по лицензиям на PRO-пользователей (цена по запросу). Полностью бесплатно (open-source), без ограничений по времени/продлению. Затраты на разработку/поддержку.
    Плюсы Готовое решение "из коробки", enterprise-функции, высокая масштабируемость в paid, сильная безопасность, кросс-платформенные клиенты (Windows/macOS/Linux/iOS/Android). Легко администрировать. Полностью open-source, гибкость для разработчиков, нет vendor-lock, простые браузерные встречи без установки.
    Минусы Ограничения в free (10 участников в группе, 1 SIP), требует ежегодного продления, не полностью оффлайн (активация через интернет). Не open-source. Требует навыков программирования для фич, ограниченная масштабируемость, уязвимости open-source, зависимость от браузера (стабильность/производительность). Нет all-in-one (нужны доп.инструменты).

    Когда TrueConf лучше Jitsi: Если нужна готовая платформа с чатами, AI, интеграциями и высокой безопасностью для корпоративной среды (особенно если планируете рост — легко апгрейдить). Идеально для бизнеса, где важны 4K, большие встречи и контроль данных без облака.

    Когда Jitsi лучше TrueConf: Если вы разработчик или хотите полностью бесплатное решение без ограничений на функции (но с лимитами производительности), полную кастомизацию кода и отсутствие зависимости от вендора. Подходит для небольших команд, где достаточно базовых видеозвонков через браузер.

    В целом, TrueConf Free подойдет для малого бизнеса с фокусом на безопасность и удобство, но для крупных конференций потребуется платная версия. Jitsi — более "сырое" решение, но полностью свободное.

    Разная информация

  • Создание страницы управления скриптами в Cockpit
    A Admin

    🖥 Инструкция: Интерактивная страница управления скриптами в Cockpit

    Цель

    Создать страницу, где можно:

    • запускать скрипты от root
    • вводить параметры через поля формы (логины, пароли, имена БД и др.)
    • видеть потоковый вывод скрипта с автоскроллингом
    • полностью работать через интерфейс, без терминала

    1️⃣ Структура модуля

    /usr/share/cockpit/mybutton2/
     ├── manifest.json
     ├── index.html
     ├── main.js
     └── style.css
    

    2️⃣ manifest.json

    {
      "version": 0,
      "tools": {
        "mybutton": {
          "label": "Управление сервисом",
          "path": "index.html"
        }
      }
    }
    

    3️⃣ index.html — страница с формой

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="../base1/cockpit.js"></script>
    <link rel="stylesheet" href="style.css">
    <script src="main.js"></script>
    </head>
    <body>
    
    <h2>Настройка сервиса</h2>
    
    <form id="configForm">
        <label>Имя пользователя: <input type="text" id="username" required></label><br>
        <label>Пароль: <input type="password" id="password" required></label><br>
        <label>Имя БД: <input type="text" id="dbname" required></label><br>
        <button type="submit">Запустить скрипт</button>
    </form>
    
    <div id="terminal">Готов к запуску</div>
    
    </body>
    </html>
    

    4️⃣ style.css — стили

    #terminal {
        background: black;
        color: #00ff00;
        font-family: monospace;
        padding: 10px;
        height: 300px;
        overflow-y: auto;
        white-space: pre-wrap;
        margin-top: 10px;
    }
    form label {
        display: block;
        margin-bottom: 5px;
    }
    form input {
        margin-bottom: 10px;
    }
    button {
        padding: 5px 15px;
    }
    

    5️⃣ main.js — логика интерактивной формы

    document.addEventListener("DOMContentLoaded", function () {
    
        const form = document.getElementById("configForm");
        const terminal = document.getElementById("terminal");
    
        form.addEventListener("submit", function (event) {
            event.preventDefault(); // предотвращаем стандартное обновление страницы
    
            // получаем данные из формы
            const username = document.getElementById("username").value;
            const password = document.getElementById("password").value;
            const dbname = document.getElementById("dbname").value;
    
            terminal.textContent = "Запуск скрипта с параметрами...\n";
    
            // запускаем скрипт от root
            cockpit.spawn(
                ["/usr/local/bin/myscript2.sh", username, password, dbname],
                { superuser: "require", err: "out", pty: true }
            )
            .stream(function(data) {
                terminal.textContent += data;
                terminal.scrollTop = terminal.scrollHeight; // автоскролл
            })
            .done(function() {
                terminal.textContent += "\n[Скрипт завершён]";
                terminal.scrollTop = terminal.scrollHeight;
            })
            .fail(function(error) {
                terminal.textContent += "\n[Ошибка]\n" + error;
                terminal.scrollTop = terminal.scrollHeight;
            });
        });
    
    });
    

    6️⃣ Скрипт принимает аргументы

    Пример /usr/local/bin/myscript2.sh:

    #!/bin/bash
    
    USERNAME=$1
    PASSWORD=$2
    DBNAME=$3
    
    echo "Создаём пользователя: $USERNAME"
    sleep 1
    echo "Устанавливаем пароль: $PASSWORD"
    sleep 1
    echo "Создаём БД: $DBNAME"
    sleep 1
    echo "Настройка завершена!"
    

    Сделаем скрипт исполняемым:

    sudo chmod +x /usr/local/bin/myscript2.sh
    

    7️⃣ Перезапуск Cockpit

    sudo systemctl restart cockpit
    

    8️⃣ Использование

    1. Открыть Cockpit в браузере
    2. Перейти в Управление сервисом
    3. Заполнить форму (логин, пароль, имя БД)
    4. Нажать Запустить скрипт
    5. Смотреть вывод скрипта в терминале прямо на странице

    Автоскролл покажет новые строки автоматически, даже если скрипт выводит много информации.


    ⚠ Советы

    • Любые проверки и валидацию данных лучше делать на стороне скрипта.
    • Не храните пароли в открытом виде в JS или HTML — Cockpit защищён, но безопасность критична.
    • Используйте pty: true для корректного отображения потокового вывода.
    • После изменений JS и CSS делайте Ctrl+Shift+R, чтобы браузер загрузил новые файлы.
    Cockpit

  • Создание страницы управления скриптами в Cockpit
    A Admin

    🖥 Инструкция: Создание страницы управления скриптами в Cockpit

    Цель

    Создать пользовательскую страницу в Cockpit, где можно:

    • запускать скрипты на сервере (в том числе от root)
    • видеть вывод скрипта в реальном времени
    • автоматически скроллить вывод вниз

    1️⃣ Создаём каталог модуля

    В терминале сервера:

    sudo mkdir -p /usr/share/cockpit/mybutton
    cd /usr/share/cockpit/mybutton
    

    Все файлы для модуля будут храниться здесь.


    2️⃣ Создаём manifest.json

    Файл описывает модуль и его название в меню Cockpit.

    sudo nano manifest.json
    

    Вставляем:

    {
      "version": 0,
      "tools": {
        "mybutton": {
          "label": "Управление скриптами",
          "path": "index.html"
        }
      }
    }
    

    Сохраняем и выходим.


    3️⃣ Создаём HTML-страницу

    sudo nano index.html
    

    Вставляем следующий код без inline-скриптов и стилей, чтобы не блокировался CSP:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="../base1/cockpit.js"></script>
    <link rel="stylesheet" href="style.css">
    <script src="main.js"></script>
    </head>
    <body>
    
    <h2>Управление скриптами</h2>
    <button id="run">Запустить скрипт</button>
    <div id="terminal">Готов к запуску</div>
    
    </body>
    </html>
    

    4️⃣ Создаём CSS для терминала

    sudo nano style.css
    

    Пример стилей:

    #terminal {
        background: black;
        color: #00ff00;
        font-family: monospace;
        padding: 10px;
        height: 300px;
        overflow-y: auto;
        white-space: pre-wrap;
    }
    button {
        margin-bottom: 10px;
        padding: 5px 15px;
    }
    

    5️⃣ Создаём JS-файл для кнопки и автоскроллинга

    sudo nano main.js
    

    Пример кода:

    document.addEventListener("DOMContentLoaded", function () {
    
        const button = document.getElementById("run");
        const terminal = document.getElementById("terminal");
    
        button.addEventListener("click", function () {
    
            terminal.textContent = "Запуск скрипта от root...\n";
    
            cockpit.spawn(
                ["/usr/local/bin/myscript.sh"], // путь к вашему скрипту
                { superuser: "require", err: "out", pty: true } // запуск от root
            )
            .stream(function(data) {
                terminal.textContent += data;
                terminal.scrollTop = terminal.scrollHeight; // автоскролл
            })
            .done(function() {
                terminal.textContent += "\n[Скрипт завершён]";
                terminal.scrollTop = terminal.scrollHeight;
            })
            .fail(function(error) {
                terminal.textContent += "\n[Ошибка]\n" + error;
                terminal.scrollTop = terminal.scrollHeight;
            });
    
        });
    
    });
    

    6️⃣ Создаём сам скрипт

    Например:

    sudo nano /usr/local/bin/myscript.sh
    

    Пример скрипта:

    #!/bin/bash
    echo "Скрипт запущен!"
    sleep 1
    echo "Выполняется процесс..."
    sleep 1
    echo "Завершено"
    date
    

    Сделаем скрипт исполняемым:

    sudo chmod +x /usr/local/bin/myscript.sh
    

    7️⃣ Перезапускаем Cockpit

    sudo systemctl restart cockpit
    

    8️⃣ Используем модуль

    1. Открой Cockpit в браузере.
    2. В левом меню появится пункт «Управление скриптами».
    3. Нажми на него.
    4. Нажми кнопку «Запустить скрипт».
    5. Вывод скрипта появится в терминале прямо на странице.
    6. Автоскролл покажет последние строки в реальном времени.

    ⚠ Советы

    • Проверяйте скрипт вручную в терминале перед запуском через Cockpit:
    sudo /usr/local/bin/myscript.sh
    
    • Если скрипт требует root — оставляйте { superuser: "require" }. Cockpit покажет диалог для подтверждения.
    • Используйте pty: true для корректного вывода (как в терминале).
    • Любые изменения JS и CSS требуют Ctrl+Shift+R в браузере для полной перезагрузки.
    Cockpit

  • Bash - работа с SSH
    A Admin

    Как узнать на каком порту слушает SSH


    Узнать, на каком порту слушает SSH, можно несколькими способами. Вот самые надежные и наглядные методы для Debian и других Linux-систем.

    Способ 1: Проверка активных слушающих портов (Самый надежный)

    Этот метод показывает, какие порты в данный момент реально открыты и ожидают подключений.

    Используем ss (современная замена netstat)

    sudo ss -tulpn | grep sshd
    

    Разберем ключи:

    • -t (tcp) — показывать TCP-порты
    • -u (udp) — показывать UDP-порты
    • -l (listening) — только слушающие порты
    • -p (process) — показать процесс, который слушает порт
    • -n (numeric) — не резолвить имена (показывать цифры, работает быстрее)

    Пример вывода:

    tcp   LISTEN 0   128   0.0.0.0:22     0.0.0.0:*    users:(("sshd",pid=1234,fd=3))
    tcp   LISTEN 0   128   [::]:22        [::]:*       users:(("sshd",pid=1234,fd=4))
    

    В этом примере SSH слушает порт 22 на всех интерфейсах (IPv4 и IPv6).

    Если вы меняли порт на 2222, вывод будет таким:

    tcp   LISTEN 0   128   0.0.0.0:2222   0.0.0.0:*    users:(("sshd",pid=1234,fd=3))
    

    Альтернатива с netstat

    Если ss не установлен или вы привыкли к netstat:

    sudo netstat -tulpn | grep sshd
    

    Если netstat не найден, установите его:

    sudo apt install net-tools
    

    Способ 2: Проверка конфигурационного файла

    Этот метод показывает, что написано в конфиге, но не гарантирует, что SSH реально слушает именно эти порты (например, если конфиг содержит ошибку или сервис не перезапущен).

    Основной конфиг

    grep -E "^Port" /etc/ssh/sshd_config
    

    Вывод покажет что-то вроде:

    Port 22
    

    Если строка закомментирована (#Port 22), значит используется значение по умолчанию — порт 22.

    Проверка дополнительных конфигов (Debian 12+)

    В современных версиях Debian настройки могут лежать в отдельных файлах внутри каталога:

    grep -E "^Port" /etc/ssh/sshd_config.d/*.conf
    

    Это покажет все порты, заданные в пользовательских конфигах. Например:

    /etc/ssh/sshd_config.d/port.conf:Port 2222
    

    Способ 3: Просмотр активных SSH-соединений

    Если кто-то уже подключен к серверу, можно увидеть, на каком порту они подключились:

    sudo ss -tunp | grep ESTAB | grep ssh
    

    Или:

    sudo netstat -tunp | grep ESTABLISHED | grep ssh
    

    Способ 4: Использование lsof

    Утилита lsof (list open files) тоже отлично показывает открытые порты:

    sudo lsof -i :22 -sTCP:LISTEN
    

    Замените 22 на любой порт, который хотите проверить. Если порт слушается, вы увидите процесс sshd.

    Или посмотреть все слушающие порты SSH:

    sudo lsof -i -sTCP:LISTEN | grep ssh
    

    Что делать, если порт не совпадает с ожидаемым?

    Если вы изменили порт в конфиге, перезапустили SSH, но ss показывает старый порт:

    1. Проверьте, нет ли синтаксических ошибок в конфиге:

      sudo sshd -t
      

      Если есть ошибки, команда укажет на них.

    2. Проверьте, запущен ли SSH:

      sudo systemctl status ssh
      
    3. Посмотрите логи — там часто пишут, на каких портах запустился SSH:

      sudo journalctl -u ssh | grep "listening on"
      

    Резюме: самый быстрый способ

    Просто запомните эту команду — она сработает в 99% случаев:

    sudo ss -tulpn | grep :22
    

    Замените 22 на предполагаемый порт, если меняли его. Если порт найден, вы увидите строку с LISTEN и процессом sshd.

    Команды BASH

  • Bash - работа с SSH
    A Admin

    Как поменять порт SSH с 22 на 2222 (Debian)

    На Debian 13 (Trixie) можно безопасно изменить порт SSH с 22 на 2222, следуя пошаговой инструкции. Рекомендуемый современный способ — создать отдельный файл конфигурации, который не будет перезаписан при обновлении системы.

    Предварительные меры предосторожности

    Прежде чем вносить изменения, выполните следующие действия, чтобы не потерять доступ к серверу:

    • Не закрывайте текущую SSH-сессию, пока не проверите работоспособность нового порта в другой сессии .
    • Проверьте, не занят ли порт 2222 другой службой, выполнив команду: sudo ss -tulpn | grep :2222. Отсутствие вывода означает, что порт свободен .

    Пошаговая инструкция по изменению порта

    1. Создайте файл пользовательской конфигурации

    В Debian 13 (и современных версиях) рекомендуется добавлять изменения в отдельные файлы внутри каталога /etc/ssh/sshd_config.d/, чтобы не редактировать основной файл конфигурации. Это облегчает обновление пакета и управление настройками .

    Откройте терминал и создайте новый файл конфигурации с помощью текстового редактора (например, nano) :

    sudo nano /etc/ssh/sshd_config.d/port.conf
    

    2. Добавьте строку с новым портом

    В открывшемся пустом файле добавьте следующую строку, которая укажет SSH-серверу слушать новый порт :

    Port 2222
    
    • Совет: Выбирайте порт в диапазоне от 1024 до 65535, чтобы избежать конфликтов с системными службами .

    Сохраните файл и выйдите из редактора (в nano: нажмите Ctrl+X, затем Y для подтверждения и Enter).

    3. Проверьте конфигурацию SSH

    Перед перезапуском службы всегда проверяйте синтаксис конфигурационных файлов, чтобы избежать ошибок, которые могут помешать запуску SSH :

    sudo sshd -t
    

    Если команда не вывела никаких сообщений, значит, синтаксис верен.

    4. Настройте firewall (Брандмауэр)

    Если на вашем сервере включен брандмауэр (например, ufw), необходимо разрешить трафик на новый порт до перезапуска SSH, иначе соединение будет разорвано .

    • Если используется UFW:

      sudo ufw allow 2222/tcp
      sudo ufw reload
      

      Для проверки правил можно использовать sudo ufw status .

    • Если используются iptables или nftables:
      Добавьте соответствующее правило. Например, для iptables:

      sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
      

      Не забудьте сохранить правила iptables, чтобы они пережили перезагрузку .

    5. Перезапустите службу SSH

    Примените изменения, перезапустив службу SSH. На Debian используется сервис ssh :

    sudo systemctl restart ssh
    

    6. Проверьте подключение на новом порту

    Самое важное: не закрывая текущую сессию, откройте новое окно терминала и попробуйте подключиться к серверу, используя новый порт :

    ssh -p 2222 ваше_имя_пользователя@ip_адрес_сервера
    

    Если подключение прошло успешно, вы можете использовать сервер как обычно.

    Возможные проблемы и их решение

    • Ошибка "Connection refused":

      • Убедитесь, что вы используете правильный IP-адрес и порт 2222.
      • Проверьте, что правила брандмауэра обновлены и применяются. Временно можно остановить firewall для теста: sudo ufw disable (не забудьте потом включить обратно) .
      • Проверьте, слушает ли SSH новый порт: sudo ss -tulpn | grep ssh .
    • Если доступ потерян:
      Используйте альтернативный способ доступа к серверу (например, через веб-консоль у хостинг-провайдера или IPMI) и верните изменения. Удалите созданный вами файл port.conf и перезапустите SSH: sudo rm /etc/ssh/sshd_config.d/port.conf и sudo systemctl restart ssh .

    Дополнительные рекомендации

    После того как вы убедились, что новый порт работает, вы можете удалить правило для старого порта из файрвола, чтобы закрыть лишнюю точку входа :

    sudo ufw delete allow 22/tcp
    

    Обратите внимание, что изменение порта — это лишь один из шагов по усилению безопасности. Рекомендуется также настроить аутентификацию по ключам и отключить вход для пользователя root .

    Команды BASH

  • Снятие ограничений для Docker в Incus на Debian 13
    A Admin

    Снятие ограничений для Docker в Incus на Debian 13

    Введение

    При запуске Docker внутри контейнера Incus (LXC) на Debian 13 можно столкнуться с ошибкой:

    OCI runtime create failed:
    open sysctl net.ipv4.ip_unprivileged_port_start file: permission denied
    

    Эта ошибка возникает не из-за Docker, а из-за ограничений безопасности LXC-контейнера.

    В данной статье объясняется, что именно блокируется и почему команда:

    incus config set incus-jitsi security.privileged true
    incus restart incus-jitsi
    

    решает проблему.


    Архитектура по умолчанию

    Стандартная схема:

    Host Debian 13
     └── Incus container (unprivileged)
           └── Docker
                 └── Docker containers
    

    По умолчанию Incus создаёт непривилегированные контейнеры (unprivileged).

    Это означает:

    • UID 0 внутри контейнера ≠ root на хосте
    • используется user namespace
    • запрещена запись в ряд файлов /proc/sys
    • запрещены некоторые операции с cgroups
    • ограничены сетевые sysctl

    Почему Docker не запускался

    Docker использует:

    • namespaces
    • cgroups
    • overlayfs
    • изменение sysctl
    • runtime runc

    При запуске контейнера runc применяет стандартные параметры OCI, включая попытку изменить:

    /proc/sys/net/ipv4/ip_unprivileged_port_start
    

    В unprivileged LXC:

    • доступ к этому sysctl запрещён
    • запись блокируется механизмами user namespace + AppArmor
    • Docker получает permission denied

    Даже если внутри контейнера вы root — это "виртуальный" root.


    Что делает security.privileged true

    Команда:

    incus config set incus-jitsi security.privileged true
    

    переключает контейнер в privileged режим.

    После перезапуска:

    incus restart incus-jitsi
    

    контейнер:

    • больше не использует user namespace
    • UID 0 внутри контейнера = UID 0 на хосте
    • получает расширенные права к /proc
    • может изменять sysctl
    • получает доступ к большему набору kernel capabilities
    • снимаются ограничения на часть cgroup операций

    Фактически контейнер становится максимально близким к полноценной виртуальной машине по правам (но без собственного ядра).


    Почему это помогло Docker

    После включения privileged:

    • runc смог записать sysctl
    • не произошло блокировки при reopen fd
    • container init завершился успешно
    • Docker-контейнер стартовал

    То есть проблема была не в Docker, а в том, что LXC запрещал операции, необходимые для запуска вложенной контейнеризации.


    Что именно было снято

    При переходе в privileged режим:

    Ограничение До После
    User namespace включён отключён
    UID mapping remapped прямой
    Запись в /proc/sys ограничена разрешена
    Kernel capabilities урезаны расширены
    Работа Docker частично блокируется работает

    Важное предупреждение

    security.privileged=true снижает безопасность.

    Контейнер:

    • получает почти полный root-доступ к хосту
    • может потенциально повлиять на систему
    • не изолирован так строго, как unprivileged

    Для production-систем рекомендуется:

    • использовать security.nesting=true вместо privileged
    • или запускать Docker в Incus VM (--vm)
    • или запускать Docker непосредственно на хосте

    Когда допустимо использовать privileged

    • лабораторные стенды
    • тестовые окружения
    • разработка
    • домашний сервер

    Для публичных сервисов (например, Jitsi Meet) лучше рассмотреть VM.


    Итог

    Команда:

    incus config set <container> security.privileged true
    

    снимает ограничения user namespace и расширяет права контейнера до уровня, необходимого для полноценной работы Docker внутри Incus.

    Это решает проблему запуска, но делает контейнер менее безопасным.

    Оптимальный баланс между работоспособностью и безопасностью — security.nesting=true без privileged режима.

    LXC
  • 1 / 1
  • Войти

  • Login or register to search.
Powered by NodeBB Contributors
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы