Dedicated Server: Odoo (Open Source ERP en CRM) installeren op Linux
Deze handleiding is gemaakt met de volgende producten:
(Details kunnen verschillen bij producten van verschillende aanbieders, maar de hoofdconcepten blijven hetzelfde)
Introductie
Odoo is een modulair open-source platform dat Enterprise Resource Planning (ERP) en Customer Relationship Management (CRM) combineert. Het stelt bedrijven in staat om processen zoals boekhouding, voorraadbeheer, projectmanagement en sales vanuit één systeem te beheren en te automatiseren.
Met zijn flexibele uitbreidingen kan Odoo op maat worden gemaakt voor specifieke behoeften en biedt het een geïntegreerde oplossing voor het beheer van alle bedrijfsgebieden.
Overweeg je deze service zelf te hosten? We nemen je stap voor stap mee in het opzetten en configureren, inclusief alles wat je moet weten.
Vereisten
Voordat je Odoo installeert, zorg dat je hostingomgeving aan de volgende eisen voldoet voor een soepele installatie en optimale performance.
| Hardware | Minimaal | Aanbevolen |
|---|---|---|
| CPU | 1 vCPU Core | 4 vCPU Cores |
| RAM | 1 GB | 4 GB |
| Schijfruimte | 15 GB | 25 GB |
De software vereist dat alle benodigde dependencies geïnstalleerd zijn en dat het draait op een ondersteund besturingssysteem. Controleer dat je server aan de volgende eisen voldoet voordat je verder gaat met de installatie:
Dependencies: Docker
Besturingssysteem: Laatste versie van Ubuntu/Debian met ondersteuning voor Docker 26+
Zorg dat alle dependencies geïnstalleerd zijn en dat je de juiste OS-versie gebruikt om compatibiliteitsproblemen tijdens de installatie van Odoo te voorkomen.
Voorbereiding
Voordat je Odoo installeert, moet je je systeem klaarmaken. Dit betekent dat je het besturingssysteem bijwerkt naar de nieuwste versie en alle benodigde dependencies installeert. Deze voorbereidingen zorgen voor een stabiele omgeving en helpen problemen tijdens of na de installatie te voorkomen.
Systeem updaten
Om zeker te zijn dat je systeem draait met de nieuwste software en beveiligingsupdates, voer je eerst een systeemupdate uit. Gebruik hiervoor het volgende commando:
sudo apt update && sudo apt upgrade -y
Dit zorgt ervoor dat je systeem de laatste beveiligingspatches en softwareversies heeft voordat je verder gaat.
Dependencies installeren
Als de update klaar is, kun je de dependencies installeren. Odoo wordt gedraaid via meerdere Docker containers, dus Docker moet eerst geïnstalleerd worden. Gebruik hiervoor:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Een uitgebreide uitleg over het installeren en gebruiken van Docker vind je in onze Docker gids.
Domein configureren
Standaard draait Odoo op de host via poorten 80 (HTTP) en 443 (HTTPS). Stel een domein in met DNS-records die naar je host verwijzen. Als het domein bij ons beheerd wordt, kun je dit eenvoudig regelen via de EasyDNS optie.
Installatie
Nu aan alle vereisten is voldaan en de voorbereidingen zijn getroffen, kun je starten met het installeren van de Odoo applicatie.
Bij het werken met meerdere Docker-projecten is het slim om een duidelijke mappenstructuur aan te houden zodat projecten gescheiden blijven. Een veelgebruikte aanpak is een docker map in de home directory van de gebruiker aan te maken, met per domein een aparte submap. Zo kun je meerdere projecten op één server draaien zonder configuratieconflicten.
Voorbeeld om de structuur voor het domein example.com klaar te zetten:
mkdir -p /docker/example.com
cd /docker/example.com
Binnen deze projectmap is het aan te raden submappen te maken die als volumes door de containers worden gemount. Deze volumes zorgen ervoor dat data gedeeld of persistent blijft. Een belangrijk voorbeeld is de gedeelde webroot, die zowel nginx als certbot nodig hebben om SSL-certificaten te genereren en te vernieuwen. Maak de volgende structuur aan:
mkdir -p nginx/{conf,ssl,inc} config addons
Dit creëert aparte mappen voor nginx configuratie, SSL-certificaten, include-bestanden en Odoo-specifieke content zoals configs en addons.
Docker Compose aanmaken
Maak in je docker project een bestand compose.yml aan met nano compose.yml. Plak daar de volgende code in:
services:
db:
image: postgres:16
ports:
- "5432:5432"
environment:
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data
odoo:
image: odoo:18.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
command: odoo -d odoo_db -i base --db_user=odoo --db_password=odoo --db_host=db
nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/inc:/etc/nginx/inc
- ./nginx/ssl:/etc/nginx/ssl
- ./nginx/certbot/www:/var/www/certbot
- ./nginx/certbot/conf:/etc/letsencrypt
depends_on:
- odoo
certbot:
image: certbot/certbot
volumes:
- ./nginx/certbot/www:/var/www/certbot
- ./nginx/certbot/conf:/etc/letsencrypt
volumes:
odoo-db-data:
odoo-web-data:
Firewall
Voor een goede werking van nginx en certbot moeten TCP-poorten 80 (HTTP) en 443 (HTTPS) openstaan in de firewall. Certbot gebruikt poort 80 voor HTTP-validatie, en poort 443 is nodig voor versleuteld HTTPS-verkeer. Als je UFW (Uncomplicated Firewall) gebruikt, voeg je de regels toe met:
sudo ufw allow http
sudo ufw allow https
Controleer daarna met sudo ufw status of de poorten open zijn. Zorg dat geen andere firewallregels de toegang blokkeren, anders kan het genereren van certificaten of HTTPS-verkeer mislukken.
Nginx configuratie
Begin met het aanmaken van een configuratiebestand voor je domein. Maak in de map nginx/conf een nieuw bestand aan met de naam van je domein. Bijvoorbeeld:
nano nginx/conf/example.com.conf
Voeg de volgende basisconfiguratie toe, waarbij je example.com vervangt door je eigen domeinnaam:
server {
listen 80;
server_name example.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
Deze configuratie zorgt dat certbot de ACME challenge kan uitvoeren en geldige SSL-certificaten kan uitgeven. Ook worden alle HTTP-verzoeken doorgestuurd naar HTTPS.
Sla het bestand op en start de benodigde containers: database, Odoo en nginx:
sudo docker compose up -d db odoo nginx
De containers draaien nu op de achtergrond en nginx gebruikt direct de nieuwe configuratie, zodat certbot certificaten kan genereren.
SSL-certificaten genereren
Gebruik het volgende commando om met certbot SSL-certificaten aan te maken. Vervang example.com door je eigen domein en user@mail.com door je geldige e-mailadres:
sudo docker compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot -d example.com --email user@mail.com --agree-tos --no-eff-email
Maak daarna een dedicated DH-parameterbestand aan om de veiligheid van de cryptografische sleuteluitwisseling te versterken:
openssl dhparam -out nginx/ssl/dhparam.pem 2048
Maak nu het bestand ssl.conf aan met nano nginx/ssl/ssl.conf en voeg de volgende inhoud toe. Vervang example.com door je domein:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:prime256v1:secp384r1;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_dhparam "/etc/nginx/ssl/dhparam.pem";
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 1.0.0.1 valid=300s;
Configuratie
Nginx configuratie
Bewerk het nginx-configuratiebestand dat je eerder hebt aangemaakt en vervang de inhoud door onderstaande configuratie. Dit zorgt ervoor dat je site alleen via HTTPS bereikbaar is.
Vervang example.com in de server_name directive door je eigen domeinnaam en pas de paden aan naar je certificaatbestanden in ssl_certificate en ssl_certificate_key.
server {
listen 443 ssl;
http2 on;
server_name example.com;
# Mozilla's SSL instellingen includen
include /etc/nginx/ssl/ssl.conf;
# Certificaatpaden (zorg dat deze overeenkomen met je gemounte volumes)
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
#Gzip
include /etc/nginx/inc/gzip.conf;
# Proxy instellingen voor Odoo
location / {
proxy_pass http://odoo:8069;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_redirect off;
proxy_request_buffering off;
# Aanbevolen timeouts voor standaard requests
proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
send_timeout 60s;
}
# Cache statische bestanden
location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo:8069;
}
# Verhoog timeouts voor long polling
location /longpolling {
proxy_pass http://odoo:8069;
proxy_connect_timeout 60s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
}
location /websocket {
proxy_pass http://odoo:8069;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name example.com;
# Hiermee kan Certbot de challenge URL bereiken
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
Sla de wijzigingen op en pas de nieuwe instellingen toe door de nginx container te herstarten:
sudo docker compose restart nginx
Door te herstarten laadt nginx de nieuwe configuratie en begint direct met het bedienen van verzoeken volgens de nieuwe instellingen. Let op eventuele foutmeldingen tijdens het herstarten. Bij problemen kun je de logs bekijken met sudo docker compose logs nginx om configuratiefouten op te sporen. Als de container zonder fouten draait, bezoek dan je website om te checken of HTTPS actief is en alles werkt zoals verwacht.
Odoo Configuratie-opties
Wil je eigen instellingen toepassen? Maak dan een configuratiebestand aan voor Odoo. Plaats een nieuw bestand op config/odoo.conf en voeg je gewenste opties toe.
In dit bestand kun je handige parameters definiëren: list_db = False verbergt de databasekeuze op de loginpagina, proxy_mode = True geeft aan dat Odoo achter een reverse proxy draait, en als je custom addons wilt gebruiken, kun je de regel addons_path uitcommentariëren en verwijzen naar de addons map die je eerder hebt gemaakt. Voorbeeldconfiguratie:
[options]
list_db = False
proxy_mode = True
#addons_path = /mnt/extra-addons
Verwijder de -i base flag
De -i base flag moet uit het compose.yml bestand verwijderd worden, anders wordt de database telkens opnieuw aangemaakt als je de Odoo container herstart. Open het compose bestand met nano compose.yml en pas de commandoregel aan naar:
command: odoo -d odoo_db --db_user=odoo --db_password=odoo --db_host=db
Website bereiken
Als de installatie en configuratie klaar zijn en alle services draaien, kun je je website veilig bereiken door je domein in de browser in te voeren.
Dit opent de startpagina van je nieuwe installatie. Voor de eerste login is er een standaard account met gebruikersnaam admin en wachtwoord admin. Wij raden sterk aan deze inloggegevens direct te wijzigen.
Conclusie en extra bronnen
Gefeliciteerd! Je hebt Odoo succesvol geïnstalleerd en geconfigureerd op je Dedicated Server. We raden je ook aan onderstaande bronnen te bekijken, die je extra hulp en tips kunnen geven tijdens je serverconfiguratie:
- Odoo.com - Officiële website
- odoo.com/documentation/18.0/ - Odoo documentatie
Heb je nog vragen die hier niet beantwoord worden? Neem gerust contact op met onze support, die dagelijks voor je klaarstaat! 🙂