Автоматизированный скрипт для быстрой установки и настройки Remnawave Node, Caddy Selfsteal, Netbird VPN и мониторинга Grafana на Linux сервере для Remnawave Panel.
--update — обновление компонентов (docker pull, Xray-core, мониторинг) без изменения конфигов--diagnose — полная диагностика: Docker, контейнеры, порты, сертификаты, UFW, Netbird, мониторинг--change-template — смена HTML шаблона маскировки без переустановки Caddy--self-update — обновление самого скрипта до последней версии с GitHub--dry-run — показ плана установки без фактических изменений--export-config — экспорт текущей конфигурации для клонирования на другой сервер[1/8], [2/8]... для наглядности прогресса установкиsource, только известные переменные.env и docker-compose.yml при перезаписиcancel для отмены ввода SECRET_KEY и Netbird Setup Key--uninstallbash <(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.sh
Non-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):
Выберите зону для которой нужен сертификат
При установке выберите опцию "Wildcard сертификат" и введите токен
Скрипт автоматически:
При выборе "Перезаписать" для существующей установки скрипт автоматически создаёт бэкап:
/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:
Версии компонентов определяются автоматически через 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-update
sudo ./remnanode-install.sh --dry-run
sudo ./remnanode-install.sh --export-config
# или в указанный файл:
sudo ./remnanode-install.sh --export-config /path/to/config
Генерирует конфиг-файл из текущей установки для клонирования на другой сервер.
cd /opt/remnanode
docker compose logs -f # Просмотр логов
docker compose restart # Перезапуск
docker compose down # Остановка
docker compose up -d # Запуск
cd /opt/caddy
docker compose logs -f # Просмотр логов
docker compose restart # Перезапуск
docker compose down # Остановка
docker compose up -d # Запуск
netbird status # Статус подключения
netbird up # Подключение
netbird down # Отключение
systemctl status cadvisor # Статус cAdvisor
systemctl status nodeexporter # Статус Node Exporter
systemctl status vmagent # Статус VM Agent
Если пакетный менеджер заблокирован процессом обновления:
sudo killall unattended-upgr
sudo 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
Скрипт валидирует токен при вводе. Если токен не проходит проверку: 1. Убедитесь что токен имеет права: Zone / Zone / Read и Zone / DNS / Edit 2. Проверьте что выбрана правильная зона 3. Создайте новый токен если текущий истёк
Лог установки сохраняется в /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/
.env файле (chmod 600)$ claude mcp add remnanode-install \
-- python -m otcore.mcp_server <graph>