Dieses Dokument beschreibt die Migration bestehender Webspaces und MySQL/MariaDB-Datenbanken von IONOS Webhosting auf den Strato Dedicated Server sowie die Anpassung der DNS-Einträge.


1. DNS-Konfiguration bei IONOS

Damit der Web-Traffic (HTTP/HTTPS) sowie Subdomains auf den neuen Strato Dedicated Server geleitet werden, wurden die DNS-Records bei IONOS wie folgt angepasst:

1.1 Web-Records (Anpassen auf Strato IP)

  • Hauptdomain (@): Typ A | Hostname @ | Wert 82.165.96.51 (Alte IPv6 AAAA-Einträge von IONOS wurden entfernt, um Konflikte zu vermeiden)
  • WWW-Subdomain: Typ A | Hostname www | Wert 82.165.96.51
  • Service-Subdomains:
    • Typ A | Hostname git | Wert 82.165.96.51
    • Typ A | Hostname panel | Wert 82.165.96.51
    • Typ A | Hostname gameserver | Wert 82.165.96.51

1.2 Unveränderte Records (Mail & Verifikation)

  • E-Mail-Dienste (MX, TXT / SPF, DKIM CNAMEs): Bleiben unangetastet bei IONOS, um den laufenden E-Mail-Betrieb nicht zu unterbrechen.
  • Game/Service Verification (TXT): Bleiben für Drittanbieter-Validierungen (z. B. Hytale) aktiv.

2. Datenbank-Infrastruktur (web-mariadb)

Für alle Webseiten/Webspaces läuft ein isolierter MariaDB-Container unter /opt/containers/webspaces/db im internen proxy-net (ohne direkte Port-Freigabe nach außen).

2.1 Deployment

mkdir -p /opt/containers/webspaces/db
cd /opt/containers/webspaces/db

Erstelle die docker-compose.yml:

services:
  web-db:
    image: mariadb:10.11
    container_name: web-mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "DEIN_STARKES_ROOT_PASSWORT"
    volumes:
      - ./mysql_data:/var/lib/mysql
    networks:
      - proxy-net

networks:
  proxy-net:
    external: true

2.2 Datenbank-Import Workflow

  1. Datenbank und User in MariaDB anlegen:
docker exec -it web-mariadb mysql -u root -p
CREATE DATABASE meinedb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'meindbuser'@'%' IDENTIFIED BY 'STARKES_PASSWORT';
GRANT ALL PRIVILEGES ON meinedb.* TO 'meindbuser'@'%';
FLUSH PRIVILEGES;
EXIT;
  1. .sql-Dump aus Backup importieren:
docker exec -i web-mariadb mysql -u root -p'DEIN_ROOT_PASSWORT' meinedb < /path/to/backup.sql

3. Webspace Container & Nginx Proxy Manager

Jeder Webspace liegt isoliert unter /opt/containers/webspaces/<projektname>

Ordner für die Webseiten anlegen:

mkdir -p /opt/containers/webspaces/<projektname>/html

3.1 Beispiel-Setup (docker-compose.yml)

services:
  web:
    image: php:8.2-apache
    container_name: web-orbis-craft
    restart: unless-stopped
    volumes:
      - /opt/containers/webspaces/<projektname>/html:/var/www/html
    networks:
      - proxy-net

networks:
  proxy-net:
    external: true
- DB-Host in Webspace-Configs (z. B. `wp-config.php`): `web-mariadb` (über Docker DNS im `proxy-net`).

3.2 Routing & SSL im Nginx Proxy Manager

  1. Proxy Host anlegen:

    • Domain Names: orbis-craft.de, www.orbis-craft.de

    • Scheme: http

    • Forward Hostname / IP: web-orbis-craft (Container-Name)

    • Forward Port: 80

    • Aktiviere Block Common Exploits und Websockets Support.

  2. SSL Tab:

    • SSL Certificate: Request a new SSL Certificate (Let's Encrypt)

    • Aktiviere Force SSL und HTTP/2 Support.

4. Status-Checklist

  • [ ] DNS A-Records für @, www, git, panel und gameserver auf 82.165.96.51 gesetzt.
  • [ ] Alte IONOS AAAA-Records (IPv6) entfernt.
  • [ ] Shared-Datenbank web-mariadb gestartet und SQL-Dumps importiert.
  • [ ] Webspace-Dateien übertragen und Datenbank-Verbindungskonfiguration angepasst.
  • [ ] Kombiniertes Let's Encrypt SSL-Zertifikat für @ und www im NPM erfolgreich ausgestellt.
  • [ ] Webseiten sind verschlüsselt und erreichbar unter https://orbis-craft.de und https://www.orbis-craft.de.