Ghost is a popular, open-source blogging platform that is designed for simplicity and speed. Using Docker, you can easily deploy Ghost with a MySQL database and Traefik for reverse proxying and automatic SSL management. Whether you're hosting your blog on a Windows VPS UK or any other server provider, this guide will walk you through the steps of setting up Ghost with MySQL and Traefik using Docker.

Prerequisites

Before starting, ensure you have the following:

Step 1: Set Up Docker Compose File

Create a directory for your Ghost blog setup and navigate to it:

mkdir ghost-mysql-traefik
cd ghost-mysql-traefik

Create a docker-compose.yml file in this directory:

nano docker-compose.yml

Add the following configuration:

version: '3'

services:
  ghost:
    image: ghost:latest
    container_name: ghost-blog
    restart: always
    depends_on:
      - db
    environment:
      url: http://your-domain.com
      database__client: mysql
      database__connection__host: db
      database__connection__user: ghost
      database__connection__password: yourpassword
      database__connection__database: ghost
    volumes:
      - ./ghost/content:/var/lib/ghost/content
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.ghost.rule=Host(`your-domain.com`)"
      - "traefik.http.services.ghost.loadbalancer.server.port=2368"
    networks:
      - ghost-network

  db:
    image: mysql:5.7
    container_name: ghost-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: yourpassword
    volumes:
      - ./ghost/db:/var/lib/mysql
    networks:
      - ghost-network

  traefik:
    image: traefik:v2.3
    container_name: traefik
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=youremail@example.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
    networks:
      - ghost-network

networks:
  ghost-network:
    driver: bridge

Replace your-domain.com and yourpassword with your actual domain and password.

Step 2: Set Permissions for Docker Volumes

Ensure that the directories for Ghost content and MySQL data have the correct permissions:

mkdir -p ghost/content ghost/db letsencrypt
sudo chown -R 1000:1000 ghost/content ghost/db

Step 3: Launch the Docker Containers

Run the following command to start the Ghost, MySQL, and Traefik services:

docker-compose up -d

This will download the required images and set up your Ghost blog, MySQL database, and Traefik for reverse proxying and SSL management.

Step 4: Access Your Ghost Blog

Once the services are up and running, open your web browser and navigate to http://your-domain.com to access your Ghost blog. You will be greeted by the Ghost setup page, where you can create your admin account and configure your blog.

Step 5: Verify SSL with Traefik

Traefik automatically handles obtaining an SSL certificate from Let's Encrypt for your domain. To verify that SSL is working, visit https://your-domain.com in your browser, and check that the connection is secure.

Conclusion

By following these steps, you have successfully deployed a Ghost blog with MySQL and Traefik using Docker. Whether you're hosting your site on a Windows VPS UK, Windows VPS Italy, or another Windows Virtual Private Server Hosting solution, this setup ensures your Ghost blog is fast, secure, and easy to manage with Docker.

War diese Antwort hilfreich? 0 Benutzer fanden dies hilfreich (0 Stimmen)