Ghost CMS einrichten mit Docker-compose

ghost cms Apr. 08, 2020

Wenn man bereits eine Ghost Installation besitzt muss man zuerst Ordner für das neue Setup erstellen und anschließend die bereits vorhandenen Dateien verschieben.
Zuerst alle Inhalte exportieren via Ghost Admin Seite. Siehe Bildergalerie und die alte Installation anschließend stoppen.

Für das gesamte Setup wird Docker sowie Docker-compose benötigt. Falls noch nicht vorhanden das zuerst installieren.

docker-compose installieren

sudo apt-get update
sudo apt-get install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Backup erstellen und alte Installation stoppen

cd /var/www/ghost
ghost stop

Nun werden alle Ordner erstellt die gebraucht werden und die Inhalte von der alten Installation verschoben. Benötigt wird der Content Ordner.

Ordner erstellen

mkdir -p /opt/ghost/content
mkdir -p /opt/ghost/mysql_db_data_container

mv /alter/installations/ort/content/* /opt/ghost/content
Ordner erstellen

Danach wird die Compose Datei erstellt und angepasst.

Compose Datei erstellen

cd /opt/ghost
vi docker-compose.yml
version: '3.1'

services:

  ghost:
    image: ghost:latest
    restart: always
    depends_on:
      - db
    ports:
      - 2368:2368
    volumes:
      - ./content:/var/lib/ghost/content
    environment:
      url: https://domain.tld
      # see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables
      database__client: mysql
      database__connection__host: db
      database__connection__user: ghost
      database__connection__password:  SecretPassword
      database__connection__database: ghostdb
    networks:
      ghost:

  db:
    image: mysql:5.7
    restart: always
    volumes:
      - ./mysql_db_data_container:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: SuperSecretPassword
      MYSQL_USER: ghost
      MYSQL_PASSWORD: SecretPassword
      MYSQL_DATABASE: ghostdb
    networks:
      ghost:
    ports:
      - 3306

networks:
  ghost:
Setup für Ghost im Container

https://paste.dasnetzundich.de/view/379c30c7#t0PWxWkkpYbNQba6rIPmi52Ar5HdjpGi

Anschließend wird der Container gestartet und nach dem Start auf der Administrationsseite ein neuer Nutzer erstellt und der gesamte Inhalt wieder importiert.

Wer es noch braucht, hier eine Nginx Konfiguration.

sudo vi /etc/nginx/sites-available/blog.conf
server {
    listen 80;
    listen [::]:80;

    server_name domain.tld;
    #root /var/www/ghost/system/nginx-root; # Used for  SSL verification ()

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;
        
    }

    location ~ /.well-known {
        allow all;
    }

    client_max_body_size 50m;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name domain.tld;
    ssl_certificate /etc/letsencrypt/domain.tld/fullchain.cer;
    ssl_certificate_key /etc/letsencrypt/;
    include /etc/nginx/snippets/ssl-params.conf;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;
        
    }

    location ~ /.well-known {
        allow all;
    }

    client_max_body_size 50m;
}
sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/blog.conf
sudo service nginx reload

Als Abschluss Nginx neu starten.


Das wars.......

Edit:

Habe festgestellt, das die Nutzer keine E-Mails bekommen konnten für eine etwaiges Abonnieren des Newsletters. Trotz korrekter Einstellung, war es nicht möglich E-Mails zu versenden. Bin nun wieder zurück auf das Setup direkt auf dem Host.

Kaffeespende

Comments powered by Talkyard.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließen Sie als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Sie haben sich erfolgreich angemeldet.
Erfolg! Ihr Konto ist vollständig aktiviert, Sie haben jetzt Zugang zu allen Inhalten.