Перейти к содержимому
Версия 1.0 ещё не выпущена; проект находится на стадии pre-MVP. См. возможности и ограничения версии 1.0.

Предпросмотр веб-установщика

Веб-установщик — мастер из четырёх шагов, который запускается на вашей машине. Ему нужно приложение Cloudflare OAuth, которое вы регистрируете и которым владеете. Dee Wan 1.0 не поставляется с таким приложением, поэтому веб-установщик не является поддерживаемым способом установки Dee Wan. Используйте установщик командной строки, описанный в руководстве Установка Dee Wan.

Без приложения OAuth мастер всё равно можно пройти с помощью npm run install:web:dry-run — он ничего не затрагивает. См. Предпросмотр мастера без обращения к Cloudflare.

Чем он отличается от установщика командной строки

Заголовок раздела «Чем он отличается от установщика командной строки»

Оба используют один и тот же движок установщика, файл конфигурации (backend/wrangler.jsonc) и журнал шагов.

Веб-установщик Установщик командной строки
Запуск npm run install:web npm run setup или npm run install:cms -- <verb>
Интерфейс Страница в браузере на 127.0.0.1, которую отдаёт ваша машина Вопросы в терминале или без вопросов с --yes
Учётные данные Cloudflare Вход через Cloudflare (OAuth), хранится в памяти на время сеанса API-токен, который вы создаёте, из окружения, .env или по запросу
Требуется Приложение Cloudflare OAuth (DEEWAN_CF_OAUTH_CLIENT_ID) API-токен Cloudflare с перечисленными правами
Правила ограничения частоты Не устанавливаются (вход не запрашивает доступ к WAF) Устанавливаются, если у токена есть Zone · Zone WAF · Edit
Планирование и скрипты Показывает, что будет создано, до установки plan, вывод --json и фиксированные коды выхода
Возобновление после остановки Кнопка Продолжить npm run install:cms -- resume или повторный запуск setup

Установщик читает client id OAuth из DEEWAN_CF_OAUTH_CLIENT_ID. Без него шаг Cloudflare показывает «Вход через Cloudflare нужно настроить.» и предлагает использовать установщик командной строки.

Окно терминала
npm run install:web

Сервер слушает только 127.0.0.1, на порту 8976, если не задан DEEWAN_INSTALL_PORT. Он выводит одну ссылку:

Dee Wan installer
Open this link. It is bound to this session and is not written to disk:
http://127.0.0.1:8976/?t=<session-token>

Токен в ссылке генерируется для этого запуска. Каждый запрос должен его содержать, поэтому другая страница или программа на той же машине не может управлять установщиком. Запрос без токена получает «This installer is bound to one session. Open the link printed in the terminal.» Когда закончите, нажмите Ctrl-C в терминале.

После входа Cloudflare возвращает браузер на http://127.0.0.1:<port>/oauth/cloudflare, и этот адрес должен в точности совпадать с адресом, зарегистрированным в приложении OAuth. DEEWAN_CF_OAUTH_REDIRECT его переопределяет.

На странице есть селектор Язык с английским, тайским, русским, испанским, французским и немецким. Язык, на котором вы устанавливаете, также становится языком по умолчанию первого сайта.

В мастере четыре шага: Сайт, Cloudflare, Администратор и Установка. Продолжить сохраняет текущий шаг перед переходом дальше, а Назад возвращает к предыдущему.

Веб-установщик, настройка сайта: установка на собственном домене

У вопроса Где это будет жить? два ответа:

  • На моём собственном домене: введите его в поле Ваш домен, например example.com.
  • На адресах, которые выдаёт Cloudflare: оставьте домен пустым.

Других вопросов на этом шаге нет. Имена инфраструктурных ресурсов и необязательные функции имеют рабочие значения по умолчанию. Их можно изменить на шаге «Установка».

Веб-установщик, настройка Cloudflare: подключение на текущий сеанс и выбранный тариф D1

  1. В разделе Подключить Cloudflare выберите Авторизовать Cloudflare. Cloudflare откроется в новой вкладке. Пока у вас есть несохранённые изменения, ссылка отключена («Сохраните настройки перед подключением.»).
  2. Подтвердите запрос. Вкладка покажет Connected и сообщит, что установщик хранит учётные данные Cloudflare только на этот сеанс. Закройте её и вернитесь в установщик, где карточка показывает Подключено только для этого сеанса.
  3. Выберите аккаунт в разделе Какой аккаунт Cloudflare и нажмите Использовать этот аккаунт. Если вам доступен только один аккаунт, он выбирается автоматически. Все создаваемые ресурсы оплачиваются с этого аккаунта.
  4. Выберите Тариф базы данных D1: Бесплатный или Платный. Cloudflare не даёт способа узнать, какой тариф у аккаунта, а два тарифа допускают разный объём хранимого контента, поэтому установщик спрашивает, а не угадывает.

Какие права запрашиваются? перечисляет точные области доступа Cloudflare, которые запрашивает вход. Они зависят от ваших ответов:

Когда Области доступа
Всегда account-settings.read, d1.write, workers-scripts.write, page.write, workers-r2.write
С собственным доменом zone.read, workers-routes.write
С собственным доменом и включённой настройкой DNS dns.write
С включённым Cloudflare Access access.write, access-acct.read

Область доступа WAF не запрашивается никогда. См. ограничение для посетителей в Шаге 4.

Если позже вы измените настройку, которая меняет нужный доступ, установщик сбросит старую авторизацию и сообщит «Сохранено. Это меняет требуемый доступ, поэтому подключите Cloudflare заново.»

Перейти дальше кнопкой «Продолжить» нельзя, пока Cloudflare не подключён и аккаунт не выбран.

Учётные данные хранятся в памяти установщика и не записываются на диск. Если срок их действия истечёт, страница сообщит «Подключение истекло. Подключитесь снова.» Повторная авторизация не затрагивает ничего из уже созданного.

В поле Электронная почта администратора введите один адрес. Первая ссылка для входа — ссылка активации — привязывается к нему. Активировать установку можно только с этим адресом.

Веб-установщик, проверка перед установкой: адреса и создаваемые ресурсы

Проверка перечисляет принятые вами решения: адрес, Планируемый адрес входа, Планируемый адрес сайта, аккаунт Cloudflare, тариф базы данных D1 и администратора. Будет создано перечисляет каждый шаг, который что-то создаст и ещё не выполнен.

Настроить инфраструктуру открывает остальные настройки:

Настройка По умолчанию
Где вы входите (поддомен админки) cms
Откуда читает ваш сайт (поддомен публичного API) content
Направить ваш домен на эту установку Включено. Нужен собственный домен.
Спрашивать вход Cloudflare перед админкой (Cloudflare Access) Выключено. Нужен собственный домен.
Ограничить, как часто один посетитель читает ваш контент Выключено. Нужен собственный домен. См. примечание ниже.
Имя службы (админский Worker) dee-wan-cms-backend
Имя проекта (проект Pages) dee-wan-cms
Ваш поддомен workers.dev Пусто. Используется для адреса публичного API, если у вас нет домена.
Сколько секунд хранить ответы сайта 0 — каждый запрос получает актуальный контент
Также подготовить бакет архивов для импорта из другой системы Выключено

Админке и сайту нужны разные поддомены. Если вы включаете Access, обратите внимание на два предупреждения на странице: каждому, кого вы приглашаете, также нужна запись в политике Cloudflare Access, а если приложение Access удалено или настроено неправильно, доступ теряют все. С включённым Access администратор сайта может связать почтовый домен или группу Access с ролью вместо приглашения каждого человека. Тот, кого Access пропускает с этим доменом или группой, получает аккаунт при первом входе. См. Люди и доступ.

Веб-установщик не устанавливает ограничение для посетителей. Настройка сохраняется (SETUP_PUBLIC_RATE_LIMIT в backend/wrangler.jsonc), но правило — это правило ограничения частоты Cloudflare WAF, а у входа веб-установщика нет доступа к WAF. Запуск сообщает, что правило не удалось установить, и продолжается. То же происходит с правилом ограничения частоты входа. Чтобы установить их, затем запустите npm run setup с API-токеном, в который входит Zone · Zone WAF · Edit (см. Учётные данные). Когда правило установлено, оно также ограничивает приватные чтения, включая сборку сайта, которая читает с одного IP-адреса.

В проверке также сказано, что отчёты об ошибках отправляются в проект Sentry команды Dee Wan, если у установки есть его адрес, встроенный в сборку или заданный секретом DEEWAN_SENTRY_DSN, а без адреса ничего не отправляется. В этой сборке адрес Sentry команды Dee Wan не встроен, поэтому в Dee Wan ничего не отправляется, пока не задан DEEWAN_SENTRY_DSN. До этого в разделе Установка → Отчёты об ошибках написано «В этой сборке нет адреса Dee Wan. Ничего не отправляется.» Отчёты никогда не содержат контент, значения форм, адреса электронной почты или учётные данные. Чтобы отправлять их в собственный проект Sentry, задайте секрет OPERATOR_SENTRY_DSN. Секрет принадлежит одному Worker: чтобы отправлялись и ошибки публичного Worker чтения, задайте любой из этих адресов и на нём (npx wrangler secret put <NAME> --config wrangler.public.jsonc). См. Секреты.

Если вы меняете настройку на этом шаге, основная кнопка становится Сохранить изменения. Когда всё сохранено, выберите Установить.

Установщик отказывается начинать запуск с настройками, которые вы не проверили. Если файл конфигурации изменился, пока страница была открыта, он сообщает «Настройки изменились, пока страница была открыта. Ничего не запущено. Проверьте их и повторите.»

Каждое сохранение записывает ваши ответы в backend/wrangler.jsonc (или в файл, указанный через --config) и сохраняет комментарии в нём. Если файла нет, создаётся новый. Выбор аккаунта записывает account_id. Файл находится в gitignore, потому что содержит ваши реальные значения. Веб-установщик не умеет редактировать конфигурацию wrangler.toml. Переведите её в wrangler.jsonc или используйте установщик командной строки.

Сам запуск установки — это движок командной строки: страница запускает install:cms apply (или resume) с --yes, передавая учётные данные Cloudflare из вашего входа. Он делает всё, что делает npm run setup и что позволяет доступ, полученный при входе, включая запись backend/wrangler.public.jsonc для публичного Worker чтения и backend/wrangler.intake.jsonc для Worker приёма форм.

Наблюдение за запуском, повтор и возобновление

Заголовок раздела «Наблюдение за запуском, повтор и возобновление»

Панель рядом с мастером показывает Что будет сделано до запуска, Ход выполнения во время него и Что сделано по завершении. Технические подробности показывают журнал установщика, из которого удалены учётные данные.

Пока идёт запуск, страница продолжает опрашивать установщик. Если перезагрузить её, она вернётся к запуску. Если она теряет связь с установщиком, то сообщает «Связь с установщиком потеряна. Он может продолжать работу — перезагрузите страницу.»

Если запуск остановился, панель сообщает, где («Остановлено на шаге: …»), и что делать дальше:

  • Если какие-то шаги были выполнены: «Прогресс сохранён. Продолжите, когда будете готовы.» Выберите Продолжить. Выполненные шаги не повторяются.
  • Если ничего не было создано: «Ничего не создано. Запустите установку снова, когда будете готовы.» Выберите Установить.

Запуск, после которого остались невыполненные шаги (код выхода 4, incomplete), отображается как «Не завершено», а не как успех. Проверьте журнал, исправьте то, что в нём названо, и продолжите.

Веб-установщик, завершение: выполненные шаги и действие создания администратора

Панель перечисляет Worker, адрес админки и адрес публичного API, которые ответили, а страница показывает Создать администратора. Кнопка открывает ссылку активации в новой вкладке, где вы выбираете любой настроенный способ входа. См. Активация установки.

Ссылка активации никогда не показывается в журнале. Страница предлагает её через эту кнопку, только пока ссылка действительна, и только один раз. Если ссылка истекла до того, как ею кто-то воспользовался, выберите Продолжить, чтобы создать новую, пока установка не активирована.

Предпросмотр мастера без обращения к Cloudflare

Заголовок раздела «Предпросмотр мастера без обращения к Cloudflare»
Окно терминала
npm run install:web:dry-run

Эта команда отдаёт ту же страницу для ознакомления, заменяя каждое внешнее действие. Конфигурация и журнал шагов находятся во временной папке, которая удаляется по Ctrl-C, поиск аккаунтов и запуск установки разыграны по сценарию, и ничего не доходит до Cloudflare. Сервер слушает порт 8978, если не задан DEEWAN_INSTALL_PORT. Вход завершается, когда вы открываете ссылку для входа, выведенную при старте. Не нажимайте Авторизовать Cloudflare — эта кнопка открывает Cloudflare с client id-заглушкой.

Веб-установщик сообщает, что порт занят. Порт слушает другой процесс, часто второй установщик. Закройте его или задайте в DEEWAN_INSTALL_PORT свободный порт. Ни в одном аккаунте ничего не создано. Зарегистрированный адрес перенаправления приложения OAuth должен соответствовать новому порту.

Страница сообщает «This installer is bound to one session.» Откройте ровно ту ссылку, которая выведена в терминале. Перезапущенный установщик выводит новую ссылку.

Шаг Cloudflare сообщает «Вход через Cloudflare нужно настроить.» DEEWAN_CF_OAUTH_CLIENT_ID не задан. Используйте установщик командной строки с API-токеном.

Веб-установщик не может прочитать или отредактировать конфигурацию. Он редактирует только wrangler.jsonc. Исправьте backend/wrangler.jsonc, если он повреждён, или переведите wrangler.toml в wrangler.jsonc, затем перезагрузите страницу.

О проблемах, общих с установщиком командной строки, например DOMAIN без DOMAIN_MODE или неопределённый шаг, см. Устранение неполадок.

Установите Dee Wan установщиком командной строки.


Стабильная версия ещё не выпущена (pre-MVP)
Коммит исходного кода: fe23db481c422b40e317b92fc98116b4c0c26a87 (с локальными изменениями)
Дата сборки (UTC): 2026-10-18T09:22:34.630Z
Коммит для обновления: не определён: в рабочей копии есть изменения. Примечания к выпуску