170 lines
5.6 KiB
Markdown
170 lines
5.6 KiB
Markdown
🚀 Быстрый старт
|
|
|
|
### 1️⃣ Установка Docker (если не установлен)
|
|
|
|
```bash
|
|
# Для Ubuntu/Debian
|
|
apt update && apt upgrade -y
|
|
apt install -y docker.io
|
|
systemctl enable docker
|
|
systemctl start docker
|
|
```
|
|
|
|
Проверка:
|
|
|
|
```bash
|
|
docker --version
|
|
```
|
|
---
|
|
### 2️⃣ Создание рабочей директории
|
|
|
|
```bash
|
|
mkdir -p ~/wg-easy && cd ~/wg-easy
|
|
```
|
|
|
|
|
|
### 3️⃣ Запуск контейнера
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name=wg-easy \
|
|
-e WG_HOST=ВАШ_ПУБЛИЧНЫЙ_IP \
|
|
-e PASSWORD_HASH='$(docker run --rm ghcr.io/wg-easy/wg-easy password-hash ВАШ_ПАРОЛЬ)' \
|
|
-e WG_DEFAULT_DNS=8.8.8.8,8.8.4.4 \
|
|
-v ~/wg-easy//etc/wireguard \
|
|
-p 51820:51820/udp \
|
|
-p 51821:51821/tcp \
|
|
--cap-add=NET_ADMIN \
|
|
--cap-add=SYS_MODULE \
|
|
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
|
|
--sysctl="net.ipv4.ip_forward=1" \
|
|
--restart unless-stopped \
|
|
ghcr.io/wg-easy/wg-easy
|
|
```
|
|
|
|
> ⚠️ **Важно:** Замените `ВАШ_ПУБЛИЧНЫЙ_IP` на реальный внешний IP вашего сервера.
|
|
|
|
---
|
|
|
|
## ⚙️ Настройка окружения
|
|
|
|
### 🔐 Генерация хеша пароля
|
|
|
|
```bash
|
|
docker run --rm ghcr.io/wg-easy/wg-easy password-hash ваш_надёжный_пароль
|
|
```
|
|
|
|
Скопируйте полученный хеш и подставьте в параметр `PASSWORD_HASH`.
|
|
|
|
### 🌐 Переменные окружения
|
|
|
|
| Переменная | Обязательная | Описание | Пример |
|
|
|------------|--------------|----------|--------|
|
|
| `WG_HOST` | ✅ | Публичный IP сервера | `193.124.57.125` |
|
|
| `PASSWORD_HASH` | ✅ | Bcrypt-хеш пароля для веб-интерфейса | `$2a$12$...` |
|
|
| `WG_DEFAULT_DNS` | ❌ | DNS-серверы для клиентов | `8.8.8.8,8.8.4.4` |
|
|
| `WG_MTU` | ❌ | MTU для WireGuard-интерфейса | `1420` |
|
|
| `WG_ALLOWED_IPS` | ❌ | Разрешённые подсети | `192.168.1.0/24` |
|
|
| `WG_PERSISTENT_KEEPALIVE` | ❌ | Интервал keepalive (сек) | `25` |
|
|
|
|
> 💡 Полный список переменных: [wg-easy Environment Variables](https://github.com/wg-easy/wg-easy#environment-variables)
|
|
|
|
---
|
|
|
|
## 🎛️ Управление контейнером
|
|
|
|
```bash
|
|
# 📊 Проверка статуса
|
|
docker ps | grep wg-easy
|
|
|
|
# 📋 Просмотр логов
|
|
docker logs wg-easy
|
|
docker logs -f wg-easy # в реальном времени
|
|
|
|
# 🔄 Перезапуск
|
|
docker restart wg-easy
|
|
|
|
# ⏹️ Остановка
|
|
docker stop wg-easy
|
|
|
|
# ▶️ Запуск
|
|
docker start wg-easy
|
|
|
|
# 🗑️ Удаление контейнера (данные в volume сохранятся)
|
|
docker rm -f wg-easy
|
|
|
|
# 🔄 Обновление образа
|
|
docker pull ghcr.io/wg-easy/wg-easy
|
|
docker stop wg-easy && docker rm wg-easy
|
|
# Затем повторите команду запуска из раздела "Быстрый старт"
|
|
```
|
|
|
|
### 📁 Расположение данных
|
|
|
|
```
|
|
~/wg-easy/data/
|
|
├── wg0.conf # Конфигурация сервера WireGuard
|
|
└── clients/ # Конфигурации клиентов (.conf файлы)
|
|
```
|
|
|
|
> 💾 Регулярно делайте бэкап этой директории!
|
|
|
|
---
|
|
|
|
## 📱 Подключение клиентов
|
|
|
|
### Через веб-интерфейс
|
|
|
|
1. Откройте в браузере: `http://ВАШ_IP:51821`
|
|
2. Введите пароль, указанный при установке
|
|
3. Нажмите **+ New Client**
|
|
4. Выберите способ получения конфига:
|
|
- 📥 **Download** — скачать файл `.conf`
|
|
- 📷 **QR Code** — отсканировать камерой телефона
|
|
|
|
### Импорт в клиент WireGuard
|
|
|
|
| Платформа | Инструкция |
|
|
|-----------|------------|
|
|
| **Android** | Установите приложение [WireGuard](https://play.google.com/store/apps/details?id=com.wireguard.android) → «+» → «Импорт из файла/QR» |
|
|
| **iOS** | Установите [WireGuard](https://apps.apple.com/app/wireguard/id1441195209) → «+» → «Сканировать QR» или «Импортировать» |
|
|
| **Windows** | [Скачать клиент](https://www.wireguard.com/install/) → «Import tunnel(s) from file» |
|
|
| **macOS/Linux** | Установите `wireguard-tools`, скопируйте `.conf` в `~/.wireguard/`, запустите `wg-quick up wg0` |
|
|
|
|
---
|
|
|
|
## 🔒 Безопасность
|
|
|
|
### ✅ Рекомендации
|
|
|
|
- Используйте **надёжный пароль** для веб-интерфейса
|
|
- Настройте **Fail2Ban** для защиты от брутфорса:
|
|
```bash
|
|
sudo apt install fail2ban -y
|
|
```
|
|
- Ограничьте доступ к порту `51821` по IP (если возможно):
|
|
```bash
|
|
# Пример для UFW (разрешить только с доверенного IP)
|
|
sudo ufw allow from 203.0.113.10 to any port 51821 proto tcp
|
|
```
|
|
- Регулярно обновляйте Docker-образ:
|
|
```bash
|
|
watchtower или ручной docker pull + restart
|
|
```
|
|
|
|
### 🛡️ Настройка фаервола
|
|
|
|
```bash
|
|
# UFW (Ubuntu/Debian)
|
|
sudo ufw allow 51820/udp # WireGuard трафик
|
|
sudo ufw allow 51821/tcp # Веб-интерфейс (опционально ограничить по IP)
|
|
sudo ufw enable
|
|
|
|
# firewalld (CentOS/RHEL)
|
|
sudo firewall-cmd --add-port=51820/udp --permanent
|
|
sudo firewall-cmd --add-port=51821/tcp --permanent
|
|
sudo firewall-cmd --reload
|
|
```
|
|
|
|
---
|