Пожалуйста, обратите внимание, что пользователь заблокирован
start
В этом мини-гайде настроим собственный XMPP-сервер Prosody, доступный только через сеть Tor. Сервер будет работать в Docker-контейнере.
Требования & Подготовка
Для этого потребуется VPS (список анонимных хостеров принимающих крипту) или хоумсервер с Debian (подойдут и другие дистрибутивы). Минимальные требования: 1 ГБ RAM, 10 ГБ диска. Необходимо установить Docker Compose.
Создаем директорию для проекта:
Обзор конфигурационных файлов
Dockerfile - образ контейнера на базе Alpine Linux с установленными Tor, Prosody и необходимыми утилитами:
docker-compose.yml - конфигурация контейнера с проброшенными портами и томами:
entrypoint.sh - скрипт инициализации контейнера. Запускает Tor, ждёт получения .onion адреса, генерирует SSL-сертификаты и запускает Prosody через proxychains:
torrc - конфигурация Tor (настройки +- дефолтные):
cert.cnf - шаблон для генерации самоподписанного сертификата:
prosody.cfg.lua - основная конфигурация Prosody. Файл большой, поэтому приведу ключевые настройки (остальные дефолтные):
proxychains.conf - конфигурация для проксирования трафика через Tor:
Запуск сервера
После создания всех файлов запускаем контейнер:
В логах появится строка с .onion адресом сервера. Сохраните его.
Подключение
Для подключения к серверу мы должны использовать XMPP-клиент с поддержкой Tor. Например, Gajim* или Conversations / Orbot на Android. Список клиентов смотрим здесь.
* В Gajim при самоподписанном сертификате нельзя слать файлы, но это можно вылечить.
Для подключения всё по дефолту:
Заходим в клиент с тором, нажимаем на регистрацию, вводим наш .onion, желаемый ник, пароль. Готово.
Управление сервером
Перезапуск:
Остановка:
Для изменения настроек редактируйте
Важные данные хранятся в директориях
Заключение
Теперь у вас есть полноценный анонимный XMPP-сервер, который принципиально отличается от централизованных решений. В отличие от Telegram, Matrix или Session, где вы зависите (Matrix - зачастую) от чужой инфры, здесь вы полностью контролируете свой "узел связи".
Ключевое преимущество - сервер можно запускать по необходимости даже на домашней машине / ВМ. Включили, пообщались, выключили. Никаких постоянных метаданных на чужих серверах, можно обойтись без VPS. Не забываем пользоваться OMEMO, PGP. Хотя-бы OTR.
Такое решение превосходит популярные "анонимные" мессенджеры по множеству (если не всем) параметрам. А, нет, стикеров нету
Скачать
Снизу, либо с DaMaGeLiB: http://**************************************************************/d/3Kkz4PVAVcAbXC5G7376m5
SHA-256:
В этом мини-гайде настроим собственный XMPP-сервер Prosody, доступный только через сеть Tor. Сервер будет работать в Docker-контейнере.
Требования & Подготовка
Для этого потребуется VPS (список анонимных хостеров принимающих крипту) или хоумсервер с Debian (подойдут и другие дистрибутивы). Минимальные требования: 1 ГБ RAM, 10 ГБ диска. Необходимо установить Docker Compose.
Код:
apt update && apt upgrade -y
apt install docker-compose-plugin -y
Создаем директорию для проекта:
Код:
mkdir prosody-tor && cd prosody-tor
Обзор конфигурационных файлов
Dockerfile - образ контейнера на базе Alpine Linux с установленными Tor, Prosody и необходимыми утилитами:
Код:
FROM alpine:3.19.1
RUN set -eux; \
apk add --no-cache tor prosody proxychains-ng openssl;
RUN set -eux; \
mkdir /var/lib/tor/prosody; \
mkdir /entrypoint.d/;
COPY torrc /etc/tor
COPY entrypoint.sh /entrypoint.sh
COPY cert.cnf /entrypoint.d/
COPY prosody.cfg.lua /etc/prosody/prosody.cfg.lua.orig
STOPSIGNAL SIGQUIT
ENTRYPOINT [ "/bin/sh", "/entrypoint.sh" ]
docker-compose.yml - конфигурация контейнера с проброшенными портами и томами:
YAML:
name: prosody-tor
services:
prosody:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./tor_data:/var/lib/tor
- ./prosody_tor_service/:/var/lib/tor/prosody
- ./prosody_data:/var/lib/prosody
- ./prosody_certs:/etc/prosody/certs/host
ports:
- "127.0.0.1:5582:5582"
- "127.0.0.1:5222:5222"
- "127.0.0.1:5281:5281"
entrypoint.sh - скрипт инициализации контейнера. Запускает Tor, ждёт получения .onion адреса, генерирует SSL-сертификаты и запускает Prosody через proxychains:
Bash:
#!/bin/sh
set -eu
TOR_DIR=/var/lib/tor
PROSODY_TOR_DIR=/var/lib/tor/prosody
TOR_SERVICE_DIR=$TOR_DIR/prosody
CERT_DIR=/etc/prosody/certs
CERT_HOST_DIR=$CERT_DIR/host
PROSODY_DATA_DIR=/var/lib/prosody
chmod 700 "$TOR_DIR" "$PROSODY_TOR_DIR"
chown -R tor:root "$TOR_DIR" "$PROSODY_TOR_DIR"
mkdir -p "$CERT_HOST_DIR"
mkdir -p "$PROSODY_DATA_DIR"
chown -R prosody:prosody "$PROSODY_DATA_DIR"
chmod 755 "$PROSODY_DATA_DIR"
tor -f /etc/tor/torrc &
tor_pid=$!
hostname_file="$TOR_SERVICE_DIR/hostname"
until [ -f "$hostname_file" ] && [ -s "$hostname_file" ]; do
sleep 1
done
hostname=$(cat "$hostname_file")
echo "Tor service hostname: $hostname"
if [ ! -f "$CERT_HOST_DIR/$hostname.crt" ]; then
awk -v hostname="$hostname" '{gsub(/<HOSTNAME>/, hostname); print}' /entrypoint.d/cert.cnf |
openssl req -x509 -nodes -keyout "$CERT_HOST_DIR/$hostname.key" \
-out "$CERT_HOST_DIR/$hostname.crt" \
-config - \
-extensions req_ext
fi
chown -R prosody:prosody "$CERT_HOST_DIR"
awk -v hostname="$hostname" '{gsub(/<HOSTNAME>/, hostname); print}' /etc/prosody/prosody.cfg.lua.orig > /etc/prosody/prosody.cfg.lua
su - prosody -s /bin/sh -c 'proxychains prosody -F' &
prosody_pid=$!
trap 'echo Stopping...' SIGQUIT
wait "$prosody_pid" "$tor_pid"
torrc - конфигурация Tor (настройки +- дефолтные):
Код:
Log notice file /var/log/tor/notices.log
User tor
DataDirectory /var/lib/tor
HiddenServiceDir /var/lib/tor/prosody/
HiddenServicePort 5222 127.0.0.1:5222
HiddenServicePort 5269 127.0.0.1:5269
HiddenServicePort 5281 127.0.0.1:5281
cert.cnf - шаблон для генерации самоподписанного сертификата:
Код:
[req]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[req_distinguished_name]
commonName = <HOSTNAME>
countryName = US
localityName = The XMPP
organizationName = The XMPP
organizationalUnitName = The XMPP
emailAddress = xmpp@<HOSTNAME>
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = <HOSTNAME>
DNS.2 = u.<HOSTNAME>
prosody.cfg.lua - основная конфигурация Prosody. Файл большой, поэтому приведу ключевые настройки (остальные дефолтные):
Код:
authentication = "internal_hashed"
allow_registration = true
registration_invite_only = false
interfaces = { "0.0.0.0" }
local_interfaces = { "0.0.0.0" }
http_ports = {}
http_interfaces = {}
VirtualHost "<HOSTNAME>"
disco_items = {
{ "u.<HOSTNAME>", "file sharing service" }
}
Component "u.<HOSTNAME>" "http_file_share"
http_file_share_size_limit = 128*1024*1024
proxychains.conf - конфигурация для проксирования трафика через Tor:
Код:
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
localnet 127.0.0.1/255.255.255.255
[ProxyList]
socks5 127.0.0.1 9050
Запуск сервера
После создания всех файлов запускаем контейнер:
Код:
docker compose up
В логах появится строка с .onion адресом сервера. Сохраните его.
Подключение
Для подключения к серверу мы должны использовать XMPP-клиент с поддержкой Tor. Например, Gajim* или Conversations / Orbot на Android. Список клиентов смотрим здесь.
* В Gajim при самоподписанном сертификате нельзя слать файлы, но это можно вылечить.
Для подключения всё по дефолту:
- Сервер: адрес.onion
- Порт: 5222
- Шифрование: обязательно
Заходим в клиент с тором, нажимаем на регистрацию, вводим наш .onion, желаемый ник, пароль. Готово.
Управление сервером
Перезапуск:
Код:
docker compose restart
Остановка:
Код:
docker compose down
Для изменения настроек редактируйте
prosody.cfg.lua и перезапустите контейнер с помощью docker compose up --build. Чтобы отключить открытую регу, измените:
Код:
allow_registration = false
Важные данные хранятся в директориях
prosody_data (учетные записи, сообщения) и prosody_tor_service (приватный ключ .onion адреса).Заключение
Теперь у вас есть полноценный анонимный XMPP-сервер, который принципиально отличается от централизованных решений. В отличие от Telegram, Matrix или Session, где вы зависите (Matrix - зачастую) от чужой инфры, здесь вы полностью контролируете свой "узел связи".
Ключевое преимущество - сервер можно запускать по необходимости даже на домашней машине / ВМ. Включили, пообщались, выключили. Никаких постоянных метаданных на чужих серверах, можно обойтись без VPS. Не забываем пользоваться OMEMO, PGP. Хотя-бы OTR.
Такое решение превосходит популярные "анонимные" мессенджеры по множеству (если не всем) параметрам. А, нет, стикеров нету
Скачать
Снизу, либо с DaMaGeLiB: http://**************************************************************/d/3Kkz4PVAVcAbXC5G7376m5
SHA-256:
beae83d4fa43d9ade91d44a2c8f902525ade9baf97d35e5d9a6e3d6213b04392