Skip to main content

webshop

  1. Verzeichnisse anlegen:
# Auf der SSD
sudo mkdir -p /opt/shop

# Auf der HDD
sudo mkdir -p /mnt/hdd/shop/{uploads,database,backups}
sudo chown -R 33:33 /mnt/hdd/shop/uploads

2.docker-compose.yml erstellen: cd /opt/shop nano docker-compose.yml

version: '3.8'

services:
  db:
    image: mariadb:10.11-alpine
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: PASSWORT_1
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: PASSWORT_2
    volumes:
      - /mnt/hdd/shop/database:/var/lib/mysql
    networks:
      - shop-internal

  wordpress:
    image: wordpress:6.4-fpm-alpine
    restart: unless-stopped
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: PASSWORT_2
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_HOME', 'https://test.denode.eu');
        define('WP_SITEURL', 'https://test.denode.eu');
    volumes:
      - wordpress-core:/var/www/html
      - /mnt/hdd/shop/uploads:/var/www/html/wp-content/uploads
    networks:
      - shop-internal

  nginx:
    image: nginx:alpine
    restart: unless-stopped
    depends_on:
      - wordpress
    ports:
      - "3050:80"
    volumes:
      - wordpress-core:/var/www/html:ro
      - /mnt/hdd/shop/uploads:/var/www/html/wp-content/uploads:ro
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    networks:
      - shop-internal

volumes:
  wordpress-core:

networks:
  shop-internal:
  1. nginx.conf erstellen:
user nginx;
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;
    client_max_body_size 64M;

    upstream php {
        server wordpress:9000;
    }

    server {
        listen 80;
        server_name _;
        root /var/www/html;
        index index.php;

        location / {
            try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
            expires max;
            log_not_found off;
        }
    }
}
  1. docker compose up -d
  2. caddy config WordPress Installation:

Sprache: Deutsch Seiten-Titel: z.B. "Weihnachtsdeko Shop" Benutzername: Ein sicherer Admin-Name (NICHT "admin") Passwort: PASSWORT_3 (das dritte generierte) E-Mail: Eine gültige E-Mail-Adresse Haken bei "Suchmaschinen davon abhalten..." (für Testphase)

WooCommerce installieren: Nach dem Login:

Fertig! 🎉 Der Shop läuft jetzt unter https://test.denode.eu Nächste Schritte für deine Bekannte:

Theme auswählen (Appearance → Themes) Produkte anlegen (Produkte → Neu hinzufügen) Zahlungsarten konfigurieren (WooCommerce → Einstellungen → Zahlungen)