Español
Empezar
← Todas las plantillas

Despliega Ghost en Pethost con un clic

Una plataforma de publicación para blogs y newsletters

Qué pasa

  1. Inicias sesión en Pethost o creas una cuenta, con una passkey, GitHub o Google.
  2. ¿Aún no tienes máquina? Eliges un plan y te preparamos una. El enlace espera en tu navegador hasta que esté lista.
  3. Nuevo proyecto se abre en la app, y haces clic en Crear proyecto.
  4. 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.
  5. 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

Crea la cuenta de propietario en /ghost; el primer inicio tarda alrededor de un minuto. Hazlo enseguida: hasta entonces la página está abierta para cualquiera que tenga la dirección. El correo funcionará cuando agregues las variables mail__ de Ghost al .env del proyecto y vuelvas a desplegar.

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:
  ghost:
    image: ghost:6-alpine
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    # Mail settings (mail__transport, mail__options__host, ...) go into .env.
    env_file: .env
    environment:
      url: ${URL}
      server__host: 0.0.0.0
      database__client: mysql
      database__connection__host: db
      database__connection__user: ghost
      database__connection__password: ${DB_PASSWORD}
      database__connection__database: ghost
      # Ghost emails a code to every new device that signs in. Without mail
      # that locks the owner out, so it is off. Remove this line once mail works.
      security__staffDeviceVerification: "false"
    volumes:
      - content:/var/lib/ghost/content

  db:
    image: mysql:8.4
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db:/var/lib/mysql
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
      interval: 5s
      timeout: 5s
      retries: 12
      start_period: 60s

volumes:
  content:
  db: