Ga naar hoofdinhoud

Odoo installeren op een Linux Server - Run je eigen Open Source ERP en CRM

De ideale producten voor deze handleiding

Begin meteen — bestel het passende product en volg deze handleiding stap voor stap.

Introductie

Odoo is een modulair open-source platform dat Enterprise Resource Planning (ERP) en Customer Relationship Management (CRM) functies combineert. Het stelt bedrijven in staat om processen zoals boekhouding, voorraadbeheer, projectmanagement en verkoop te beheren en te automatiseren vanuit één systeem.

Dankzij de flexibele uitbreidingen kan Odoo op maat worden gemaakt voor specifieke behoeften en biedt het een geïntegreerde oplossing voor het beheer van alle bedrijfsgebieden.

img

Overweeg je deze service zelf te hosten? We begeleiden je stap voor stap bij het opzetten en configureren, inclusief alles waar je op moet letten.

Odoo installeren met de One Click Apps Installer

Je kunt Odoo direct installeren via onze One Click Apps Installer in de VPS-webinterface. Na het voltooien van de initiële app-setup, open je de app-catalogus, zoek je naar Odoo en start je de deployment met je gewenste project-, omgeving- en domeininstellingen. Dit biedt een snelle en gebruiksvriendelijke manier om Odoo te deployen en beheren zonder handmatige command line setup, terwijl je profiteert van geïntegreerd webbeheer, ondersteuning voor custom domeinen en SSL provisioning waar beschikbaar.

Vereisten

Voordat je Odoo installeert, zorg dat je hostingomgeving aan de volgende eisen voldoet voor een soepele installatie en optimale prestaties.

HardwareMinimaalAanbevolen
CPU1 vCPU Core4 vCPU Cores
RAM1 GB4 GB
Schijfruimte15 GB25 GB

De software vereist dat alle benodigde dependencies geïnstalleerd zijn en dat het draait op een ondersteund besturingssysteem. Zorg 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 voorbereiden. Dit betekent het updaten van je besturingssysteem naar de nieuwste versie en het installeren van alle benodigde dependencies. Deze voorbereidingen zorgen voor een stabiele omgeving en helpen problemen tijdens of na de installatie te voorkomen.

Systeem updaten

Om te zorgen dat je systeem draait met de nieuwste software en beveiligingsupdates, voer je eerst altijd een systeemupdate uit. Gebruik hiervoor het volgende commando:

sudo apt update && sudo apt upgrade -y

Dit zorgt ervoor dat je systeem de nieuwste beveiligingspatches en softwareversies heeft voordat je verder gaat.

Dependencies installeren

Als de update klaar is, kun je de dependencies installeren. Odoo wordt gedraaid via Docker containers, dus Docker moet eerst geïnstalleerd worden. Gebruik hiervoor het volgende commando:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Een volledige walkthrough van het installatieproces en het gebruik 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 de host verwijzen. Als het domein bij ons wordt beheerd, kun je dit eenvoudig regelen via de EasyDNS optie.

Installatie

Nu aan alle vereisten is voldaan en de voorbereidingen zijn getroffen, kun je doorgaan met het installeren van de Odoo-applicatie.

Bij het werken met meerdere Docker-omgevingen is het slim om een duidelijke mappenstructuur aan te houden om projecten gescheiden te houden. Een veelgebruikte aanpak is een docker map aanmaken in de home directory van de gebruiker, met een aparte submap per domein. Zo kunnen meerdere projecten op dezelfde server draaien zonder configuratieconflicten.

Bijvoorbeeld, om de structuur voor het domein example.com voor te bereiden:

mkdir -p /docker/example.com
cd /docker/example.com

Binnen deze projectmap is het aan te raden submappen aan te maken die als volumes door de containers worden gemount. Deze volumes maken het mogelijk data te delen tussen services of persistent te houden. Een belangrijk voorbeeld is de gedeelde webroot, die zowel nginx als certbot nodig hebben om SSL-certificaten te genereren en te vernieuwen. Een geschikte structuur maak je zo 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 de 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 moet je TCP-poorten 80 (HTTP) en 443 (HTTPS) openzetten in de firewall. Deze poorten zijn essentieel omdat certbot poort 80 gebruikt voor HTTP-validatie en poort 443 nodig is voor versleuteld HTTPS-verkeer. Als UFW (Uncomplicated Firewall) actief is, voeg je de regels toe met:

sudo ufw allow http
sudo ufw allow https

Controleer daarna met sudo ufw status of de poorten openstaan. Zorg dat er geen andere firewallregels zijn die de toegang blokkeren, anders kan het genereren van certificaten of veilig HTTPS-verkeer mislukken.

Nginx configuratie

De nginx-configuratie begint 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. Voer uit: nano nginx/conf/example.com.conf en voeg de basisdirectieven toe, vervang example.com door je eigen domein:

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 voltooien 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. Gebruik:

sudo docker compose up -d db odoo nginx

De containers draaien nu op de achtergrond en nginx gebruikt de nieuwe configuratie, zodat certbot certificaten kan genereren in de volgende stap.

SSL-certificaten genereren

Voer het volgende commando uit om SSL-certificaten te maken met certbot. 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 om ervoor te zorgen dat je site alleen via HTTPS wordt geserveerd.

Vervang example.com door je eigen domeinnaam in de server_name directive en geef de juiste paden op 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 controleren of HTTPS actief is en de site correct wordt geladen.

Odoo Config Opties

Voor custom instellingen kun je een dedicated configuratiebestand voor Odoo aanmaken. Plaats een nieuw bestand op config/odoo.conf en voeg de 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 addons_path regel uncommenten en verwijzen naar de addons map die je eerder hebt aangemaakt. Voorbeeldconfiguratie:

[options]
list_db = False
proxy_mode = True
#addons_path = /mnt/extra-addons

Verwijder de -i base flag

De -i base flag moet verwijderd worden uit het compose.yml bestand, anders wordt de database opnieuw aangemaakt bij het herstarten van de Odoo-container. 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.

img

Dit laadt de startpagina van je nieuwe installatie. Voor de eerste login is er een standaardaccount met gebruikersnaam admin en wachtwoord admin. Wij raden sterk aan deze inloggegevens direct te wijzigen.

Conclusie en meer bronnen

Gefeliciteerd! Je hebt Odoo nu succesvol geïnstalleerd en geconfigureerd op je VPS/Dedicated Server. We raden je ook aan om onderstaande bronnen te bekijken, die je extra hulp en tips kunnen bieden tijdens je serverconfiguratie.

Heb je specifieke vragen die hier niet behandeld worden? Voor verdere vragen of hulp kun je altijd contact opnemen met onze support, die dagelijks voor je klaarstaat! 🙂