Server: replace wireguard-ui with built-in wg-admin-gui + PostgreSQL
This commit is contained in:
46
README.md
46
README.md
@@ -8,7 +8,7 @@
|
||||
|
||||
- Быстро развернуть WireGuard-сервер (`wg-quick@wg0`) с автозапуском через `systemd`.
|
||||
- Включить IP forwarding и NAT для выхода клиентов в интернет через сервер.
|
||||
- Установить легкий GUI для управления (`wireguard-ui` в Docker).
|
||||
- Установить встроенный GUI для управления peer'ами и QR (`wg-admin-gui`) с хранением данных в PostgreSQL.
|
||||
- Автоматизировать добавление клиента с клиентской машины через SSH на сервер.
|
||||
- Поддержать 2 режима маршрутизации клиента:
|
||||
- полный туннель (весь трафик через VPN)
|
||||
@@ -28,15 +28,16 @@
|
||||
- `lib/common.sh` — общие функции
|
||||
- `bootstrap/install_wg_install.sh` — установка короткой команды `wg-install`
|
||||
- `templates/wg0.conf.template` — шаблон базового `wg0.conf`
|
||||
- `server/install_server.sh` — установка сервера + GUI
|
||||
- `server/install_server.sh` — единый установщик сервера + GUI
|
||||
- `server/wg-peerctl.sh` — helper для регистрации peer на сервере
|
||||
- `client/install_client.sh` — установка и автонастройка клиента
|
||||
|
||||
## Архитектура решения
|
||||
|
||||
- Сервер разворачивается нативно на `wg-quick` + `systemd` (стабильность после reboot).
|
||||
- GUI (`wireguard-ui`) запускается в Docker, но работает с тем же `/etc/wireguard`, где лежит серверный конфиг.
|
||||
- На сервере ставится `wg-syncconf@wg0.path`: при изменении `/etc/wireguard/wg0.conf` (в том числе после `Apply` в GUI) конфиг автоматически применяется в живой интерфейс `wg0`.
|
||||
- GUI (`wg-admin-gui`) работает поверх того же `/etc/wireguard`, где лежит серверный конфиг.
|
||||
- Метаданные GUI хранятся в PostgreSQL.
|
||||
- На сервере ставится `wg-syncconf@wg0.path`: при изменении `/etc/wireguard/wg0.conf` конфиг автоматически применяется в живой интерфейс `wg0`.
|
||||
- Клиентский скрипт:
|
||||
1. генерирует ключи локально,
|
||||
2. подключается к серверу по SSH,
|
||||
@@ -46,13 +47,11 @@
|
||||
6. запускает и включает `wg-quick@wg0`.
|
||||
Каждый запуск клиентского установщика сначала очищает старые клиентские ключи/конфиг выбранного интерфейса и поднимает клиента заново.
|
||||
|
||||
## Почему выбран GUI `wireguard-ui`
|
||||
## Про GUI
|
||||
|
||||
- Легкий для VPS (один контейнер).
|
||||
- Понятный веб-интерфейс.
|
||||
- Не требует переносить основной WireGuard в Docker: VPN остается в нативном `systemd`.
|
||||
- Проще обслуживание: серверная сеть и NAT остаются под полным контролем Bash-скрипта.
|
||||
- GUI не разрабатывается в этом проекте с нуля: используется готовый `wireguard-ui`, а проект автоматизирует его установку и настройку.
|
||||
- `wg-admin-gui` показывает клиентов, статус, трафик, роуты и важные скрипты.
|
||||
- Поддерживает добавление peer и генерацию QR.
|
||||
- Основной WireGuard остается нативным в `systemd` (`wg-quick@wg0`).
|
||||
|
||||
## Какие пакеты устанавливаются
|
||||
|
||||
@@ -61,7 +60,8 @@
|
||||
- `wireguard`, `wireguard-tools`
|
||||
- `iproute2`, `iptables`
|
||||
- `curl`, `ca-certificates`, `openssl`, `qrencode`
|
||||
- `docker.io` и один из пакетов: `docker-compose-plugin` или `docker-compose` (в зависимости от версии ОС/репозиториев)
|
||||
- `docker.io` и один из пакетов: `docker-compose-plugin` или `docker-compose` (для PostgreSQL контейнера GUI)
|
||||
- `python3`, `python3-venv`, `python3-pip` (для `wg-admin-gui`)
|
||||
|
||||
### Клиент
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
sudo bash server/install_server.sh
|
||||
```
|
||||
|
||||
Важно: серверный установщик теперь всегда выполняет полный reset прошлого состояния (`/etc/wireguard` + `wireguard-ui` data/db) и поднимает всё заново.
|
||||
Важно: серверный установщик теперь всегда выполняет полный reset прошлого состояния (`/etc/wireguard` + данные GUI/PostgreSQL) и поднимает всё заново.
|
||||
|
||||
### Запуск сервера одной командой (без `git clone`)
|
||||
|
||||
@@ -232,13 +232,11 @@ http://203.0.113.10:5000
|
||||
### Как получить QR для iPhone в GUI
|
||||
|
||||
1. Откройте GUI по ссылке из итоговой сводки установки.
|
||||
2. Перейдите в раздел клиентов (`Clients`).
|
||||
3. Создайте клиента (`New Client`) или выберите существующего.
|
||||
4. Нажмите кнопку показа QR (или `Show QR`) у клиента.
|
||||
2. Перейдите в раздел добавления peer.
|
||||
3. Создайте клиента.
|
||||
4. Используйте показанный QR.
|
||||
5. На iPhone: WireGuard → `Add Tunnel` → `Create from QR code` и отсканируйте код.
|
||||
|
||||
В установщике уже задаются дефолты GUI для корректной генерации клиентских конфигов: endpoint, DNS, порт и путь к `wg0.conf`.
|
||||
|
||||
## Взаимодействие клиента с сервером
|
||||
|
||||
- Клиент генерирует локальные ключи.
|
||||
@@ -310,21 +308,11 @@ ls -l /usr/local/sbin/wg-peerctl
|
||||
|
||||
4. GUI недоступен:
|
||||
```bash
|
||||
sudo docker ps
|
||||
sudo docker logs wireguard-ui --tail=100
|
||||
sudo systemctl status wg-admin-gui --no-pager
|
||||
sudo docker ps | grep wg-admin-postgres
|
||||
sudo ss -tulpn | grep 5000
|
||||
```
|
||||
|
||||
Если при запуске встречается ошибка `KeyError: 'ContainerConfig'` (обычно на legacy `docker-compose` v1), перезапустите установщик из актуальной версии репозитория: в нем добавлена автоматическая очистка старого контейнера `wireguard-ui` перед запуском.
|
||||
|
||||
Для уже сломанного состояния можно вручную очистить старые контейнеры и запустить установщик снова:
|
||||
```bash
|
||||
docker ps -aq --filter 'label=com.docker.compose.service=wireguard-ui' | xargs -r docker rm -f
|
||||
docker ps -a --format '{{.Names}}' | grep -E '(^|[_-])wireguard-ui($|[_-])' | xargs -r docker rm -f
|
||||
```
|
||||
|
||||
Если клиенты из GUI создаются в неправильной подсети, просто перезапустите серверный установщик: теперь он автоматически очищает БД GUI и поднимает всё с нуля.
|
||||
|
||||
## Важные пути
|
||||
|
||||
- Серверный конфиг: `/etc/wireguard/wg0.conf`
|
||||
|
||||
Reference in New Issue
Block a user