# Installation

# installation via Docker

### Beschreibung:

Docker installation mit mariadb caddy und Wordpress natürlich

### Installation

Projektverzeichnis anlegen

```
mkdir /root/wordpress
```

Dort drin eine .env Datei anlegen

```
nano /root/wordpress/.env
```

Inhalt

```
# MariaDB Einstellungen
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpresspass

# Domain/Hostname für Caddy
CADDY_HOST=shop.example.com
```

Die docker compose Datei

```
nano /root/wordpress/docker-compose.yml
```

Inhalt

```
version: '3.8'

services:
  mariadb:
    image: mariadb:latest
    restart: always
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - mariadb
    environment:
      WORDPRESS_DB_HOST: mariadb:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
    volumes:
      - ./data/wordpress:/var/www/html
      - ./php.ini:/usr/local/etc/php/conf.d/custom.ini

  caddy:
    image: caddy:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
    command: caddy reverse-proxy --from ${CADDY_HOST} --to wordpress:80
    volumes:
      - ./data/caddy/data:/data
      - ./data/caddy/config:/config

```

nun noch die php.ini anlegen für 512MB uploads

```
nano /root/wordpress/php.ini
```

Inhalt

```
upload_max_filesize = 512M
post_max_size = 2048M

```

nun den Container starten

```
docker-compose up -d
```

### Nun noch die ufw Firewall regeln anpassen.

Da hier der Docker container sowieso von außen erreichbar sein soll, brauchen wir hier keine Anspassung für docker.  
Aber ssh soll nur auf der lokalen Netzwerkkarte zur Verfügung stehen

```
ufw allow in on enp6s18 to any port 22
ufw enable
```

### Cron Jobs richtig zum Laufen bringen Caddy Fehler:

Code Snippet hinzufügen über Plugin für die WP Cron Dienste um folgenden Fehler zu vermeiden  
Sie Seite Fehler: [cURL error 28: Operation timed out after 3000 milliseconds und Aktionsplaner: 90 überfällige Aktionen gefunden;](https://wiki.hacker-net.de/books/wordpress/page/curl-error-28-operation-timed-out-after-3000-milliseconds-und-aktionsplaner-90-uberfallige-aktionen-gefunden "cURL error 28: Operation timed out after 3000 milliseconds und Aktionsplaner: 90 überfällige Aktionen gefunden;")

# redis zu wordpress docker hinzufügen

### Beschreibung:

Sollte die Wordpress instanz ziemlich langsam laufen, kann man einen Redis Service mit zwischen packen.  
Unsere docker-compose Datei baut auf der ersten auf.  
Dann muss noch das Redis Cache Plugin installiert werden

### Einrichtung:

#### Docker-compose:

Die eigentlichen Änderungen

Einen Redis Service hinzufügen.

```
...
 redis:
    image: redis:alpine
    restart: always
...



im Wordpress service eine environment variable hinzufügen  WP_REDIS_HOST: redis
und depends on -redis hinzufügen
...
depends_on:
      - mariadb
      - redis
    environment:
      WORDPRESS_DB_HOST: mariadb:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
      WP_REDIS_HOST: redis
...
```

Hier nochmals unsere komplette docker compose Datei

```
version: '3.8'

services:
  mariadb:
    image: mariadb:latest
    restart: always
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

  redis:
    image: redis:alpine
    restart: always

  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - mariadb
      - redis
    environment:
      WORDPRESS_DB_HOST: mariadb:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
      WP_REDIS_HOST: redis
    volumes:
      - ./data/wordpress:/var/www/html
      - ./php.ini:/usr/local/etc/php/conf.d/custom.ini

  caddy:
    image: caddy:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
    command: caddy reverse-proxy --from ${CADDY_HOST} --to wordpress:80
    volumes:
      - ./data/caddy/data:/data
      - ./data/caddy/config:/config

```

#### Wordpressplugin aktivieren

Siehe Artikel Wordpress Redis Plugin : [Addon - Redis Cache](https://wiki.hacker-net.de/books/wordpress/page/addon-redis-cache "Addon - Redis Cache")

# Einstellungen Brutto Preise also inklusive MwSt anzeigen

### Beschreibung:

Standardmäßig sind die Artikelpreise Netto Preise + Steuer.  
Um dies zu ändern, in die Woocomerce Einstellungen gehen

Automated tax deaktivieren, dann speichern und nun kann Preise inklusive Steuern angegeben werden.

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/x9vx7ZSQlL1iqcEz-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/x9vx7ZSQlL1iqcEz-grafik.png)

Und Preise im Shop anzeigen Steuern eingeschlossen  
Preise Während Bestell Warenkorb und Bezahlvorgangs (Kasse) anzeigen Steuern eingeschlossen.

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/8xIs9nDvl136oYhY-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/8xIs9nDvl136oYhY-grafik.png)

Dann Auf der Seite Allgemein bei Einstellungen

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/13daw9OW0V48VUSa-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/13daw9OW0V48VUSa-grafik.png)

Dort unter Voreingestellter Ort für Kunden : Land Region des Stores

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/S5RDHNKZ9LUxwQTD-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/S5RDHNKZ9LUxwQTD-grafik.png)

fertig

# Kundenkonto erstellen unter mein Konto und beim bezahlen

Beschreibung:

Damit Kunden die Möglichkeit haben, Ihre Bestellungen zu speichern.  
müssen wir einstellen, das in Mein konto und beim Bezahlen die möglichkeit besteht ein kundenkonto anzulegen.

Dazu gehen wir unter Einstellungen -&gt; Konten und Datenschutz

Wir möchten nicht das Gäste kaufen können, da sonst die Käufe nicht in der Historie gespeichert sind. Also Haken raus.  
Durch Eingabe der Emailadresse wird dann automatisch ein Kundenkonto erstellt, da Gast Bestellung nicht möglich sind  
  
Anmeldung während des Bezahlvorgangs rein, damit vorhandene Kunden sich anmelden können. Haken rein

Kunden Konto Erstellung erlauben haken rein bei  
Beim bezahlen  
Auf der Seite mein Konto  
  
sonst wird kein Kundenkonto durch Emailadresse erstellt.  
  
Link zur Einrichtung des Passworts zusenden haken rein.

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/F7xNNSYxMp1pKBqX-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/F7xNNSYxMp1pKBqX-grafik.png)