Набор bash-скриптов для автоматической установки и настройки WireGuard на сервере с Ubuntu Server 18.04 и новее. Поднимает сервер, генерирует серверные ключи, выдаёт клиентские конфиги (с QR-кодом для мобильных) и умеет добавлять/удалять клиентов на лету.
- Ubuntu Server 18.04 или новее.
- Права root (все скрипты выполняются через
sudo). - Доступ в интернет (для
apt installи определения внешнего IP).
git clone https://github.com/blackden/wireguard_vds.git
cd wireguard_vds
sudo make installmake install (то же, что sudo ./wgctl install) снесёт предыдущую установку WireGuard (если была), поставит свежую и сразу создаст первого клиента. На выходе — QR-код в терминале и .conf-файл для устройства клиента.
Единая точка входа — wgctl:
| Команда | Что делает |
|---|---|
wgctl install |
Полная установка (uninstall + install + первый клиент). |
wgctl add <email> |
Добавить клиента. Создаёт ключи, дописывает [Peer] в wg0.conf, применяет wg syncconf (без обрыва активных туннелей), показывает QR. |
wgctl remove <email|username> |
Удалить клиента. Чистит wg0.conf, директорию клиента, применяет wg syncconf. |
wgctl reset |
Удалить всех клиентов, остановить сервер. Установка остаётся. |
wgctl uninstall |
Полная деинсталляция: остановка сервиса, apt remove, rm -rf /etc/wireguard. |
wgctl list |
Показать таблицу клиентов (email, IP, public key) из wg0.conf. |
wgctl status |
Показать wg show wg0 если сервис активен, иначе сообщить что сервис не запущен. |
wgctl regenerate <email|username> |
Пересоздать ключи клиента (новые priv/pub/preshared), сохранив его IP. Обновляет wg0.conf и ./clients/<user>/. |
wgctl export <email|username> |
Вывести сохранённый ./clients/<user>/<user>.conf + QR без пересоздания. |
wgctl menu |
Интерактивное меню (вызывается без аргументов по умолчанию). |
wgctl help |
Справка по командам. |
Удобная обёртка для админских и dev-операций:
sudo make install # полная свежая установка
sudo make add EMAIL=u@example.com
sudo make remove EMAIL=u@example.com
sudo make regenerate EMAIL=u@example.com
sudo make export EMAIL=u@example.com
sudo make list # таблица клиентов
sudo make status # состояние сервиса
sudo make reset
sudo make uninstall
make menu # TUI
make test # ./tests/smoke.sh
make lint # shellcheck по всему репо
make help # список целейПеред коммитом локально прогоните то, что делает CI:
make lint
make testSmoke-тесты создают временный wg0.conf в mktemp -d и проверяют поведение всех скриптов в scripts/ (через wgctl) на нескольких сценариях — не требуют ни root, ни поднятого WireGuard, идут за миллисекунды (за исключением сценария regenerate, который пропускается если в системе нет wireguard-tools).
Подробнее — см. CONTRIBUTING.md. Если нашли уязвимость — SECURITY.md.
MIT, см. LICENSE.
- Fedorov Tech
- Denis Fedorov
Форк основан на pprometey/wireguard_aws.