Português
Começar
← Todos os templates

Faça o deploy de NodeBB no Pethost com um clique

Um fórum para a sua comunidade

O que acontece

  1. Você entra no Pethost ou cria uma conta, com uma passkey, GitHub ou Google.
  2. Ainda não tem máquina? Você escolhe um plano, e nós preparamos uma para você. O link espera no seu navegador até ela ficar pronta.
  3. Novo projeto abre no app. Você preenche o que ele pede e clica em Criar projeto: Senha do administrador.
  4. Em um ou dois minutos o app está no ar no próprio endereço com HTTPS. Os segredos dele são gerados ao acaso, e os dados vão para o backup noturno.
  5. É um projeto como qualquer outro: o compose.yaml, o .env, os logs e um terminal ficam no painel, e seu agente pode alterá-lo, fazer rollback ou restaurá-lo.

Primeiros passos

Entre como admin com a senha que você definiu; na primeira vez, o app monta o fórum e leva alguns minutos para iniciar. Qualquer pessoa pode se cadastrar: quem pode entrar é definido em Admin > Settings > Users. O e-mail, inclusive a redefinição de senha, funciona depois que um servidor SMTP é definido em Admin > Settings > Email.

O que roda

O template é este compose.yaml e as variáveis que ele grava no .env do projeto. O Pethost roda o arquivo exatamente como está escrito.

services:
  nodebb:
    image: ghcr.io/nodebb/nodebb:4.x
    restart: unless-stopped
    # The first start installs the forum with this admin, so the web installer the image would
    # open to whoever comes first never runs: without config.json the container exits instead.
    # NodeBB asks a terminal again for a password it refuses, so the setup has a time limit.
    entrypoint:
      - tini
      - --
      - sh
      - -ec
      - |
        if [ ! -f /opt/config/installed ]; then
          setup='{"trust_proxy": 1}' timeout 300 /usr/src/app/nodebb setup --config=/opt/config/config.json --skip-build
          test -f /opt/config/config.json
          touch /opt/config/installed
        fi
        test -f /opt/config/config.json
        exec entrypoint.sh
    environment:
      NODEBB_URL: ${URL}
      NODEBB_DB: redis
      NODEBB_DB_HOST: redis
      NODEBB_ADMIN_USERNAME: admin
      NODEBB_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      # Setup needs an address; it is stored as confirmed, and no mail is sent to it.
      NODEBB_ADMIN_EMAIL: [email protected]
    depends_on:
      redis:
        condition: service_healthy
    # Every folder the image declares as a volume; node_modules keeps the plugins installed later.
    volumes:
      - config:/opt/config
      - uploads:/usr/src/app/public/uploads
      - build:/usr/src/app/build
      - node_modules:/usr/src/app/node_modules

  # The forum's only database: every write goes to the append-only file.
  redis:
    image: redis:8-alpine
    restart: unless-stopped
    command: [redis-server, --appendonly, "yes", --loglevel, warning]
    volumes:
      - redis:/data
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep -q PONG"]
      interval: 5s
      timeout: 3s
      retries: 12

volumes:
  config:
  uploads:
  build:
  node_modules:
  redis: