Polski
Zacznij
← Wszystkie szablony

Wdróż aplikację Ghost na Pethost jednym kliknięciem

Platforma do publikowania blogów i newsletterów

Co się dzieje

  1. Logujesz się do Pethost albo zakładasz konto, kluczem dostępu, przez GitHub albo Google.
  2. Nie masz jeszcze maszyny? Wybierasz plan, a my ją dla ciebie przygotowujemy. Link czeka w twojej przeglądarce, aż będzie gotowa.
  3. Okno „Nowy projekt” otwiera się na tej aplikacji, a ty klikasz „Utwórz projekt”.
  4. Za minutę czy dwie aplikacja działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
  5. To projekt jak każdy inny: jego compose.yaml, .env, logi i terminal są w panelu, a twój agent może go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.

Pierwsze kroki

Załóż konto właściciela pod adresem /ghost; pierwsze uruchomienie trwa około minuty. Zrób to od razu: do tego czasu strona jest otwarta dla każdego, kto zna adres. Wysyłka e-maili zadziała, gdy dodasz do pliku .env projektu zmienne mail__, których używa Ghost, i wdrożysz ponownie.

Co uruchamia

Szablon to ten compose.yaml i zmienne, które zapisuje do .env projektu. Pethost uruchamia plik dokładnie tak, jak jest napisany.

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: