Despliega NodeBB en Pethost con un clic
Un foro para tu comunidad
Qué pasa
- Inicias sesión en Pethost o creas una cuenta, con una passkey, GitHub o Google.
- ¿Aún no tienes máquina? Eliges un plan y te preparamos una. El enlace espera en tu navegador hasta que esté lista.
- Nuevo proyecto se abre en la app. Rellenas lo que pide y haces clic en Crear proyecto: Contraseña de administrador.
- En un par de minutos la app está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar para ella, y sus datos entran en el backup de cada noche.
- Es un proyecto como cualquier otro: su compose.yaml, su .env, sus logs y un terminal están en el panel, y tu agente puede cambiarlo, volver a una versión anterior o restaurarlo.
Primeros pasos
Inicia sesión como admin con la contraseña que indicaste; el primer inicio construye el foro y tarda unos minutos. Cualquiera puede registrarse: quién puede unirse se define en Admin > Settings > Users. El correo, incluidos los restablecimientos de contraseña, funciona cuando se define un servidor SMTP en Admin > Settings > Email.
Qué ejecuta
La plantilla es este compose.yaml y las variables que escribe en el .env del proyecto. Pethost ejecuta el archivo tal 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: