nellimonix/warp-config-generator-vercel
nellimonix/warp-config-generator-vercel has 1,057 GitHub stars and 50 forks. GitHot measured +1 stars in 24 hours and +5 in 7 days. Last checked 2026-11-11 01:33 UTC. Last push 2026-11-03.
WARP configuration generator with support for various deployment platforms (Vercel, Netlify, Cloudflare)
Measured star growth
- in 24h
- +1
- in 7 days
- +5
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalWARP Configuration Generator
Русский | English

Открытый генератор конфигов Cloudflare WARP (WireGuard / AmneziaWG / Clash / Throne / Nekoray / Husi / Karing / WireSock). Это публичная ветка — без капчи, без аналитики, без промо-блоков. Self-host friendly.
🚀 Быстрое развертывание
Docker (рекомендуется)
Готовый образ публикуется в GHCR при каждом пуше в master:
docker run -d --name warp-generator \
-p 3000:3000 \
--restart unless-stopped \
ghcr.io/nellimonix/warp-config-generator-vercel-public:latest
Откройте http://localhost:3000.
Docker — сборка локально
docker build -t warp-generator-public .
docker run -d -p 3000:3000 --name warp-generator warp-generator-public
docker-compose
services:
warp-generator:
image: ghcr.io/nellimonix/warp-config-generator-vercel-public:latest
container_name: warp-generator
ports:
- "3000:3000"
restart: unless-stopped
Vercel
- Или через CLI:
vercel deploy - Локально:
vercel dev
Netlify
- Или через CLI:
netlify deploy - Локально:
netlify dev
Cloudflare Workers
- Или через Wrangler:
wrangler deploy - Локально:
wrangler dev
Cloudflare Pages
Тот же wrangler.jsonc подходит для Pages со static export.
CLOUDFLARE_WORKERS=1 npm run build
npx wrangler pages deploy out --project-name=warp-generator
Либо подключите репозиторий в Cloudflare dashboard:
- Build command:
CLOUDFLARE_WORKERS=1 npm run build - Output directory:
out
🛠️ Локальная разработка
npm install
npm run dev # dev-сервер на :3000
npm run build # production-сборка
npm run start # запуск production-сборки
npm run lint
⚙️ Настройки генератора и API
Одинаковые параметры доступны в интерфейсе и в POST /api/generate:
| Параметр | Поведение и ограничения |
|---|---|
| Конечная точка | endpointRandom: true выбирает новый адрес и порт Cloudflare при каждой генерации. Для MASQUE используется отдельный пул адресов и портов. |
| Протокол Clash | clashProtocol принимает awg, masque или awg_masque. Комбинированный режим добавляет в конфиг переключаемые прокси AWG, MASQUE QUIC и MASQUE H2. |
| DNS | Провайдеры задаются в config/dns.ts. Общественные провайдеры отмечены символом •; при их выборе включается режим Все сайты, а выбранные сервисы сбрасываются, поскольку split tunneling не поддерживается. Неизвестный ID провайдера заменяется на Cloudflare DNS. |
| IPv6 | Включён по умолчанию. Отключение убирает IPv6 из адреса интерфейса, списка DNS и стандартного AllowedIPs для всех сайтов. |
| Исключить LAN | Доступно только в режиме Все сайты. Стандартные маршруты заменяются диапазонами публичных адресов, поэтому приватные и зарезервированные LAN-диапазоны остаются вне туннеля. |
| PersistentKeepalive | По умолчанию отключён. При включении с пустым полем интерфейс использует 25; API принимает целые числа от 1 до 65535 и не добавляет некорректные значения. Параметр выводится в конфиги WireGuard и WireSock. |
| Собственный I1 | Непустое значение очищается от пробелов по краям; его длина не должна превышать 253 символа, а внутри не должно быть пробелов. AmneziaWG WireGuard генерирует по нему QUIC-маску I1, а WireSock использует его как Id. При пустом или некорректном значении без ошибки выбирается встроенная случайная маска или домен. |
Пример запроса к локальному развертыванию:
curl -X POST http://localhost:3000/api/generate \
-H 'Content-Type: application/json' \
-d '{
"selectedServices": [],
"siteMode": "all",
"deviceType": "awg15",
"endpoint": "engage.cloudflareclient.com:4500",
"configFormat": "wireguard",
"dnsId": "cf",
"ipv6": false,
"excludeLan": true,
"persistentKeepalive": 25,
"customI1Domain": "google.com"
}'
Успешный ответ содержит success: true и объект content с полями
configBase64, qrCodeBase64, configFormat и fileName. Поле
configBase64 содержит конфигурацию в Base64, а qrCodeBase64 — data URL
изображения.
➕ Добавить новый сервис (приветствуется PR)
Режим «выбранные сайты» позволяет роутить через WARP только определённые сервисы. Чтобы добавить свой:
- Форкните репо и создайте ветку (например
feat/service-newsite). - Создайте
config/services/<ключ-сервиса>.json:{ "name": "Название сервиса", "icon": "FaIconName", "iconLibrary": "fa", "type": "new", "ips": "1.2.3.0/24, 5.6.7.0/24, ..." }name— видимое пользователю название.icon— имя иконки из react-icons. Проверьте что такая иконка есть в выбранной библиотеке.iconLibrary— одно из:fa,fa6,si,bi,md,riи т.д. (соответствует sub-пакету react-icons).type— опционально. Поставьте"new"чтобы показать бейдж «NEW».ips— CIDR-диапазоны через запятую. Используйте реальный ASN/IP-lookup: Cloudflare whois, BGP.tools, либоwhois -h whois.cymru.com " -v <ip>".
- НЕ редактируйте
worker/api-handler.jsиfunctions/api/generate.js. GitHub Action (build-ip-ranges) автоматически перегенерирует блокIP_RANGESв обоих файлах после мерджа вmasterи засинхронизирует новый сервис в веткуproduction. - Откройте PR в
master.
Локальная проверка ребилда
node scripts/build-ip-ranges.mjs
Читает config/services/*.json и переписывает блок // IP_RANGES:BEGIN ... // IP_RANGES:END в обоих файлах worker/functions. Можно запускать сколько угодно раз — идемпотентно.
Добавить DNS-провайдера
- Добавьте провайдера в
DNS_PROVIDERSвconfig/dns.ts: уникальныйid, отображаемыйlabel, массивы IPv4/IPv6 иisCommunity. - Укажите
isCommunity: true, если провайдер несовместим с маршрутизацией выбранных сайтов. Ограничение режима «Все сайты» проверяется и интерфейсом, и API. - Продублируйте запись во встроенных массивах
DNS_PROVIDERSвworker/api-handler.jsиfunctions/api/generate.js. В отличие от IP-диапазонов и I1-масок, для DNS-провайдеров пока нет автоматического скрипта синхронизации. - Перед открытием PR запустите
npm run build.
Docker и Vercel используют config/dns.ts напрямую, а Cloudflare Workers и
Netlify выполняют встроенные обработчики. Синхронизация всех трёх списков не
даёт провайдеру из статического интерфейса незаметно замениться на Cloudflare
DNS во время генерации.
Обновление стандартных I1-масок
lib/builders/shared.ts — источник масок, которые используются, если
собственный I1-домен не задан:
- Редактируйте только массив
I1_MASKSмежду маркерами// I1_MASKS:BEGINи// I1_MASKS:END. - Запустите
node scripts/build-i1-masks.mjs. - Закоммитьте с исходным изменением сгенерированные правки в
worker/api-handler.jsиfunctions/api/generate.js.
Скрипт проверяет маркеры и формат масок, обновляет оба встроенных обработчика
и является идемпотентным. Workflow build-i1-masks также запускается при
изменении исходника, скрипта или самого workflow в master и пересобирает
production-обработчики. Не редактируйте сгенерированные блоки I1 вручную.
📁 Структура проекта
├── app/
│ ├── layout.tsx Корневой layout (шрифт Geist, мета)
│ ├── page.tsx Серверный компонент — загрузка сервисов
│ ├── not-found.tsx Страница 404
│ └── api/generate/route.ts POST endpoint (генерация конфигов)
│
├── components/
│ ├── home-client.tsx Клиентская оболочка (табы, состояние)
│ ├── layout/
│ │ ├── topbar.tsx Логотип + навигация по табам
│ │ ├── sidebar.tsx GitHub + список серверов (sticky)
│ │ └── footer.tsx
│ ├── generator/
│ │ ├── config-selectors.tsx Кастомные дропдауны (формат, тип и пр.)
│ │ ├── advanced-settings.tsx IPv6, keepalive и собственный I1
│ │ ├── service-picker.tsx Сетка выбора сервисов
│ │ ├── result-panel.tsx Блок результата (скачать / копировать / QR)
│ │ ├── formats-tab.tsx Список поддерживаемых форматов
│ │ └── about-tab.tsx О проекте + совместимые клиенты
│ └── icons/ Резолвер иконок + флаги
│
├── config/
│ ├── services/ JSON-файлы — по одному на сервис (IP-диапазоны)
│ ├── services-loader.ts Автозагрузка всех JSON при старте
│ ├── dns.ts DNS-провайдеры и ограничения split tunnel
│ ├── endpoints.ts Endpoint-ы Cloudflare WARP
│ └── formats.ts Определения форматов конфигов
│
├── lib/
│ ├── builders/ По одному файлу на формат конфига
│ │ ├── wireguard.ts
│ │ ├── throne.ts
│ │ ├── clash.ts
│ │ ├── nekoray.ts
│ │ ├── husi.ts
│ │ ├── karing.ts
│ │ ├── wiresock.ts
│ │ ├── shared.ts Профили устройств и стандартные I1-маски
│ │ └── index.ts Диспетчер — buildConfig(format, params)
│ ├── warp-service.ts Оркестратор (ключи → CF → сборка → QR)
│ ├── quic.ts Генерация собственных QUIC I1-масок
│ ├── cloudflare-client.ts Регистрация через Cloudflare WARP API
│ ├── crypto.ts Генерация ключей (tweetnacl)
│ ├── qr-generator.ts QR через внешний API + SVG-заглушка
│ └── ip-ranges.ts Реэкспорт из services-loader
│
├── hooks/
│ ├── use-generator.ts Клиентская логика генерации
│ └── use-mobile.ts Хук адаптивности
│
├── scripts/
│ ├── build-ip-ranges.mjs Регенерация IP_RANGES в worker + functions
│ └── build-i1-masks.mjs Регенерация I1_MASKS в worker + functions
│
├── worker/ Cloudflare Workers runtime
├── functions/ Netlify Functions runtime
├── types/ TypeScript типы
├── styles/globals.css Дизайн-токены + тёмная тема
├── .github/workflows/ CI: Docker, IP_RANGES и I1_MASKS rebuild
├── Dockerfile Standalone production-сборка (public)
├── next.config.mjs
└── package.json
🔧 Конфигурация
Публичная сборка не требует переменных окружения. Генератор работает анонимно через публичный Cloudflare WARP API регистрации.
Режимы сборки
next.config.mjs переключает output по переменным окружения:
| Переменная | Output | Где используется |
|---|---|---|
DOCKER_BUILD=1 |
standalone |
Docker / Dokploy |
CLOUDFLARE_WORKERS / CF_PAGES |
export |
CF Workers / CF Pages |
| нет | по умолчанию | Vercel / Netlify |
🌐 Поддерживаемые платформы
| Платформа | Поддержка | Заметки |
|---|---|---|
| Docker (self-host) | ✅ Полная | Standalone-сервер Next.js |
| Vercel | ✅ Полная | Default runtime |
| Netlify | ✅ Полная | Edge functions |
| Cloudflare Workers | ✅ Полная | Static export + worker |
| Cloudflare Pages | ✅ Полная | Static export |
📄 Лицензия
MIT License — см. LICENCE
🤝 Вклад в развитие
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Создайте Pull Request
🔗 Зеркала / Альтернативные ссылки
- Telegram Bot: t.me/warp_generator_bot
- Основной сайт: warp4.llimonix.pw
- Vercel Mirror: warply4.vercel.app
- Netlify Mirror: getwarp3.netlify.app
- Cloudflare Mirror: warp.llimonix.workers.dev
- Telegram канал: ллимоникс </>
Star History
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,908 starspublic-apis/public-apis
A collective list of free APIs
498,301 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
453,150 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,369 stars