Установка sogs сервера

Session — это децентрализованный мессенджер без номеров, email и централизованной авторизации. Вместо этого — 12 слов и Session ID. Работает на блокчейне Oxen . Полное скрытие IP, в отличие от p2p-решений вроде Tox.

Что такое Open Group?

  • Группы — чаты (как в Signal или WhatsApp).
  • Open Groups (сообщества) — серверные каналы с возможностью модерирования.

Установка SOGS

Есть два варианта установки:

  • sogs-standalone — простой сервер, сам слушает HTTP-порт. Не требует nginx.
  • sogs-proxied — для серверов с HTTPS через nginx или apache.

Добавим репозиторий:

curl -so /etc/apt/trusted.gpg.d/oxen.gpg https://deb.oxen.io/pub.gpg
echo "deb https://deb.oxen.io $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/oxen.list
sudo apt update

Устанавливаем нужный пакет:

sudo apt install sogs-standalone    # или
sudo apt install sogs-proxied

Прописываем внешний адрес в /etc/sogs/sogs.ini:

[net]
base_url = https://sogs.yourdomain.tld

Настройка Nginx для sogs-proxied

server {
    listen 80;
    server_name sogs.yourdomain.tld;
    client_max_body_size 50M;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name sogs.yourdomain.tld;

    ssl_certificate     /etc/letsencrypt/live/sogs.yourdomain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sogs.yourdomain.tld/privkey.pem;

    client_max_body_size 50M;

    location / {
        proxy_pass http://127.3.2.1:4242;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Откуда берётся 127.3.2.1:4242?

Этот адрес указан в /etc/sogs/uwsgi-proxied.ini:

http-socket = 127.3.2.1:4242

Создание сообщества и управление

# Создать сообщество
sogs --add-room ТОКЕН --name "Название" --description "Описание"

# Добавить себя в админы
sogs --rooms + --add-moderators ВАШIDSESSION --admin --visible

# Назначить права (r = read, w = write, u = upload, a = access)
sogs --room ТОКЕН --add-perms rwa --remove-perms w

# Добавить модератора
sogs --room ТОКЕН --admin --add-moderator SESSION_ID

Посмотреть список комнат и статистику:

sogs -L

Кастомизация шаблонов (веб-интерфейс)

# Шаблоны по умолчанию:
/usr/lib/python3/dist-packages/sogs/templates

# Копируем в свою директорию:
cp -r /usr/lib/python3/dist-packages/sogs/templates /var/lib/session-open-group-server/custom_templates

В sogs.ini указываем путь:

template_path = /var/lib/session-open-group-server/custom_templates

Полезные параметры sogs.ini

active_threshold = 60            # сколько дней считать пользователя активным
active_prune_threshold = 60     # через сколько дней удалять старые данные об активности

[files]
expiry = 30                     # хранить загруженные файлы 30 дней
max_size = 6000000              # максимальный размер файла (6MB)

На обложке неизвестно почему моя любимая картина Всадница Брюллова.