Odoo auf einem eigenen Server installieren
Kurz gesagt
Eine eigene Odoo-Installation braucht drei Schritte: Odoo als Paket oder aus dem Quellcode aufsetzen, PostgreSQL und ein eigenes Datenbankkonto einrichten, dann Konfigurationsdatei und Dienst starten. Die Dokumentation 20.0 nennt für das deb-Paket dieser Version Ubuntu Noble 24.04 LTS, für das rpm-Paket Fedora 42. Vor dem Zugriff aus dem Internet gehören HTTPS, ein Datenbankfilter und ein geändertes Administratorkonto dazu.
Das Wichtigste
- Ab Version 20 verlangt Odoo laut Dokumentation Python 3.12 oder neuer und PostgreSQL 16.0 oder neuer.
- Der Windows-Installer ist laut Dokumentation für Tests und Einzelplatz gedacht; von Produktivbetrieb auf Windows rät sie ab.
- Die Quellinstallation installiert Odoo nicht, sondern startet es mit odoo-bin aus dem Verzeichnis; nach einer Paketinstallation heißt das Programm odoo.
- Den Mehrprozess-Betrieb nennt die Dokumentation nur für Linux und Unix; einschalten lässt er sich über workers ungleich 0.
- Das deb-Paket der Community-Edition legt die Konfiguration unter /etc/odoo/odoo.conf ab; die Dokumentation nennt für Pakete /etc/odoo.conf.
- Odoo 20.0 erschien laut Release Notes im September 2026; der Standardsupport endet nach Anbieterangabe im September 2029 (geplant).
Ein frischer Server braucht mehr als ein Installationspaket: eine Datenbank, ein eigenes Dienstkonto, eine Konfigurationsdatei und einen Webserver davor. Die Dokumentation 20.0 (abgerufen am 14. Oktober 2026) beschreibt jeden Teil auf einer eigenen Seite; dieser Artikel bringt sie in die Reihenfolge für einen Linux-Server und nennt nach jedem Schritt den Prüfpunkt. Die Einrichtung gilt in Deutschland, Österreich und der Schweiz gleich.
Was Sie vorab brauchen
- Einen Linux-Server und einen Zugang mit Administratorrechten; die Distribution wählen Sie nach der Paketunterstützung in Schritt 1.
- Die Entscheidung zwischen Community und Enterprise: Enterprise-Pakete lassen sich laut Dokumentation nur als angemeldeter, zahlender On-Premise-Kunde oder als Partner herunterladen (Odoo Community oder Enterprise).
- PostgreSQL in der verlangten Mindestversion; bei der Paketinstallation genügt der Datenbankdienst auf demselben Rechner.
- Für die Quellinstallation zusätzlich Python, Git und die Systembibliotheken der Seite Quellen-Installation.
- Einen Domainnamen mit Zertifikat, wenn der Server aus dem Internet erreichbar sein soll (Eigene Domain und SSL-Zertifikat für Odoo).
- Einen Zeitpunkt für einen Neustart: Änderungen an der Konfigurationsdatei wirken erst danach.
Schritt für Schritt: Odoo auf einem Linux-Server einrichten
Schritt 1: Installationsweg und Version festlegen
Die Dokumentation nennt drei Wege und je Weg diese Plattformen:
| Plattform | Weg laut Dokumentation 20.0 | Was die Dokumentation dazu nennt |
|---|---|---|
| Debian, Ubuntu und weitere Debian-Distributionen | Paket (deb), Repository oder Distributionspaket | Das deb-Paket von Odoo 20 unterstützt Ubuntu Noble (24.04 LTS); PostgreSQL richten Sie vorher ein |
| Fedora, CentOS, RHEL und weitere RPM-Distributionen | Paket (rpm) | Das rpm-Paket von Odoo 20 unterstützt Fedora 42 |
| Windows | Paket (Installer) | Für Tests und Einzelplatz gedacht; von der Produktivbereitstellung rät die Dokumentation wegen Einschränkungen und Risiken ab |
| Linux, Windows, macOS | Quellinstallation | Odoo wird nicht installiert, sondern mit odoo-bin gestartet; mehrere Versionen lassen sich nebeneinander führen |
| Linux, als Container | Docker-Basis-Image | Die Dokumentation nennt das Image für Entwicklung und Bereitstellung |
Den Mehrprozess-Betrieb, den sie für die Produktion empfiehlt, nennt die Dokumentation für Linux und andere Unix-Systeme; unter Windows gibt es ihn nicht. Odoo 20 erschien laut Release Notes im September 2026; der Standardsupport läuft drei Jahre, für Odoo 20.0 also bis September 2029 (geplant). Ein Datenbank-Upgrade ist nach der Support-Übersicht nur auf eine Hauptversion vorgesehen, die noch im Standardsupport ist oder deren Standardsupport vor weniger als sechs Monaten endete; den Upgrade-Dienst der Anbieterin ordnet der Editionsvergleich der Enterprise-Edition zu (Odoo-Versionen: Support-Dauer und Upgrade-Rhythmus).
Schritt 2: PostgreSQL und ein eigenes Datenbankkonto vorbereiten
Odoo verbietet den Anschluss als postgres-Benutzer. Legen Sie in der Quellinstallation ein eigenes Konto an, das Datenbanken erstellen darf, aber kein Superuser ist:
sudo -u postgres createuser -d -R -S $USER
createdb $USER
Dabei steht $USER für den Unix-Anmeldenamen; weil das PostgreSQL-Konto denselben Namen trägt, ist laut Dokumentation eine Verbindung ohne Kennwort möglich. Ein Superuser ist nicht erlaubt; die Installationsprogramme legen selbst einen Benutzer odoo an. Die Erweiterung pg-vector für die KI-Funktionen setzt PostgreSQL ab Version 15 voraus. Fehlt wkhtmltopdf, ergänzen Sie es von Hand in Version 0.12.6, sonst fehlen Kopf- und Fußzeilen in Berichten.
Schritt 3: Odoo installieren
Für die Paketinstallation der Community-Edition richtet die Dokumentation ein Repository ein:
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/20.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt-get update && sudo apt-get install odoo
Für Enterprise-Pakete gibt es laut derselben Seite kein Nightly-Repository; Sie laden das Distributionspaket von der Downloadseite und installieren es mit apt oder dnf. Nightly-Pakete lassen sich laut Dokumentation nur schwer aktuell halten.
Die Quellinstallation installiert Odoo nicht, sondern startet es aus dem Verzeichnis. Community und Enterprise brauchen dabei nicht denselben Aufruf.
Für die Community-Edition genügt ein Repository:
git clone --branch 20.0 --single-branch https://github.com/odoo/odoo.git
cd odoo && sudo ./setup/debinstall.sh
python3 odoo-bin --addons-path=addons -d meine_db
Für die Enterprise-Edition gehören beide Repositorys in das Verzeichnis, und der Pfad der Enterprise-Module muss im Parameter addons-path vor den übrigen Pfaden stehen, sonst lädt Odoo sie nicht:
git clone --branch 20.0 --single-branch https://github.com/odoo/odoo.git
git clone --branch 20.0 --single-branch https://github.com/odoo/enterprise.git
cd odoo && sudo ./setup/debinstall.sh
python3 odoo-bin --addons-path=../enterprise,addons -d meine_db
Das Enterprise-Repository enthält nur die Zusatzmodule; das Hauptprogramm steht in der Community-Edition, deshalb sind für eine laufende Enterprise-Installation beide Verzeichnisse nötig. Im Beispiel liegen sie nebeneinander, und der Aufruf steht im Verzeichnis odoo. Laden Sie ausschließlich die Community-Edition, ist der Enterprise-Checkout entbehrlich. Das Skript setup/debinstall.sh liest die Steuerungsdatei des Pakets und installiert daraus die Systemabhängigkeiten. Der Weg über pip ist die Alternative, die dieselbe Seite mit einem Hinweis auf mögliche Sicherheitsprobleme und kaputte Abhängigkeiten versieht.
Schritt 4: Konfigurationsdatei anlegen
Die Dokumentation nennt als Standarddatei ~/.odoorc und als Ort der Paketinstallation /etc/odoo.conf. Im deb-Paket der Community-Edition liegt die Datei dagegen unter /etc/odoo/odoo.conf, und der Dienst startet mit dem Parameter –config auf diesen Pfad. Die Optionen stehen im Abschnitt [options]; die Namen entsprechen den Befehlszeilenoptionen, –db-filter wird zu dbfilter.
| Eintrag | Was er steuert |
|---|---|
| db_host, db_port, db_user, db_password | Zugang zur Datenbank; leer heißt Verbindung über den lokalen Socket |
| dbfilter | Auswahl der Datenbank über den Hostnamen; bei mehreren Datenbanken und der App Website verlangt die Dokumentation ihn |
| admin_passwd | Kennwort der Datenbankverwaltung; nur in der Konfigurationsdatei setzbar, zufällig erzeugt |
| list_db = False | verbirgt die Datenbankliste und den Zugang zu den Verwaltungsbildschirmen |
| workers | schaltet den Mehrprozess-Betrieb ein (nur Linux und Unix); 0 bedeutet Mehrfaden-Betrieb |
| proxy_mode = True | nur setzen, wenn ein Proxy davorsteht; Odoo verwendet dann dessen Kopfzeilen |
Zufälliges Kennwort der Dokumentation:
python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
Schritt 5: Dienst starten und Datenbank anlegen
Nach der Paketinstallation starten Sie den Dienst mit systemctl enable odoo und systemctl start odoo. Das deb-Paket der Community-Edition legt dabei den Systembenutzer odoo mit dem Home-Verzeichnis /var/lib/odoo an, registriert die PostgreSQL-Rolle odoo mit dem Recht, Datenbanken zu erstellen, und startet den Dienst mit dem Aufruf /usr/bin/odoo –config /etc/odoo/odoo.conf –logfile /var/log/odoo/odoo-server.log; der Dienst läuft also als Benutzer odoo und verwendet dessen Datenbankkonto. Bei der Quellinstallation läuft der Server im Vordergrund des Aufrufs aus Schritt 3.
Eine neue Datenbank legen Sie in der Kommandozeile an, ohne Demo-Daten. Nach einer Paketinstallation heißt das Programm odoo, nicht odoo-bin; rufen Sie es unter dem Dienstbenutzer und mit der Konfigurationsdatei des Dienstes auf, damit Datenbankkonto und Dateispeicher zum Dienst passen:
sudo -u odoo odoo db init meine_db --country DE --config /etc/odoo/odoo.conf
Bei der Quellinstallation bleibt es beim Aufruf aus dem Verzeichnis:
python3 odoo-bin db init meine_db --country DE
Der Unterbefehl nimmt den Ländercode für die Hauptgesellschaft, die Standardsprache (Vorgabe en_US) und für Demo-Daten den Schalter –with-demo. Auf einem Server mit Internetanschluss verlangt die Dokumentation, keine Demo-Daten zu installieren, weil sie bekannte Anmeldedaten mitbringen. Die Datenbankverwaltung erreichen Sie im Browser unter web/database/manager.
Schritt 6: Webserver mit HTTPS davorsetzen
Odoo überträgt Anmeldedaten im Klartext, solange kein HTTPS davorsteht. Setzen Sie einen Terminierungsproxy davor, richten Sie dort die Weiterleitung ein und schalten Sie in Odoo proxy_mode = True ein. Die Dokumentation zeigt die NGINX-Konfiguration mit zwei Upstreams: dem Dienst auf Port 8069 und dem LiveChat-Worker auf dem gevent-Port für alle Anfragen mit dem Pfad /websocket/; dazu kommen HSTS und der Hinweis, dass Odoo statische Dateien und Anhänge selbst ausliefert und sie für die Leistung auf Wunsch an den Webserver abgibt (X-Sendfile beziehungsweise X-Accel, dafür startet Odoo mit dem Schalter –x-sendfile). Anmeldungen protokolliert Odoo mit Ergebnis, Zielkonto und Quell-IP; dafür beschreibt dieselbe Seite einen fail2ban-Filter. Einzelheiten in Eigene Domain und SSL-Zertifikat für Odoo und Odoo-Server absichern.
Schritt 7: Aktualisieren und sichern
Eine Aktualisierung innerhalb derselben Version spielt die neueste Revision Ihrer Edition über die bestehende Installation; die Daten bleiben laut Dokumentation unverändert, solange PostgreSQL nicht entfernt wird. Beim Paket installieren Sie das neue Paket darüber. Bei einer Quellinstallation unterscheidet die Dokumentation zwei Fälle: Haben Sie den Quellcode als Archiv entpackt, ersetzen Sie das Installationsverzeichnis durch das entpackte neue Verzeichnis, behalten die Verzeichnisstruktur bei und übernehmen Ihre angepasste Konfigurationsdatei; haben Sie wie in Schritt 3 mit git geklont, aktualisieren Sie jedes Repository mit git fetch und git rebase –autostash. Nach beiden Wegen starten Sie den Dienst neu. Meldet der letzte Befehl Konflikte aus lokalen Änderungen am Quellcode, lösen Sie sie von Hand; git reset –hard verwirft sie. Die Dokumentation empfiehlt eine vollständige neue Version statt einzelner Patches und vorher eine Sicherung; bei den Cloud-Angeboten der Anbieterin laufen Aktualisierungen automatisch. Sichern Sie Datenbank und Dateispeicher täglich auf einen entfernten Rechner, der vom Server selbst nicht erreichbar ist (Odoo sichern: Backup-Strategie).
So prüfen Sie das Ergebnis
Starten Sie den Dienst nach jeder Änderung an der Konfigurationsdatei neu und prüfen Sie fünf Punkte: systemctl status odoo zeigt den Dienst als laufend, und im Protokoll steht die Zeile Modules loaded, die die Dokumentation als Zeichen eines erfolgreichen Starts nennt. Der Port 8069 antwortet auf dem Server selbst. Die Anmeldung ist nicht der Standardzugang admin/admin aus der Quellen-Installation; dieselbe Dokumentation verlangt ein starkes Kennwort und eine Anmeldung, die nicht admin heißt. Bei mehreren Datenbanken trifft der Datenbankfilter genau eine je Hostname, und list_db = False verbirgt die Datenbankliste. Die Seite ist über HTTPS erreichbar, und der LiveChat verbindet sich, weil /websocket/ am Proxy ankommt. Üben Sie Aktualisierung und Wiederherstellung vorher an einer Kopie der Datenbank (Testumgebung für Odoo).
Wenn etwas nicht klappt
| Symptom | Ursache | Lösung |
|---|---|---|
| Der Dienst startet nicht und das Protokoll nennt keine Datenbank | Falscher Datenbankbenutzer oder PostgreSQL läuft nicht | Zugang in der Konfigurationsdatei prüfen; der Benutzer darf kein Superuser sein, muss aber Datenbanken erstellen dürfen |
| Die Einstellungen wirken nicht | Dienst wurde nach der Änderung nicht neu gestartet | Dienst neu starten; die Dokumentation verlangt das ausdrücklich |
| Die Datei unter /etc/odoo.conf fehlt | Beim deb-Paket liegt sie unter /etc/odoo/odoo.conf | Pfad im Dienststart prüfen (–config) und diese Datei bearbeiten |
| Die Seite lädt ohne Formatierung | Der Webserver liefert die statischen Dateien aus, aber seine Pfadangaben passen nicht zu den Add-on-Pfaden der Installation; die Dokumentation nennt die Werte abhängig vom addons-path | root und try_files auf Ihre Add-on-Pfade abstimmen (die Dokumentation zeigt Beispiele für das deb-Paket und für Git-Quellen) oder die Auslieferung Odoo überlassen |
| Anhänge kommen nicht an | Odoo wurde mit dem Schalter –x-sendfile gestartet, aber die Abgabe an NGINX (X-Accel) ist nicht eingerichtet | Den internen Ort /web/filestore im Webserver ergänzen, wie die Dokumentation es für X-Accel zeigt, oder Odoo ohne –x-sendfile starten |
| Der LiveChat bricht ab | Anfragen mit dem Pfad /websocket/ erreichen den gevent-Port des LiveChat-Workers nicht | Weiterleitung im Proxy ergänzen; Odoo mit proxy_mode starten |
Wann Sie Hilfe holen sollten
Ein Datenbank-Upgrade auf eine andere Hauptversion läuft über den Upgrade-Dienst der Anbieterin; der Editionsvergleich führt Versionsupgrades nur bei Enterprise, und das Upgrade-Formular verlangt einen Enterprise-Abonnementcode. Planen Sie es mit Partner und Kopie der Datenbank; den Ablauf je Hostingmodell beschreibt Odoo auf eine neue Version heben: Ablauf, den Weg ohne Enterprise-Abonnement Odoo Community mit OpenUpgrade upgraden. Wie eigene Module auf den Server kommen, steht in Eigene Module einspielen; was vor dem ersten Arbeitstag offen sein sollte, in der Checkliste für den Produktivstart. Um Vereinbarungen für eine eigene Installation geht es in Auftragsverarbeitung bei Odoo.