From c40072fdbfd1f1c77ba6c5cfdc6789028f1092a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Sat, 25 Apr 2026 13:36:05 +0300 Subject: [PATCH] docs(install): default .env template and README table; systemd reads HOST/PORT from .env Made-with: Cursor --- README.md | 27 +++++++++++++++++++++++++-- server/.env.example | 8 +++++--- server/install.sh | 22 +++++++++++++++++++--- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4917f81..3baadb2 100644 --- a/README.md +++ b/README.md @@ -47,11 +47,34 @@ git clone https://github.com/andrey271192/domen_hydra.git /opt/domen-hydra cd /opt/domen-hydra bash server/install.sh -nano server/.env # задать ADMIN_PASSWORD +nano server/.env # при необходимости поправь плейсхолдеры (см. ниже) systemctl restart hydra-manager ``` -Интерфейс: `http://ВАШ_IP:8000` (порт настраивается в `.env`). +Скрипт `server/install.sh` при первом запуске **сам создаёт** `server/.env` из `server/.env.example` с уже заполненными полями (вместо паролей — текст-напоминание, его нужно заменить на свои секреты). + +### Файл `server/.env` + +| Переменная | Назначение | +|------------|------------| +| `HOST` | Адрес привязки HTTP (обычно `0.0.0.0`). | +| `PORT` | Порт веб-интерфейса (по умолчанию `8000`). | +| `ADMIN_PASSWORD` | Пароль входа в веб-интерфейс. | +| `SSH_USER` | Пользователь SSH для «Обновить все роутеры». | +| `SSH_PASS` | Пароль SSH по умолчанию (на карточке роутера можно задать свой). | + +Шаблон по умолчанию (после установки открой `nano server/.env` и подставь реальные пароли): + +```env +HOST=0.0.0.0 +PORT=8000 +ADMIN_PASSWORD=ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ_ВЕБ + +SSH_USER=root +SSH_PASS=ПАРОЛЬ_SSH_РОУТЕРА +``` + +Интерфейс: `http://ВАШ_IP:PORT` — значения `HOST` и `PORT` из `server/.env` подставляются в `hydra-manager.service` при запуске `server/install.sh`. Если поменяешь порт в `.env` уже после установки, снова выполни `bash server/install.sh` (или вручную обнови `ExecStart` в unit и `systemctl daemon-reload`). --- diff --git a/server/.env.example b/server/.env.example index 536d063..05fd5d0 100644 --- a/server/.env.example +++ b/server/.env.example @@ -1,7 +1,9 @@ +# Скопируется в server/.env при первом запуске server/install.sh (если .env ещё нет). +# Замени значения-заглушки на свои перед использованием в проде. + HOST=0.0.0.0 PORT=8000 -ADMIN_PASSWORD=admin +ADMIN_PASSWORD=ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ_ВЕБ -# SSH defaults for all routers (can be overridden per-router) SSH_USER=root -SSH_PASS=keenetic +SSH_PASS=ПАРОЛЬ_SSH_РОУТЕРА diff --git a/server/install.sh b/server/install.sh index 7047d27..251ed6b 100644 --- a/server/install.sh +++ b/server/install.sh @@ -8,7 +8,23 @@ apt-get update -qq && apt-get install -y -qq python3 python3-pip python3-venv ss python3 -m venv .venv .venv/bin/pip install -q -r server/requirements.txt -[ ! -f server/.env ] && cp server/.env.example server/.env && echo "⚠️ Настрой server/.env и перезапусти" +if [ ! -f server/.env ]; then + cp server/.env.example server/.env + echo "⚠️ Создан server/.env из шаблона — замени ADMIN_PASSWORD и SSH_PASS на свои значения, затем: systemctl restart hydra-manager" +fi + +# Читаем HOST/PORT из server/.env (только для unit; пароли не трогаем). +_env_val() { + local k="$1" d="$2" line v + line=$(grep -E "^[[:space:]]*${k}=" server/.env 2>/dev/null | head -1) || true + v="${line#*=}" + v="${v%%$'\r'}" + v="${v#"${v%%[![:space:]]*}"}" + v="${v%"${v##*[![:space:]]}"}" + [ -n "$v" ] && printf '%s' "$v" || printf '%s' "$d" +} +HOST_BIND="$(_env_val HOST 0.0.0.0)" +PORT="$(_env_val PORT 8000)" cat > /etc/systemd/system/hydra-manager.service </dev/null || echo IP):8000" +echo "✅ Запущен на http://$(curl -sf ifconfig.me 2>/dev/null || echo IP):${PORT}"