108 lines
5.1 KiB
Markdown
108 lines
5.1 KiB
Markdown
# AdGuard DoH Installer
|
|
|
|
Безопасный повторяемый установщик AdGuard Home + Caddy для VPS.
|
|
|
|
Он разворачивает:
|
|
|
|
- публичный DNS-over-HTTPS на `https://dns.example.com/dns-query`;
|
|
- отдельную HTTPS-панель на нейтральном домене вроде `https://node.example.com`;
|
|
- нейтральную статическую заглушку на корне DoH-домена;
|
|
- автоматические сертификаты Let's Encrypt;
|
|
- Cloudflare и Google DoH как основные upstream, несколько обычных DNS только как bootstrap/fallback;
|
|
- Docker Compose-стек с лимитами памяти и автоматическим перезапуском.
|
|
|
|
Прямой порт AdGuard `3000` публикуется только на `127.0.0.1`. Установщик не меняет VPN, маршруты, UFW/iptables и SSH.
|
|
|
|
## Быстрая установка
|
|
|
|
Сначала создайте две A-записи, указывающие на IP нового VPS:
|
|
|
|
```text
|
|
dns.example.com -> VPS_IP
|
|
node.example.com -> VPS_IP
|
|
```
|
|
|
|
Затем выполните одну команду:
|
|
|
|
```bash
|
|
curl -fsSL https://git.chardb.ru/VPS/adguard-doh-installer/raw/branch/main/install.sh | sudo bash
|
|
```
|
|
|
|
Скрипт спросит оба домена и пароль администратора. Пароль не попадает в историю shell. Если оставить его пустым, будет создан случайный пароль и показан один раз.
|
|
|
|
Неинтерактивный запуск:
|
|
|
|
```bash
|
|
curl -fsSL https://git.chardb.ru/VPS/adguard-doh-installer/raw/branch/main/install.sh | \
|
|
sudo bash -s -- --doh-domain dns.example.com --admin-domain node.example.com --email admin@example.com
|
|
```
|
|
|
|
## Безопасное поведение
|
|
|
|
Перед изменениями скрипт:
|
|
|
|
1. проверяет синтаксис доменов;
|
|
2. проверяет их A-записи и публичный IP VPS;
|
|
3. обнаруживает уже работающий AdGuard Home;
|
|
4. проверяет занятость TCP-портов `80`, `443`, `3000` и UDP-порта `443`;
|
|
5. отказывается захватывать чужой Nginx/Caddy/Apache;
|
|
6. не принимает непустую чужую директорию без явного `--adopt-existing`;
|
|
7. сохраняет резервные копии управляемых файлов при повторном запуске;
|
|
8. сохраняет существующий `AdGuardHome.yaml`, пользователей, клиентов и правила при обновлении;
|
|
9. проверяет Compose до запуска и HTTPS после запуска.
|
|
|
|
Проверить новый VPS без внесения изменений:
|
|
|
|
```bash
|
|
curl -fsSL https://git.chardb.ru/VPS/adguard-doh-installer/raw/branch/main/install.sh | \
|
|
sudo bash -s -- --check --doh-domain dns.example.com --admin-domain node.example.com
|
|
```
|
|
|
|
Если DNS-записи ещё распространяются, можно установить с `--allow-dns-mismatch`. Caddy будет повторять выпуск сертификата автоматически.
|
|
|
|
## Повторный запуск и обновление
|
|
|
|
Повторите ту же команду. Для стека, созданного этим установщиком, данные AdGuard и пароль сохраняются. Перед обновлением создаётся каталог:
|
|
|
|
```text
|
|
/opt/stacks/adguard-doh/backups/<UTC_TIMESTAMP>/
|
|
```
|
|
|
|
Чужой стек автоматически не усыновляется. Для совместимой установки можно явно указать:
|
|
|
|
```bash
|
|
sudo bash install.sh --adopt-existing --stack-dir /opt/stacks/adguard-doh \
|
|
--doh-domain dns.example.com --admin-domain node.example.com
|
|
```
|
|
|
|
## Проверка
|
|
|
|
```bash
|
|
sudo bash verify.sh
|
|
```
|
|
|
|
Ожидается:
|
|
|
|
- админка: HTTP `302` или `200`;
|
|
- `/dns-query` без DNS-пакета: HTTP `400`;
|
|
- заглушка: HTTP `200`;
|
|
- порт `3000`: только `127.0.0.1:3000`.
|
|
|
|
## Требования и ограничения
|
|
|
|
- Debian/Ubuntu для автоматической установки Docker;
|
|
- root/sudo;
|
|
- свободные TCP `80`, `443`, `3000` и UDP `443`;
|
|
- домены с A-записями на VPS;
|
|
- существующий reverse proxy намеренно не перенастраивается автоматически.
|
|
|
|
Если на VPS уже занят `80/443`, установщик завершится до изменений. Это безопаснее автоматического удаления или перенастройки чужого сервиса.
|
|
|
|
## Заглушка
|
|
|
|
Исходник находится в `templates/cover/index.html`. Установщик кладёт автономную копию в `site/index.html`. На `/dns-query` заглушка не влияет.
|
|
|
|
## Лицензия
|
|
|
|
MIT.
|