Как заменить Ngrok и VK Tunnel своим сервером: NGINX, SSL-сертификат и обратный SSH-туннель

15.09.2026 ≈ 2 минуты.

Чтобы не использовать сторонние сервисы типа  VK Tunnel, Ngrok и другие, можно на собственном сервере организовать примерно такой же функционал, простейший пример далее.

Установка NGINX

sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y

Настройка брандмауэра

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'  # HTTP (80) + HTTPS (443)
sudo ufw enable

Домен

Чтобы получить SSL-сертификат, нужен домен. Воспользуемся доменом любого уровня — добавляем в DNS запись. Ждём, пока начнёт открываться страница с информацией о том, что nginx установлен.

Добавляем A-запись, тут всё стандартно, в интернете полно примеров.

После этого переходим дальше.

Установка Certbot для получения SSL-сертификата

Официальный сайт, чтобы разобраться самостоятельно.

sudo apt update
sudo apt install snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo apt install python3-certbot-nginx -y
sudo certbot --nginx

На последнем шаге указываем домен, для которого нужен сертификат.

Конфиг NGINX

Правим конфиг nginx, находим там блок, связанный с нашим доменом. После получения сертификата появится дубликат настроек для конкретного домена в файле /etc/nginx/sites-available/default.

Нужно в секции location указать, куда проксировать запросы:


server {
    root /var/www/html;
    server_name {ваш домен}; # managed by Certbot

    location / {
        #try_files $uri $uri/ =404;

        proxy_pass http://127.0.0.1:55051;
    }
    #....
}

Сохраняем файл и перезапускаем nginx:

systemctl reload nginx

Подготовка sshd

Добавляем запись в /etc/ssh/sshd_config в конец файла:


GatewayPorts yes

Сохраняем и перезапускаем сервис:

systemctl restart ssh

Запуск обратного прокси

На локальной машине запускаем обратный прокси в терминале:

ssh -R 55051:localhost:80 root@{ip адрес сервера}

Обратно к списку