https://frfirdaus.medium.com/how-to-install-odoo-x-docker-on-ubuntu-16-04-9bace6001314
===================== How To Install Odoo x Docker on Ubuntu 16.04 ==============
1.
sudo apt update
sudo apt upgrade
2. Install Prerequisite Packages
# sudo apt-get install curl nano apt-transport-https ca-certificates software-properties-common
3. Add the Docker Repositories
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
# sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
# sudo apt update
# apt-cache policy docker-ce
# sudo apt install docker-ce
# sudo systemctl status docker
# sudo systemctl enable docker
# sudo apt install docker-compose
4. Create Odoo Container on Docker
mkdir /opt/odoo/
cd /opt/odoo/
# sudo nano docker-compose.yml
version: ‘3’
services:
db:
image: postgres:latest
ports:
– “5432:5432”
environment:
– POSTGRES_DB=postgres
– POSTGRES_PASSWORD=odoo
– POSTGRES_USER=odoo
– PGDATA=/var/lib/postgresql/data/pgdata
volumes:
– odoo-db-data:/var/lib/postgresql/data/pgdata
odoo:
image: odoo:latest
depends_on:
– db
ports:
– “8051:8069”
volumes:
– odoo-data:/var/lib/odoo
– ./config_odoo:/etc/odoo
– ./aflowz_addons:/mnt/aflowz_addons
command: odoo –dev=reload
volumes:
odoo-data:
odoo-db-data:
# docker-compose up
# docker ps
i.e. http://192.168.199.107:8051/
Database Name: odoo
Email: 007zafar@gmail.com
Password: zareef@123
Phone number: 01307769179
5. 2 directories from running the docker-compose ie. aflowz_addons config_odoo docker-compose.yml
Add custom-addons:
# cd /
# cd opt/odoo/config_odoo
# sudo nano odoo.conf
[options]
addons_path = mnt/aflowz_addons
data_dir = /var/lib/odoo
admin_passwd = admin
csv_internal_sep = ,
db_password = odoo
db_port = 5432
db_template = template1
db_user = odoo
N.B. note that you need to inside the odoo directory
cd /opt/odoo/
# rm -rf aflowz_addons
–> clone your GIT repo
# git clone <your_git_repo>
# git clone https://github.com/OCA/pms.git
# git clone https://github.com/OCA/payroll.git
# git clone https://github.com/OCA/timesheet.git
# cp /opt/odoo/timesheet /mnt/aflowz_addons/
–> Restart docker container:
docker restart odoo-db-1
docker restart odoo-odoo-1
6. Set Nginx
–> check
# sudo lsof -i:80
–> disable apache2
# sudo service apache2 stop
–> Install Nginx:
sudo apt -y install nginx vim
–> Nginx Configuration:
sudo nano /etc/nginx/conf.d/odoo.conf
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8051;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
# sudo nginx -t
# sudo systemctl restart nginx
# sudo systemctl status nginx
–> example http://example.com
7. Using Let’s Encrypt SSL Certificate for Odoo on Nginx
# w!get https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo systemctl stop nginx
export DOMAIN=”example.com”
export EMAIL=”admin@example.com”
# sudo /usr/local/bin/certbot-auto certonly –standalone -d ${DOMAIN} –preferred-challenges http –agree-tos -n -m ${EMAIL} –keep-until-expiring
–> Create cron to renew the certificate.
sudo crontab -e
15 3 * * * /usr/local/bin/certbot-auto renew –pre-hook “systemctl stop nginx” –post-hook “systemctl start nginx”
–> > Create Nginx configuration file.
# sudo nano /etc/nginx/conf.d/odoo.conf
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8051;
}
# http to https redirection
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
–> Restart Nginx
# sudo systemctl restart nginx