Overslaan naar inhoud
  • +31 653-919-302
Cafayate.Net
  • 0
  • 0
  • Aanmelden
  • Nederlands English (US) Español (AR)
  • Contact
  • Startpagina
  • Blog
  • Vacatures
  • Contact
Cafayate.Net
  • 0
  • 0
    • Startpagina
    • Blog
    • Vacatures
    • Contact
  • +31 653-919-302
  • Nederlands English (US) Español (AR)
  • Aanmelden
  • Contact

Odoo installeren binnen Docker

  • Alle blogs
  • Tech Blog
  • Odoo installeren binnen Docker
  • 5 maart 2021 in
    Administrator
    Docker wordt steeds meer gebruikt voor ontwikkeling en uitrollen van applicaties, verpakt in een Docker container. In dit artikel wordt uitgelegd hoe je Odoo en Postgres kunt installeren met Docker in combinatie met een NGINX proxy en virtual hosts op een shared IP adres. Meer over Odoo en Docker vind je op de dockerhub.

    Ubuntu Server

    Voor Docker hebben we een linux server nodig, dit kan basis Ubuntu 14.04 Server zijn (64 bits).

    Installeer Docker:

    sudo wget -qO- https://get.docker.com/ | sh

    Docker containers aanmaken

    Maak een docker container aan met Postgres en naam db-odoo1. Normaal wordt Postgres 9.5 geïnstalleerd als je alleen postgres kiest. Voor Odoo backup & restore hebben we versie 9.4 nodig:
    sudo docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=whatever --name db-odoo1 postgres:9.4
    
    We willen de Odoo configuratie en custom addons kunnen gebruiken binnen de Odoo container. Op de server maken we hiervoor directories aan
    sudo mkdir /opt/odoo1
    sudo cd /opt/odoo1
    sudo mkdir config addons
    
    Plaats het openerp-server.conf bestand onder /opt/odoo1/config. Een voorbeeld kun je hier vinden.
    sudo vim /opt/odoo1/config/openerp-server.conf

    Custom addons plaats je onder /opt/odoo1/addons. Ga je meerdere Odoo docker containers gebruiken? Gebruik dan bijvoorbeeld /opt/odoo2 etc…

    In het artikel op dockerhub wordt uitgelegd hoe je een Odoo container op poort 8069 laat luisteren voor de buitenwereld. Wil je echter meerdere Odoo containers op dezelfde server plaatsen? Dan moeten deze allemaal een aparte poort krijgen. Met een NGINX reverse proxy kun je meerdere Odoo containers, op basis van hostname, laten luisteren op poort 80. De poort voor de Odoo container hoeft niet voor de buitenwereld bereikbaar te zijn, hiervoor kunnen we VIRTUAL_PORT gebruiken. De hostnaam geven we op via VIRTUAL_HOST. Als je meerdere hostnamen wilt gebruiken, dan splits je deze via een comma. In ons voorbeeld willen we www.domein.nl en domein.nl gebruiken.

    De containernaam is odoo1 en we linken de odoo container met de postgres container via –link db-odoo1:db

    sudo docker run -e VIRTUAL_HOST=domein.nl,www.domein.nl -e VIRTUAL_PORT=8069 -v /opt/odoo1/config:/etc/odoo -v /opt/odoo1/addons:/mnt/extra-addons --name odoo1 --link db-odoo1:db -t odoo

    Om binnen een docker container een shell op te roepen:

    docker exec -it --user root odoo1 bash

    NGINX Proxy

    Als laatste zetten we de NGINX proxy container op. Hiervoor wordt jwilders/nginx-proxy gebruikt. Normaliter is er geen custom nginx configuratie nodig, maar bij het restoren van een Odoo backup via /web/database/manager krijgen we een 431 error omdat de standaard uploadsize 2MB is binnen NGINX. SSL certificaten kunnen ook gebruikt worden overigens.

    Voor NGINX maken we een config en certs directory aan:

    sudo mkdir /opt/nginx
    sudo cd /opt/nginx
    sudo mkdir certs conf

    Maak een nginx config bestand aan en uploadsize=500M (dit kun je zelf aanpassen naar wens):

    sudo vim /opt/nginx/conf/proxy.conf
    client_max_body_size 500m;
    

    Nu maken we de NGINX container aan en laten deze luisteren op poort 80 (http) voor de buitenwereld.

    sudo docker run -d -p 80:80 -p 443:443 --name nginx-proxy -v /opt/nginx/certs:/etc/nginx/certs -v /opt/nginx/conf/proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
    sudo docker run -d --name letsencrypt-nginx -v /opt/nginx/certs:/etc/nginx/certs:rw --volumes-from nginx-proxy -v /var/run/docker.sock:/var/run/docker.sock:ro jrcs/letsencrypt-nginx-proxy-companion
    

    Nu kunnen we de Odoo omgeving bereiken via http://www.domein.nl. Om SSL (https) te gebruiken, plaats de www.domein.nl.key en www.domein.nl.crt onder /opt/nginx/certs.

    Om Let’s Encrypt SSL certificaten te gebruiken:

    sudo docker run -e VIRTUAL_HOST=domein.nl,www.domein.nl -e "LETSENCRYPT_HOST=domein.nl,www.domein.nl" -e "[email protected]" -e VIRTUAL_PORT=8069 -v /opt/odoo1/config:/etc/odoo -v /opt/odoo1/addons:/mnt/extra-addons --name odoo1 --link db-odoo1:db -t odoo

    Om een tweede Odoo omgeving te gebruiken via een andere hostnaam, bijvoorbeeld http://erp.bedrijf.nl, maak een 2e postgres en odoo container aan:

    sudo docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=whatever --name db-odoo2 postgres:9.4
    sudo docker run -e VIRTUAL_HOST=erp.bedrijf.nl -e VIRTUAL_PORT=8069 -v /opt/odoo2/config:/etc/odoo -v /opt/odoo2/addons:/mnt/extra-addons --name odoo2 --link db-odoo2:db -t odoo

    Firewall

    Op de Ubuntu server kunnen we UFW gebruiken voor firewalling. We willen alleen ssh, http en https openzetten voor de buitenwereld:

    sudo ufw allow ssh
    sudo ufw allow http
    sudo ufw allow https
    sudo ufw enable
    in Tech Blog
    Odoo Burgerservicenummer (BSN) for Partners

    Ontworpen voor bedrijven

    We zijn een team van gepassioneerde mensen met als doel levens te verbeteren met vernieuwende producten. We ontwikkelen geweldige oplossingen voor al je zakelijke uitdagingen. Onze producten zijn ontworpen voor kleine tot middelgrote bedrijven die hun prestaties willen optimaliseren.

    Neem contact op

    Plantexel
    Pedernera
    Salta Capital 
    Argentina

    • +31 653-919-302
    • [email protected]
    Volg ons
    Copyright © Plantexel
    Nederlands | English (US) | Español (AR)