Ghost in einem Incus Container betreiben

So, dann fange ich mal an mit diesem Blog hier, wie ist der entstanden ? Zuinächst braucht man ein laufendes Incussystem, dass ist jetzt etwas aufwändig für diesen Post, mache ich vielleicht später nochmal.

Dann braucht man einen Container, in dem die Software laufen soll, ich machte es mir einfach und habe eine Dockerinstallation genommen, da muss man wenig konfigurieren. Erst mal einen Dockerhost anlegen (ich nehme Alpine dafür, geht auch mit Debian, Ubuntu, etc.)

incus launch images:alpine/edge ghost

Ganz wichtig, wenn man plant, Docker im lxc-Container laufen zu lassen, nesting setzen:

incus config set ghost security.nesting true

Dann ein

incus shell ghost

und wir sind im Alpinecontainer, hier installieren wir erst mal Docker

apk add docker docker-compose
service docker start
rc-update add docker

Ich packe neue Dockersachen immer ins /opt Verzeichnis

cd /opt
mkdir ghost
cd ghost

Jetzt generieren wir ein docker-compose file, das den eigentlich ghost und eine Datenbank (mysql) enthält, das ist das schöne an Docker, solche zusamengesetzten Sachen werden im compose-file beschrieben und sind dort gut dokumentiert.

services:
 ghost:
   image: ghost:6-alpine
   restart: always
   ports:
     - 2368:2368
   environment:
     # see https://ghost.org/docs/config/#configuration-options
     database__client: mysql
     database__connection__host: db
     database__connection__user: root
     database__connection__password: PASSWORT
     database__connection__database: ghost
     url: https://blog.frischux.de
     #NODE_ENV: development
     mail__from: blog@frischux.de
     mail__transport: SMTP
     mail__options__host: 172.23.2.4
     mail__options__port: 465
     mail__options__auth__user: MY_EMAIL_ADDRESS
     mail__options__auth__pass: MY_EMAIL_PASSWORD
   volumes:
     - ./ghost-content:/var/lib/ghost/content
   networks:
     - ghost
 db:
   image: mysql:8.0
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: PASSWORT
   volumes:
     - ./mysql-data:/var/lib/mysql
   networks:
     - ghost
networks:
 ghost:

Wenn man das mit

docker compose up -d

startet, läüft ein lokales ghost auf Port 2368.

Das muss jetzt noch mit dem grossen weiten Internet verbunden werden, das mache ich allerdings woanders, also erst mal ein raus aus dem ghost container und hinein in den caddy container, und dort das Caddyfile in /etc/caddy erweitert:

blog.frischux.de {
        reverse_proxy ghost.incus:2368
}

Und schon erstrahlt dieses Blog im Lichte des Internet ... Tada