Автоматизированный скрипт для быстрой установки и настройки Remnawave Node, Caddy Selfsteal, Netbird VPN и мониторинга Grafana на Linux сервере для Remnawave Panel.
- Telegram Chat - Официальная Telegram-группа
- ✅ Remnawave Node - установка и настройка ноды Remnawave
- ✅ Caddy Selfsteal - веб-сервер для маскировки Reality трафика
- Поддержка обычных SSL сертификатов (HTTP-01 challenge)
- Поддержка Wildcard сертификатов через Cloudflare DNS-01 challenge
- Автоматическая проверка существующих сертификатов
- Валидация Cloudflare API Token перед использованием
- ✅ Netbird VPN - подключение к mesh сети
- ✅ Grafana Monitoring - установка компонентов мониторинга
- cAdvisor (мониторинг Docker контейнеров)
- Node Exporter (метрики системы)
- VictoriaMetrics Agent (отправка метрик)
- ✅ Сетевая оптимизация - BBR2/BBR, TCP tuning, лимиты
- 🔄
--update— обновление компонентов (docker pull, Xray-core, мониторинг) без изменения конфигов - 🩺
--diagnose— полная диагностика: Docker, контейнеры, порты, сертификаты, UFW, Netbird, мониторинг - 🎨
--change-template— смена HTML шаблона маскировки без переустановки Caddy - ⬆️
--self-update— обновление самого скрипта до последней версии с GitHub - 📋
--dry-run— показ плана установки без фактических изменений - 💾
--export-config— экспорт текущей конфигурации для клонирования на другой сервер - 🎯 Меню выбора шаблонов — 11 шаблонов с возможностью выбора при установке
- 📊 Нумерация шагов —
[1/8],[2/8]... для наглядности прогресса установки - 🔐 Безопасный парсинг конфига — без
source, только известные переменные - 🛡️ UFW без сброса — не удаляет существующие кастомные правила файервола
- ♻️ Повторный ввод — при ошибке валидации порта предлагает ввести заново вместо выхода
- 🎯 Валидация ввода — все меню с проверкой и повторным запросом при ошибке
- 🔄 Спиннер — анимированный индикатор для длительных операций (скачивание, ожидание)
- 📊 Итоговое саммари — сводная таблица установленных компонентов по завершении
- 💾 Бэкап конфигурации — автоматическое сохранение
.envиdocker-compose.ymlпри перезаписи - 🔐 Валидация CF Token — проверка Cloudflare API токена через API перед использованием
- 🏥 Health checks — проверка работоспособности контейнеров после запуска (до 30 сек)
- 🤖 Non-interactive режим — автоматическая установка через конфиг-файл или env переменные
- 📏 Проверка диска — контроль свободного места перед установкой (минимум 500 МБ)
- 🔄 Авто-версии — автоматическое определение последних версий компонентов через GitHub API
- 🧹 Очистка логов — ANSI-коды удаляются из лог-файла для читаемости
- 🗑️ Temp cleanup — гарантированная очистка временных файлов при любом завершении
- ↩️ Отмена — возможность ввести
cancelдля отмены ввода SECRET_KEY и Netbird Setup Key - ✅ Верификация удаления — проверка что компоненты действительно удалены при
--uninstall
- Linux сервер (Ubuntu, Debian, CentOS, AlmaLinux, Fedora, Arch)
- Root доступ (sudo)
- Минимум 500 МБ свободного места на диске (проверяется автоматически)
- Минимум 1GB RAM
- Минимум 1 Core
- Docker и Docker Compose
- Необходимые системные пакеты (curl, wget, unzip)
- Remnawave Node (опционально с Xray-core)
- Caddy веб-сервер
- Netbird VPN клиент
- Компоненты мониторинга Grafana
bash <(curl -fsSL https://raw.githubusercontent.com/Case211/remnanode-install/refs/heads/main/remnanode-install.sh)Скачать и запустить вручную
curl -fsSL https://raw.githubusercontent.com/Case211/remnanode-install/refs/heads/main/remnanode-install.sh -o remnanode-install.sh
chmod +x remnanode-install.sh
sudo ./remnanode-install.shКлонировать репозиторий
git clone https://github.com/Case211/remnanode-install.git
cd remnanode-install
chmod +x remnanode-install.sh
sudo ./remnanode-install.shNon-interactive режим
С конфиг-файлом:
bash <(curl -fsSL https://raw.githubusercontent.com/Case211/remnanode-install/refs/heads/main/remnanode-install.sh) --config /path/to/configЧерез env переменные:
sudo NON_INTERACTIVE=true CFG_SECRET_KEY="..." CFG_DOMAIN="example.com" bash <(curl -fsSL https://raw.githubusercontent.com/Case211/remnanode-install/refs/heads/main/remnanode-install.sh)Для автоматизированного деплоя создайте конфиг-файл /etc/remnanode-install.conf:
# Обязательные параметры
CFG_SECRET_KEY="your_secret_key_from_panel"
CFG_DOMAIN="reality.example.com"
# Опциональные параметры (показаны значения по умолчанию)
CFG_NODE_PORT=3000
CFG_INSTALL_XRAY=y
CFG_CERT_TYPE=1 # 1 = обычный, 2 = wildcard
CFG_CADDY_PORT=9443
CFG_APPLY_NETWORK=y
# Для wildcard сертификата (CFG_CERT_TYPE=2)
CFG_CLOUDFLARE_TOKEN="your_cloudflare_api_token"
# Netbird
CFG_INSTALL_NETBIRD=n
CFG_NETBIRD_SETUP_KEY="your_setup_key"
# Мониторинг
CFG_INSTALL_MONITORING=n
CFG_INSTANCE_NAME="my-server"
CFG_GRAFANA_IP="100.64.0.1"Запуск:
sudo ./remnanode-install.sh --config /etc/remnanode-install.confИли через конфиг по умолчанию (/etc/remnanode-install.conf):
sudo ./remnanode-install.shСкрипт автоматически обнаружит конфиг-файл и переключится в non-interactive режим.
Скрипт автоматически:
- Проверяет права root
- Определяет ОС и архитектуру
- Проверяет свободное место на диске (минимум 500 МБ)
- Определяет последние версии компонентов через GitHub API
Скрипт предложит применить:
- BBR2/BBR — алгоритм управления перегрузкой TCP
- TCP tuning — оптимизация буферов, keepalive, fastopen
- Системные лимиты — файловые дескрипторы, nproc
Скрипт запросит:
- SECRET_KEY из Remnawave Panel (можно ввести
cancelдля отмены) - NODE_PORT (по умолчанию 3000)
- Установку Xray-core (опционально)
Скрипт запросит:
- Домен для сертификата
- Тип сертификата:
- Обычный (HTTP-01 challenge)
- Wildcard (DNS-01 через Cloudflare)
- Cloudflare API Token (для wildcard — валидируется через API)
- HTTPS порт (по умолчанию 9443)
- Проверку DNS (опционально)
Скрипт запросит:
- Setup Key из Netbird Dashboard (можно ввести
cancelдля отмены)
Скрипт запросит:
- Имя инстанса (для отображения в Grafana)
- Netbird IP адрес сервера Grafana
По завершении выводится сводная таблица:
════════════════════════════════════════════════════════
📋 Итоги установки
════════════════════════════════════════════════════════
✅ Сетевые настройки применены
✅ Docker установлен
✅ RemnawaveNode установлен
✅ Caddy Selfsteal установлен
⏭️ Netbird VPN пропущен
✅ Мониторинг Grafana установлен
Node порт: 3000
Домен: reality.example.com
HTTPS порт: 9443
Grafana: 100.64.0.1
════════════════════════════════════════════════════════
Сервер: 1.2.3.4
Лог: /var/log/remnanode-install.log
════════════════════════════════════════════════════════
Для получения wildcard сертификата (*.example.com):
-
Создайте API Token в Cloudflare Dashboard:
- Перейдите: My Profile → API Tokens
- Создайте токен с правами:
- Zone / Zone / Read
- Zone / DNS / Edit
- Выберите зону для которой нужен сертификат
-
При установке выберите опцию "Wildcard сертификат" и введите токен
-
Скрипт автоматически:
- Проверит токен через Cloudflare API
- Преобразует домен в wildcard формат
- Настроит DNS-01 challenge
- Получит сертификат для всех поддоменов
При выборе "Перезаписать" для существующей установки скрипт автоматически создаёт бэкап:
/opt/remnanode.backup.20260219_143022/
├── .env
└── docker-compose.yml
/opt/caddy.backup.20260219_143022/
├── .env
├── docker-compose.yml
└── Caddyfile
/opt/
├── remnanode/ # Remnawave Node
│ ├── docker-compose.yml
│ └── .env
├── caddy/ # Caddy Selfsteal
│ ├── docker-compose.yml
│ ├── Caddyfile
│ ├── .env
│ └── html/ # HTML шаблоны
└── monitoring/ # Компоненты мониторинга
├── cadvisor/
├── nodeexporter/
└── vmagent/
Скрипт автоматически проверяет наличие существующих установок и предлагает:
- Пропустить - оставить как есть
- Перезаписать - создать бэкап и установить заново
Проверяются:
- Remnawave Node (
/opt/remnanode) - Caddy Selfsteal (
/opt/caddy) - Netbird (команда
netbird) - Мониторинг (
/opt/monitoring)
При установке Caddy скрипт проверяет:
- Сертификаты в Caddy volume
- Сертификаты в существующих контейнерах
- Сертификаты acme.sh
Если найден существующий сертификат, можно:
- Использовать существующий
- Получить новый
После установки компоненты мониторинга будут отправлять метрики на сервер Grafana:
- cAdvisor - метрики Docker контейнеров (порт 9101)
- Node Exporter - системные метрики (порт 9100)
- VM Agent - агрегация и отправка метрик (порт 8429)
Версии компонентов определяются автоматически через GitHub API. Если API недоступен, используются встроенные fallback-версии.
Все службы запускаются автоматически и добавляются в автозагрузку.
sudo ./remnanode-install.sh --updateОбновляет Docker-образы (remnanode, caddy), Xray-core и бинарники мониторинга до последних версий. Конфиги не затрагиваются.
sudo ./remnanode-install.sh --diagnoseПолная проверка: диск, RAM, Docker, контейнеры, порты, UFW, Fail2ban, Netbird, мониторинг.
sudo ./remnanode-install.sh --change-templateИнтерактивный выбор из 11 HTML шаблонов маскировки. Перезапуск Caddy не требуется.
sudo ./remnanode-install.sh --self-updatesudo ./remnanode-install.sh --dry-runsudo ./remnanode-install.sh --export-config
# или в указанный файл:
sudo ./remnanode-install.sh --export-config /path/to/configГенерирует конфиг-файл из текущей установки для клонирования на другой сервер.
cd /opt/remnanodedocker compose logs -f # Просмотр логовdocker compose restart # Перезапускdocker compose down # Остановкаdocker compose up -d # Запускcd /opt/caddydocker compose logs -f # Просмотр логовdocker compose restart # Перезапускdocker compose down # Остановкаdocker compose up -d # Запускnetbird status # Статус подключенияnetbird up # Подключениеnetbird down # Отключениеsystemctl status cadvisor # Статус cAdvisorsystemctl status nodeexporter # Статус Node Exportersystemctl status vmagent # Статус VM AgentЕсли пакетный менеджер заблокирован процессом обновления:
sudo killall unattended-upgrsudo systemctl stop unattended-upgradesПроверьте логи:
cd /opt/caddy && docker compose logsПроверьте конфигурацию:
docker compose configПроверьте статус:
netbird statusУбедитесь что Setup Key правильный и сервер доступен.
Проверьте статус служб:
systemctl status vmagentПроверьте доступность сервера Grafana:
curl http://<GRAFANA_IP>:8428/healthСкрипт валидирует токен при вводе. Если токен не проходит проверку:
- Убедитесь что токен имеет права: Zone / Zone / Read и Zone / DNS / Edit
- Проверьте что выбрана правильная зона
- Создайте новый токен если текущий истёк
Лог установки сохраняется в /var/log/remnanode-install.log (без ANSI-кодов для читаемости):
cat /var/log/remnanode-install.logПосле установки используйте следующие настройки в Xray Reality:
{
"serverNames": ["your-domain.com"],
"dest": "127.0.0.1:9443",
"xver": 0
}{
"serverNames": ["your-domain.com", "subdomain.your-domain.com"],
"dest": "127.0.0.1:9443",
"xver": 0
}Caddy автоматически загружает случайный шаблон из доступных:
- 10gag - Сайт мемов
- Convertit - Конвертер файлов
- Converter - Видеостудия-конвертер
- Downloader - Даунлоадер
- FileCloud - Облачное хранилище
- Games-site - Ретро игровой портал
- ModManager - Мод-менеджер для игр
- SpeedTest - Спидтест
- YouTube - Видеохостинг с капчей
- 503 Error - Страницы ошибок
Шаблоны находятся в /opt/caddy/html/
- Все службы запускаются в Docker контейнерах
- Caddy использует только локальные порты (127.0.0.1)
- Мониторинг слушает только localhost
- Cloudflare API Token сохраняется в
.envфайле (chmod 600) - Бэкап конфигурации создаётся автоматически при перезаписи
- Временные файлы гарантированно очищаются при любом завершении скрипта
Логи сохраняются в:
- Установка:
/var/log/remnanode-install.log(без ANSI-кодов) - Remnawave Node:
docker compose logsв/opt/remnanode - Caddy:
/opt/caddy/logs/ - Мониторинг:
journalctl -u <service-name>
Примеры просмотра логов:
cd /opt/remnanode && docker compose logscd /opt/caddy && docker compose logsjournalctl -u cadvisor -fjournalctl -u nodeexporter -fjournalctl -u vmagent -fsudo ./remnanode-install.sh --uninstallСкрипт удалит все компоненты и проверит что удаление прошло успешно. Docker volumes и Netbird не удаляются автоматически:
docker volume rm caddy_data caddy_config # Удалить Docker volumes
apt remove netbird # Удалить NetbirdПри возникновении проблем:
- Проверьте логи:
cat /var/log/remnanode-install.log - Проверьте логи служб
- Убедитесь что все порты свободны
- Проверьте доступность интернета
- Проверьте права доступа к файлам
MIT License
- Remnawave - за отличный проект
- Caddy - за простой веб-сервер
- Netbird - за mesh VPN
- VictoriaMetrics - за систему мониторинга
Версия скрипта: 3.0.0 Последнее обновление: 06.03.2026