Вступление
Всем привет. Я хочу поднять свой собственный vpn-сервис со своим веб-интерфейсом. Знаю, что на просторах интернета есть достаточно готовых реализаций данной затеи, но у меня есть большой интерес с этим разобраться лично. На себя я взял ответственность полностью разработаться с его backend частью, включая базу данных и api.
Cуть идеи
Данный vpn-сервис представляет из себя веб-интерфейс с разделением на личные кабинеты пользователей. Пользователи будут делиться на два типа: 1. Стандартный пользователь (имеет доступ только к созданию/удалению конфигов подключения с лимитом на их кол-во) 2. Пользователь с админ правами (может создавать, изменять и удалять пользователей, и их конфиги; может создавать/удалять собственные конфиги подключения в неограниченном кол-ве)
Техническая составляющая
Сам backend хочу писать на nodejs фреймворке (nestjs наиболее интересен для меня). Vpn будет поднят с использованием wireguard и, в дальнейшем, shadowsocks. Базу данных пользователей и конфигов шифрованных туннелей планирую реализовывать с помощью MongoDB (предполагаю, что данная структура nosql позволит проще подставлять данные для конфигов туннелей). Для api хочу использовать RESTful, но есть мысли использовать GraphQL. Однако, возможно, использование GraphQL будет излишним тут.
Все эти приколы хочу запихнуть в docker-контейнер для удобного развертывания на любой удаленной машине.
Проблема
Неплохие у меня хотелки получились, но по факту, основной проблемой является непонимание того, как это все должно работать). Я не понимаю как должна выглядеть архитектура данного проекта и как связать nodejs-сервер с технологией wireguard.
Те, кто проникся данной ситуацией - большая просьба подсказать, с чего начать разгребать данную идею, указать на ошибки в данном концепте и дать альтернативное виденье этого. Также можете пожалуйста накидать какие-либо обучающие материалы, которые могут мне помочь. Спасибо!