Umbraco 10 auf IONOS Windows Hosting
IONOS Windows Webhosting machte es möglich das Umbraco CMS ab 5,- € pro Monat in Deutschland zu hosten.
Diese Lösung ist zwar nicht besonders komfortabel zu verwalten verglichen mit einer Umbraco Cloud Lösung.
Die kostet allerdings 32,- € zuzüglich eventueller Kosten für eine Domain.
Dafür bietet das IONOS Hosting den Vorteil, dass alle Daten in den Rechenzentren eines deutschen Unternehmens bleiben.
IONOS empfiehlt zwar der Pro-Paket für 12,- € pro Monat, aber für eine einfache Verwendung genügt auch das Essential Paket.
Achtung: Zum Zeitpunkt dieses Artikels unterstützt IONOS nur .Net 6 (LTS). Umbraco 11.x setzt jedoch bereits .Net 7 voraus!
Wie es funktioniert
Nachfolgend beschreibe ich einen möglichen Weg das Umbraco CMS bei IONOS zu hosten. Ich beginne damit eine lokale Umgebung aufzusetzen. Ich verwende dafür das kostenlose Visual Studio 2022 Community und die Developer Edition des SQL-Server 2019. Für den FTP-Upload der Dateien benutze ich das ebenfalls kostenlose FileZilla.
Wie man eine Umbraco CMS Website anlegt, konfiguriert und in den lokalen IIS bereitstellt, beschreibe ich hier nicht weiter und verweise auf die offizielle Dokumentation (in Englisch).
Ausgangspunkt für meine Live-Umgebung bei IONOS ist das Verzeichnis im lokalen IIS sowie die lokale Datenbank, die via Backup-Datei in die Live-Datenbank importiert wird.
Nachdem buchen des Windows Webhosting Paketes der Wahl z. B. Essential, kann man über Hosting die notwendigen Einstellungen vornehmen.
Im Bereich Domain & SSL kann man die Einstellungen der inklusive Domain samt SSL-Zertifikat und Subdomains verwalten. Es handelt sich bei dem SSL-Zertifikat um eine Wildcard-Version, die auch für Subdomains gilt.
E-Mails kann man ebenfalls für die Domain anlegen. Im Essential Packet stehen 10 echte Postfächer und unbegrenzte Weiterleitungen zu Verfügung.
Hosting-Übersicht
Es empfiehlt sich einen FTP-Benutzer anzulegen, um die Web-Dateien hochzuladen. Dafür muss man allerdings zuerst z. B. mit den WebFiles ein Verzeichnis anlegen. Das Werkzeug WebFiles findet man im Bereich Webspace.
Eine MSSQL-Datenbank wird ebenfalls benötigt. Hier kann eine Backup-Datei importiert und exportiert werden.
WebFiles
Mit dem online IONOS Werkzeug WebFiles kann man Verzeichnisse anlegen und Dateien hochladen. Diese Werkzeug ist allerdings recht langsam und für den Upload der recht zahlreichen Dateien einer Umbraco Website, empfehle ich ein FTP-Programm wie z. B. FileZilla.
Für meine Umbraco Instanz habe ich das Verzeichnis /cms angelegt. Dieses verbinde ich mit der Domain und eine passende FTP-Verbindung richtet ich ebenfalls ein.
Das Verzeichnis /_db_import benutze ich zum Hochladen der Datenbank Backup-Datei (*.bak) direkt in WebFiles. Da ich die Datenbank ohnehin nur über die Online-Tools verwalten kann, verzichte ich auf eine FTP-Verbindung.
app_offline.htm
Befindet sich eine app_offline.htm Datei im root-Verzeichnis einer Website, dann wird der Application Pool beendet und es wird lediglich der Inhalt diese Datei an Browser ausgeliefert. Das ist auch der Grund, warum diese Datei keine Bilder der gleichen Website anzeigen kann (es sei denn die Bilddaten stehen inline in der app_offline.htm).
Da die Umbraco Funktionalität auf einem Zusammenspiel von Dateien (DLLs, Views etc) und der Datenbank beruht, ist es hilfreich, diese komplette abzuschalten und mögliche Benutzer über diese Wartungsarbeiten zu informieren. Auf diese Weise lassen sich auch alle DLLs problemlos überschreiben und die Datenbank kann ungehindert bearbeitet werden.
appsettings.json
Man kann mehrere Variationen der appsettings.json wie z. B. appsettings.Development.json, appsettings.Production.json verwenden, um unterschiedliche Umgebungen zu konfigurieren. In der web.config stellt man dann ein, um welche Umgebung es sich handelt. Der entsprechende Abschnitt sieht dann z. B. so aus:
...
<aspNetCore processPath="dotnet" arguments=".\Cms.Ukontor.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>
...
In der Datei appsettings.Production.json nimmt man nur die Änderungen bzw. Ergänzungen zur appsettings.json für die IONOS-Umgebung auf und stellt sie nur dort bereit. Die web.config lädt man auch nur einmal herunter, nimmt die Erweiterung wie oben vor und lädt sie wieder hoch. In der üblichen Umbraco-Lösung sind weder web.config noch appsettings.Production.json vorhanden, landen also auch nicht im Repository.
Mehrere Domains
Die IONOS-Lösung lässt es auch nicht zu mehrere Domains mit einer Website zu verbinden. Was aber bei diesem Preis nachvollziehbar ist.
Umgebungen abgleichen
Eine der schwierigsten Aufgaben in wohl jedem CMS besteht im Abgleich unterschiedlicher Umgebungen. Umbraco Cloud verwendet dafür Umbraco Deploy. Umbraco Deploy ist seit Mitte 2022 zwar auch als eigenständiges Produkt verfügbar. Der Preis schließt es allerdings von einer Billiglösung, die wir hier betrachten, aus. Allerdings gibt es das kostenlose Paket uSync, das für eine einfache Website ausreicht. Lesen Sie mehr in meinen Artikel: uSync all the Things