odoo

odoo1 is a suite of web based open source apps of Enterprise Resource Planning(ERP).

1 Installing odoo CE11 on Ubuntu16.04

1.1 Prepare

 sudo adduser -m -g sudo -s /bin/bash odoo
sudo passwd odoo
sudo vi /etc/sudoers
### Add odoo to sudoer group.
### Then change root to odoo.
su odoo

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install -y wget git zsh postgresql npm python3-pip
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g less
sudo pip3 install Babel decorator docutils ebaysdk feedparser gevent greenlet html2text Jinja2 lxml Mako MarkupSafe mock num2words ofxparse passlib Pillow psutil psycogreen psycopg2 pydot pyparsing PyPDF2 pyserial python-dateutil python-openid pytz pyusb PyYAML qrcode reportlab requests six suds-jurko vatnumber vobject Werkzeug XlsxWriter xlwt xlrd

wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz /opt/
tar -xJf wkhtmlox-0.12.3_linux-generic-amd64.tar.xz
sudo chown root:root /opt/wkhtmltopdf
sudo chmod +x /opt/wkhtmltopdf
sudo ln -s /opt/wkhtmltopdf /usr/local/bin/wkhtmltopdf

1.2 Odoo

from nightly

wget -O - https://nightly.odoo.com/odoo.key | sudo apt-key add -
echo "deb http://nightly.odoo.com/11.0/nightly/deb/ ./" >> odoo.list
sudo mv odoo.list /etc/apt/sources.list.d/
sudo apt-get update && sudo apt-get install odoo

If it returns error with chown /var/odoo, just mkdir of this repository.

from github source code

git clone https://github.com/odoo/odoo.git odoo11 -b 11.0 --depth=1
sudo chown -R odoo:odoo odoo11
cd odoo11
./odoo-bin -s
ps aux | grep odoo

2 Configuration

# sudo vi /etc/odoo/odoo.conf
### Custom addons path
addons_path = /usr/lib/python3/dist-packages/odoo/addons/,/home/odoo/addons
### Custom http port
http_port = 8089

2.1 nginx reverse proxy2

https 443

sudo apt-get install nginx
### Remove nginx's default config of port 80, or just change 80 to 8080 in this file
sudo rm /etc/nginx/sites-avaliable/default
sudo vim /etc/nginx/sites-avalibale/odoo.conf
# openssl req -x509 -days 3650 -subj '/CN=your.domain/' -nodes -newkey rsa:2048 -keyout server.key -out server.crt
openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
sudo mkdir /etc/ssl/nginx
sudo mv server.crt server.key /etc/ssl/nginx
server {
listen 443 default;
server_name odoo11s;

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

ssl on;
ssl_certificate /etc/ssl/nginx/server.crt;
ssl_certificate_key /etc/ssl/nginx/server.key;
ssl_ciphers HIGH:!ADH:!MD5;
ssl_protocols SSLv3 TLSv1;
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://127.0.0.1:8089;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

proxy_buffer_size 128k;
proxy_buffers 16 64k;
proxy_redirect off;

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-Host $host;
proxy_set_header X-Forwarded-Proto https;
}

location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://127.0.0.1:8089;
}
}

# port proxy 80 to 443
server {
listen 80;
server_name odoo11s;

add_header Strict-Transport-Security max-age=2592000;
rewrite ^/.*$ https://$host$request_uri? permanent;
}

http port 8089 to http 803

sudo rm /etc/nginx/sites-enabled/default
### Paste following area codes to this file.
sudo vim /etc/nginx/sites-available/odoo
# sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo
### Test nginx's new config
sudo nginx -t
upstream odoo {
server 127.0.0.1:8089;
}
server {
listen 80 default;
server_name odoo11;

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

# proxy buffers
proxy_buffers 16 64k;
proxy_buffer_size 128k;
proxy_read_timeout 600s;

## default location
location / {
proxy_pass http://0.0.0.0:8089;

# force timeouts if the backend dies
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;


# set headers
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 https;
}

# cache some static data in memory for 60mins
location ~* /web/static/ {
proxy_cache_valid 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://0.0.0.0:8089;
}
}

Restrict uploading file size.

# sudo /etc/nginx/nginx.conf
### Add this in http area
client_max_body_size 100m;
# sudo /etc/init.d/nginx reload

2.2 git clone

If your odoo server is running on cloud server, work with git between local and cloud.

### Cloud
sudo adduser git -g git
sudo passwd git
sudo vim /etc/passwd
## git:x:1001:1001:git,,,:/home/git:/usr/bin/git-shell
sudo mkdir -p /home/git/.ssh
sudo vim /home/git/.ssh/authorized_keys
sudo mkdir -p /var/git
sudo chown -R git:git /var/git
sudo chmod 777 /var/git
cd /var/git
git init --bare odoo11.git
sudo chown -R git:git /var/git
### Local
git pull git@111.230.172.145:/var/git/odoo-dev/odoo11.git

3 Modules/Addon

3.1 web responsive

Pages adapted to mobile/pad screensize.

wget -O web_responsive.zip "https://apps.odoo.com/loempia/download/web_responsive/11.0.1.0.2/2M0BvhXUoNhxY3BrtIRd1Q.zip?deps"
# wget -O web_responsive.zip https://apps.odoo.com/loempia/download/web_responsive/11.0.1.0.2/2M0BvhXUoNhxY3BrtIRd1Q.zip?deps
# curl -o web_responsive.zip https://apps.odoo.com/loempia/download/web_responsive/11.0.1.0.2/2M0BvhXUoNhxY3BrtIRd1Q.zip?deps
unzip web_responsive.zip -d /home/odoo/addons/

3.2 chinese

Reload all module language.

wget -O base_translation_name.zip "https://apps.odoo.com/loempia/download/base_translation_module_name_reload/11.0.1.0/7mu1fkVg7RMJyfTk1HQiBF.zip?deps"
sudo unzip base_translation_name.zip -d /home/odoo/addons/

4 API

REST or XML-RPC

  1. Developer4
  2. odoouse5
  3. odoomobile6
  4. odoo community association7

5 Issues

5.1 Deny ssh users/groups

# sudo vim /etc/ssh/sshd_config
## DenyGroups git