Парни, я не выдержал, рассказываю про разработку своего VPN, первый опыт в веб-приложениях

Хотел включить свой сервис частнаясеть.рф в спонсоров турнира по хл просто, но ситуёвина в том, что мне не хватит на призовой, если я не попробую рассказать о нём раньше. В общем, идея написать свой сервис крутилась у меня давно, в основном чисто ради опыта в этом направлении.

Парни, я не выдержал, рассказываю про разработку своего VPN, первый опыт в веб-приложениях

Про VPN протоколы

Изначально я пользовался онли openVPN, и он же использовался в приложении до середины ноября, примерно. У меня с ним проблем не было, вполне надёжная штука, работала и ладно. Но в один день клиент пишет мне, что перестало подключаться. Было неожиданно, чутка расстроился, что криворукий дофига, ибо в этот период писался и запускался сайт, на том же серваке, что и работал мой VPN. Думал, что чёт сломал своими руками. До сайта я пробовал раздавать ключики на Авито, но ребята в итоге заблочили объявление, по несуществующей в правилах причине, но прост тип такие услуги у них нежелательны. Но в итоге, потратив почти день на поиск проблемы, по всем параметром было понятно, что всё работает, просто теряются пакеты. OpenVPN оказался блокирован провайдерами… Ну я ещё поспрашивал у знающих людей, ибо я не особо ожидал, что будут блокировать целые протоколы. VPN ведь используются в основном компаниями, прикиньте из-за них и так бедные частники могли потерять деньги. Я ещё попробовал wireguard, проблема была такая же, но надо ещё потестить будет, пришёл по совету к Outline VPN, сделанному на shadowsocks. Не самый идеальный варик, меня лично не особо устраивает их приложение под Linux. Но работает всё хорошо, проблем нет. Буду добавлять на сайт другие протоколы на выбор, какой-нибудь просто TLS, shadowsocks может разверну, wireguard, даже если он в блоке, то пусть будет, но это чуть позже.

UPD: на 15.12.23 работают протоколы shadowsocks, socks5 и outline на серверах. Советую теневые носки!

Как выглядит моё веб-приложение, что я сделал:

Начнём с бека. Выглядит как-то так

-VpnApplication.java --VpnController.java ---DataBase.java ---OpenVPN.java ---OutlineVPN.java ---Ukassa.java ---BadRequestException.java ---NoValidException.java ---PayException.java --SecurityConfig.java --WebConfig.java

Использовал я SpringBoot для реализации контроллера, я впервые использовал данный фреймворк, тут явно много всего есть, буду в нём разбираться. Изначально думал писать на Java EE и servlets, но потратил бы скорее всего больше времени.

База данных развернута на Postgresql. Общаюсь с ней через jdbc.

OpenVPN. java и OutlineVPN. java как раз интерфейсы для взаимодействия с самими VPN сервисами.

ЮКассу использую для оплаты, так что плачу дополнительно комсу, но я думаю, что без стороннего платёжного сервиса не было бы вообще никакого доверия к моему приложению. В целом, мне они нравятся, поддержка отвечает, приложенька есть для мониторинга, поддерживают множество способов оплаты, мне нравится через сберпей платить. СБП вроде нужно самому добавлять в виджет, гляну как оно всё там делается ещё, добавлю.

Что там на клиенте?

Веб сервер выбрал nginx, просто он по-моему субъективному мнению как-то лаконичнее и приятнее в плане конфига, чем апач. С Апачем приходилось больше возиться.

Как реализован https? Выпустил сертификаты Let’s Encrypt через certbot, быстро и удобно.

Сам же сайт html + css + js писался ручками, дизайн быстро накинул в figma, я не особо хорош в UI, потому делал всё как можно проще, ну и хотелось уже запускаться. Многое там надо ещё править по-хорошему, буду заниматься. Сделал вход на сайт нетипичным, двухэтапным, изначально была стандартная форма входа, но мне сказали, что она не очень удобная. Теперь пользовтель вводит свою почту (чтобы я мог с ним связаться в случае чего), затем по проверке в бд мы предлагаем пользователю придумать или ввести свой пароль.

Что в ближайшем списке на реализацию:

1) Мобильная версия сайта, тут ничего сложного, надо закончить уишку.

2) Выбор протокола. Наиболее желанная для меня функция, буду расширять бэк…

3) При возможности платить за ещё сервак, добавлю новую локацию.

4) Привести бэкенд в порядочек, чтоб всё по SOLID было

Какие планы, кроме VPN:

Кроме дальнейшей работы над сервисом, есть ещё желания поделать веб-приложенек. Может какую-нибудь игру запустить на WebGL, желательно, чтоб она ещё и на мобилках работала из браузера, пока не изучал как оно там, был опыт с OpenGL и Vulkan.

Может добавлю игру Го на основе GNUшной версии куда-нибудь. Вот бы кста халф-лайф портануть, в движок сурс встроить в веб, это ж сколько игр можно перенести в инет. Вот что реально было бы классно. Ещё у меня где-то валяется свой недописанный движочек игровой, когда-нибудь он меня дождется.

Задумываюсь об веб-интерфейсах для популярных программ, первым в голову пришлёл GNU Octave, но вроде как есть уже в сети, тут надо подумать, что было бы интересно.

Ссылки на сервис: частнаясеть.рф secvpn.ru

2020
30 комментариев

Если вдруг будут проблемки или баги, то пишите, не стесняйтесь, всё исправлю!

1
Ответить

УничтоЖУ!

1
Ответить

но зря ты написал этот пост, это как писать комменты в посты максимки

1
Ответить

100 рублей в месяц, ахуй

1
Ответить

Зачем ты дрищешь ?

1
Ответить

А если бы будет через впн скачивать то, что не нравится американскому правительству, а не русскому, что станет с ВПНом (и со мной)? ВПН накроют, а нас с тобой примут американские майоры при первом же выезде за рубеж?

Ответить