Templates·Specs prontas pra deploy

8 templates,
copy-paste-deploy.

Specs com requisitos, env vars, ports e notes pra subir Next.js, Rails, Django, Laravel, Strapi, Ghost, Postgres e Valkey no seu cluster em minutos.

Web framework

Next.js

nextjs

Next.js standalone build (output: standalone). Substitui Vercel mantendo SSR/ISR.

Recursos
256 CPU · 512 MB
Imagem
node:20-alpine (multi-stage com next build)
Portas
3000
Env vars
DATABASE_URL, NEXT_PUBLIC_SITE_URL
Notas operacionais
  • ·Set output: "standalone" no next.config.js
  • ·Imagem final ~150 MB
  • ·ISR salva no disco do contêiner — cluster com 3 nós + sticky sessions ou shared volume

Rails

rails

Rails 7+ com Puma + assets precompiled. Com Sidekiq como worker separado.

Recursos
256 CPU · 512 MB
Imagem
ruby:3.3-slim com bootsnap precompiled
Portas
3000
Env vars
DATABASE_URL, REDIS_URL, RAILS_MASTER_KEY, SECRET_KEY_BASE
Notas operacionais
  • ·Worker Sidekiq como segundo job no cluster
  • ·Migrations via release container ou pre-deploy hook
  • ·Storage S3-compatible (Cloudflare R2) pra Active Storage

Django

django

Django + Gunicorn/Uvicorn. Celery worker como job separado.

Recursos
256 CPU · 512 MB
Imagem
python:3.12-slim com gunicorn
Portas
8000
Env vars
DATABASE_URL, REDIS_URL, DJANGO_SECRET_KEY, ALLOWED_HOSTS
Notas operacionais
  • ·collectstatic via release container
  • ·Static files servidos pelo roteador integrado (sem WhiteNoise)
  • ·Celery beat como job dedicado pra cron

Laravel

laravel

PHP 8.2+ FPM com nginx no mesmo container. Horizon como worker.

Recursos
256 CPU · 384 MB
Imagem
php:8.3-fpm-alpine + nginx
Portas
80
Env vars
DB_*, REDIS_HOST, APP_KEY, APP_URL
Notas operacionais
  • ·php artisan migrate via release container
  • ·Horizon worker em job separado
  • ·Storage Filesystem driver = s3 com R2 endpoint

CMS

Strapi

strapi

Strapi v5 headless CMS com Postgres. Admin UI + REST/GraphQL API.

Recursos
256 CPU · 1024 MB
Imagem
node:20-alpine com strapi build
Portas
1337
Env vars
DATABASE_URL, JWT_SECRET, API_TOKEN_SALT, ADMIN_JWT_SECRET
Notas operacionais
  • ·Postgres como job separado no cluster
  • ·Storage de mídia em S3-compatible
  • ·Build pesado (~5 min) — use multi-stage

Ghost

ghost

Blog/newsletter platform. Membership + paywall integrado.

Recursos
128 CPU · 384 MB
Imagem
ghost:5-alpine (oficial)
Portas
2368
Env vars
url, database__connection__*, mail__from
Notas operacionais
  • ·MySQL ou SQLite (single-node SQLite OK pra blog pequeno)
  • ·SMTP transacional (Resend/Postmark) pra newsletter
  • ·Themes em volume nomeado

Banco de dados

Postgres

postgres

Postgres 16 com pgbouncer + WAL archiving pra S3-compatible.

Recursos
256 CPU · 1024 MB
Imagem
postgres:16-alpine
Portas
5432
Env vars
POSTGRES_PASSWORD, POSTGRES_DB, WAL_ARCHIVE_S3_BUCKET
Notas operacionais
  • ·Volume nomeado replicado entre 3 nós
  • ·pg_basebackup semanal + WAL contínuo pra S3
  • ·pgbouncer como sidecar pra connection pooling
  • ·Replica streaming pra failover (segundo job)

Cache/Queue

Valkey (Redis-compat)

valkey

Cache/queue. Drop-in Redis replacement OSS (Linux Foundation fork).

Recursos
128 CPU · 256 MB
Imagem
valkey/valkey:7.2
Portas
6379
Env vars
VALKEY_PASSWORD
Notas operacionais
  • ·AOF persistence se uso é queue (Sidekiq, BullMQ)
  • ·maxmemory-policy allkeys-lru se uso é cache
  • ·Backup via RDB snapshot diário pra S3
  • ·Sentinel pra failover automático (segundo job)

Job spec exemplo (Next.js)

Cada template vira ~50 linhas de YAML. Copia, adapta nomes, image, env, e heroctl job submit nextjs.yaml.

job: nextjs-app
type: service

task_groups:
  - name: web
    count: 2
    tasks:
      - name: web
        driver: docker
        config:
          image: meu-registry/nextjs-app:v1
          ports:
            - { label: http, port: 3000 }
          env:
            DATABASE_URL: ${secret.database_url}
            NEXT_PUBLIC_SITE_URL: https://app.exemplo.com
        resources:
          cpu: 256
          memory_mb: 512

    ingress:
      host: app.exemplo.com
      port: http
      tls: true

update:
  max_parallel: 1
  min_healthy_time: 10
  healthy_deadline: 300
  auto_revert: true
  strategy: rolling

Mais templates a caminho.

FastAPI, NestJS, Phoenix, WordPress, Mastodon, Plausible — em backlog. Sugestões via email templates@heroctl.com.

Como fazer primeiro deploy