Опубликуйте что угодно с вашего компьютера или 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 применится автоматически.
SSHFS монтирует папки с вашего устройства как локальную директорию на компьютере клиента. Работает поверх того же SSH-туннеля — никаких дополнительных портов и сервисов на устройстве не нужно.
Установка клиента
# Debian / Ubuntu / Raspberry Pi OS sudo apt install sshfs # Fedora / RHEL sudo dnf install fuse-sshfs # macOS (через Homebrew — требует macFUSE) brew install --cask macfuse brew install sshfs
Монтирование
# Создать точку монтирования
mkdir -p ~/mnt/dixsu
# Монтировать — с явным ProxyCommand (всегда работает)
sshfs user@ваш-слаг.dix.su:/home/user ~/mnt/dixsu \
-p 2222 \
-o ProxyCommand="bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
Или короче — если в ~/.ssh/config уже добавлен блок Host *.dix.su (см. выше):
sshfs user@ваш-слаг.dix.su:/home/user ~/mnt/dixsu \ -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
Размонтирование
# Linux fusermount -u ~/mnt/dixsu # macOS umount ~/mnt/dixsu
Автомонтирование через systemd (Linux)
# ~/.config/systemd/user/dixsu-mount.service
[Unit]
Description=SSHFS mount dix.su tunnel
After=network-online.target
[Service]
Type=simple
ExecStart=sshfs user@ваш-слаг.dix.su:/home/user /home/%u/mnt/dixsu \
-p 2222 \
-o ProxyCommand="bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'" \
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,foreground
ExecStop=fusermount -u /home/%u/mnt/dixsu
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
mkdir -p ~/mnt/dixsu systemctl --user daemon-reload systemctl --user enable --now dixsu-mount
Монтирование будет подниматься автоматически при входе в систему и переподключаться при обрыве сети.
Файловый менеджер на Android может работать с файлами вашего устройства через SSH-туннель. Root не нужен. Трафик end-to-end зашифрован SSH — прокси-сервер содержимое не видит.
Шаг 1 — Termux: создать локальный туннель
pkg install openssh
# ~/.ssh/config
Host ваш-слаг.dix.su
Port 2222
ProxyCommand bash -c '{ echo DIXSU:ваш-слаг; cat; } | nc ваш-слаг.dix.su 2222'
# Запустить туннель (держать активным):
ssh -N -L 127.0.0.1:10022:127.0.0.1:22 user@ваш-слаг.dix.su
Шаг 2 — файловый менеджер
Добавить SFTP-соединение: хост 127.0.0.1, порт 10022, логин/пароль устройства.
Рекомендуемые приложения (F-Droid, open source):
На Android 12+ включите «Без ограничений работы в фоне» для Termux в настройках батареи.
Та же схема — 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-конфиг, ProxyCommand и примеры для разных ОС — в полном справочнике клиентских подключений →
На портах SSH/RDP/VNC/БД работает автоматическая защита от перебора аккаунтов и флуда подключений — она общая для всех клиентов платформы. При обычной работе (несколько сессий, пул соединений из DBeaver/Navicat и подобных клиентов) вы её не заметите. Если вы пишете скрипты, мониторинг или CI — несколько правил, чтобы не попасть под временную блокировку:
no tunnel connected, хотя вы точно знаете, что туннель поднят — обычно означает, что вы превысили частоту попыток подключения. Подождите минуту и повторите — это не баг.Блокировки временные и автоматически снимаются. Если считаете, что вас заблокировали по ошибке — напишите на admin@dix.su, укажите свой slug и примерное время.
Готовое устройство — подключил к сети, включил в розетку, и туннель уже работает. Без Linux, без командной строки.
Смотреть устройства →Есть вопросы о туннеле?
Ответы в FAQ →