Имеется:
1) Один VPS (Debian 12) с xray, настроенный на три протокола.
2) Второй VPS (Debian 12) c веб-сервером. Apache2, mariadb-server, phpMyAdmin, composer. Сам сайт - банальная html-ка - заглушка, собранная за пару минут в конструкторе сайтов.
3) Желание не платить за два VPS, а поставить все на одном с SNI в лице моего собственного сайта.
4) Большая удаленная статья сами-знаете-о-чем, где был краткий раздел про то, что это реально, нужно только заставить веб-сервер слушать localhost на нестандартном порте.
5) Полнейший нуб, не имеющий никакого опыта в разработке и сетях. Который умеет только следовать подробным инструкциям. Максимум, что я могу - догадаться, что если какая-то команда не срабатывает - возможно надо сделать apt install с первым словом из команды :)
Далее постараюсь кратко про весь процесс:
- Поставил веб-сервер, сайт работает, все супер.
- Почитал ту статью, погуглил как заставить Apache слушать только определенные IP и порты, для верности уточнил еще и у ChatGPT.
- Установил xray, конфиг скопировал предыдущий (до переустановки сервера), поменял только SNI, UUID и приватный ключ. Результат - xray при старте выдал ошибку. Собрал конфиг с нуля - то же самое.
- Предположил, что уже в этот момент возник конфликт с веб-сервером. Полез в конфиг ports в Apache и его же конфиг виртуального хоста.
- В первом увидел три строчки - базовая (с 80 портом) и еще две с ним же. Как я понял - одна (mod_gnutls.c) про какие-то Apache'ные штуки, другая для сертификата let's encrypt (т.к. там было слово SSL). Во втором конфиге - аналогично 80 порт для виртуального хоста. Недолго думая, заменил все 4 строчки на 127.0.0.1:12345, сохранил, systemctl restart apache2 - и вылезла ошибка. Далее откатывал каждую из 4 строчек до дефолтного 80 порта - то же самое. Откатил оба конфига в изначальное состояние - и снова ошибка. Финишом стало то, что после перезагрузки VPS я не смог подключиться к нему по SSH, и его пришлось переустанавливать.
Вопросы:
а) как подружить xray с apache (если это возможно)? Если можно - что конкретно, где и как указать руками, иначе я не разберусь (мне уже попадались упоминания каких-то правок в iptables)
б) какие порты за что в них отвечают, как правильно их "подружить"? Например, по какому порту в итоге можно будет попасть на мой сайт, а по какому - в админку? И по какому порту обращаться к xray. Учитывая, что они указываются:
- в конфиге xray в разделе inbound (входной порт для xray, как я понимаю);
- в нем же - порт для SNI (моего сайта);
- 3 порта в конфиге Apache для вышеуказанных целей;
- порт виртуалки в отдельном конфиге Apache.
EDIT: не исключаю, что проблема с Apache возникла не в момент изменения конфигов, а в момент установки и запуска xray.
Тут можно посоветовать только два варианта - учиться самому или платить специалисту.
Ну или ждать кого-то сердобольного который подскажет, чтобы вы методом тыка дальше мучались.
а) Вариант 1 - использовать xray на веб портах и fallback на сайт.
Вариант 2 - использовать веб сервер на веб портах и проксирование к xray например через websockets.
Вариант 3 - использовать haproxy\nginx upstream proxy для проксирования сайта и xray по SNI.
б) Веб сервер должен работать по 80 и 443 портам. Вне зависимости от количества виртуальных хостов.
xray может работать на любом порту.