Деплой на свой сервер
LaunchKit — обычное Next.js-приложение со standalone-сборкой, поэтому его можно задеплоить куда
угодно, где есть Docker. Это руководство описывает деплой на Coolify —
self-hosted PaaS поверх вашего собственного сервера (VPS), с автоматическим TLS через
Let's Encrypt и встроенным reverse-proxy (Traefik). Именно так задеплоен сам сайт документации,
который вы сейчас читаете.
Почему Coolify
- Разворачивается на любом сервере одной командой (
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash) — не требует управляемого облака. - Сам выпускает и продлевает TLS-сертификаты Let's Encrypt через встроенный Traefik.
- Деплой по git — Coolify клонирует репозиторий по SSH и собирает образ по
Dockerfileиз указанного пути. - Каждое приложение — изолированный Docker-контейнер за общим reverse-proxy.
1. Dockerfile
В корне репозитория уже есть готовый multi-stage Dockerfile:
FROM node:22-slim AS base
RUN corepack enable && corepack prepare pnpm@11.1.2 --activate
FROM base AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml* ./
RUN pnpm install --frozen-lockfile
FROM base AS build
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm db:generate
RUN pnpm build
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3000
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
COPY --from=build /app/public ./public
COPY --from=build --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=build --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=build --chown=nextjs:nodejs /app/prisma ./prisma
USER nextjs
EXPOSE 3000
CMD ["node", "server.js"]
Он рассчитан на output: 'standalone' в next.config.ts (уже включено в шаблоне) — итоговый
образ содержит только то, что реально нужно для запуска, без dev-зависимостей и без полного
node_modules.
2. Дать Coolify доступ к репозиторию
Coolify клонирует репозиторий по SSH. В своём GitLab/GitHub добавьте deploy key (публичный ключ, который сгенерирует/попросит Coolify при создании приложения) с правом чтения на нужный репозиторий.
3. Создать приложение в Coolify
В интерфейсе Coolify: New Resource → Application → Deploy from a Git repository, дальше:
| Поле | Значение |
|---|---|
| Repository | ваш git URL по SSH, например git@your-git-host:you/launchkit-core.git |
| Branch | main (или ваша боевая ветка) |
| Build Pack | Dockerfile |
| Dockerfile location | Dockerfile |
| Base directory | / (корень репозитория — контекст сборки) |
| Port | 3000 |
| Domain | https://your-domain.ru |
Coolify сам выпустит TLS-сертификат Let's Encrypt для указанного домена при первом успешном деплое, если A-запись домена уже указывает на IP сервера.
4. Переменные окружения
В разделе Environment Variables приложения задайте как минимум:
NODE_ENV=production
AUTH_SECRET=<сгенерируйте: npx auth secret>
AUTH_URL=https://your-domain.ru
NEXT_PUBLIC_APP_URL=https://your-domain.ru
DATABASE_URL=postgresql://user:password@host:5432/dbname
Плюс всё, что реально используете: REDIS_URL, AUTH_GOOGLE_ID/AUTH_GOOGLE_SECRET,
AUTH_YANDEX_ID/AUTH_YANDEX_SECRET, SMTP_*/EMAIL_FROM, PAYMENT_PROVIDER и ключи выбранного
платёжного провайдера (см. «Аутентификация», «Почта»,
«Платежи»). Ничего из .env не коммитится — все значения вводятся в
интерфейсе Coolify как секреты приложения.
Если база данных не поднята отдельно на том же сервере — самый простой вариант для старта:
создать в Coolify ресурс PostgreSQL (тот же интерфейс, отдельная кнопка «New Resource →
Database») и указать выданный им DATABASE_URL в переменных приложения.
5. Первый деплой и миграции
После первого успешного деплоя выполните миграции Prisma внутри контейнера (Coolify → приложение
→ Terminal, либо через docker exec на сервере):
pnpm db:deploy
db:deploy (prisma migrate deploy) применяет уже существующие миграции без интерактивных
вопросов — то, что нужно в проде, в отличие от db:migrate (prisma migrate dev), который
предназначен для разработки.
6. Проверка
curl -I https://your-domain.ru— должен вернуть200и валидный сертификат (issuer: Let's Encrypt).GET /api/health— health-check роут для мониторинга и правил Coolify «перезапустить при падении health-check».
Автодеплой и staging/prod
Coolify умеет автоматически передеплоивать приложение при пуше в указанную ветку (webhook от git-хостинга) — удобно для staging-окружения. Для боевого домена разумно оставить ручное подтверждение деплоя (Coolify поддерживает деплой по тегу/вручную), чтобы код, трогающий платежи или доступ пользователей, не попадал в прод без осознанного шага — так устроен деплой самого LaunchKit (staging-окружения автодеплоятся на push, прод — только по ручной промоции).
Логи и откат
Вкладка Logs приложения в Coolify показывает вывод сборки и рантайма в реальном времени — первое место для диагностики упавшего билда. Каждый деплой сохраняется в истории — при проблеме можно откатиться на предыдущий успешный деплой одной кнопкой, не трогая git-историю.