Odoo 11 julkaistiin 5.10.2017 ja sen pitäisi luonnollisesti sisältää paljon parannuksia edelliseen 10-versioon verrattuna:

Tottahan tuota on itsekin päästävä heti vähän testailemaan! Teen seuraavaksi asennuksen Hezneriltä tilatulle CX20-virtuaaliserverille, joka on mielestäni hinta-laatusuhteeltaan paras tietämäni ja riittävä useammankin käyttäjän Odoon testikäyttöön, vaikka Odoo-kantoja luo tuonne enemmänkin. Jos tiedätte jonkun tarkoitukseen paremmin sopivan palveluntarjoajan, kertoisitteko minullekin.

Tilauksen valinnat on esitetty alla kuvina Heznerin Robot-työkalusta, jonka avulla hallitsen kaikkia Hetzneriltä vuokrattuja palvelimiani:

Tilausvahvistus saapuu sähköpostiin heti ja kuittaus asennuksesta & kirjautumistiedot palvelimelle hetken päästä siitä. Sen jälkeen kirjautuminen (itse käytän Macin Terminal ohjelmaa) palvelimelle:

Odoo 11 Community -version asennukseen riittävät seuraavat komennot:

sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/11.0/odoo_install.sh
sudo chmod +x odoo_install.sh
sudo ./odoo_install.sh

Kiitos tuosta kuuluu Yenthe V.G:lle, jonka GitHubissa ylläpitämä asennusskripti on saatu toimimaan hyvin jo vajaassa viikossa versionjulkistuksen jälkeen.

Tuon jälkeen skripitin sisältämät päivitykset ja asennukset pyörivät tovin (minulla kesti vajaat viisi minuuttia), jonka jälkeen Odoo 11 Community löytyy selaimelta osoitteesta http://xxx.xxx.xxx.xxx:8069, jossa xxx.xxx.xxx.xxx on virtuaaliserverin ip-osoite. Ensimmäiseksi on luotava Odooseen ensimmäinen kanta:

Tuon jälkeen kannattaa mennä selaimella osoitteeseen http://xxx.xxx.xxx.xxx:8069/web/database/manager ja asettaa Odooseen turvallinen Master Password, jota käytetään myöhemmin uusien kantojen luonnissa, olemassa olevien kopioinnissa ja kantojen poistamisissa:

Edellisessä Odoo-blogipostauksessani virittelin Let's Encrypt SSL-sertifikaatin ja Nginx-webbipalvelimen Odoo 10:n eteen. Lopputulemana Odoo mäpättiin toimimaan niin, että tietokannan nimi = alidomainin nimi.

Nyt halusin kuitenkin konfiguroida webbiserverin niin, että usean Odoo-kannan ympäristössä tietty kantaa mäppäytyy suoraan domainiin, ei alidomainiin. Tunnustan, että minulta meni Googlaillessa aika kauan, ennen kuin sain tuon toimimaan. Onnistuihan se lopulta ja nyt minulla on samalla palvelimella useampia Odoo-kantoja, joista osa mäpätään Nginx-konfiguroinnilla subdomain-nimellä ja osa suoraan domain-nimellä.

Tämän kirjoituksen esimerkissä mäpätään "kaikki"-niminen Odoo-kanta "kaikki"-nimisellä Nginx-konfigurointifilellä toimimaan ssl-salauksella,  kirjoittipa selaimeen minkä tahansa alla olevista osoitteista:

Kaiken voi tehdä muutoin samoin kuin edellisessäkin ohjeessa, mutta Nginx-konffista on säädettävä alla olevien lihavoitujen kohtien mukaisesti:

 

upstream kaikki {

server 127.0.0.1:8069 weight=1 fail_timeout=0;

}

upstream kaikki-im {

server 127.0.0.1:8072 weight=1 fail_timeout=0;

}

## http redirects to https ##

server {

listen 80;

server_name kaikkipanee.com www.kaikkipanee.com 

# Strict Transport Security

add_header Strict-Transport-Security max-age=2592000;

rewrite ^/.*$ https://$host$request_uri? permanent;

}

server {

# server port and name

listen 443;

server_name kaikkipanee.com www.kaikkipanee.com

# Specifies the maximum accepted body size of a client request,

# as indicated by the request header Content-Length.

client_max_body_size 200m;

# add ssl specific settings

keepalive_timeout 60;

ssl on;

ssl_certificate /etc/letsencrypt/live/kaikkipanee.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/kaikkipanee.com/privkey.pem;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_prefer_server_ciphers on;

        ssl_dhparam /etc/ssl/certs/dhparam.pem;

        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

        ssl_session_timeout 1d;

        ssl_session_cache shared:SSL:50m;

        ssl_stapling on;

        ssl_stapling_verify on;

        add_header Strict-Transport-Security max-age=15768000;

# limit ciphers

# ssl_ciphers HIGH:!ADH:!MD5;

# ssl_protocols SSLv3 TLSv1;

# ssl_prefer_server_ciphers on; 

# increase proxy buffer to handle some OpenERP web requests

proxy_buffers 16 64k;

proxy_buffer_size 128k;

#general proxy settings

# force timeouts if the backend dies

proxy_connect_timeout 600s;

proxy_send_timeout 600s;

proxy_read_timeout 600s;

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# set headers

# proxy_set_header Host $host (kommentoitu pois ja vaihdettu alla olevaan);

proxy_set_header Host kaikki.kaikkipanee.com$request_uri?;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

# Let the OpenERP web service know that were using HTTPS, otherwise

# it will generate URL using http:// and not https://

proxy_set_header X-Forwarded-Proto https;

#proxy_redirect off (kommentoitu pois ja vaihdettu alla olevaan);

proxy_redirect http://kaikki.kaikkipanee.com/ http://kaikkipanee.com/;

proxy_buffering off;

 

location / {

proxy_pass http://kaikki;

}

location /longpolling {

proxy_pass http://kaikki-im;

}

# cache some static data in memory for 60mins.

# under heavy load this should relieve stress on the OpenERP web interface a bit.

location /web/static/ {

proxy_cache_valid 200 60m;

proxy_buffering on;

expires 864000;

proxy_pass http://kaikki;

}

}

 

Tuon lisäksi on tarkistettava etc/odoo-server.conf -filestä, että proxy_mode = True. Defaultisti se ainakin mulla oli False:

#dbfilter = .*

dbfilter = ^%d$

#list_db = True

list_db = False

#proxy_mode = False

proxy_mode = True

 

Edellisessä Odoo-ohjeessani asensin Odoo 10 -toiminnanohjausjärjestelmän Ubuntu 16.04 virtuaaliserverille, mutta yhteyttä ei vielä suojattu, eikä serverin osoite http://<IP-osoite>:8069 ole kovin miellyttävä sekään. Tämän ohjeen asennuksien ja konfigurointien jälkeen edellisessä ohjeessa asentamani Odoo-ympäristön yksi kanta (ja ainoastaan se), nimeltään "odoo", on käytettävissä Let's Encrypt open source SSL-sertifikaatilla (https://...) varustettuna osoitteessa:

https://odoo.rockit.fi

Koska olen luomassa sertifikaattia odoo-nimiselle rockit.fi -domainin alidomainille, minun on ensiksi varmistuttava, että rockit.fi:n DNS-konfigurointi on tehty niin, että nimipalvelimet tietävät, miltä serveriltä tuollaista odoo.rockit.fi -osoitetta pitää lähteä hakemaan. Tarvittavan A-recordin pääsen luomaan rockit.fi-verkkotunnukseni cPanelissa:

Olen onnistunut aiemmin tekemään vastaavat asennukset Odoo 8 ja Odoo 9 ympäristöille ja eri Ubuntu-versioille näitä kahta löytämääni ohjetta yhdistelemällä, joten oletan saman onnistuvan myös Odoo 10 -versiolle ja Ubuntu 16.04 -virtuaaliserverille:

  1. How To Secure Nginx with Let's Encrypt on Ubuntu 14.04

  2. REVERSE PROXY WITH ODOO 8 | NGINX | UBUNTU 14.04 LTS | LONGPOLLING

Let's Encrypt SSL-sertifikaatin luonti

Aloitetaan siitä, mihin edellisessä ohjeessa jäätiin, eli ollaan kirjautuneena serverille ssh-yhteydellä (ssh root@<IP-osoite>). Aluksi käskyt ohjeen 1 mukaisesti. Kannattaa seurata noita alkuperäisiä ohjeita, koska niissä myös selitetään, mitä ollaan tekemässä. Tähän ohjeeseen laitan vain muistilistaa itselleni, jos nuo alkuperäiset ohjeet vaikka häviävät tuolta linkin takaa.

cd /usr/local/sbin

sudo wget https://dl.eff.org/certbot-auto

sudo chmod a+x /usr/local/sbin/certbot-auto

sudo apt-get update

sudo apt-get install nginx

sudo apt-get install nano

sudo nano /etc/nginx/sites-available/default

Muokataan aukaistun default-tiedoston sisällöksi:

server {

listen 80 default_server;

listen [::]:80 default_server;

root /usr/share/nginx/html;

index index.html index.htm index.nginx-debian.html;

server_name _;

location ~ /.well-known {

                allow all;

        }

}

Mikäli kaikki on mennyt oikein, seuraavan syntaxin tarkistuksen tuloksen pitäisi olla ok:

sudo nginx -t

Jonka jälkeen Nginxin uudelleenkäynnistys komennolla (serverilläni ei jostain syystä toimi ohjeen mukainen komento "sudo service nginx restart"):

sudo /etc/init.d/nginx restart

Tämän jälkeen jatketaan luomalla SSL-sertifikaatti. Mikäli luot sertejä samalla useammalle verkkotunnukselle/aliverkkotunnukselle, erottele tunnukset -d:llä ohjeen mukaisesti:

Now that we know our webroot-path, we can use the Webroot plugin to request an SSL certificate with these commands. Here, we are also specifying our domain names with the -d option. If you want a single cert to work with multiple domain names (e.g. example.com and www.example.com), be sure to include all of them, starting with the most high level domain (e.g. example.com).

certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

Koska olen nyt luomassa sertifikaattia ainoastaan aliverkkotunnukselle odoo.rockit.fi, komento on:

certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d odoo.rockit.fi

Tuon jälkeen näytölle ilmestyy ruutuja missä kysellään sähköpostiosoitetta (for urgent notices and lost key recovery) ja hyväksyntää. Lopulta ruudulle pitäisi tulla ilmoitus, josta käy ilmi, että sertifikaatti on onnistuneesti asennettu: "Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/odoo.rockit.fi/fullchain.pem. Your cert will expire on..."

Suojausta voi edelleen kasvattaa luomalla "strong Diffie-Hellman group":n:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Edellä luotuja sertifikaattitiedostoja käytämme Nginx-konfiguroinnissa myöhemmin. 

Sertifikaatin automaattinen uusiminen

Avoimen lähdekoodin Let's Encrypt -sertifikaatti on voimassa 90 päivää. Teemme ohjeen mukaan tausta-ajon (cron job), joka uusii sertifikaatin joka maanantai kello 02:30 ja lataa uudelleen Nginxin 02:35:

sudo crontab -e

Ja kopioi tiedostoon rivit:

30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log

35 2 * * 1 /etc/init.d/nginx reload

(paina i-kirjainta päästäksesi insert-moodiin ja esc-näppäintä poistuaksesi insert-tilasta rivien kopioinnin jälkeen. Editorista poistutaan kirjoittamalla :x ja painamalla enter)

Nginx-webbipalvelimen konfigurointitiedoston luominen 

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

Kopioi tiedostoon sisältö:

upstream odoo {

server 127.0.0.1:8069 weight=1 fail_timeout=0;

}

upstream odoo-im {

server 127.0.0.1:8072 weight=1 fail_timeout=0;

## http redirects to https ##

server {

listen 80;

server_name odoo.rockit.fi;

# Strict Transport Security

add_header Strict-Transport-Security max-age=2592000;

rewrite ^/.*$ https://$host$request_uri? permanent;

}

server {

# server port and name

listen 443;

server_name odoo.rockit.fi;

# Specifies the maximum accepted body size of a client request,

# as indicated by the request header Content-Length.

client_max_body_size 200m;

# add ssl specific settings

keepalive_timeout 60;

ssl on;

ssl_certificate /etc/letsencrypt/live/odoo.rockit.fi/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/odoo.rockit.fi/privkey.pem;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_prefer_server_ciphers on;

        ssl_dhparam /etc/ssl/certs/dhparam.pem;

        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

        ssl_session_timeout 1d;

        ssl_session_cache shared:SSL:50m;

        ssl_stapling on;

        ssl_stapling_verify on;

        add_header Strict-Transport-Security max-age=15768000;

# limit ciphers

# ssl_ciphers HIGH:!ADH:!MD5;

# ssl_protocols SSLv3 TLSv1;

# ssl_prefer_server_ciphers on;

# increase proxy buffer to handle some OpenERP web requests

proxy_buffers 16 64k;

proxy_buffer_size 128k;

#general proxy settings

# force timeouts if the backend dies

proxy_connect_timeout 600s;

proxy_send_timeout 600s;

proxy_read_timeout 600s;

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# set headers

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; 

# Let the OpenERP web service know that were using HTTPS, otherwise

# it will generate URL using http:// and not https://

proxy_set_header X-Forwarded-Proto https;

# by default, do not forward anything

proxy_redirect off;

proxy_buffering off;

 

location / {

proxy_pass http://odoo;

}

location /longpolling {

proxy_pass http://odoo-im;

}

# cache some static data in memory for 60mins.

# under heavy load this should relieve stress on the OpenERP web interface a bit.

location /web/static/ {

proxy_cache_valid 200 60m;

proxy_buffering on;

expires 864000;

proxy_pass http://odoo;

}

}

Tämän jälkeen sivun enablointi luomalla "symbolinen linkki" site-enabled -hakemistoon:

sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo 

Odoon konfigurointi

sudo nano /etc/odoo-server.conf

Etsi ja muokkaa parametreihin alla olevat arvot: 

dbfilter = ^%d$

xmlrpc_interface = 127.0.0.1

Tämän jälkeen tarvitaan enää odoo-serverin ja nginxin uudelleenkäynnistys:

sudo /etc/init.d/odoo-server restart

sudo /etc/init.d/nginx restart

Jostain syystä tuo dbfilter ei kuitenkaan toiminut tuon restartin jälkeen. Kaikki oli kuitenkin kunnossa sen jälkeen, kun olin bootannut koko serverin komennolla:

sudo reboot 0

Uusi Odoo 10 julkaistiin tässä kuussa (2016/10) ja netistä löytyy jo valmiita skriptejä, miten sen saa helposti asennettua Ubuntu 16.04 -virtuaaliserverille.

Olen itse todennut Hetznerin serverit luotettaviksi ja edullisiksi jo Odoo 8 ja Odoo 9 -ympäristöjä ylläpitäessä ja Hezner laskuttaa noista useammista jo nyt vuokralla olevista servereistä kuukausittain suoraan firman luottokortilta, joten otin heiltä yhden CX20-serverin lisää Odoo 10 -testailujani varten. Tuon 6,90 €/kk (ALV0%) maksavan serverin olen havainnut riittävän tehokkaaksi, vaikka Odoo-tietokantoja, dataa ja käyttäjiä olisi vähän enemmänkin.

(Odoon voi toki asentaa myös lokaalisti omalle tietokoneelle, mutta pilvessä oleva virtuaaliserveri mahdollistaa yhteiskäytön; voit testailla ja kehittää ratkaisuja yhdessä kollegan kanssa tai vaikka luoda oman kannan Odoosta kiinnostuneelle asiakkaalle ja päästää hänet itse todentamaan Odoon erinomaisuus.)

Virtuaaliserverin asennuksen jälkeen palveluntarjoaja lähettää sähköpostin, jossa on serverin IP-osoite, root-käyttäjätunnus ja salasana. Noiden avulla serverille voi logata sisään. Tuon olen tehnyt Maccini Terminal-ohjelmalla:

ssh root@<IP-osoite>

Odoon asennukseen riittävät nämä käskyt (ohje on kopioitu täältä): 

sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/10.0/odoo_install.sh

chmod +x odoo_install.sh

./odoo_install.sh

Tuon jälkeen asennus ruksutteli noin 5 minuuttia ja sen jälkeen ruudulla luki viimeisenä:

-----------------------------------------------------------

Done! The Odoo server is up and running. Specifications:

Port: 8069

User service: odoo

User PostgreSQL: odoo

Code location: odoo

Addons folder: odoo/odoo-server/addons/

Start Odoo service: sudo service odoo-server start

Stop Odoo service: sudo service odoo-server stop

Restart Odoo service: sudo service odoo-server restart

-----------------------------------------------------------

(Ainakaan minulla nuo start, stop ja restart -komennot eivät tosin suoraan noin toimineet, vaan ne täytyy syöttää seuraavasti: sudo /etc/init.d/odoo-server restart)

Asennuksen jälkeen Odoo v10 löytyy selaimella osoitteesta: http://xxx.xxx.xxx.xxx:8069 ja voit luoda ensimmäisen Odoo-tietokantasi. Pääkäyttäjän Email on "admin" ja salasanan luotavaan kantaan voit tuossa kantaa luodessa itse määrittää.

HUOM!!! Kun olet luonut tuon ensimmäisen kantasi, kannattaa kirjautua sieltä suoraan ulos ja valita Manage Databases ⇒ Set Master Password ja määrittää tuohon turvallinen salasana. Tuo on se the salasana, jonka tarvitset jatkossa, kun luot, monistat, tuhoat ja varmuuskopioit tietokantoja, joten on tärkeää, ettei ainakaan kukaan muu pääse tuota salasanaa ympäristöösi määrittämään. Skriptissä master-salasanaksi on määritelty "admin", joten se kannattaisi editoida jo sinne ennen asennusta joksikin muuksi.

Tuon jälkeen ei muuta kun kirjaudut takaisin sisään luomaasi kantaan ja alat asentaa moduuleita helposti moduulin Install-nappia painamalla. Avoimen lähdekoodin järjestelmässä (asensimme open source Odoo 10 Community -version) ei ole mitään rajoitteita, kuinka monta tietokantaa ja moduulia asennat tai miten monta käyttäjää kantoihin luot.

Vähän aikaa Odoota pyöriteltyäsi todennäköisesti huomaat, että sinustakin on tullut Odoo-fani :)

Tämä on lähes suoraa kopiota aiemmasta Odoo 8 -asennusohjeesta. Tällä ohjeella voi asentaa nopeasti ja helposti Odoo v9 testaukseen ja ratkaisunkehitykseen soveltuvan ympäristön pilvipalveluun.

Ennen asennusta tarvitaan "clean" Ubuntu 16.04 x64 -virtuaaliserveri. Sellaisen saa hyvillä spekseillä ja todella edullisesti (6.90 €/kk ALV0%) Hetzneriltä:

CORES 2
RAM 2 GB
SSD 50 GB
Connection 1 Gbit/s
Traffic 5 TB

Virtuaaliserverin asennuksen jälkeen palveluntarjoaja lähettää sähköpostin, jossa on serverin IP-osoite, root-käyttäjätunnus ja salasana. Noiden avulla serverille voi logata sisään. Tuon olen tehnyt Maccini Terminal-ohjelmalla:

ssh root@<IP-osoite>

Odoon asennukseen riittävät nämä käskyt (ohje on kopioitu täältä): 

sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/All/odoo_install.sh

chmod +x odoo_install.sh

./odoo_install.sh

Tuon jälkeen asennus ruksuttelee arviolta 5-10 minuuttia, jonka jälkeen Odoon löytää serverin ip-osoitteen takaa portista 8069 (http://xxx.xxx.xxx.xxx:8069).

Pääkäyttäjän "Email" on oletuksena admin ja myös Odoon master password on tuossa asennusscriptissä "admin”. Tuo Master Password kannattaa vaihtaa Database Managerilla (ks. kuva alla) välittömästi ensimmäisen kannan kuonnin jälkeen, mikäli sitä ei ole muuttanut jo suoraan scriptiin ennen sitä. Suora linkki Database Manageriin myöhemmin: http://xxx.xxx.xxx.xxx:8069/web/database/manager