Опубликуйте что угодно с вашего компьютера или Raspberry Pi — без белого IP, без проброса портов, без настройки роутера. Один бинарник, и вы онлайн.
SERVER_HOST=dix.su SERVER_PORT=443 \ ./device_client_linux_x86_64 мой-слаг мой-токен 8080
Wildcard-сертификат Let's Encrypt на *.dix.su. Каждый туннель работает по HTTPS автоматически.
Работает за любым NAT, корпоративным файрволом или мобильным интернетом. Нужен только исходящий TCP.
device_client — самодостаточный файл со встроенным Erlang runtime. Никаких зависимостей, никаких установщиков.
Ваш туннель всегда на одном адресе: ваш-слаг.dix.su. Делитесь ссылкой один раз — она не меняется.
Linux x86_64, ARM64, macOS Apple Silicon и Intel. Raspberry Pi, VPS, ноутбук — всё поддерживается.
Готовые конфиги для systemd и Docker Compose — туннель поднимается автоматически при старте системы.
Войдите в личный кабинет. Выберите слаг — он станет вашим поддоменом: ваш-слаг.dix.su.
Выберите бинарник под вашу платформу и дайте права на запуск.
chmod +x device_client_linux_x86_64
Укажите ваш слаг, токен и порт локального сервера.
SERVER_HOST=dix.su SERVER_PORT=443 \ ./device_client_linux_x86_64 мой-слаг мой-токен 8080
Туннель готов. Делитесь адресом с кем угодно:
https://мой-слаг.dix.su
Помимо HTTP, dix.su умеет проксировать любой TCP-трафик — терминал, удалённый рабочий стол, прямой доступ к БД. Всё через то же WebSocket-соединение device_client.
При подключении к ваш-слаг.dix.su:2222 клиент сначала отправляет заголовок DIXSU:ваш-слаг, по которому сервер находит нужное устройство в реестре. Так работает SSH через ProxyCommand.
RDP, VNC и базы данных не умеют отправлять такой заголовок — поэтому они работают через SSH port forwarding: SSH-туннель до устройства уже установлен и аутентифицирован, а флаг -L пробрасывает локальный порт через него.
ProxyCommand инжектирует DIXSU-заголовок перед handshake.
ssh -p 2222 \
-o "ProxyCommand=bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
user@ваш-слаг.dix.su
Шаг 1: SSH-туннель с пробросом порта. Шаг 2: RDP-клиент на localhost.
# 1. Открыть туннель (держать терминал открытым)
ssh -p 2222 \
-o "ProxyCommand=bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
-L 13389:localhost:3389 -N user@ваш-слаг.dix.su
# 2. Подключиться (в другом терминале)
xfreerdp /v:localhost:13389 /u:USER
# или: Remmina → localhost:13389
Аналогично RDP, только порт 5900.
# 1. Туннель
ssh -p 2222 \
-o "ProxyCommand=bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
-L 15900:localhost:5900 -N user@ваш-слаг.dix.su
# 2. VNC-клиент
vncviewer localhost:15900
SFTP — SSH-субсистема, отдельный порт не нужен. Работает через тот же SSH-туннель на порту 2222 автоматически.
# Командная строка
sftp -P 2222 \
-o "ProxyCommand=bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
user@ваш-слаг.dix.su
Krusader / Dolphin / FileZilla — добавьте один раз в ~/.ssh/config:
Host *.dix.su
Port 2222
ProxyCommand bash -c 'S=$(echo %h | cut -d. -f1); { echo "DIXSU:$S"; cat; } | nc %h %p'
После этого в Krusader: sftp://user@ваш-слаг.dix.su/ — ProxyCommand применится автоматически.
Та же схема — SSH-туннель + локальный порт.
# PostgreSQL ssh ... -L 15432:localhost:5432 -N user@ваш-слаг.dix.su psql -h localhost -p 15432 # MySQL ssh ... -L 13306:localhost:3306 -N user@ваш-слаг.dix.su mysql -h 127.0.0.1 -P 13306 # MongoDB ssh ... -L 17017:localhost:27017 -N user@ваш-слаг.dix.su mongosh mongodb://127.0.0.1:17017 # Redis ssh ... -L 16379:localhost:6379 -N user@ваш-слаг.dix.su redis-cli -h 127.0.0.1 -p 16379
Два способа, оба рабочие:
Способ 1 — ручной port forward (работает без доп. настроек)
# Терминал — держать открытым
ssh -p 2222 \
-o "ProxyCommand=bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
-L 15432:localhost:5432 -N user@ваш-слаг.dix.su
Затем в DBeaver: New Connection → PostgreSQL → Host: localhost, Port: 15432. Вкладку SSH не трогать — туннель уже поднят.
Способ 2 — через встроенный SSH в DBeaver (нужен ~/.ssh/config)
Добавьте в ~/.ssh/config на машине с DBeaver:
Host *.dix.su
Port 2222
ProxyCommand bash -c 'S=$(echo %h | cut -d. -f1); { echo "DIXSU:$S"; cat; } | nc %h %p'
Затем DBeaver: New Connection → PostgreSQL → вкладка SSH → Use SSH tunnel ✓, SSH Host: ваш-слаг.dix.su, Port: 2222, SSH User: ваш_юзер. Выберите Native client (не JSch) — тогда DBeaver использует системный ssh, который читает config.
Активировать нужные порты можно в личном кабинете → Туннель. Доступность портов зависит от вашего плана.
На портах SSH/RDP/VNC/БД работает автоматическая защита от перебора аккаунтов и флуда подключений — она общая для всех клиентов платформы. При обычной работе (несколько сессий, пул соединений из DBeaver/Navicat и подобных клиентов) вы её не заметите. Если вы пишете скрипты, мониторинг или CI — несколько правил, чтобы не попасть под временную блокировку:
no tunnel connected, хотя вы точно знаете, что туннель поднят — обычно означает, что вы превысили частоту попыток подключения. Подождите минуту и повторите — это не баг.Блокировки временные и автоматически снимаются. Если считаете, что вас заблокировали по ошибке — напишите на admin@dix.su, укажите свой slug и примерное время.