NODEDC_TASKMANAGER/README_RUN_RU.md

17 KiB
Raw Permalink Blame History

Plane Community Edition для локального стенда NodeDC

Что развернуто

Локально поднят self-hosted стенд Plane Community Edition для macOS.

Состав:

  • self-host runtime: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app
  • локальный форк исходников для кастомизации: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
  • ветка форка: nodedc-ru-local
  • локальные image tags для UI: nodedc/plane-frontend:ru, nodedc/plane-admin:ru, nodedc/plane-space:ru
  • demo bootstrap-скрипт: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/scripts/bootstrap_nodedc_demo.py
  • demo asset для вложения: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/nodedc-document-request-template.txt
  • рабочий env-файл хранится в репозитории: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/plane.env
  • snapshot текущих volume-данных хранится в репозитории: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904

Используется именно open-source/community self-host путь через официальный setup.sh, без enterprise/commercial-фич.

Окружение

  • ОС: macOS
  • Архитектура: arm64 (Apple Silicon)
  • Shell: zsh
  • Bash: /bin/bash
  • Docker: Docker version 29.1.3
  • Docker Compose: Docker Compose version v5.0.0-desktop.1

Локальный URL

  • основной URL: http://localhost:8090
  • без домена и без SSL, как локальный PoC-стенд

Где что лежит

  • корень стенда: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
  • setup script: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/setup.sh
  • compose: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/docker-compose.yaml
  • env: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/plane.env
  • backup данных: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904
  • форк репозитория: /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src

Используемые env-файлы

Основной env-файл:

  • /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/plane.env

Текущий snapshot volume-данных:

  • /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/pgdata.tar.gz
  • /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/uploads.tar.gz
  • /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/rabbitmq_data.tar.gz
  • /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app/backup/20260418-1904/redisdata.tar.gz

Ключевые параметры для локалки:

  • WEB_URL=http://localhost:8090
  • LISTEN_HTTP_PORT=8090
  • LISTEN_HTTPS_PORT=8443
  • CORS_ALLOWED_ORIGINS=http://localhost:8090

Команды, которые реально применялись

Получение и запуск self-host runtime

mkdir -p /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
curl -fsSL -o setup.sh https://github.com/makeplane/plane/releases/latest/download/setup.sh
chmod +x setup.sh
./setup.sh install
./setup.sh start

Остановка и повторный запуск

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start

Логи

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh logs api
./setup.sh logs worker
./setup.sh logs web
./setup.sh logs admin
./setup.sh logs space
./setup.sh logs proxy

Клонирование исходников под форк

git clone --depth 1 --branch v1.3.0 https://github.com/makeplane/plane.git /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
git checkout -b nodedc-ru-local
pnpm install --frozen-lockfile

Проверка фронтовых пакетов после русификации

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
pnpm turbo run check:types --filter=web --filter=admin --filter=space --filter='@plane/i18n' --filter='@plane/ui'
pnpm turbo run check:types --filter=web --filter='@plane/i18n' --filter='@plane/utils'

Пересборка локального фронта после изменений русификации

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
docker build -t nodedc/plane-frontend:ru -f apps/web/Dockerfile.web .
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start

Пересборка всех UI-образов после ребрендинга NODE.DC

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src
docker build -t nodedc/plane-live:local -f apps/live/Dockerfile.live .
docker build -t nodedc/plane-frontend:ru -f apps/web/Dockerfile.web .
docker build -t nodedc/plane-admin:ru -f apps/admin/Dockerfile.admin .
docker build -t nodedc/plane-space:ru -f apps/space/Dockerfile.space .
cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start

Наполнение demo-данными

docker cp /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/nodedc-document-request-template.txt plane-app-api-1:/tmp/nodedc-document-request-template.txt
docker exec -i plane-app-api-1 python manage.py shell < /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/scripts/bootstrap_nodedc_demo.py

Команды эксплуатации

Старт

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh start

Стоп

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop

Рестарт

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh stop
./setup.sh start

Проверка контейнеров

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER
./setup.sh status

Если нужно смотреть контейнеры напрямую:

cd /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-app
docker compose --env-file plane.env ps

Важно:

  • для локального стенда безопаснее пользоваться именно ./setup.sh, а не голым docker compose
  • причина: host env может переопределить значения из plane.env; на практике это уже ломало DEBUG
  • если все-таки запускать compose напрямую, лучше делать это с --env-file plane.env и без конфликтующих env-переменных в shell

Тестовые учетные записи

Пароль для всех demo-пользователей:

NodeDC123!

Пользователи:

  • admin@nodedc.local
  • accountant@nodedc.local
  • manager@nodedc.local
  • docs@nodedc.local

Что создано в demo-данных

Workspace:

  • NodeDC (nodedc)

Проекты:

  • Бухгалтерия (BUH)
  • Менеджеры (MGR)
  • Запросы документов (DOC)

Demo work items:

  • адресная задача бухгалтеру
  • задача в общий контур менеджеров
  • задача на запрос документов
  • задача с дедлайном на согласование лимитов
  • задача с вложением в проекте запросов документов

Дополнительно:

  • создан сохраненный view Срочные документы
  • пользователям выставлен язык ru

Что пришлось чинить вручную

1. Официальный setup.sh в актуальном состоянии неустойчиво определял latest release

Проблема:

  • функция checkLatestRelease() ожидала формат JSON с пробелом после tag_name
  • GitHub API отдавал минифицированный JSON
  • в результате latest release мог не определяться корректно

Что сделано:

  • локально поправлен парсинг tag_name в /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/setup.sh

2. Хостовый env ломал запуск backend-контейнеров

Проблема:

  • в shell был DEBUG=release
  • compose-интерполяция подхватывала host env раньше, чем plane.env
  • api/worker/migrator падали с ошибкой преобразования DEBUG в integer

Что сделано:

  • в локальный setup.sh добавлена загрузка plane.env перед compose-командами
  • обертка запускает compose в предсказуемом env-контексте

3. /api/instances/ может показывать несвежие данные

Проблема:

  • endpoint отдает состояние не всегда синхронно после bootstrap

Что делалось на практике:

  • финальная проверка велась через БД и прикладные API workspace/project/issues

4. Баг на создании attachment в текущем релизе v1.3.0

Проблема:

  • legacy flow вложений упирался в S3Storage.file_overwrite
  • создание attachment через стандартный путь падало

Что сделано:

  • для demo bootstrap файл был загружен напрямую в MinIO через storage API
  • после этого вручную создан FileAsset для ISSUE_ATTACHMENT

5. Onboarding после signup не подходил под локальный контур NodeDC

Проблема:

  • штатный flow после регистрации вел пользователя через role, use case и create workspace
  • новые профили создавались backend-ом с language = en, поэтому первый onboarding-экран переключался на английский

Что сделано:

  • onboarding в apps/web упрощен до одного шага: Создайте профиль
  • после нажатия Начать автоматически создается персональное пустое workspace и пользователь сразу редиректится в него
  • backend-дефолт языка для новых профилей изменен на ru
  • добавлена migration db.0122_alter_profile_language

6. Product Tour на главной временно отключен

Проблема:

  • после входа в workspace Plane показывал отдельный welcome/product tour поверх главной страницы
  • для локального NodeDC PoC этот оверлей мешает первичному осмотру интерфейса

Что сделано:

  • сам код tour сохранен
  • показ временно отключен флагом в apps/web/core/components/home/root.tsx
  • для возврата достаточно снова включить локальный флаг IS_PRODUCT_TOUR_ENABLED
  • добавлена migration db.0123_force_profile_language_ru, которая переводит все существующие профили на ru

Русификация

Русификация делается в локальном форке /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/plane-src.

Базовый подход:

  • использована существующая структура @plane/i18n
  • ru сделан языком по умолчанию
  • fallback оставлен en
  • вынесены и переведены дополнительные строки, которые были захардкожены в web UI
  • отдельно локализованы даты и relative-time в packages/utils/src/datetime.ts
  • локализован дефолтный label группы All work items
  • живой smoke-test пройден для login, home, project issues, views, project settings и profile settings

Ребрендинг NODE.DC

Что дополнительно изменено поверх русификации:

  • пользовательский брендинг Plane заменен на NODE.DC в основных web/admin/space UI
  • логотипы PlaneLockup и PlaneLogo заменены на asset /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/logo.svg
  • с auth-экрана убраны Условия использования, Политика конфиденциальности и нижний маркетинговый блок
  • из основного web UI убраны GitHub CTA, help/question menu в top bar и badge Сообщество внизу sidebar
  • после регистрации оставлен только один onboarding-экран Создайте профиль; экраны role, use case и create workspace удалены из потока
  • product tour на главной странице временно отключен без удаления кода
  • для изменений были пересобраны локальные images nodedc/plane-frontend:ru, nodedc/plane-admin:ru, nodedc/plane-space:ru

Отдельный архитектурный обзор по точкам кастомизации:

  • /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/ARCH_REVIEW_NODEDC_RU.md

Повторная инициализация demo-данных

Если нужно повторно прогнать bootstrap после чистого разворачивания:

docker cp /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/demo-assets/nodedc-document-request-template.txt plane-app-api-1:/tmp/nodedc-document-request-template.txt
docker exec -i plane-app-api-1 python manage.py shell < /Users/dcconstructions/Downloads/mnt/data/dc_taskmanager/NODEDC_TASKMANAGER/scripts/bootstrap_nodedc_demo.py

Скрипт сделан как bootstrap для PoC-стенда, а не как production-migration.

Практические замечания

  • Это локальный технический стенд, не production.
  • Основа подходит для форка фронта и бэка: monorepo прозрачен, модели и API читаемы.
  • При следующем этапе кастомизации имеет смысл держать отдельно:
    • self-host runtime
    • форк plane-src
    • свои скрипты bootstrap/migrations рядом
  • На момент финальной проверки основная пользовательская зона UI уже русифицирована.
  • Остаточные англоязычные хвосты, которые еще видны на живом стенде:
    • Moscow Time в выборе часового пояса проекта
    • отдельные loader/accessibility строки вне основных экранов
    • часть admin/space интерфейсов не проходила такой же глубокий ручной аудит, как apps/web
  • Attachment flow релиза v1.3.0 нестабилен, поэтому demo-вложение создавалось обходным bootstrap-сценарием.