«Обход блокировок с полной маскировкой:3X-UI: Shadowsocks-2022 & XRay (XTLS), настройка сервера на Debian 12» и «SimpleX – первый мессенджер без идентификаторов пользователей, настройка сервера на Debian 12»: разница между страницами

Материал из Шпаргалка знаний
(Различия между страницами)
Перейти к навигации Перейти к поиску
Нет описания правки
 
Нет описания правки
 
Строка 1: Строка 1:
После установки на сервер Debian 12 (Minimal) (x86_64) 2Gb RAM, 1 CPU, 20Gb SSD, приступаем к подготовке сервера.
'''Что такое SimpleX'''


'''Выбор провайдера:'''
'''​​SimpleX''' – не только один из немногих мессенджеров, который не собирает данные пользователей, но и единственный на сегодняшний день мессенджер, который не использует идентификаторы для профилей пользователей, даже случайные числа.


https://hostkey.ru/vps/#preconfigured  -300р самый простой VPS/VDS сервер.
Для доставки сообщений вместо идентификаторов пользователей SimpleX имеет идентификаторы очередей сообщений, отдельные для каждого из контактов. В текущей версии приложения каждая очередь используется до тех пор, пока контакт не будет удален или пока адрес получения сообщений не будет изменен пользователем вручную. Позже команда проекта планирует автоматизировать этот процесс, а также добавить ротацию очередей в клиентский протокол, чтобы даже разговоры не имели долгосрочных идентификаторов, видимых в сети. Такая конструкция предотвращает утечку метаданных пользователей на уровне приложения.


https://ishosting.com/ru/vps/nl  -5$ самый простой VPS/VDS сервер.
Вы, как пользователь мессенджера, можете самостоятельно определить, какой сервер(ы) использовать для получения сообщений, а ваши контакты – серверы, которые вы используете для отправки им сообщений. Это означает, что в каждом разговоре, будут использоваться два разных сервера – по одному для каждого направления сообщений.


=== 3X-UI. Основные возможности ===
Только клиентские устройства хранят профили пользователей, контакты, группы и сообщения, отправленные с двухуровневым сквозным шифрованием.
Шифрование трафика: VLESS, Shadowsocks-2022 и XRay (XTLS) позволяют шифровать пользовательский трафик, что делает его невозможным для чтения или мониторинга со стороны провайдера Интернета или других третьих лиц.


Многофакторная аутентификация: поддержка многофакторной аутентификации повышает уровень безопасности и защищает пользовательские данные от несанкционированного доступа.
Итак, разработчики SimpleX создали свой протокол для передачи сообщений:  


Гибкие настройки: возможность настраивать параметры соединения, такие как тип шифрования, порты и протоколы, что обеспечивает гибкость в настройке соединения и удобство использования.
* SimpleX Messaging Protocol (SMP) – это протокол для отправки сообщений в одном направлении получателю, используя промежуточный сервер. Сообщения доставляются через однонаправленные очереди, создаваемые получателями.


Оптимизация скорости: оптимизация для быстрого соединения по сети. Они могут использовать различные технологии, такие как TCP Fast Open и Congestion Control, что позволяет ускорить передачу данных и улучшить качество соединения.
* SMP работает через транспортный протокол, который обеспечивает целостность, аутентификацию сервера, конфиденциальность и привязку транспортного канала.


Поддержка различных операционных систем: Windows, MacOS, Linux, Android и iOS. Это обеспечивает универсальность и доступность продукта для пользователей на любой платформе.
* Сервер SimpleX – это один из таких серверов.


Открытый исходный код: предоставляет возможность разработчикам изучить код и внести свои изменения, что может помочь улучшить продукт и его функциональность.
* Сеть SimpleX – это термин, используемый для обозначения группы серверов SimpleX, которые способствуют работе SMP.


Надежность и стабильность: VLESS, Shadowsocks-2022 и XRay (XTLS) являются надежными и стабильными протоколами. Они предоставляют высокую скорость и стабильность соединения, а также защиту пользовательских данных.
* Библиотеки SimpleX Client говорят на языке SMP с SimpleX Servers и предоставляют низкоуровневый API, не предназначенный для использования приложениями.
 
С помощью функции '''Netzwerk & Server SimpleX''' можно настроить мессенджер таким образом, чтобы все коммуникации направлялись через сеть '''Tor'''. В сочетании с отсутствующим (уникальным) идентификатором и протоколом '''Simplex Messaging Protocol (SMP)''' возможно анонимное использование, что затрудняет или делает невозможным определить, кто с кем контактирует по метаданным. И еще: в отличие от Briar, например, контакт или устройство не обязательно должны быть постоянно онлайн, чтобы иметь возможность получить сообщение. Они временно хранятся на серверах ретрансляции SimpleX до тех пор, пока не будут получены.
 
 
'''Как работает сеть SimpleX'''
 
Сеть SimpleX по своей структуре напоминает P2P–сети, но в отличие от большинства P2P–сетей она состоит из клиентов и серверов, не зависящих от какого–либо централизованного компонента. По сравнению с более традиционными приложениями для обмена сообщениями (например, WhatsApp, Signal, Telegram) ключевыми отличиями сети SimpleX являются:
 
Участникам не нужно иметь глобально уникальные адреса для общения, вместо этого они используют избыточные однонаправленные (симплексные) очереди обмена сообщениями, с отдельным набором очередей для каждого контакта.
 
Запросы на соединение передаются вне сети, не обязательно защищая обмен ключами от атаки MITM (человек посередине).
 
Простые очереди сообщений, предоставляемые серверами сети, используются клиентами для создания более сложных сценариев коммуникации, таких как дуплексное общение один на один, передача файлов, групповая коммуникация без центральных серверов, каналы контент/коммуникации.
 
Серверы не хранят никакой пользовательской информации (ни профилей пользователей, ни контактов, ни сообщений после их доставки), и в основном используют персистентность в памяти.
 
Пользователи могут менять серверы с минимальными перебоями – даже после исчезновения используемого сервера, просто изменив конфигурацию, на каких серверах создаются новые очереди.
 
[[File:simplex_01.png|link=]]
 
 
'''Особенности SimpleX'''
 
* Сквозное шифрование в каждой очереди сообщений с использованием NaCl cryptobox. Это добавлено для обеспечения избыточности в будущем (прохождение каждого сообщения через несколько серверов), чтобы избежать наличия одного и того же шифротекста в разных очередях (который будет виден злоумышленнику только в случае компрометации TLS). Ключи шифрования, используемые для этого шифрования, не вращаются, вместо этого мы планируем вращать очереди. Для согласования ключей используются ключи Curve25519.
 
* Начиная с версии 2 протокола SMP (текущая версия – v4) все метаданные сообщения, включая время получения сообщения сервером (с округлением до секунды), отправляются получателям в зашифрованном виде
 
* Для соединений клиент–сервер разрешены только TLS 1.2/1.3, ограниченные криптографические алгоритмы: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.
 
* Для защиты от атак повторного воспроизведения серверы SimpleX требуют привязки канала tlsunique в качестве идентификатора сессии в каждой клиентской команде, подписанной эфемерным ключом per–queue.
 
* Для защиты вашего IP–адреса все клиенты SimpleX Chat поддерживают доступ к серверам обмена сообщениями через Tor.
 
* Шифрование локальной базы данных с помощью парольной фразы – ваши контакты, группы и все отправленные и полученные сообщения хранятся в зашифрованном виде. Если вы использовали SimpleX Chat до версии 4.0, вам необходимо включить шифрование в настройках приложения.
 
== Развертываем сервер SimpleX-Chat на Debian 12 ==
После установки на сервер Debian 12 (Minimal) (x86_64) 2Gb RAM, 2 CPU, 20Gb SSD, приступаем к подготовке сервера.
 
[[File:simplex_02.png|link=]]


=== Установка ===
=== Установка ===
Официальный репозиторий 3X-UI: https://github.com/MHSanaei/3x-ui
Официальный репозиторий SimpleX-chat: '''https://github.com/simplex-chat/simplexmq'''
 
Официальный репозиторий форка X-UI: https://github.com/alireza0/x-ui


Итак, дано: VPS с IPv4 (неплохо бы иметь еще IPv6, но не обязательно) и Debian либо Ubuntu Linux (на других дистрибутивах суть будет примерно та же самая). И установленные Docker и docker-compose (если вдруг нет - следуйте инструкциям для вашего дистрибутива - '''https://docs.docker.com/engine/install/''' , у меня без проблем установилось простым "'''apt install docker.io docker-compose'''"). Ну и git в придачу.
Официальный сайт: '''https://simplex.chat/docs/server.html'''


Задаем права пользователю Debian:
Задаем права пользователю Debian:
Строка 64: Строка 100:


<pre>
<pre>
# Install docker from repo (~450MB,2Min)
sudo apt-get update
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Строка 69: Строка 106:
</pre>
</pre>


или
<pre>
# Install SimpleX from Docker Hub (~300MB,30Min)
mkdir -p $HOME/simplex/{xftp,smp}/{config,logs} && mkdir -p $HOME/simplex/xftp/files
git clone https://github.com/simplex-chat/simplexmq
cd simplexmq
git checkout stable
DOCKER_BUILDKIT=1 docker build -t local/smp-server --build-arg APP="smp-server" --build-arg APP_PORT="5223" . # For xmp-server
DOCKER_BUILDKIT=1 docker build -t local/xftp-server --build-arg APP="xftp-server" --build-arg APP_PORT="443" . # For xftp-server
</pre>
 
На этом этапе я ждал примерно 30 минут пока выполнятся 2-е команды выше.
 
Далее запускаем докер с нужными нам настройками


==== Устанавливаем Docker. на Debian 11 ====
<pre>
<pre>
apt-get update -y
docker run -d \
    --name smp-server \
    --restart always \
    -e "ADDR=smp.putyato.pro" \
    -p 5223:5223 \
    -v $HOME/simplex/smp/config:/etc/opt/simplex:z \
    -v $HOME/simplex/smp/logs:/var/opt/simplex:z \
    simplexchat/smp-server:latest
</pre>
</pre>
Когда вы закончите, установите другие необходимые зависимости, используя следующую команду:
 
''* где '''smp.putyato.pro''' домен нашего SMP, задаем свой.''
 
<pre>
<pre>
apt-get install apt-transport-https software-properties-common ca-certificates curl gnupg lsb-release -y
docker run -d \
    --name xftp-server \
    --restart always \
    -e "ADDR=xftp.putyato.pro" \
    -e "QUOTA=50gb" \
    -p 443:443 \
    -v $HOME/simplex/xftp/config:/etc/opt/simplex-xftp:z \
    -v $HOME/simplex/xftp/logs:/var/opt/simplex-xftp:z \
    -v $HOME/simplex/xftp/files:/srv/xftp:z \
    simplexchat/xftp-server:latest
</pre>
</pre>
==== Установить Докер ====
 
По умолчанию последняя версия Docker не включена в официальный репозиторий Debian 11. Поэтому вам нужно будет добавить репозиторий Docker CE в APT. Вы можете добавить его с помощью следующей команды:
''* где '''xftp.putyato.pro''' домен нашего XFTP, задаем свой, 50gb - допустимое место для файлов.''
 
Проверяем как запустились Докеры.
 
<pre>
<pre>
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
docker ps
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
</pre>
</pre>
После добавления репозитория Docker обновите репозиторий и установите Docker CE с помощью следующей команды:
Смотрим ID докера и вставляем его в команду ниже:
<pre>
 
apt-get update -y
<pre>  
apt-get install docker-ce docker-ce-cli -y
#docker exec -it ------ContainerID------ sh -c "smp-server start"
docker exec -it 8077fbd502b4 sh -c "smp-server start"
</pre>
</pre>
После установки проверьте версию Docker CE с помощью следующей команды:
 
Получаем нужную ссылку SMP-servera для установки в телефон:
 
<pre>
<pre>
docker version
# smp://YnnfZurIMWt0CmEFY8kiZbldDteRA9JWlCHyVYKfo-U=@smp.putyato.pro
</pre>
</pre>
Вы должны получить следующий результат:
<pre>
Client: Docker Engine - Community
Version:          20.10.8
API version:      1.41
Go version:        go1.16.6
Git commit:        3967b7d
Built:            Fri Jul 30 19:54:22 2021
OS/Arch:          linux/amd64
Context:          default
Experimental:      true


Server: Docker Engine - Community
Повторяем данную операцию для XFTP-servera:
Engine:
 
  Version:          20.10.8
Смотрим ID докера и вставляем его в команду ниже:
  API version:     1.41 (minimum version 1.12)
 
  Go version:      go1.16.6
<pre>
  Git commit:      75249d8
#docker exec -it ------ContainerID------ sh -c "smp-server start"
  Built:            Fri Jul 30 19:52:31 2021
docker exec -it 3598af7c4d35 sh -c "xftp-server start"
  OS/Arch:          linux/amd64
  Experimental:    false
containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
</pre>
</pre>
==== Управление службами Docker ====
Вы можете легко управлять службой Docker с помощью утилиты systemd.


Чтобы запустить службу Docker, выполните следующую команду:
Получаем нужную ссылку XFTP-servera для установки в телефон:
 
<pre>
<pre>
sudo systemctl start docker
# xftp://DZfGTKj-dfJTPLF7MJUvO-EFFE4Vncz9v2eXjbIxKGE=@xftp.putyato.pro
</pre>
</pre>
Чтобы перезапустить службу Docker, выполните следующую команду:
 
Делаем чтобы докеры после перезапуска сервера автоматически поднимались.
 
<pre>
<pre>
sudo systemctl restart docker
systemctl enable docker
</pre>
</pre>
Чтобы остановить службу Docker, выполните следующую команду:
 
=== WebRTC ICE в SimpleX Chat Развертывание сервера STUN/TURN ===
Установите '''coturn''' пакет из основного репозитория.
<pre>
<pre>
sudo systemctl stop docker
apt update && apt install coturn
</pre>
</pre>
Чтобы служба Docker запускалась при перезагрузке системы, выполните следующую команду:
Раскомментировать TURNSERVER_ENABLED=1 из /etc/default/coturn:
<pre>
<pre>
sudo systemctl enable docker
sed -i '/TURN/s/^#//g' /etc/default/coturn
</pre>
</pre>
Чтобы проверить статус Docker, выполните следующую команду:
Настроить coturnв /etc/turnserver.conf:
<pre>
<pre>
sudo systemctl status docker
# Also listen to 443 port for tls
</pre>
alt-tls-listening-port=443
Вы должны увидеть статус Docker в следующем выводе:
 
<pre>
listening-port=3478
? docker.service - Docker Application Container Engine
tls-listening-port=5349
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
 
    Active: active (running) since Fri 2021-09-10 07:19:35 UTC; 27s ago
# Use fingerprints in the TURN messages
TriggeredBy: ? docker.socket
fingerprint
      Docs: https://docs.docker.com
# Use long-term credentials mechanism
  Main PID: 29018 (dockerd)
lt-cred-mech
      Tasks: 7
# Your credentials
    Memory: 32.6M
user=$YOUR_LOGIN:$YOUR_PASSWORD
        CPU: 407ms
# Your server domain
    CGroup: /system.slice/docker.service
server-name=turn.putyato.pro
            ??29018 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# The default realm to be used for the users when no explicit origin/realm relationship was found
realm=turn.putyato.pro
# Path to your certificates. Make sure they're readable by cotun process user/group
cert=/etc/letsencrypt/live/turn.putyato.pro/cert.pem
pkey=/etc/letsencrypt/live/turn.putyato.pro/privkey.pem
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"
# Use 2066 bits predefined DH TLS key
dh2066
# Log to journalctl
syslog
# User/group which will be running coturn service
proc-user=turnserver
proc-group=turnserver
 
no-loopback-peers
no-multicast-peers


Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809035575Z" level=info msg="scheme \"unix\" not registered, fallback to def>
# Disable weak encryption
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809219999Z" level=info msg="ccResolverWrapper: sending update to cc: {[{uni>
no-tlsv1
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809410545Z" level=info msg="ClientConn switching balancer to \"pick_first\">
no-tlsv1_1
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.897972507Z" level=info msg="Loading containers: start."
no-tlsv1_2
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.186940748Z" level=info msg="Default bridge (docker0) is assigned with an IP>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.298681937Z" level=info msg="Loading containers: done."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.356364773Z" level=info msg="Docker daemon" commit=75249d8 graphdriver(s)=ov>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.357524464Z" level=info msg="Daemon has completed initialization"
Sep 10 07:19:35 debian11 systemd[1]: Started Docker Application Container Engine.
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.401626151Z" level=info msg="API listen on /run/docker.so
</pre>
</pre>
''* '''user=$YOUR_LOGIN:$YOUR_PASSWORD''' - вписываем логин и пароль без кавычек и без $. '''turn.putyato.pro''' -это наш сервер.''


==== Установить Docker Compose В Debian 11 ====
Запустите и включите coturnслужбу:
Первое, что нужно сделать, это обновить систему. Выполните следующую команду:
<pre>
<pre>
sudo apt update && sudo apt upgrade -y
systemctl enable coturn && systemctl start coturn
</pre>
</pre>
Вы можете скачать текущую стабильную версию Docker Compose, выполнив следующую команду:
Зарегистрируйте сертификаты Let’s Encrypt.
 
Мы будем использовать certbot от EFF для сертификатов Let's Encrypt.
<pre>
<pre>
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
apt-get install snapd
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
</pre>
</pre>
Чтобы сделать двоичный файл исполняемым, предоставьте следующие разрешения:
Установив certbot, вы можете создать свой сертификат.
<pre>
<pre>
sudo chmod +x /usr/local/bin/docker-compose
certbot certonly --standalone --rsa-key-size 4096 -m admin@putyato.pro -d turn.putyato.pro
</pre>
</pre>
В случае сбоя установки вам, возможно, придется создать символическую ссылку между «/usr/bin» и любой другой папкой. Это можно сделать с помощью следующей команды.
За 30 (и 7) дней до истечения срока действия сертификатов вы получите электронное письмо на адрес admin@putyato.pro .
 
При необходимости откройте соответствующие порты:
<pre>
<pre>
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo apt-get install ufw
</pre>
sudo ufw allow 3478 && \
Теперь пришло время протестировать установку. Для подтверждения вывода используйте следующую команду:
sudo ufw allow 443 && \
<pre>
sudo ufw allow 5349 && \
docker-compose --version
sudo ufw allow 49152:65535/tcp && \
sudo ufw allow 49152:65535/udp
</pre>
</pre>


=== Установка самой программы 3X-UI ===
=== Настройка мобильных приложений ===
Чтобы настроить мобильное приложение для использования вашего сервера:
 
Откройте Settings / Network & Servers / WebRTC ICE serversи переключите переключатель Configure ICE servers.


Сначала клонируем исходники. Лучше всего использовать последнюю стабильную версию, можно проверить в "Releases" на гитхабе.
Введите в поле все адреса серверов, по одному в строке, например, если ваши серверы находятся на порту 5349:


Для 3X-UI:
<pre>
<pre>
git clone https://github.com/MHSanaei/3x-ui.git
stun:stun.putyato.pro:3478
cd 3x-ui
turn:username:password@turn.putyato.pro:3478
</pre>
</pre>
или
или
Для X-UI:
<pre>
<pre>
git clone https://github.com/alireza0/x-ui.git
stun:stun.putyato.pro:5349
cd x-ui
turn:username:password@turn.putyato.pro:5349
</pre>
</pre>
Вот и все: теперь вы можете совершать аудио- и видеозвонки через свой собственный сервер, не передавая какие-либо данные нашим серверам (кроме обмена ключами с вашим контактом в зашифрованных сообщениях E2E).


Запускаем docker-compose:
<pre>
sudo docker-compose up -d
</pre>
Готово! Панель установлена и работает.


Для 3X-UI идем браузером по адресу '''http://yourserverip:2053/panel/''', где '''yourserverip''' - IP-адрес вашего сервера или доменное имя, если оно у вас есть и настроено (обратите внимание, протокол http://, а не https://). Для X-UI нужно сначала посмотреть с помощью команды "docker logs x-ui", на каком именно порту запустилась панель.
'''Проверка подключения STUN/TURN :'''


Логинимся под стандартными реквизитами '''admin / admin''' и видим нашу прекрасную панель управления:
Зайдите в IceTest . '''https://icetest.info/'''


=== Создание протоколов в графической панели 3X-UI ===
В разделе «Создание списка серверов ICE» добавьте:
Чтобы войти в веб версию панели, в браузере идём по адресу:


http://xxx.xxx.xxx.xxx:PORT/panel/, где xxx.xxx.xxx.xxx — IP-адрес вашего сервера, а PORT - номер вашего порта. В моём случае это порт 5580.
[[File:simplex_03.png|link=]]


[[File:Shadowsocks_01.png|link=]]
STUN: stun:<your_ip_or_domain>:<port>и ударилAdd STUN
TURN: turn:<your_ip_or_domain>:<port>, Username: <your_login>, Credential: <your_pass>и ударилAdd TURN


Логинимся и видим вот такую красивую панель управления 3X-UI
=== Настройка записей DNS ===
Настойку делаем у доменного провайдера. NIC.RU
<pre>
turn.example.com. 14400 IN A    37.226.5.44
turn.example.com. 14400 IN AAAA 2001:db8:1234::1
stun.example.com. 14400 IN A    37.226.5.44
stun.example.com. 14400 IN AAAA 2001:db8:1234::1


[[File:Shadowsocks_02.png|link=]]
@ IN NAPTR 10 0 "s" "RELAY:turn.udp" "" _turn._udp.example.com


Переходим в '''"Settings"''' (настройки) и там:
_stun._udp.example.com.  14400 IN SRV  5 0 3478 turn.example.com
_stun._tcp.example.com.  14400 IN SRV  5 0 3478 turn.example.com
_stuns._tcp.example.com. 14400 IN SRV  5 0 5349 turn.example.com


Изменить порт на котором работает панель со стандартного '''2053''' на какой-нибудь другой (лучше всего где-нибудь в верхнем конце диапазона, до '''65235''');
_turn._udp.example.com.  14400 IN SRV  5 0 3478 turn.example.com
 
_turn._tcp.example.com.  14400 IN SRV  5 0 3478 turn.example.com
Изменить корневой путь URL-адреса панели с / на что-то типа '''/mysecretpanelroot/''';
_turns._tcp.example.com.  14400 IN SRV  5 0 5349 turn.example.com
 
</pre>
При желании переключить язык на русский (но имейте в виду, в русском переводе есть некоторые неточности сбивающие с толку);


На второй вкладке "Настройки безопасности" изменить стандартный админский пароль на свой;


После чего сохраняем настройки и рестартуем панель. Нужно будет изменить URL с учетом нового порта и пути, заданных в настройках.
== Установка Тора ==
smp-сервер также можно развернуть для обслуживания из сети Tor . Выполните следующие команды от имени rootпользователя.


[[File:Shadowsocks_03.png|link=]]
=== Установить Тор: ===


[[File:Shadowsocks_04.png|link=]]
Мы предполагаем, что вы используете дистрибутивы на основе Ubuntu/Debian. Если нет, обратитесь к официальной документации Tor или к руководству по распространению.


=== Создаем подключения ===
Настройте официальный репозиторий Tor PPA:
Идем в раздел меню Inbounds (в русском переводе он почему-то называется "Пользователи", это неправильно и сбивает с толку). Нажимаем "Add Inbound" ("Добавить пользователя"):


[[File:Shadowsocks_05.png|link=]]
Появляется милое окошко. Сначала добавим возможность подключаться через '''Shadowsocks-2022'''.
'''"Remark"''' (Примечание) - ввести что угодно, это просто человекочитаемое название;
'''"Протокол"''' выбираем shadowsocks;
'''"Listening IP"''' (в русском переводе называется "Порт IP", и это тоже неправильно и запутывает) можно оставить пустым, тогда сервер будет слушать на всех IP-адресах, либо можно явно указать требуемый;
'''"Порт"''' - панель выберет рандомный.
==== Далее настраиваем пользователя (в момент создания inbound'а создается один, других при желании можно добавить позже): ====
Поле '''"Email"''' на самом деле не обязательно должно содержать емайл, может быть любой текст (имя пользователя) - панель генерирует рандомный набор символов, если вы хотите создавать несколько разных пользователей (например, раздать аккаунты друзьям, смотреть кто сколько накачал и при желании блокировать доступ), то лучше вбить сюда что-то человекочитаемое и понятное;
'''"Subscription"''' - пока что можно вбить тот же самый юзернейм (о подписках я расскажу чуть позже).
Дальше снова идут настройки протокола:
'''"Шифрование"''' - выбираем что-нибудь что начинается с "2022", вариант по умолчанию вполне неплох;
'''"Пароль"''' (ключ) панель сгенерирует автоматически с правильной длиной для выбранного метода шифрования.
Нажимаем '''"Создать"''' и на этом настройка для Shadowsocks закончена, им уже можно пользоваться.
[[File:Shadowsocks_06.png|link=]]
==== Теперь переходим к настройке VLESS с XTLS-Reality. ====
Тут все будет чуточку сложнее, но в целом так же просто.
'''"Remark"''' (Примечание) - любое название;
'''"Протокол"''' - "vless",
'''"Listening IP"''' ("Порт IP", который на самом деле не порт, а адрес) - оставляем пустым, либо задаем вручную если надо;
'''"Порт"''' - вместо рандомного ставим 443;
[[File:Shadowsocks_07.png|link=]]
==== Далее переходим к настройкам клиента. ====
'''"Email"''' - как в и в прошлом пункте, лучше указать что-то человекочитаемое и понятное. Важно: пользователи разных подключений не могут иметь один и тот же емайл (например, наш новый VLESS и старый Shadowsocks созданный в предыдущем пункте), поэтому можно добавить какой-нибудь префикс (например user1vl) для избежания конфликтов.
'''"Subscription"''' - тут наоборот, лучше будет если текст в этом поле будет совпадать с тем, что вы задали для Shadowsocks (подробности ниже). Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается, нужно сначала активировать функционал подписок в настройках панели.
'''"Flow"''' - надо выбрать "xtls-rprx-vision". Обратите внимание, поле Flow (см. скриншот) появится только после того, как чуть ниже вы поставите галочку на пункте "Reality". То есть лучше всего настривать так: сначала ставите галочку Reality, а потом заполняете поля с настройками пользователя.
==== Дальше у нас идут настройки транспорта: ====
'''"Reality"''' - как уже сказано выше, должно быть активно;
'''"XTLS"''' - наоборот, должно быть неактивно (это немного запутывает, не смотря на то, что Reality тоже относится к XTLS, здесь под XTLS подразумеваются только устаревшие версии протокола, и галочки "XTLS" и "Reality" в панели являются взаимоисключающими);
'''"uTLS"''' - по умолчанию "firefox", я обычно выбираю "chrome", по факту особо без разницы (главное чтобы не "android", могут быть проблемы с клиентами);
'''"Домен"''' - на самом деле это не домен, а адрес для подключения к вашему серверу. Можно оставить пустым, тогда панель автоматически подставит IP-адрес или домен, по которому вы обращаетесь в панели на сервере.
'''"ShortIds"''' - панель сгенерирует рандомный ID;
'''"Public Key", "Private Key"''' - можно кликнуть на "Get new keys", и панель сама сгенерирует новые для вас;
'''"Dest" и "Server names"''' - вот это самое интересное, это домен, под который вы будете маскироваться. По умолчанию панель предлагает маскировку под yahoo.com и www.yahoo.com с переадресацией на yahoo.com:443, но лучше выбрать какой-нибудь другой домен.
'''Sniffing, HTTP, TLS, QUIC, fakedns''' — оставьте включённым.
[[File:Shadowsocks_08.png|link=]]
Сохраняем введенную форму, и - всё! Настройка завершена.
После этого на странице видим примерно вот это:
[[File:Shadowsocks_09.png|link=]]
Если тыкнуть на кнопочку '''"Меню"''' соответствующую нужному протоколу, можно его активировать/деактивировать, сбросить счетчики трафика, добавить пользователей (в том числе сгенерировать разом N аккаунтов по шаблону), и самое главное - раскрыв (плюсиком) список пользователей, можно посмотреть настройки подключения для вбивания в клиенты для этого пользователя.
Нажав на значок '''QR-кода''', панель покажет QR-код, который можно отсканировать камерой в мобильных клиентах ('''v2rayNG''' или '''Nekobox''' на Android, Wings X/'''FoXray''' или '''Shadowrocket''' или '''V2BOX''' на iOS).
Нажав на иконку информации (с буквой "i") можно посмотреть настройки для вбивания в десктопные клиенты Windows, Linux, MacOS, в том числе и URL, который можно скопировать и вставить.
[[File:Shadowsocks_10.png|link=]]
Там же вы можете найти "subscription URL". Это - специальным образом сгенерированный список подключений для клиентов. Помните, вы указывали "Subscription" при создании пользователя? При запросе по такому subscription URL, сервер выдаст список настроек (сервера, ключи) для всех подключений с этим ID в поле subscription. Многие клиенты (включая v2rayNG, v2rayN, Nekobox, и другие) умеют автоматически либо по запросу скачивать настройки с таких URL и добавлять их к себе - таким образом, если вы добавили какие-то новые протоколы или решили поменять конфигурацию, пользователи могут легко получить новые параметры с вашего сервера.
Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается и вообще функционал подписок по умолчанию отключен, его нужно активировать в настройках панели.
Если нажать на '''меню''', то можно изменить, добавить одного или нескольких пользователей, сбросить трафик, экспортировать ключи и т. д.
[[File:Shadowsocks_11.png|link=]]
=== Подключение клиентов ===
==== Подключение устройств на iOS (но не ниже 16 версии) ====
1. Скачайте приложение FoXray из AppStore по ссылке: https://apps.apple.com/ru/app/foxray/id6448898396?ref=dtf.ru
2. В графической панели 3X-UI создайте нового клиента. Для этого: нажмите на кнопку Меню в ранее созданной конфигурации, далее Добавить пользователя. В поле Email напишите название клиента, например "Мой iPhone", а в пункте Flow выберите xtls-rprx-vision.
3. Раскройте (плюсиком) список клиентов и под «Меню» рядом с только что созданным клиентом «Мой iPhone» нажмите на иконку QR-кода:
[[File:Shadowsocks_12.png|link=]]
4. Запустите приложение FoXray и в левом верхнем углу нажмите значок сканирования QR-кода и отсканируйте его с экрана компьютера.
[[File:Shadowsocks_13.png|link=]]
5. Всё, профиль добавлен! Теперь нажмите на кнопку «Play», далее разрешите добавление конфигурации VPN, введите пароль и можете пользоваться VPN соединением.
==== Подключение устройств на Windows ====
1. Скачайте архив с программой Invisible Man XRay c GitHub и распакуйте его ('''https://github.com/InvisibleManVPN/InvisibleMan-XRayClient''')
2. В графической панели 3X-UI создайте нового клиента. Для этого: нажмите на кнопку Меню в ранее созданной конфигурации, далее Добавить пользователя. В поле Email напишите название клиента, например "Мой Windows", а в пункте Flow выберите xtls-rprx-vision.
3. Раскройте (плюсиком) список клиентов и под «Меню", рядом с только что созданным клиентом "Мой Windows» и нажмите на иконку Информация:
[[File:Shadowsocks_14.png|link=]]
4. Скопируйте ссылку для подключение под надписью URL, нажав на кнопку копирования, как на скриншоте ниже:
[[File:Shadowsocks_15.png|link=]]
5. Отправьте любым удобным способом данную ссылку на ваш компьютер, и там также её скопируйте.
6. Запустите программу Invisible Man XRay и перейдите в Manage server configuration.
[[File:Shadowsocks_16.png|link=]]
7. Нажмите на кнопку "плюс" в правом нижнем углу окна.
[[File:Shadowsocks_17.png|link=]]
8. Выберите Import from link и вставьте вашу ссылку, которую вы ранее скопировали в поле, как на скрине:
[[File:Shadowsocks_18.png|link=]]
9. Если вы всё правильно сделали, должна добавиться новая конфигурция. Закройте этот менеджер и нажмите кнопку Run.
[[File:Shadowsocks_19.png|link=]]
10. Готово! VPN на компьютере под управлением операционной системы Windows мы тоже настроили без проблем.
=== Пропускаем трафик через Tor ===
'''Torghost'''
Начала получим репозиторий из гитхаба (кстати, сначала нужно установить git):
<pre>
<pre>
sudo apt update && sudo apt upgrade
CODENAME="$(lsb_release -c | awk '{print $2}')"
git clone https://github.com/SusmithKrishnan/torghost.git
echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list
</pre>
</pre>
После этого заходим в папку torghost (она появится после клонирования репозитория) и делаем файл build.sh исполняемым:
Импортировать ключ репозитория:
<pre>
<pre>
cd torghost
curl --proto '=https' --tlsv1.2 -sSf https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
sudo chmod +x build.sh
</pre>
</pre>
Запускаем установку:
Обновить индекс репозитория:
<pre>
<pre>
sudo ./build.sh
apt update
</pre>
</pre>
Установщик сам подтянет все зависимости и поставит Тор. На этом установка закончена!
Установить torпакет:
 
Далее ставим обновление:
<pre>
<pre>
pip3 install -r requirements.txt
apt install -y tor deb.torproject.org-keyring
wget -c https://github.com/SusmithKrishnan/torghost/releases/download/v3.0.2/torghost-3.0.2-amd64.deb
sudo dpkg -i torghost-*-amd64.deb
</pre>
Открываем файл torghost.py на редактирование и комментируем 15 -ю строку.
<pre>
nano torghost.py
</pre>
</pre>
=== Настройте тор: ===


<pre>
Конфигурация файла:


'''
Откройте конфигурацию Tor в выбранном вами редакторе ( nano, vim, emacsи т. д.):
from packaging import version
'''
 
</pre>
 
Запускаем утилиту '''torghost''', ip адрес будет меняться автоматически через каждые 10 минут:
<pre>
<pre>
sudo python3 torghost.py -s
nano /etc/tor/torrc
</pre>
</pre>
 
И вставьте следующие строки в конец конфигурации. Обратите внимание на строки, начинающиеся с #: это комментарии к каждой отдельной опции.
Варианты использования:
<pre>
<pre>
sudo python3 torghost.py -x (to stop Torghost - the tool will go back to you Ip ADDRESS from your ISP)
# Enable log (otherwise, tor doesn't seemd to deploy onion address)
 
Log notice file /var/log/tor/notices.log
sudo python3 torghost.py -u (to update the tool - this is not required to do it every day)
# Enable single hop routing (2 options below are dependencies of third). Will reduce latency in exchange of anonimity (since tor runs alongside smp-server and onion address will be displayed in clients, this is totally fine)
 
SOCKSPort 0
sudo python3 torghost.py -r (to switch the IP Address - you will notice that the IP address that Torghost assigned you at the beginning will change again)
HiddenServiceNonAnonymousMode 1
 
HiddenServiceSingleHopMode 1
sudo python3 torghost.py -h (to open the help menu)
# smp-server hidden service host directory and port mappings
HiddenServiceDir /var/lib/tor/simplex-smp/
HiddenServicePort 5223 localhost:5223
</pre>
</pre>
 
Создайте каталоги:
Скрипт чтобы IP адреса менялись через каждую минуту, если нужно:
<pre>
<pre>
#!/bin/bash
mkdir /var/lib/tor/simplex-smp/ && chown debian-tor:debian-tor /var/lib/tor/simplex-smp/ && chmod 700 /var/lib/tor/simplex-smp/
a=1
x=60
while [[ $a -gt 0 ]]
do
python3 torghost.py -s
sleep $x
done
</pre>
</pre>
=== Запустить тор: ===


=== Дополнительная информация из другого источника ===
Включите systemdсервис и запустите Tor. Offical torнемного ненадежен при первом запуске и может не создать луковый адрес хоста, поэтому на всякий случай перезапускаем его.
Команда для запуска установки панели 3X-UI:
 
https://github.com/MHSanaei/3x-ui?ysclid=lstfiw45v6910325792
 
 
Скачать NekoBox:
 
https://github.com/MatsuriDayo/NekoBoxForAndroid/releases
 
 
Скачать V2RayN:
 
https://github.com/2dust/v2rayN/releases
 
 
Настройка ssh-ключей:
 
https://simplelinux.ru/nastrojka-podklyucheniya-k-serveru-po-ssh-klyucham/
 
 
== Получение SSL сертификата. ==
<pre>
<pre>
sudo apt-get install certbot -y
systemctl enable tor && systemctl start tor && systemctl restart tor
sudo certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
sudo certbot renew --dry-run
</pre>
</pre>
Или вариант само подписываемого сертификата для docker
Отображение лукового хоста:


Сгенерируйте самоподписанный TLS-сертификат и скопируйте его в панель 3X-UI
Выполните следующую команду, чтобы отобразить адрес вашего лукового хоста:
<pre>
<pre>
sudo openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout private.key -out public.key -days 3650 -subj "/CN=APP"
cat /var/lib/tor/simplex-smp/hostname
sudo docker cp private.key 3x-ui:private.key
sudo docker cp public.key 3x-ui:public.key
</pre>
</pre>
Указываем путь в панели:
[[File:VPN_4.png|link=]]
== Создания туннеля через несколько VPN серверов. ==
Для того чтобы пропустить наш трафик например через 2 сервера делаем следующее:
1) Копируемым ссылку на подключения например Shadowsocks на конечном сервере.
ss://MjAyMi1GFrZTMtYWVzLTI1Ni1nY206UlA0TTJWbHVudHlpUFdiWEdxdk1ieGd4SVNVOEZnaXUUxDN3ladU82bz06T0NJYkl2c1ZxZ2oyTmw5QVZG9KZUtMTjBzb25TSGprZDU90akxrOD0@135.120.45.13:22467?type=tcp#SS-Vasya_ss
2) Заходим на первый наш сервер, В правом меню нажимаем на '''"Настройка Xray" --> "Исходящие" --> "Добавить исходящий" --> JSON'''
И в поле '''"Link"''' вставляем нашу ссылку.
[[File:VPN_1.png|link=]]
[[File:VPN_2.png|link=]]
3) Нажимаем '''"Сохранить настройки" --> "Перезапустить Xray"'''
4) Далее опять в правом меню нажимаем на '''"Настройка Xray" --> "Правила маршрутизации" --> "Добавить правило"
5) Выбираем в поле "Network" --> "TCP,UDP", и в поле "Outbound" --> наш второй сервер.
[[File:VPN_3.png|link=]]
6) Нажимаем '''"Сохранить настройки" --> "Перезапустить Xray"'''
Все, Трафик идет последовательно через 2 сервера. На выходе мы видим IP последнего сервера.

Версия от 06:29, 22 марта 2024

Что такое SimpleX

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

Для доставки сообщений вместо идентификаторов пользователей SimpleX имеет идентификаторы очередей сообщений, отдельные для каждого из контактов. В текущей версии приложения каждая очередь используется до тех пор, пока контакт не будет удален или пока адрес получения сообщений не будет изменен пользователем вручную. Позже команда проекта планирует автоматизировать этот процесс, а также добавить ротацию очередей в клиентский протокол, чтобы даже разговоры не имели долгосрочных идентификаторов, видимых в сети. Такая конструкция предотвращает утечку метаданных пользователей на уровне приложения.

Вы, как пользователь мессенджера, можете самостоятельно определить, какой сервер(ы) использовать для получения сообщений, а ваши контакты – серверы, которые вы используете для отправки им сообщений. Это означает, что в каждом разговоре, будут использоваться два разных сервера – по одному для каждого направления сообщений.

Только клиентские устройства хранят профили пользователей, контакты, группы и сообщения, отправленные с двухуровневым сквозным шифрованием.

Итак, разработчики SimpleX создали свой протокол для передачи сообщений:

  • SimpleX Messaging Protocol (SMP) – это протокол для отправки сообщений в одном направлении получателю, используя промежуточный сервер. Сообщения доставляются через однонаправленные очереди, создаваемые получателями.
  • SMP работает через транспортный протокол, который обеспечивает целостность, аутентификацию сервера, конфиденциальность и привязку транспортного канала.
  • Сервер SimpleX – это один из таких серверов.
  • Сеть SimpleX – это термин, используемый для обозначения группы серверов SimpleX, которые способствуют работе SMP.
  • Библиотеки SimpleX Client говорят на языке SMP с SimpleX Servers и предоставляют низкоуровневый API, не предназначенный для использования приложениями.

С помощью функции Netzwerk & Server SimpleX можно настроить мессенджер таким образом, чтобы все коммуникации направлялись через сеть Tor. В сочетании с отсутствующим (уникальным) идентификатором и протоколом Simplex Messaging Protocol (SMP) возможно анонимное использование, что затрудняет или делает невозможным определить, кто с кем контактирует по метаданным. И еще: в отличие от Briar, например, контакт или устройство не обязательно должны быть постоянно онлайн, чтобы иметь возможность получить сообщение. Они временно хранятся на серверах ретрансляции SimpleX до тех пор, пока не будут получены.


Как работает сеть SimpleX

Сеть SimpleX по своей структуре напоминает P2P–сети, но в отличие от большинства P2P–сетей она состоит из клиентов и серверов, не зависящих от какого–либо централизованного компонента. По сравнению с более традиционными приложениями для обмена сообщениями (например, WhatsApp, Signal, Telegram) ключевыми отличиями сети SimpleX являются:

Участникам не нужно иметь глобально уникальные адреса для общения, вместо этого они используют избыточные однонаправленные (симплексные) очереди обмена сообщениями, с отдельным набором очередей для каждого контакта.

Запросы на соединение передаются вне сети, не обязательно защищая обмен ключами от атаки MITM (человек посередине).

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

Серверы не хранят никакой пользовательской информации (ни профилей пользователей, ни контактов, ни сообщений после их доставки), и в основном используют персистентность в памяти.

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


Особенности SimpleX

  • Сквозное шифрование в каждой очереди сообщений с использованием NaCl cryptobox. Это добавлено для обеспечения избыточности в будущем (прохождение каждого сообщения через несколько серверов), чтобы избежать наличия одного и того же шифротекста в разных очередях (который будет виден злоумышленнику только в случае компрометации TLS). Ключи шифрования, используемые для этого шифрования, не вращаются, вместо этого мы планируем вращать очереди. Для согласования ключей используются ключи Curve25519.
  • Начиная с версии 2 протокола SMP (текущая версия – v4) все метаданные сообщения, включая время получения сообщения сервером (с округлением до секунды), отправляются получателям в зашифрованном виде
  • Для соединений клиент–сервер разрешены только TLS 1.2/1.3, ограниченные криптографические алгоритмы: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.
  • Для защиты от атак повторного воспроизведения серверы SimpleX требуют привязки канала tlsunique в качестве идентификатора сессии в каждой клиентской команде, подписанной эфемерным ключом per–queue.
  • Для защиты вашего IP–адреса все клиенты SimpleX Chat поддерживают доступ к серверам обмена сообщениями через Tor.
  • Шифрование локальной базы данных с помощью парольной фразы – ваши контакты, группы и все отправленные и полученные сообщения хранятся в зашифрованном виде. Если вы использовали SimpleX Chat до версии 4.0, вам необходимо включить шифрование в настройках приложения.

Развертываем сервер SimpleX-Chat на Debian 12

После установки на сервер Debian 12 (Minimal) (x86_64) 2Gb RAM, 2 CPU, 20Gb SSD, приступаем к подготовке сервера.

Установка

Официальный репозиторий SimpleX-chat: https://github.com/simplex-chat/simplexmq

Официальный сайт: https://simplex.chat/docs/server.html

Задаем права пользователю Debian:

su
apt install sudo
su - root
adduser username sudo
reboot

* где username имя пользователя под которым зашли в систему.

sudo apt-get update
sudo apt-get upgrade

Устанавливаем Docker. на Debian 12

# Add Docker's official GPG key:

sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install docker from repo (~450MB,2Min)
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt install docker.io docker-compose
# Install SimpleX from Docker Hub (~300MB,30Min)
mkdir -p $HOME/simplex/{xftp,smp}/{config,logs} && mkdir -p $HOME/simplex/xftp/files
git clone https://github.com/simplex-chat/simplexmq
cd simplexmq
git checkout stable
DOCKER_BUILDKIT=1 docker build -t local/smp-server --build-arg APP="smp-server" --build-arg APP_PORT="5223" . # For xmp-server
DOCKER_BUILDKIT=1 docker build -t local/xftp-server --build-arg APP="xftp-server" --build-arg APP_PORT="443" . # For xftp-server

На этом этапе я ждал примерно 30 минут пока выполнятся 2-е команды выше.

Далее запускаем докер с нужными нам настройками

docker run -d \
    --name smp-server \
    --restart always \
    -e "ADDR=smp.putyato.pro" \
    -p 5223:5223 \
    -v $HOME/simplex/smp/config:/etc/opt/simplex:z \
    -v $HOME/simplex/smp/logs:/var/opt/simplex:z \
    simplexchat/smp-server:latest

* где smp.putyato.pro домен нашего SMP, задаем свой.

docker run -d \
    --name xftp-server \
    --restart always \
    -e "ADDR=xftp.putyato.pro" \
    -e "QUOTA=50gb" \
    -p 443:443 \
    -v $HOME/simplex/xftp/config:/etc/opt/simplex-xftp:z \
    -v $HOME/simplex/xftp/logs:/var/opt/simplex-xftp:z \
    -v $HOME/simplex/xftp/files:/srv/xftp:z \
    simplexchat/xftp-server:latest

* где xftp.putyato.pro домен нашего XFTP, задаем свой, 50gb - допустимое место для файлов.

Проверяем как запустились Докеры.

docker ps

Смотрим ID докера и вставляем его в команду ниже:

 
#docker exec -it ------ContainerID------ sh -c "smp-server start"
docker exec -it 8077fbd502b4 sh -c "smp-server start"

Получаем нужную ссылку SMP-servera для установки в телефон:

# smp://YnnfZurIMWt0CmEFY8kiZbldDteRA9JWlCHyVYKfo-U=@smp.putyato.pro

Повторяем данную операцию для XFTP-servera:

Смотрим ID докера и вставляем его в команду ниже:

 
#docker exec -it ------ContainerID------ sh -c "smp-server start"
docker exec -it 3598af7c4d35 sh -c "xftp-server start"

Получаем нужную ссылку XFTP-servera для установки в телефон:

# xftp://DZfGTKj-dfJTPLF7MJUvO-EFFE4Vncz9v2eXjbIxKGE=@xftp.putyato.pro

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

systemctl enable docker

WebRTC ICE в SimpleX Chat Развертывание сервера STUN/TURN

Установите coturn пакет из основного репозитория.

apt update && apt install coturn

Раскомментировать TURNSERVER_ENABLED=1 из /etc/default/coturn:

sed -i '/TURN/s/^#//g' /etc/default/coturn

Настроить coturnв /etc/turnserver.conf:

# Also listen to 443 port for tls
alt-tls-listening-port=443

listening-port=3478
tls-listening-port=5349

# Use fingerprints in the TURN messages
fingerprint
# Use long-term credentials mechanism
lt-cred-mech
# Your credentials
user=$YOUR_LOGIN:$YOUR_PASSWORD
# Your server domain
server-name=turn.putyato.pro
# The default realm to be used for the users when no explicit origin/realm relationship was found
realm=turn.putyato.pro
# Path to your certificates. Make sure they're readable by cotun process user/group
cert=/etc/letsencrypt/live/turn.putyato.pro/cert.pem
pkey=/etc/letsencrypt/live/turn.putyato.pro/privkey.pem
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"
# Use 2066 bits predefined DH TLS key
dh2066
# Log to journalctl
syslog
# User/group which will be running coturn service
proc-user=turnserver
proc-group=turnserver

no-loopback-peers
no-multicast-peers

# Disable weak encryption
no-tlsv1
no-tlsv1_1
no-tlsv1_2

* user=$YOUR_LOGIN:$YOUR_PASSWORD - вписываем логин и пароль без кавычек и без $. turn.putyato.pro -это наш сервер.

Запустите и включите coturnслужбу:

systemctl enable coturn && systemctl start coturn

Зарегистрируйте сертификаты Let’s Encrypt.

Мы будем использовать certbot от EFF для сертификатов Let's Encrypt.

apt-get install snapd
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

Установив certbot, вы можете создать свой сертификат.

certbot certonly --standalone --rsa-key-size 4096 -m admin@putyato.pro -d turn.putyato.pro

За 30 (и 7) дней до истечения срока действия сертификатов вы получите электронное письмо на адрес admin@putyato.pro .

При необходимости откройте соответствующие порты:

sudo apt-get install ufw
sudo ufw allow 3478 && \
sudo ufw allow 443 && \
sudo ufw allow 5349 && \
sudo ufw allow 49152:65535/tcp && \
sudo ufw allow 49152:65535/udp

Настройка мобильных приложений

Чтобы настроить мобильное приложение для использования вашего сервера:

Откройте Settings / Network & Servers / WebRTC ICE serversи переключите переключатель Configure ICE servers.

Введите в поле все адреса серверов, по одному в строке, например, если ваши серверы находятся на порту 5349:

stun:stun.putyato.pro:3478
turn:username:password@turn.putyato.pro:3478

или

stun:stun.putyato.pro:5349
turn:username:password@turn.putyato.pro:5349

Вот и все: теперь вы можете совершать аудио- и видеозвонки через свой собственный сервер, не передавая какие-либо данные нашим серверам (кроме обмена ключами с вашим контактом в зашифрованных сообщениях E2E).


Проверка подключения STUN/TURN :

Зайдите в IceTest . https://icetest.info/

В разделе «Создание списка серверов ICE» добавьте:

STUN: stun:<your_ip_or_domain>:<port>и ударилAdd STUN TURN: turn:<your_ip_or_domain>:<port>, Username: <your_login>, Credential: <your_pass>и ударилAdd TURN

Настройка записей DNS

Настойку делаем у доменного провайдера. NIC.RU

turn.example.com. 14400 IN A    37.226.5.44
turn.example.com. 14400 IN AAAA 2001:db8:1234::1
stun.example.com. 14400 IN A    37.226.5.44
stun.example.com. 14400 IN AAAA 2001:db8:1234::1

@ IN NAPTR 10 0 "s" "RELAY:turn.udp" "" _turn._udp.example.com

_stun._udp.example.com.  14400 IN SRV  5 0 3478 turn.example.com
_stun._tcp.example.com.  14400 IN SRV  5 0 3478 turn.example.com
_stuns._tcp.example.com. 14400 IN SRV  5 0 5349 turn.example.com

_turn._udp.example.com.   14400 IN SRV  5 0 3478 turn.example.com
_turn._tcp.example.com.   14400 IN SRV  5 0 3478 turn.example.com
_turns._tcp.example.com.  14400 IN SRV  5 0 5349 turn.example.com


Установка Тора

smp-сервер также можно развернуть для обслуживания из сети Tor . Выполните следующие команды от имени rootпользователя.

Установить Тор:

Мы предполагаем, что вы используете дистрибутивы на основе Ubuntu/Debian. Если нет, обратитесь к официальной документации Tor или к руководству по распространению.

Настройте официальный репозиторий Tor PPA:

CODENAME="$(lsb_release -c | awk '{print $2}')"
echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list

Импортировать ключ репозитория:

curl --proto '=https' --tlsv1.2 -sSf https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

Обновить индекс репозитория:

apt update

Установить torпакет:

apt install -y tor deb.torproject.org-keyring

Настройте тор:

Конфигурация файла:

Откройте конфигурацию Tor в выбранном вами редакторе ( nano, vim, emacsи т. д.):

nano /etc/tor/torrc

И вставьте следующие строки в конец конфигурации. Обратите внимание на строки, начинающиеся с #: это комментарии к каждой отдельной опции.

# Enable log (otherwise, tor doesn't seemd to deploy onion address)
Log notice file /var/log/tor/notices.log
# Enable single hop routing (2 options below are dependencies of third). Will reduce latency in exchange of anonimity (since tor runs alongside smp-server and onion address will be displayed in clients, this is totally fine)
SOCKSPort 0
HiddenServiceNonAnonymousMode 1
HiddenServiceSingleHopMode 1
# smp-server hidden service host directory and port mappings
HiddenServiceDir /var/lib/tor/simplex-smp/
HiddenServicePort 5223 localhost:5223

Создайте каталоги:

mkdir /var/lib/tor/simplex-smp/ && chown debian-tor:debian-tor /var/lib/tor/simplex-smp/ && chmod 700 /var/lib/tor/simplex-smp/

Запустить тор:

Включите systemdсервис и запустите Tor. Offical torнемного ненадежен при первом запуске и может не создать луковый адрес хоста, поэтому на всякий случай перезапускаем его.

systemctl enable tor && systemctl start tor && systemctl restart tor

Отображение лукового хоста:

Выполните следующую команду, чтобы отобразить адрес вашего лукового хоста:

cat /var/lib/tor/simplex-smp/hostname