Odoo 14 ERP Software installeren op Ubuntu 20.04

Odoo (vroeger bekend als OpenERP) is een zelf gehoste suite van meer dan 10.000 open source toepassingen die geschikt zijn voor uiteenlopende bedrijfsbehoeften, zoals CRM, eCommerce, boekhouding, voorraadbeheer, projectbeheer en verkooppunt. Deze toepassingen zijn volledig geïntegreerd en toegankelijk via een gemeenschappelijke webinterface.

In deze handleiding leren we Odoo 14 Stack te installeren op een Ubuntu 20.04 gebaseerde server.

Vereisten

  1. Een Ubuntu 20.04 gebaseerde server met een minimum van 2GB RAM om Odoo Stack te hosten.

  2. Een tweede Ubuntu 20.04 gebaseerde server met minimaal 2GB RAM voor het hosten van de PostgreSQL database. Je kunt de database wel op dezelfde server als Odoo installeren, maar voor productie-omgevingen is het sterk aan te bevelen dat je ze op een aparte server installeert. Je kunt ook kiezen voor een van de beheerde database opties van een aanbieder naar keuze.

  3. Het benodigde RAM geheugen hangt af van het aantal gelijktijdige gebruikers dat de stack zal gebruiken. Een gedetailleerde gids over hoe je de systeemvereisten berekent, vind je in Odoo’s documentatie.

  4. Houd je systemen bijgewerkt.

    $ sudo apt update
    $ sudo apt upgrade
    
  5. Een niet-root gebruiker met sudo rechten op beide servers.

Stel firewall regels in

Voor het doel van deze handleiding nemen we aan dat je ufw firewall op beide servers geïnstalleerd hebt.

Op de Odoo server moeten de poorten 22, 80, 443, 6010, 5432 en 8069 open staan. 22 wordt gebruikt voor SSH, 80 is voor HTTP, 443 is voor HTTPS, 6010 wordt gebruikt voor Odoo communicatie, 5432 wordt gebruikt door PostgreSQL en 8069 wordt gebruikt door de Odoo server toepassing.

Voer de volgende commando's uit om de vereiste poorten op de Odoo server te openen.

$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp

Op de PostgreSQL server moeten we poorten 22, 6010 en 5432 openen. Open ze met de commando's die we zojuist bespraken.

Hostnamen toekennen

Je kunt de IP adressen van de servers gebruiken of hun Fully Qualified Domain Names (FQDN), indien beschikbaar. Voor onze handleiding zullen we FQDNs gebruiken en daarvoor moeten we op beide servers hostnamen instellen.

Open op de Odoo server het /etc/hosts bestand.

$ sudo nano /etc/hosts

Zorg ervoor dat het er als volgt uitziet.

127.0.0.1 	localhost
127.0.0.1	odoo.yourdomain.com		odoo
10.1.1.10	postgresql.yourdomain.com	postgresql

Open op de PostgreSQL server het bestand en zorg dat het er uitziet als het volgende.

127.0.0.1 	localhost
127.0.0.1	postgresql.yourdomain.com	postgresql
10.1.2.10	odoo.yourdomain.com		odoo

Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.

Installeer en configureer PostgreSQL

Ubuntu 20.04 wordt standaard geleverd met PostgreSQL 12 en we zullen dat installeren. Voer het volgende commando uit op de PostgreSQL server.

$ sudo apt install postgresql-12 postgresql-server-dev-12

Vervolgens moeten we een database gebruiker aanmaken odoo.

$ sudo -u postgres createuser odoo -U postgres -dP

De optie -u voert het commando uit als gebruiker postgres.

De optie -U geeft de gebruikersnaam aan om mee te verbinden.

De optie -d geeft de gebruiker toestemming om databases aan te maken.

De optie -p vraagt om het wachtwoord van de nieuwe gebruiker.

Configureer Host-Based Authentication

We moeten toestemming geven aan de PostgreSQL dienst om verbinding te kunnen maken met de Odoo server.

Stop eerst de PostgreSQL dienst.

$ sudo systemctl stop postgresql

Open het bestand /etc/postgresql/12/main/pg_hba.conf om het te bewerken.

$ sudo nano /etc/postgresql/12/main/pg_hba.conf

Plak de volgende regel aan het eind.

host		all		odoo		odoo.yourdomain.com		md5

Deze regel geeft toestemming aan de odoo gebruiker om verbinding te maken met alle databases binnen deze server. Je kunt ook de naam van de databases opgeven in plaats van het sleutelwoord all te gebruiken.

Druk op Ctrl + X om de editor te sluiten en op Y wanneer je gevraagd wordt het bestand op te slaan.

Stel het PostgreSQL luisteradres in

Vervolgens moeten we de databaseserver toestaan te luisteren naar verbindingen op afstand. Open het bestand /etc/postgresql/12/main/postgresql.conf om het te bewerken.

$ sudo nano /etc/postgresql/12/main/postgresql.conf

Verander de regel listen_addresses van

#listen_addresses = 'localhost' # what IP address(es) to listen on;

in.

#From CONNECTIONS AND AUTHENTICATION Section
listen_addresses = '*'

De * betekent dat hij naar alle IP adressen zal luisteren. Je kunt het veranderen in het IP adres van je odoo instantie.

Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.

Schakel de PostgreSQL dienst in en start hem

Nu onze configuratie klaar is, is het tijd om de PostgreSQL dienst te starten en in te schakelen.

$ sudo systemctl start postgresql && sudo systemctl enable postgresql

Installeer Odoo

Installeer afhankelijkheden en bereid de installatie voor

Maak een nieuwe systeemgebruiker aan voor het beheer van de Odoo processen op de Odoo server.

$ sudo adduser --system --home=/opt/odoo --group odoo

We moeten enkele systeem afhankelijkheden installeren, maar eerst moeten we bron repositories inschakelen. Maak daarvoor een back-up van de oorspronkelijke bronnenlijst en schakel dan alle bronrepositories in en werk de repository lijst bij.

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update

Installeer systeemafhankelijkheden die nodig zijn voor de opzet van Odoo 14.

 $ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml

Installeer Nodejs.

$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs

Installeer het Less CSS pakket met behulp van Node.

$ sudo npm install -g less less-plugin-clean-css

Download het pakket wkhtmltopdf versie 0.12.6.

$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb

Installeer het pakket.

$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb

Om te zorgen dat wkhtmltopdf goed werkt, kopieer je de binaries naar /usr/bin en geef je ze de juiste permissies.

$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~

Odoo bestanden downloaden

Kloon Odoo's Github repository naar je systeem.

$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo

Voor ons doel kopiëren we Odoo naar de /opt/odoo directory van waaruit het geïnstalleerd zal worden.

Zet Virtualenv Python omgeving op

Deze stap is optioneel maar wordt aanbevolen omdat een virtuele python omgeving voor Odoo conflicten met Python modules van het besturingssysteem helpt voorkomen, vooral bij het uitvoeren van OS upgrades.

Hiervoor zullen we virtualenv gebruiken .

  1. Maak een nieuwe virtualenv omgeving voor Odoo.

    $ python3 -m venv /home/<username>/odoo-env
    
  2. Activeer de virtuele omgeving. We maken een omgeving onder de thuismap van de systeemgebruiker. Je bent vrij om een locatie naar keuze te kiezen.

    $ source /home/<username>/odoo-env/bin/activate
    
  3. Werk PIP bij voor het geval dat.

    (odoo-env) $ pip3 install --upgrade pip
    
  4. Installeer het wiel van Python in de virtuele omgeving.

    $ pip3 install wheel
    

Installeer de afhankelijkheden van Python

Installeer de Python afhankelijkheden die nodig zijn voor Odoo 14.

$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt

De installatie van de vereisten zal enige tijd in beslag nemen, dus wees geduldig.

Controleer of de vereisten correct geïnstalleerd zijn door de lijst van geïnstalleerde Python modules te controleren.

$ pip3 list
Package                       Version
----------------------------- ---------
alabaster                     0.7.12
appdirs                       1.4.4
attrs                         20.3.0
Babel                         2.6.0
beautifulsoup4                4.9.3
cached-property               1.5.2
certifi                       2020.12.5
chardet                       3.0.4
decorator                     4.3.0
defusedxml                    0.7.1
docutils                      0.14
ebaysdk                       2.1.5
feedparser                    5.2.1
freezegun                     0.3.15
gevent                        20.9.0
greenlet                      0.4.17
html2text                     2018.1.9
idna                          2.6
imagesize                     1.2.0
isodate                       0.6.0
Jinja2                        2.11.2
libsass                       0.17.0
lxml                          4.6.1
Mako                          1.0.7
MarkupSafe                    1.1.0
num2words                     0.5.6
ofxparse                      0.19
packaging                     20.9
passlib                       1.7.1
Pillow                        8.0.1
pip                           21.0.1
pkg-resources                 0.0.0
polib                         1.1.0
psutil                        5.6.6
psycopg2                      2.8.5
pyasn1                        0.4.8
pyasn1-modules                0.2.8
pydot                         1.4.1
Pygments                      2.8.1
pyparsing                     2.4.7
PyPDF2                        1.26.0
pyserial                      3.4
python-dateutil               2.7.3
python-ldap                   3.1.0
python-stdnum                 1.8
pytz                          2019.1
pyusb                         1.0.2
qrcode                        6.1
reportlab                     3.5.55
requests                      2.21.0
requests-toolbelt             0.9.1
setuptools                    44.0.0
six                           1.15.0
snowballstemmer               2.1.0
soupsieve                     2.2
Sphinx                        3.5.2
sphinx-patchqueue             1.0.4
sphinxcontrib-applehelp       1.0.2
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        1.0.3
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff                       0.6.0
urllib3                       1.24.3
vobject                       0.9.6.1
Werkzeug                      0.16.1
wheel                         0.36.2
xlrd                          1.2.0
XlsxWriter                    1.1.2
xlwt                          1.3.0
zeep                          3.2.0
zope.event                    4.5.0
zope.interface                5.2.0

Sluit de virtuele Python omgeving af.

$ deactivate

Configureer Odoo

Kopieer het standaard Odoo configuratiebestand om een nieuw te maken.

$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf

Open het bestand om het te bewerken.

$ sudo nano /etc/odoo-server.conf

Bewerk het bestand zodat het er als volgt uitziet.

[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069

Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.

De optie admin_passwd is het wachtwoord dat administratieve bewerkingen binnen de Odoo GUI mogelijk maakt. Kies beslist een veilig wachtwoord.

De optie db_host is de FQDN of het IP adres van de PostgreSQL server.

De optie db_port is op false gezet omdat de standaard PostgreSQL poort 5432 gebruikt wordt. Als je een andere poort wilt gebruiken, moet je deze waarde bijwerken.

De optie db_user is de naam van de PostgreSQL gebruiker.

De optie db_password is het PostgreSQL 'odoo' gebruikerswachtwoord dat we eerder op de PostgreSQL server maakten.

De optie addons_path is het standaard Addons pad. Je kunt ook een aangepast pad voor Addons toevoegen, waarbij je ze van elkaar scheidt met komma's.

De optie xmlrpc_port is de poort waarop Odoo luistert.

Creëer Odoo service

Om ervoor te zorgen dat Odoo ook na een herstart van het systeem blijft draaien, moeten we er een service voor maken.

Maak een bestand /lib/systemd/system/odoo-server.service en open het voor bewerking.

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

Plak er de volgende code in.

[Unit]
Description=Odoo Open Source ERP and CRM

[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Vervang /home/<username> door de plaats die je koos voor de installatie van Python Virtual Environment.

Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.

Stel bestandspermissies in

Stel de permissies op het odoo-server.service bestand zo in dat alleen Odoo gebruikers het kunnen lezen of uitvoeren.

$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service

Stel het eigendom in op de Python omgeving en de Odoo installatiedirectory.

$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home/<username>/odoo-env

Beperk het Odoo configuratiebestand.

$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf

Start de Odoo server

Start de Odoo server en schakel hem in.

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

Controleer de status van de server.

$ sudo systemctl status odoo-server

Open in je browser de URL http://<yourIPaddress>:8069 of http://odoo.yourdomain.com:8069. Als alles goed werkt, zou je Odoo's scherm voor het maken van een databank moeten zien.

Odoo Installatiescherm

Vul alle velden in. Vink het Demo Data veld aan om de database te vullen met voorbeeldgegevens en klik dan op de knop Create database.

Vervolgens krijg je een lijst van apps te zien die je kunt kiezen en selecteren.

De eerste keer dat je een databank maakt, zal de addons pagina tijd nodig hebben om te laden, dus ververs de pagina niet.

Installeer en configureer Nginx

Tot nu toe hebben we Odoo's server gebruikt om de stack te draaien. Maar idealiter is het beter om hem op Nginx te draaien met behulp van een proxy, want dan kunnen we er SSL op installeren.

Installeer Nginx.

$ sudo apt install nginx

Om het via Nginx te laten lopen, moeten we Odoo op localhost laten draaien. Om dat te veranderen, stop je de Odoo service.

$ sudo systemctl stop odoo-server

Open het Odoo server configuratie bestand.

$ sudo nano /etc/odoo-server.conf

Voeg er de volgende regels aan toe.

xmlrpc_interface = 127.0.0.1
proxy_mode = True

Maak een Nginx configuratiebestand voor Odoo.

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

Plak er de onderstaande code in.

#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.yourdomain.com;
   rewrite ^(.*) https://$host$1 permanent;
}

server {
 listen 443 ssl http2;
 server_name odoo.yourdomain.com;
 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.yourdomain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/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;
 ssl_dhparam /etc/ssl/certs/dhparam.pem;

 # 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;
}

Druk op Ctrl + X om de editor te sluiten en druk op Y als gevraagd wordt om het bestand op te slaan.

Activeer dit configuratiebestand door het te koppelen aan de sites-enabled directory.

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

Test de Nginx configuratie.

$ sudo nginx -t

SSL installeren

We zullen SSL installeren met de Let's Encrypt dienst.

Installeer daarvoor Certbot.

$ sudo apt install certbot

Stop Nginx want dat zal het Certbot proces hinderen.

$ sudo systemctl stop nginx

Genereer het certificaat. We moeten ook een DHParams certificaat maken.

$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

We moeten ook een cron job instellen om de SSL automatisch te vernieuwen. Om de crontab editor te openen, voer je het volgende commando uit.

$ sudo crontab -e

Plak de volgende regel onderaan.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

De bovenstaande cron job zal certbot elke dag om 2:25 uur laten lopen. Je kunt het veranderen in wat je maar wilt.

Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Start Odoo

Nu alles is ingesteld, kunnen we de Odoo server weer starten.

$ sudo systemctl start odoo-server

Start Odoo in je browser via https://odoo.yourdomain.com. Je krijgt het eerder beschreven scherm. Voer de vereiste gegevens in om de database aan te maken en je zou in Odoo moeten inloggen en een scherm als dit zien.

Odoo Startpagina

Conclusie

Dit is het einde van onze handleiding over het installeren van Odoo op een Ubuntu 20.04 server. Als je nog vragen hebt, stel ze dan in de commentaar hieronder.