Commit Graph

24 Commits

Author SHA1 Message Date
Sergey Antropoff 79a1443eec Force download for .url/.txt/.png/.qr.txt chips
Browser often opens these files instead of downloading; use blob
downloads with embedded text fallbacks and canvas for PNG on file://.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:28:14 +03:00
Sergey Antropoff 897efedbb4 Принудительное скачивание QR из lightbox как server-user.png
Кнопка больше не открывает PNG во вкладке: blob/canvas download
с именем <сервер>-<пользователь>.png.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:23:16 +03:00
Sergey Antropoff 8feb56c51d make index и install/update: единый стиль страниц серверов и каталога
Пересборка HTML серверов из server-info.yml; сетка карточек и вид
как у главной. Тот же pipeline после install/update/export.
2026-07-23 09:35:47 +03:00
Sergey Antropoff af9862e966 Убрать подсказку закрытия из lightbox 2026-07-23 09:31:20 +03:00
Sergey Antropoff 9e8b514034 Сетка карточек на странице сервера и крупный QR в lightbox
Карточки как в глобальном индексе; QR заполняет доступную
площадь модального окна через container queries.
2026-07-23 09:25:22 +03:00
Sergey Antropoff dea3c77b2e Вкладки серверов и страница статистики в output/index.html
По умолчанию — Статистика: доступность TCP, IP, пользователи,
матрица присутствия. Серверы открываются отдельными вкладками.
2026-07-23 09:21:04 +03:00
Sergey Antropoff 6cd3f323d6 Сделать lightbox на всю высоту экрана с небольшими отступами
Панель занимает 100dvh минус 1rem сверху/снизу; QR растягивается
в оставшееся пространство.
2026-07-23 09:16:45 +03:00
Sergey Antropoff bf88a9e0de Увеличить QR в lightbox на 30% (до ~728px) 2026-07-23 09:13:58 +03:00
Sergey Antropoff 18b4368d49 Ограничить lightbox QR высотой экрана с отступами сверху/снизу 2026-07-23 09:13:00 +03:00
Sergey Antropoff a3516f67f1 Увеличить QR в lightbox до ~560px 2026-07-23 09:11:14 +03:00
Sergey Antropoff 56ef543e9a Добавить кнопку скачивания QR в lightbox
Файл сохраняется как <сервер>-<пользователь>.png.
2026-07-23 09:09:12 +03:00
Sergey Antropoff 9862954305 Добавить lightbox для QR-кодов в HTML-каталогах
Клик по QR открывает крупный просмотр с подписью; закрытие по Esc,
кнопке и клику на фон. В global и server index.
2026-07-23 09:07:23 +03:00
Sergey Antropoff d4dc25cdd3 Обновить bundled install_server.sh с официального get.hy2.sh
Синхронизация локальной копии после проверки SHA256.
2026-07-23 09:02:06 +03:00
Sergey Antropoff 8ba1c6c45f fix: пропускать sync install_server.sh при сетевой ошибке
Если get.hy2.sh недоступен (таймаут без VPN), используется локальная
копия в roles/hysteria2/files/; падение только если её нет.
2026-07-01 14:06:46 +03:00
Sergey Antropoff 83b47dbc30 fix: пересборка output/index.html при uninstall с LIMIT
Второй play перенесён на hysteria2_servers с run_once на localhost,
чтобы LIMIT не пропускал пересборку. Пустой index.html удаляется.
2026-07-01 13:31:28 +03:00
Sergey Antropoff 4b5a1ef51f Полная очистка при uninstall: VPS и output/<server>/
Скрипт --remove снимает только бинарник и systemd; Ansible дочищает конфиг,
пользователя, ufw, пакеты и всегда удаляет локальную папку экспорта.
2026-07-01 13:28:59 +03:00
Sergey Antropoff bdc316efac fix: run only uninstall tasks, not full role on make uninstall
Tagging the whole role with uninstall caused install/configure/update/export to run first. Use include_role tasks_from uninstall.yml; add safe defaults for uninstall variables.
2026-07-01 13:20:17 +03:00
Sergey Antropoff 0745fdce2c feat: incremental user passwords and export on update
Preserve passwords from server-info.yml and vault; generate only for new users; remove deleted users from output; re-export URL/QR only when password, domain, port, obfs or files changed.
2026-07-01 13:06:33 +03:00
Sergey Antropoff 5e42d60778 feat: complete uninstall cleanup on server and local output
Remove binary, config, masq, system user, ufw rules, and apt packages from VPS; delete output/<server>/ by default and rebuild global index.html via localhost play.
2026-07-01 12:56:20 +03:00
Sergey Antropoff b9e622e5c2 feat: bundle and sync official Hysteria2 install script locally
Store install_server.sh in role files, compare SHA256 with get.hy2.sh on the control node before install/update, refresh the bundled copy when upstream changes, then copy and run it on VPS.
2026-07-01 12:00:37 +03:00
Sergey Antropoff 2f88108a8d fix: disable become on localhost play and drop deprecated facts
Use now() for export timestamps and ansible_facts['system'] for browser detection. Set become: false on the localhost play to avoid sudo on local fact gathering.
2026-07-01 11:56:18 +03:00
Sergey Antropoff 4242093ca1 fix: generate VPN passwords without pwgen, set EDITOR=nano
Use Ansible password lookup on the control node so install works before packages are installed on VPS and without pwgen on macOS. Export EDITOR=nano in Makefile for vault-edit.
2026-07-01 11:43:34 +03:00
Sergey Antropoff 0aec9e6e54 Add Salamander obfs branch: replace masquerade with packet obfuscation.
- ACME TLS challenge on 443 (no port 80 or nginx decoy)
- Auto-generate and persist obfs password per server
- Update client export, HTML catalog, and vault examples
- Document Salamander vs main and ACME auto-renewal in README
2026-07-01 02:17:22 +03:00
Sergey Antropoff 6f96a26bed Initial commit: Ansible role for Hysteria2 VPN server deployment.
Includes install/update/uninstall playbooks, Makefile, vault-based SSH credentials, per-server and global HTML export with QR codes.
2026-07-01 02:02:58 +03:00