Compare commits
4 Commits
bb0959bafe
...
2d05bf230f
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d05bf230f | |||
| 0f273d2d42 | |||
| 4813cf35b2 | |||
| 0c819bdfa4 |
@@ -32,7 +32,7 @@ BOLD := \033[1m
|
||||
NC := \033[0m
|
||||
|
||||
.PHONY: help init check ping status \
|
||||
install update export uninstall \
|
||||
install update export index uninstall \
|
||||
vault-init vault-encrypt vault-edit vault-view
|
||||
|
||||
help: ## Показать справку
|
||||
@@ -48,6 +48,7 @@ help: ## Показать справку
|
||||
@echo " make install"
|
||||
@echo " make install LIMIT=vps-de"
|
||||
@echo " make update LIMIT=vps-nl"
|
||||
@echo " make index"
|
||||
@echo " make uninstall LIMIT=vps-de"
|
||||
@echo ""
|
||||
|
||||
@@ -67,14 +68,27 @@ init: ## Создать inventory, group_vars и .vault_pass из примеро
|
||||
check: ## Проверить синтаксис playbook
|
||||
$(ANSIBLE) playbook.yml --syntax-check $(VAULT_ARGS)
|
||||
$(ANSIBLE) playbook-uninstall.yml --syntax-check $(VAULT_ARGS)
|
||||
$(ANSIBLE) playbook-index.yml --syntax-check $(VAULT_ARGS)
|
||||
|
||||
ping: ## Проверить SSH-доступ ко всем VPS
|
||||
$(ANSIBLE_ADHOC) hysteria2_servers -m ping $(ANSIBLE_OPTS)
|
||||
|
||||
status: ## Статус hysteria-server на VPS
|
||||
status: ## Краткий статус hysteria-server на VPS
|
||||
@ANSIBLE_DEPRECATION_WARNINGS=False ANSIBLE_STDOUT_CALLBACK=minimal \
|
||||
$(ANSIBLE_ADHOC) hysteria2_servers -m shell \
|
||||
-a "systemctl status hysteria-server --no-pager || systemctl status hysteria2 --no-pager" \
|
||||
-b $(VAULT_ARGS) $(if $(LIMIT),--limit $(LIMIT),)
|
||||
-a 'UNIT=""; \
|
||||
if systemctl cat hysteria-server.service >/dev/null 2>&1; then UNIT=hysteria-server; \
|
||||
elif systemctl cat hysteria2.service >/dev/null 2>&1; then UNIT=hysteria2; fi; \
|
||||
if [ -z "$$UNIT" ]; then echo "not installed"; exit 0; fi; \
|
||||
STATE=$$(systemctl is-active "$$UNIT" 2>/dev/null || true); \
|
||||
[ -n "$$STATE" ] || STATE=inactive; \
|
||||
SINCE=$$(systemctl show -p ActiveEnterTimestamp --value "$$UNIT" 2>/dev/null); \
|
||||
PID=$$(systemctl show -p MainPID --value "$$UNIT" 2>/dev/null); \
|
||||
MEM=$$(systemctl show -p MemoryCurrent --value "$$UNIT" 2>/dev/null); \
|
||||
case "$$MEM" in ""|"[not set]"|"0"|"n/a") MEM="-";; *) MEM="$$((MEM/1024/1024))M";; esac; \
|
||||
echo "$$UNIT: $$STATE | since $$SINCE | PID $$PID | RAM $$MEM"; \
|
||||
[ "$$STATE" = "active" ]' \
|
||||
-b $(ANSIBLE_OPTS)
|
||||
|
||||
install: check ## Установить Hysteria2 на VPS (+ URL и QR локально)
|
||||
$(ANSIBLE) playbook.yml --tags install $(ANSIBLE_OPTS)
|
||||
@@ -85,6 +99,10 @@ update: check ## Обновить бинарник, перекатить кон
|
||||
export: check ## Только перевыпустить URL и QR (без изменений на сервере)
|
||||
$(ANSIBLE) playbook.yml --tags export $(ANSIBLE_OPTS)
|
||||
|
||||
index: check ## Пересобрать output/index.html из локальных server-info.yml и открыть в браузере
|
||||
$(ANSIBLE) playbook-index.yml $(VAULT_ARGS) \
|
||||
$(if $(EXTRA_VARS),--extra-vars "$(EXTRA_VARS)",)
|
||||
|
||||
uninstall: ## Полностью удалить Hysteria2 с VPS (только uninstall, без install/update)
|
||||
@echo "$(YELLOW)Будет выполнено удаление Hysteria2$(NC) $(if $(LIMIT),на $(LIMIT),на всех серверах)"
|
||||
@read -p "Продолжить? [y/N] " c; [[ "$$c" =~ ^[Yy]$$ ]] || exit 1
|
||||
|
||||
@@ -69,10 +69,11 @@ make install # → output/index.html откроется в браузере
|
||||
| `make init` | Создать конфиги из `.example` и `.vault_pass` |
|
||||
| `make check` | Проверить синтаксис playbook |
|
||||
| `make ping` | Проверить SSH к VPS |
|
||||
| `make status` | `systemctl status hysteria-server` |
|
||||
| `make status` | Краткий статус: active / not installed, uptime, PID, RAM |
|
||||
| `make install` | Установка masquerade + экспорт URL/QR/HTML |
|
||||
| `make update` | Обновить бинарник и конфиг; экспорт только для новых/изменённых пользователей |
|
||||
| `make export` | Только экспорт (URL, QR, HTML) без изменений на сервере |
|
||||
| `make index` | Пересобрать `output/index.html` из локальных `server-info.yml` и открыть в браузере |
|
||||
| `make uninstall` | Полное удаление с VPS + `output/<server>/` + пересборка `output/index.html` |
|
||||
| `make vault-init` | Создать `.vault_pass`, включить `vault_password_file` в `ansible.cfg` |
|
||||
| `make vault-encrypt` | Зашифровать `vault.yml` |
|
||||
@@ -84,6 +85,7 @@ make install LIMIT=vps-de
|
||||
make install LIMIT=vps-nl # только новый сервер — старые не трогаются
|
||||
make update LIMIT=vps-nl
|
||||
make export
|
||||
make index # только пересобрать общий каталог из output/
|
||||
make uninstall LIMIT=vps-de
|
||||
make update EXTRA_VARS='hysteria2_force_export=true' # перевыпустить URL/QR для всех
|
||||
make install EXTRA_VARS='hysteria2_force_export=true' # то же при install
|
||||
@@ -351,7 +353,9 @@ HTML-страницы показывают:
|
||||
- QR-коды;
|
||||
- ссылки на файлы и страницы серверов.
|
||||
|
||||
После `make install`, `make update` и `make export` **`output/index.html` автоматически открывается в браузере** (macOS: `open`, Linux: `xdg-open`).
|
||||
После `make install`, `make update`, `make export` и `make index` **`output/index.html` автоматически открывается в браузере** (macOS: `open`, Linux: `xdg-open`).
|
||||
|
||||
`make index` не ходит на VPS: только читает `output/*/server-info.yml` и пересобирает общий каталог.
|
||||
|
||||
Отключить: `hysteria2_open_browser: false` в `group_vars/all.yml` или `EXTRA_VARS`.
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
- name: Rebuild global output index from local exports
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: true
|
||||
become: false
|
||||
tasks:
|
||||
- name: Generate output/index.html and open in browser
|
||||
ansible.builtin.include_role:
|
||||
name: hysteria2
|
||||
tasks_from: export_global.yml
|
||||
@@ -38,7 +38,7 @@ HY2_API_BASE_URL="https://api.hy2.io/v1"
|
||||
# curl command line flags.
|
||||
# To using a proxy, please specify ALL_PROXY in the environ variable, such like:
|
||||
# export ALL_PROXY=socks5h://192.0.2.1:1080
|
||||
CURL_FLAGS=(-L -f -q --retry 5 --retry-delay 10 --retry-max-time 60)
|
||||
CURL_FLAGS=(-q -L -f --retry 5 --retry-delay 10 --retry-max-time 60)
|
||||
|
||||
|
||||
###
|
||||
@@ -1027,10 +1027,10 @@ perform_install_hysteria_home_legacy() {
|
||||
}
|
||||
|
||||
perform_install() {
|
||||
local _is_frash_install
|
||||
local _is_fresh_install
|
||||
local _is_upgrade_from_hysteria1
|
||||
if ! is_hysteria_installed; then
|
||||
_is_frash_install=1
|
||||
_is_fresh_install=1
|
||||
elif is_hysteria1_version "$(get_installed_version)"; then
|
||||
_is_upgrade_from_hysteria1=1
|
||||
fi
|
||||
@@ -1067,7 +1067,7 @@ perform_install() {
|
||||
echo
|
||||
echo "$(tgreen)Installed version is up-to-date, there is nothing to do.$(treset)"
|
||||
echo
|
||||
elif [[ -n "$_is_frash_install" ]]; then
|
||||
elif [[ -n "$_is_fresh_install" ]]; then
|
||||
echo
|
||||
echo -e "$(tbold)Congratulation! Hysteria 2 has been successfully installed on your server.$(treset)"
|
||||
echo
|
||||
|
||||
Reference in New Issue
Block a user