Eigene Domain und SSL-Zertifikat für Odoo
Kurz gesagt
Bei Odoo Online und Odoo.sh verbinden Sie eine eigene Domain über einen CNAME-Eintrag auf die Datenbankadresse; das HTTPS-Zertifikat erzeugt Odoo danach selbst über Let's Encrypt, für die nackte Domain aber nicht. Dort führt sie deshalb eine dauerhafte Weiterleitung auf Ihre Hauptadresse. Auf einem eigenen Server endet HTTPS in einem Reverse Proxy, das Zertifikat holt ein ACME-Client, und er kann auch die nackte Domain direkt bedienen. Der Ablauf hängt am Hostingmodell, nicht am Land.
Das Wichtigste
- Odoo Online und Odoo.sh erzeugen je zugeordneter Domain ein eigenes Let's-Encrypt-Zertifikat; für die nackte Domain entsteht keines, sie wird dort per dauerhafter Weiterleitung auf die Hauptadresse geführt, während ein eigener Server sie direkt mit einem eigenen Zertifikat bedienen kann.
- Der DNS-Eintrag ist ein CNAME auf die Datenbankadresse; Odoo.sh nimmt eine nackte Domain nicht an.
- Beim eigenen Server endet HTTPS in einem Reverse Proxy, und Odoo läuft im Proxy-Modus.
- Odoo prüft ein neues Zertifikat bis zu fünf Tage lang; die Erstellung kann bis zu 24 Stunden dauern.
- CAA-Einträge der Domain müssen Let's Encrypt erlauben, sonst schlägt die Erstellung fehl.
- Let's Encrypt stellt Standardzertifikate mit 90 Tagen Laufzeit aus und empfiehlt die Erneuerung nach 60 Tagen.
Was Sie vorab brauchen
- Die Domain und den Zugang zu ihren DNS-Einträgen. Zuständig ist die Registrierungsstelle, bei der Sie den Domainnamen gekauft haben; die DNS-Einträge können bei derselben Stelle oder bei einem anderen Anbieter liegen.
- Die Datenbankadresse Ihres Systems. Odoo Online und Odoo.sh nutzen standardmäßig eine Subdomain von odoo.com, zum Beispiel meinunternehmen.odoo.com.
- Ein Konto mit dem Zugriffsrecht Einstellungen in Ihrer Datenbank, sonst sehen Sie die Website-Einstellungen nicht.
- Beim eigenen Server: einen Reverse Proxy vor Odoo, den Proxy-Modus in der Odoo-Konfiguration, einen erreichbaren Port 80 und 443 sowie ein ACME-Client-Programm für die Zertifikate.
DNS und Zertifikat je Hostingmodell
Der Ablauf unterscheidet sich nur in zwei Punkten: wohin der DNS-Eintrag zeigt und wer das Zertifikat erneuert.
| Hostingmodell | DNS-Eintrag | Zertifikat | Erneuerung |
|---|---|---|---|
| Odoo Online | CNAME auf die Datenbankadresse, zum Beispiel meinunternehmen.odoo.com | Odoo erzeugt je zugeordneter Domain ein eigenes Zertifikat von Let’s Encrypt | automatisch durch Odoo; Erstellung bis 24 Stunden, Prüfversuche über fünf Tage |
| Odoo.sh | CNAME auf die Adresse der Produktionsdatenbank; eine nackte Domain wird nicht angenommen | Zertifikat von Let’s Encrypt, laut Dokumentation innerhalb einer Stunde | automatisch, sofern die Weiterleitung richtig gesetzt ist |
| Eigener Server (On-Premise) | A-Eintrag mit der IP-Adresse des Servers | Ihr eigenes Zertifikat, eingebunden im Reverse Proxy (ssl_certificate, ssl_certificate_key) | Ihr ACME-Client; Let’s Encrypt empfiehlt bei 90 Tagen Laufzeit die Erneuerung nach 60 Tagen |
Für die nackte Domain gilt bei Odoo Online und Odoo.sh eine Besonderheit: Odoo erstellt dafür kein Zertifikat, sie wird deshalb über eine Weiterleitung auf die Hauptadresse geführt. Ein eigener Server kann sie direkt bedienen.
Schritt für Schritt: Domain mit Odoo verbinden
Schritt 1: Datenbankadresse notieren
Notieren Sie die Adresse, unter der Ihre Datenbank erreichbar ist. Bei Odoo Online und Odoo.sh ist das standardmäßig eine Subdomain von odoo.com. Bei Odoo.sh steht die Hauptadresse des Projekts unter Einstellungen ‣ Projektname; für einen einzelnen Zweig finden Sie sie unter Zweige ‣ [Zweig] ‣ Einstellungen ‣ Benutzerdefinierte Domains, wo die Dokumentation auch angibt, auf welche Adresse Ihr CNAME-Eintrag zeigen soll. Beim eigenen Server ist es der Name, den Sie später als server_name in den Reverse Proxy eintragen, im Nginx-Beispiel der Dokumentation odoo.mycompany.com.
Ergebnis: Sie kennen die Zieladresse für den DNS-Eintrag.
Schritt 2: DNS-Eintrag anlegen
Legen Sie im DNS-Verwalter Ihrer Domain einen CNAME-Eintrag an, dessen Wert die Datenbankadresse ist. Bei Odoo Online ist das die Adresse, die bei der Erstellung der Datenbank vergeben wurde, bei Odoo.sh die Adresse der Produktionsdatenbank. Beim eigenen Server tragen Sie stattdessen einen A-Eintrag mit der IP-Adresse Ihres Servers ein; A-Einträge nehmen als Wert nur IP-Adressen an. Die Dokumentation nennt für DNS-Änderungen bis zu 72 Stunden, bis sie weltweit bei allen Servern angekommen sind.
Ergebnis: Der Name Ihrer Domain löst auf die Adresse Ihrer Odoo-Datenbank beziehungsweise Ihres Servers auf.
Schritt 3: Nackte Domain auf Ihre Hauptadresse umleiten
Eine nackte Domain ist ein Name ohne Subdomain, zum Beispiel ihrunternehmen.de. Bei Odoo Online und Odoo.sh erstellt Odoo dafür kein Zertifikat; die Dokumentation bezeichnet die Weiterleitung als empfohlenen Schritt und nennt sie erforderlich, damit Besucher die nackte Domain nutzen können: eine dauerhafte Weiterleitung (Statuscode 301) von http://ihrunternehmen.de und von https://ihrunternehmen.de auf Ihre Hauptadresse mit https, im Beispiel https://www.ihrunternehmen.de. Der Grund: Die nackte Domain lässt sich nur über einen A-Eintrag mit IP-Adresse konfigurieren; ein CNAME ist dort nicht möglich, und die IP-Adresse einer Odoo-Datenbank kann sich ändern. Ziel ist die Adresse, die Sie als Hauptadresse führen; die Dokumentation erlaubt dafür neben www auch andere Subdomains. Die Weiterleitung richten Sie dort ein, wo Ihre DNS-Einträge liegen; die Dokumentation weist darauf hin, dass nicht jeder DNS-Anbieter eine nackte Domain auf HTTPS umleitet, und verweist als Ausweg auf einen CDN-Anbieter. Beim eigenen Server ist sie nicht nötig: Dort können Sie ein Zertifikat für die nackte Domain selbst ausstellen.
Ergebnis: Bei Odoo Online und Odoo.sh führen beide Schreibweisen auf dieselbe Adresse mit https; beim eigenen Server ist die nackte Domain selbst erreichbar.
Schritt 4: Domain in Odoo hinterlegen
Bei Odoo Online öffnen Sie den Datenbankmanager, wählen den Datenbanknamen und dort den Bereich für Domainnamen (Domain Names). Dort ist die Adresse einzutragen, zu prüfen und ein zweites Mal zu bestätigen. Bei Odoo.sh gehen Sie auf Zweige ‣ [Zweig] ‣ Einstellungen ‣ Benutzerdefinierte Domains, geben die Domain ein und klicken Domain hinzufügen. Die beiden Dokumentationsseiten nennen unterschiedliche Reihenfolgen: Die Seite zu den Domainnamen warnt, die Domain erst nach dem CNAME-Eintrag zuzuordnen, weil die Zuordnung sonst die Zertifikatsprüfung verhindert; die Odoo.sh-Seite nennt das Hinzufügen der Domain zuerst. Entscheidend ist nicht die Reihenfolge, sondern dass der CNAME-Eintrag beim Prüfversuch steht: Odoo wiederholt die Prüfung fünf Tage lang. Beim eigenen Server entfällt dieser Schritt.
Ergebnis: Die Domain steht in Odoo in der Liste der benutzerdefinierten Domains.
Schritt 5: Domain an die Website binden
Ist die Website-App installiert, öffnen Sie Website ‣ Konfiguration ‣ Einstellungen und tragen im Feld Domain die vollständige Adresse mit https:// ein. Bei mehreren Websites wählen Sie zuerst die richtige Website aus. Diese Zuordnung ist nicht dasselbe wie die Zuordnung zur Datenbank: Sie legt die Domain als Hauptadresse der Website fest, damit Suchmaschinen die richtige Adresse indizieren, und macht sie zur Basis-URL für Portal-Links. Was auf der Website datenschutzrechtlich zu regeln ist, steht im Artikel Cookies und Datenschutz.
Ergebnis: Die Website-Adresse und die Basis-URL der Datenbank nennen Ihre Domain.
Schritt 6: Basis-URL ohne Website-App setzen
Ohne Website-App setzt die Datenbank ihre Basis-URL (web base URL) auf die Adresse, mit der sich ein Administrator anmeldet. Melden Sie sich deshalb einmal über die neue Domain an. Wollen Sie den automatischen Wechsel verhindern, setzen Sie im Entwicklermodus unter Einstellungen ‣ Technisch ‣ Systemparameter den Schlüssel web.base.url.freeze auf True. Den Wert web.base.url können Sie dort auch selbst eintragen: mit Protokoll und ohne Schrägstrich am Ende.
Ergebnis: Angebots- und Portal-Links tragen die neue Adresse.
Schritt 7: Zertifikat sicherstellen und HTTPS erzwingen
Bei Odoo Online und Odoo.sh entsteht das Zertifikat ohne Ihr Zutun. Prüfen Sie vorher die CAA-Einträge der Domain: Verbietet ein CAA-Eintrag Let’s Encrypt, schlägt die Erstellung fehl; ein Eintrag der Form 0 issue "letsencrypt.org" erlaubt sie. Beim eigenen Server holt ein ACME-Client das Zertifikat von der Zertifizierungsstelle und erneuert es später. Die HTTP-01-Prüfung liest dafür eine Datei unter http://ihre-domain/.well-known/acme-challenge/, braucht also Port 80; die DNS-01-Prüfung erwartet einen TXT-Eintrag unter _acme-challenge und kann auch Wildcard-Zertifikate ausstellen. Im Nginx-Beispiel der Dokumentation stehen Zertifikat und Schlüssel in ssl_certificate und ssl_certificate_key; für die Umleitung von http auf https und für den HSTS-Kopf (Strict-Transport-Security, “max-age=31536000; includeSubDomains”) sind fertige Zeilen abgedruckt.
Ergebnis: Die Adresse ist über https erreichbar, und der Browser zeigt keine Warnung.
So prüfen Sie das Ergebnis
- Rufen Sie Ihre Domain mit https:// auf und öffnen Sie die Zertifikatsinformationen des Browsers. Der Name im Zertifikat muss zu der Adresse passen, die Sie aufgerufen haben.
- Rufen Sie die Adresse zusätzlich einmal ohne www und einmal mit http:// auf. Bei Odoo Online und Odoo.sh müssen beide Aufrufe auf Ihrer Hauptadresse mit https enden, im Beispiel https://www.ihre-domain; auf einem eigenen Server muss die nackte Domain selbst ein gültiges Zertifikat vorweisen oder ebenfalls weiterleiten.
- Öffnen Sie ein Angebot oder einen Portal-Link aus Odoo und vergleichen Sie die Adresse darin mit Ihrer Domain. Steht dort noch die odoo.com-Adresse, fehlen Schritt 5 oder Schritt 6.
- Tragen Sie Ihre Domain in einen Zertifikatsprüfer ein und prüfen Sie, welche Zertifizierungsstelle ausgestellt hat und bis wann das Zertifikat gilt.
- Wiederholen Sie die Prüfung nach jeder DNS- oder Domänenänderung; die Dokumentation nennt bis zu 72 Stunden, bis ein Eintrag weltweit bei allen Servern angekommen ist.
Wenn etwas nicht klappt
| Symptom | Ursache nach Dokumentation | Abhilfe |
|---|---|---|
| Der Browser meldet eine Namensabweichung oder “Ihre Verbindung ist nicht privat” | Die Domain wurde in Odoo zugeordnet, bevor der CNAME-Eintrag im DNS stand; das Zertifikat passt deshalb noch nicht | CNAME-Eintrag prüfen, bis zu fünf Tage warten; danach ein Support-Ticket mit Screenshots der CNAME-Einträge |
| Bei Odoo Online oder Odoo.sh kommt für die nackte Domain keine verschlüsselte Verbindung zustande | Odoo erstellt für nackte Domains kein Zertifikat | Dauerhafte Weiterleitung der nackten Domain auf Ihre Hauptadresse einrichten; auf einem eigenen Server ein Zertifikat für den nackten Namen ausstellen lassen |
| Die Zertifikatserstellung bricht ab | Ein CAA-Eintrag der Domain erlaubt Let’s Encrypt nicht | CAA-Eintrag auf letsencrypt.org anpassen |
| Die Prüfung scheitert, obwohl der CNAME stimmt | Beim eigenen Server ist Port 80 gesperrt oder gefiltert; die HTTP-01-Prüfung kann die Datei unter http://ihre-domain/.well-known/acme-challenge/ nicht abrufen | Port 80 öffnen oder eine Prüfung wählen, die ohne ihn auskommt (DNS-01 oder TLS-ALPN-01 auf Port 443); Let’s Encrypt empfiehlt, Port 80 für Weiterleitungen offen zu lassen |
| Neue Zertifikate werden verweigert | Ihr ACME-Client stellt zu viele Zertifikate aus: 50 je registrierter Domain und 5 je gleicher Namenskombination in 7 Tagen. Erneuerungen über ARI sind von allen Limits ausgenommen; Erneuerungen, die Ihr Client nur über dieselbe Namenskombination erkennt, sind von der Grenze je registrierter Domain befreit, zählen aber weiter gegen die Grenze von 5 je gleicher Namenskombination | Tests gegen die Staging-Umgebung von Let’s Encrypt fahren und abwarten, bis sich das Kontingent wieder füllt; ein vorzeitiges Zurücksetzen bietet Let’s Encrypt nicht an |
| Die Domain zeigt weiter auf die alte Adresse | Die Dokumentation nennt für DNS-Änderungen bis zu 72 Stunden bis zur weltweiten Verteilung | Einträge und ihre TTL prüfen und abwarten |
Wann Sie Hilfe holen sollten
Ohne Zugriff auf die DNS-Verwaltung kommen Sie bei Schritt 2 nicht weiter; diesen Zugang sollten mindestens zwei Personen im Betrieb haben.
Leitet Ihr DNS-Anbieter eine nackte Domain bei Odoo Online oder Odoo.sh nicht auf HTTPS um, brauchen Sie eine Zwischenstufe davor; die Dokumentation verweist dafür auf einen CDN-Anbieter, dessen Einrichtung Sie mit Ihrem Dienstleister durchgehen. Auf einem eigenen Server deckt ein Zertifikat für die nackte Domain diesen Fall ab.
Beim eigenen Server gehören Reverse Proxy, Proxy-Modus und die HSTS-Kopfzeile in eine Wartungsprozedur: Ein HSTS-Eintrag zwingt jeden Besucher für ein Jahr auf HTTPS, und der Dienst muss in dieser Zeit jederzeit ein gültiges Zertifikat vorweisen. Prüfen Sie diese Konfiguration in einer Testumgebung, bevor Sie sie produktiv schalten. Wenn Sie das Hostingmodell wechseln, ändern sich Adresse und Zertifikatsweg; die Reihenfolge beschreibt der Artikel Hostingmodell wechseln.