Odoo 16 ERP Software te installeren op Ubuntu 22.04

Odoo (voorheen bekend als OpenERP) is een zelf gehoste suite van meer dan 10.000 open Odoo is een gratis en open-source ERP oplossing voor meerdere soorten bedrijven. Het biedt relatiebeheer (CRM), verkooppijplijn, projectbeheer, productie, facturering, boekhouding, eCommerce en nog veel meer.

Odoo is een van de complete ERP-oplossingen voor je bedrijf. Het wordt standaard geleverd met 30 kernmodules en biedt meer dan 4500 gemeenschappelijke modules die je meerdere bedrijven kunnen helpen.

In deze tutorial zullen we de Odoo open-source ERP op de Ubuntu 22.04 server installeren. We installeren en configureren de laatste stabiele versie van Odoo 16, stellen de PostgreSQL database voor Odoo in, en stellen tenslotte Nginx in als reverse proxy voor de Odoo applicatie.

Voorwaarden

Om met deze tutorial te beginnen heb je de volgende vereisten nodig:

  • Een Ubuntu 22.04 server – Dit voorbeeld gebruikt een Ubuntu server met de hostnaam‘odoo-server‘.
  • Een niet-root gebruiker met sudo root/administrator privileges – of je kunt ook de root gebruiker gebruiken.
  • Een domeinnaam gericht naar het IP-adres van de server – voor productie heb je een domeinnaam nodig voor de Odoo-installatie.

Afhankelijkheden installeren

Om Odoo te installeren moet je eerst enkele pakketafhankelijkheden op je Ubuntu systeem installeren. Odoo ERP is een webapplicatie die voornamelijk in Python is geschreven, dus moet je ook enkele Python pakketten installeren.

Voordat je begint met het installeren van pakketten, voer je het volgende apt commando uit om je pakketindex bij te werken en te verversen.

sudo apt update

Installeer vervolgens pakketafhankelijkheden voor odoo via het volgende apt commando. Deze installatie omvat de laatste versie van Python 3.10, build-essentials voor het compileren van Python pakketten, en enkele bibliotheken die odoo nodig heeft.

sudo apt install git wget python3 build-essential libzip-dev python3-dev libxslt1-dev python3-pip libldap2-dev python3-wheel libsasl2-dev python3-venv python3-setuptools node-less libjpeg-dev xfonts-75dpi xfonts-base libxrender1 libpq-dev libffi-dev fontconfig

Voer y in om te bevestigen en druk op ENTER om verder te gaan. En de installatie begint.

afhankelijkheden installeren

Zodra Python en andere afhankelijkheden zijn geïnstalleerd, is de volgende stap het installeren van Node.js, dat gebruikt zal worden voor het genereren van statische bestanden, en het installeren van het wkhtmltopdf pakket voor het genereren van PDF rapporten.

Nodejs installeren

Om Odoo te installeren moet je ervoor zorgen dat Node.js op je systeem is geïnstalleerd. Node.js wordt gebruikt om statische bestanden te genereren voor Odoo webapplicaties. In deze stap installeer je Node.js 16 uit de Nodesource repository van derden.

Voer het volgende commando uit om de Nodesource repository voor Node.js 16 te downloaden en in te stellen.

sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Dit commando zal het installatiescript downloaden en uitvoeren, waarna het installatiescript automatisch de repository voor Node.js opzet, de GPG-sleutel toevoegt, en automatisch de pakketindex op je systeem bijwerkt en ververst.

setup nodesource

Voer vervolgens het volgende apt commando uit om het Node.js pakket te installeren.Voer y in om te bevestigen en druk op ENTER om verder te gaan.

sudo apt install nodejs

nodejs installeren

Zodra Node.js is geïnstalleerd, voer je het volgende npm commando uit om het ‘rtlcss’ pakket te installeren.
Het‘rtlcss‘ pakket is nodig voor odoo, vooral als je de rechts-naar-links gebruikersinterface gebruikt voor specifieke talen zoals Arabisch en Hebreeuws.

sudo npm install -g rtlcss

Installatie van de Wkhtmltopdf toepassing

Voor de odoo open-source ERP is het nodig om het wkhtmltopdf pakket te installeren. Dit pakket is nodig voor het renderen van HTML pagina’s naar PDF en diverse afbeeldingsformaten via de Qt Webkit. Het wkhtmltopdf pakket wordt handmatig geïnstalleerd via het .deb pakket op het Ubuntu systeem.

Voer het volgende commando uit om het .deb bestand van het Wkhtmltopdf pakket te downloaden.

cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb

Installeer het Wkhtmltopdf pakket via het onderstaande dpkg commando.

sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb

installeer wkhtmltopdf

Als je een foutmelding krijgt zoals een ontbrekend pakket, repareer die dan via het volgende apt commando.

sudo apt install -f

Nadat de Wkhtmltopdf is geïnstalleerd, kun je het binaire bestand Wkhtmltopdf pakket controleren dat standaard beschikbaar is in de ‘/usr/local/bin‘ directory. Je zou twee programma’s moeten zien:‘wkhtmltopdf‘ en‘wkhtmltoimage‘.

ls /usr/local/bin

Voer nu het volgende commando uit om de $PATH omgevingsvariabele te controleren en zorg ervoor dat de ‘/usr/local/bin’ directory beschikbaar is op het binaire $PATH. Anders zal het Wkhtmltopdf pakket niet goed werken.

echo $PATH

Voer tenslotte het volgende commando uit om er zeker van te zijn dat het binaire pad voor het Wkhtmltopdf pakket beschikbaar is. Als het Wkhtmltopdf pakket beschikbaar is, zou je een uitvoer moeten krijgen van het volledige pad van het Wkhtmltopdf pakket.

which wkhtmltopdf
which wkhtmltoimage

setup wkhtmltopdf

Installatie van PostgreSQL databaseserver

Het open-source ERP odoo ondersteunt databases als MySQL, SQLite en PostgreSQL. In deze stap zul je PostgreSQL installeren en gebruiken als standaard database voor je odoo installatie. Je zult ook de PostgreSQL rol instellen en wijzigingen aanbrengen in de PostgreSQL configuratie.

Voer het volgende apt commando uit om de PostgreSQL database server te installeren. Wanneer om bevestiging wordt gevraagd, voer je y in en druk je op ENTER.

sudo apt install postgresql

postgresql installeren

Nadat PostgreSQL is geïnstalleerd, voer je het volgende commando uit om PostgreSQL te verifiëren en ervoor te zorgen dat de service is ingeschakeld en draait.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

In de volgende uitvoer kun je zien dat de PostgreSQL service is ingeschakeld en automatisch wordt uitgevoerd bij het opstarten van het systeem. En de status van de PostgreSQL is draaiend.

controleer postgresql service

Vervolgens ga je een nieuwe rol aanmaken voor de odoo. Voer het volgende commando uit om in te loggen op de‘postgres‘ gebruiker en maak een nieuwe rol aan met de naam ‘odoo’.

su - postgres
createuser -sdP odoo

Voer het wachtwoord voor de nieuwe rol‘odoo‘ in en herhaal dit.

Log nu in op de PostgreSQL shell via het onderstaande psql commando.

psql

Voer de volgende query uit om de lijst van de rol op PostgreSQL te controleren en controleer of de rol‘odoo‘ beschikbaar is.

\du

Voer nu‘\q‘ in om de PostgreSQL shell te verlaten. Typ dan‘exit‘ om uit te loggen uit de postgres gebruiker.

postgresql rol aanmaken

Nadat je nu een rol voor odoo hebt aangemaakt, ga je nu de authenticatie voor de‘odoo‘ rol instellen.

Bewerk de PostgreSQL configuratie‘/etc/postgresql/14/main/pg_hba.conf‘ met de volgende nano-editor.

sudo nano /etc/postgresql/14/main/pg_hba.conf

Voeg de volgende configuratie toe aan het bestand. Hiermee geef je toegang tot de PostgreSQL voor de rol‘odoo‘ met de wachtwoordverificatie‘scram-sha-256‘.

host    all   odoo    127.0.0.1/32    scram-sha-256

Sla het bestand op en sluit de editor af als je klaar bent.

Voer nu het volgende commando uit om de PostgreSQL service te herstarten en de nieuwe wijzigingen toe te passen.

sudo systemctl restart postgresql

Log tenslotte in als de ‘postgres’ gebruiker en verifieer de‘odoo‘ rol door in te loggen op de PostgreSQL shell via het psql commando zoals hieronder.

su - postgres
psql -h 127.0.0.1 -U odoo -d postgres

Controleer na het inloggen met de volgende query.

\conninfo

Je zou nu moeten zien dat je verbonden bent met PostgreSQL met de rol‘odoo‘.

controleer postgresql rol

Op dit punt is de PostgreSQL database voorbereiding voor odoo nu klaar. Vervolgens start je de odoo installatie door de broncode te downloaden en Python afhankelijkheden te installeren.

Downloaden van Odoo 16

Voor deze demo ga je odoo v16 instellen en uitvoeren met de gebruiker‘odoo‘. Dus maak je nu een nieuwe Unix gebruiker ‘odoo’ aan en download je de laatste versie van de odoo 16 broncode.

Voer het volgende commando uit om een nieuwe gebruiker‘odoo‘ aan te maken. In dit voorbeeld is de standaard thuismap voor de gebruiker‘odoo‘/opt/odoo’ en de standaard shell is bash.

sudo adduser --system --group --home=/opt/odoo --shell=/bin/bash odoo

Verplaats nu de werkdirectory naar ‘/opt/odoo‘ en download de odoo broncode via het volgende git commando. In dit voorbeeld installeer je de odoo 16.

cd /opt/odoo
git clone https://github.com/odoo/odoo.git --depth 1 --branch 16.0 --single-branch odoo-server

Je zou nu de nieuwe directory ‘odoo-server’ moeten krijgen binnen de directory‘/opt/odoo‘.

Voer tenslotte het volgende commando uit om het eigendom van de odoo broncode te veranderen in de gebruiker en groep‘odoo‘.

sudo chown -R odoo:odoo /opt/odoo/odoo-server

download odoo

Na het downloaden van de odoo broncode begin je met de installatie van de Python pakketafhankelijkheden voor odoo.

Python afhankelijkheden voor Odoo installeren

In deze stap ga je de Python virtuele omgeving voor odoo opzetten en Python afhankelijkheden installeren via het pip3 commando.

Verplaats de werkdirectory naar‘/opt/odoo/odoo-server‘ en maak een nieuwe Python virtuele omgeving‘venv‘ aan via het volgende commando.

cd /opt/odoo/odoo-server
python3 -m venv venv

Activeer vervolgens de Python virtuele omgeving‘venv‘ via het volgende commando.

source venv/bin/activate

Nadat je de Python virtuele omgeving hebt geactiveerd, zul je zien dat je huidige shell is veranderd in ‘(venv) root@hostname…’.

setup python venv

Voer nu het volgende pip3 commando uit om het Python pakketwiel te installeren en installeer odoo Python afhankelijkheden via het bestand requirements.txt.

pip3 install wheel
pip3 install -r requirements.txt

dependnecies installeren

Nadat de Python afhankelijkheden zijn geïnstalleerd, voer je het volgende commando uit om de Python‘venv‘ virtuele omgeving te verlaten.

deactivate

Je hebt nu de odoo broncode gedownload en Python afhankelijkheden geïnstalleerd. Vervolgens ga je een nieuwe configuratie en map aanmaken voor de odoo installatie.

Odoo configuratie aanmaken

Nadat je de pakketafhankelijkheden voor Odoo hebt geïnstalleerd, ga je nu de configuratie voor odoo maken en odoo instellen als systemd service.

Maak een nieuw configuratiebestand‘/etc/odoo.conf‘ met behulp van de volgende nano-editor.

sudo nano /etc/odoo.conf

Voeg de volgende configuratie toe aan het bestand. En zorg ervoor dat je de‘admin_passwd‘ en details database gebruiker en wachtwoord wijzigt met jouw gegevens.

[options]
; This is the password that allows database operations:
admin_passwd = adminpassodoo
db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = odoopass
addons_path = /opt/odoo/odoo-server/addons
xmlrpc_port = 8069
logfile = /var/log/odoo/odoo-server.log
log_level  = debug

Sla het bestand op en sluit de editor af.

Wijzig nu het eigendom van het odoo-configuratiebestand‘/etc/odoo.conf’ in de systeemgebruiker‘odoo‘.

sudo chown odoo:odoo /etc/odoo.conf

Voer vervolgens het volgende commando uit om een nieuwe map aan te maken waarin logs voor odoo worden opgeslagen.

sudo mkdir /var/log/odoo

Verander dan het eigendom van de odoo log directory‘/var/log/odoo‘ in de gebruiker‘odoo‘ en verander de rechten in 755.

sudo chown odoo:odoo /var/log/odoo 
sudo chmod 755 /var/log/odoo

odoo configuratie aanmaken

Odoo draaien als Systemd Service

Op dit punt kun je odoo handmatig draaien via de opdrachtregel. Om het gemakkelijker te maken kun je odoo draaien als een systemd service. Hierdoor kun je odoo beheren via het systemctl commando.

Je gaat nu een nieuw systemd servicebestand aanmaken en odoo draaien als de systemd service.

Maak om te beginnen een nieuw systemd servicebestand ‘/lib/system/odoo-server.service’ aan met de volgende nano-editor.

sudo nano /lib/systemd/system/odoo-server.service

Voeg de volgende configuratie toe aan het bestand.

[Unit]
Description=Odoo 16.0 Service
Requires=postgresql.service
After=network.target postgresql.service
 
[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-server/venv/bin/python3 /opt/odoo/odoo-server/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
 
[Install]
WantedBy=multi-user.target

Sla het bestand op en sluit de editor af als je klaar bent.

Herlaad vervolgens de systemd manager om een nieuw servicebestand toe te passen via het onderstaande systemctl commando.

sudo systemctl daemon-reload

Start en activeer de service‘odoo-server’ met het volgende commando.

sudo systemctl start odoo-server
sudo systemctl enable odoo-server

setup odoo service

Controleer tot slot de odoo-service om er zeker van te zijn dat de service draait.

sudo systemctl status odoo-server

Je zou de uitvoer moeten krijgen dat de service‘odoo-server‘ draait.

controleer odoo service

Odoo draaien met Nginx Reverse Proxy

De aanbevolen manier om odoo op productie te draaien is door de reverse proxy te gebruiken. Hierdoor kun je odoo alleen op de localhost draaien en wordt alle clienttoegang afgehandeld door de reverse proxy.

In deze stap zul je de Nginx webserver installeren en instellen als reverse proxy voor de odoo webapplicatie. Je zult ook de odoo installatie beveiligen met SSL. Dus, voordat je begint met het configureren van Nginx, moet je ervoor zorgen dat je de domeinnaam naar het IP-adres van de server laat wijzen en SSL Letsencrypt hebt gegenereerd.

Wijzig eerst het odoo configuratiebestand‘/etc/odoo.conf‘ met behulp van de volgende nano-editor.

sudo nano /etc/odoo.conf

Voeg de volgende configuratie toe aan het bestand. Deze configuratie zal odoo draaien als de backend applicatie die zal draaien op 127.0.0.1.

xmlrpc_interface = 127.0.0.1
proxy_mode = True

Sla het bestand op en sluit de editor af als je klaar bent.

Voer nu het volgende commando uit om de‘odoo-server‘ service te herstarten en de nieuwe wijzigingen toe te passen.

sudo systemctl restart odoo-server

Controleer nu de‘odoo-server‘ service om er zeker van te zijn dat de service draait.

sudo systemctl status odoo-server

odoo configureren

Vervolgens ga je nu Nginx installeren en configureren.

Voer het volgende apt commando uit om het Nginx webserverpakket te installeren. Voer y in als daarom wordt gevraagd en druk op ENTER om door te gaan en de installatie te bevestigen.

sudo apt install nginx

nginx installeren

Nadat Nginx is geïnstalleerd, maak je een nieuwe Nginx server blokken configuratie ‘/etc/nginx/sites-available/odoo.conf’ aan met de volgende nano editor.

sudo nano /etc/nginx/sites-available/odoo.conf

Voeg de onderstaande configuratie toe aan het bestand en zorg ervoor dat je de domeinnaam en het pad van SSL-certificaten verandert met jouw instellingen.

#odoo server
upstream odoo {
 server 127.0.0.1:8069;
}
upstream odoochat {
 server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.hwdomain.io;
rewrite ^(.*) https://$host$1 permanent;
}

server {
listen 443 ssl http2;
server_name odoo.hwdomain.io;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;

# SSL parameters
ssl_certificate /etc/letsencrypt/live/odoo.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.hwdomain.io/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
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;
ssl_prefer_server_ciphers off;

# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}

# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}

# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}

Sla het bestand op en sluit de editor als je klaar bent.

Activeer nu de nieuwe Nginx serverblok configuratie en controleer de Nginx configuratie om er zeker van te zijn dat je de juiste configuraties hebt.

sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
sudo nginx -t

Als je configuraties correct zijn, zie je een uitvoerbericht als’test succesvol – syntax OK‘.

Voer tot slot het volgende systemctl commando uit om de Nginx dienst opnieuw te starten en de nieuwe wijzigingen toe te passen.

sudo systemctl restart nginx

Op dit punt ben je klaar met de installatie en configuratie van de Nginx reverse proxy voor het odoo ERP. Je hebt nu toegang tot de installatie via je webbrowser.

nginx reverse proxy instellen

Voer het volgende commando uit om de Nginx service te verifiëren en controleer of de service draait.

sudo systemctl restart nginx

Je zou moeten krijgen dat de Nginx service draait.

controleer nginx

UFW Firewall instellen

Het wordt aanbevolen om de firewall op je odoo installatie in te schakelen. In deze stap leer je hoe je de UFW firewall instelt.

De generieke Ubuntu server heeft standaard het ufw pakket geïnstalleerd, dus je kunt gewoon beginnen met het configureren ervan.

Voer het volgende commando uit om de OpenSSH applicatie toe te voegen aan de ufw firewall. Voer vervolgens de ufw uit en schakel deze in.

sudo ufw allow "OpenSSH"
sudo ufw enable

Als om bevestiging wordt gevraagd, voer dan y in en druk op ENTER om verder te gaan. En de ufw firewall service wordt ingeschakeld en draait.

ufw instelling

Voer vervolgens het volgende commando uit om de applicatie‘Nginx Full‘ toe te voegen. Dit toepassingsprofiel wordt geleverd door Nginx pakketten op de standaardinstallatie en zal zowel HTTP als HTTPS poorten openen voor je toepassing.

sudo ufw allow "Nginx Full"

Controleer tot slot de lijst met ingeschakelde regels op ufw. Je zou twee applicaties moeten zien die‘OpenSSH‘ en ‘Nginx Full’ zijn ingeschakeld.

sudo ufw status

ufw instelling

Database migreren en Odoo 16 installeren

Open je webbrowser en bezoek de domeinnaam van je odoo installatie (bijv.: https://odoo.hwdomain.io/).

Eerst moet je de database voor odoo migreren en een nieuwe administrator gebruiker aanmaken.

Het hoofdwachtwoord is hier het‘admin_passwd‘ dat je zojuist hebt toegevoegd in het bestand‘/etc/odoo.conf‘.

Voer de nieuwe databasenaam in die automatisch wordt aangemaakt en voer details nieuwe admin gebruiker en wachtwoord in voor je odoo installatie. Bovendien kun je het vakje Demo data aanvinken om de demo data aan je installatie toe te voegen.

Klik op‘Database aanmaken‘ om de odoo installatie te starten.

odoo database migreren

Nadat odoo is geïnstalleerd, word je doorgestuurd naar de odoo login pagina. Voer het admin e-mailadres en wachtwoord voor je odoo in en klik op‘Log in‘.

inloggen odoo

Je zou nu het odoo gebruikersdashboard moeten krijgen.

odoo dashboard

Conclusie

Gefeliciteerd! Je hebt nu Odoo open-source ERP geïnstalleerd op een Ubuntu 22.04 server. Je hebt nu ook de basisinstallatie geleerd van de PostgreSQL databaseserver en de Nginx webserver die als reverse proxy is geconfigureerd.

Op dit punt heb je de Odoo installatie op je Ubuntu server volledig beveiligd. Je kunt nu beginnen met het toevoegen van enkele extra plugins/add-ons die geschikt zijn voor je bedrijf.