Руководство по самостоятельному развертыванию

Разверните Expense Budget Tracker на собственном сервере с помощью Docker Compose и Postgres.

Требования

  • Docker и Docker Compose
  • Postgres 18 (определен в файле Compose)

Быстрый старт

git clone https://github.com/kirill-markin/expense-budget-tracker.git
cd expense-budget-tracker
cp .env.example .env
make up

Команда поднимает Postgres, применяет миграции и запускает:

  • веб-приложение по адресу http://localhost:3000
  • сервис авторизации по адресу http://localhost:8081
  • воркер валютных курсов в Docker Compose

Конфигурация

Скопируйте .env.example в .env и укажите:

  • MIGRATION_DATABASE_URL — строку подключения с ролью владельца, которую используют миграции
  • DATABASE_URL — строку подключения с ролью приложения для веб-процесса
  • AUTH_DATABASE_URL — строку подключения с ролью схемы авторизации для сервиса авторизации
  • AUTH_MODEnone для локального запуска, cognito для окружений, где вход выполняется по одноразовому коду из письма
  • AUTH_DOMAIN, COOKIE_DOMAIN, ALLOWED_REDIRECT_URIS — домен авторизации, домен cookie и список разрешенных URI перенаправления

Если AUTH_MODE=cognito, дополнительно укажите параметры Cognito и SESSION_ENCRYPTION_KEY из .env.example.

Обновление

git pull
make up

Docker Compose пересоберет сервисы и повторно применит миграции через контейнер migrate.

Развертывание в AWS

Продуктовый CDK-стек использует ECS Fargate, RDS, ALB, Cognito, API Gateway и Lambda. Он публикует следующие домены приложения:

  • app.<domain> — веб-приложение в ECS Fargate за ALB
  • auth.<domain> — сервис OTP и OAuth за ALB
  • api.<domain>/v1/* — REST API для программного доступа к SQL через API Gateway и Lambda
  • mcp.<domain>/mcp — размещенный MCP-сервис через отдельные HTTP API в API Gateway и MCP Lambda

Для собственного MCP-домена нужен публичный сертификат ACM на точное имя mcp.<domain>. Сохраните его проверочную CNAME-запись DNS для продления, передайте ARN сертификата в CDK-развертывание и CI и создайте DNS-запись mcp.* вместе с остальными публичными доменами.

Поддерживаемая последовательность и скрипты настройки описаны в обзоре развертывания и руководстве по AWS CDK в репозитории.