Как заменить Ngrok и VK Tunnel своим сервером: NGINX, SSL-сертификат и обратный SSH-туннель
Чтобы не использовать сторонние сервисы типа 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 адрес сервера}