WireGuard: add clean reinstall flow and bootstrap wg-install

This commit is contained in:
Ruslan
2026-04-14 10:04:25 +03:00
parent cbc2f5bf45
commit 278b403e09
5 changed files with 141 additions and 43 deletions

View File

@@ -2,7 +2,7 @@
Проект автоматизирует установку и настройку WireGuard-сервера и WireGuard-клиента на Debian/Ubuntu.
Основная идея: один репозиторий с понятными Bash-скриптами, которые можно повторно запускать без бессмысленной поломки уже существующей конфигурации.
Основная идея: один репозиторий с понятными Bash-скриптами для быстрого разворачивания и переустановки WireGuard-стека.
## Назначение проекта
@@ -26,6 +26,7 @@
- `README.md`
- `.gitignore`
- `lib/common.sh` — общие функции
- `bootstrap/install_wg_install.sh` — установка короткой команды `wg-install`
- `templates/wg0.conf.template` — шаблон базового `wg0.conf`
- `server/install_server.sh` — установка сервера + GUI
- `server/wg-peerctl.sh` — helper для регистрации peer на сервере
@@ -76,15 +77,34 @@
sudo bash server/install_server.sh
```
Важно: серверный установщик теперь всегда выполняет полный reset прошлого состояния (`/etc/wireguard` + `wireguard-ui` data/db) и поднимает всё заново.
### Запуск сервера одной командой (без `git clone`)
```bash
tmp="$(mktemp -d)" && curl -fL "https://git.ruslan.xyz/ruslan/Wireguard_server/archive/main.tar.gz" -o "$tmp/repo.tar.gz" && tar -xzf "$tmp/repo.tar.gz" -C "$tmp" && bash "$tmp/wireguard_server/server/install_server.sh"
```
Если GUI уже ранее запускался и нужно переинициализировать его дефолты (подсеть, endpoint, пользователь/пароль), добавьте:
### Короткая команда `wg-install` (установить один раз)
Из локального репозитория:
```bash
--gui-reset-db yes
sudo bash bootstrap/install_wg_install.sh
```
После этого запуск сервера:
```bash
sudo wg-install
```
С аргументами тоже работает:
```bash
sudo wg-install --non-interactive --server-public-ip 203.0.113.10 --default-iface eth0
```
Установка `wg-install` без `git clone`:
```bash
tmp="$(mktemp -d)" && curl -fL "https://git.ruslan.xyz/ruslan/Wireguard_server/archive/main.tar.gz" -o "$tmp/repo.tar.gz" && tar -xzf "$tmp/repo.tar.gz" -C "$tmp" && sudo bash "$tmp/wireguard_server/bootstrap/install_wg_install.sh"
```
Скрипт интерактивно спросит недостающие данные:
@@ -162,7 +182,7 @@ sudo bash client/install_client.sh \
- Сервер: `/etc/wireguard/server_private.key` и `/etc/wireguard/server_public.key`.
- Клиент: `/etc/wireguard/wg0_client_private.key`, `..._public.key`, `..._psk.key`.
- Повторный запуск не перегенерирует ключи без необходимости.
- При каждом запуске серверного установщика серверные ключи создаются заново (так как выполняется полный reset).
## Как задаются маршруты
@@ -292,9 +312,7 @@ docker ps -aq --filter 'label=com.docker.compose.service=wireguard-ui' | xargs -
docker ps -a --format '{{.Names}}' | grep -E '(^|[_-])wireguard-ui($|[_-])' | xargs -r docker rm -f
```
Если клиенты из GUI создаются в неправильной подсети (например `10.252.1.x` вместо вашей `10.66.66.x`), запустите установщик с `--gui-reset-db yes`, затем создайте клиента заново и пересканируйте QR.
Почему так бывает: `wireguard-ui` хранит глобальные настройки в своей БД. Если БД была создана ранее со старой подсетью, новые переменные окружения не всегда перезаписывают эти значения автоматически.
Если клиенты из GUI создаются в неправильной подсети, просто перезапустите серверный установщик: теперь он автоматически очищает БД GUI и поднимает всё с нуля.
## Важные пути
@@ -310,4 +328,5 @@ docker ps -a --format '{{.Names}}' | grep -E '(^|[_-])wireguard-ui($|[_-])' | xa
```bash
bash server/install_server.sh --help
bash client/install_client.sh --help
bash bootstrap/install_wg_install.sh
```