Odoo ERP Instaleation on Linux

Odoo is a comprehensive, open-source enterprise resource planning (ERP) system providing integrated management of business operations and customer relations. With modules for sales, accounting, inventory, human resources, and more, Odoo enables businesses to streamline processes and improve efficiency. This guide covers Python setup, PostgreSQL configuration, Nginx installation, module management, and production deployment.

Tabla de contenidos

Requisitos previos

Ensure you have:

  • Ubuntu 20.04 LTS or later
  • Root or sudo access
  • A registered domain name
  • Minimum 4GB RAM (8GB+ recommended)
  • 50GB available disk space
  • Basic Linux administration knowledge

Actualice los paquetes del sistema:

sudo apt update && sudo apt upgrade -y

Requisitos del sistema

Verifique las especificaciones del sistema:

Check OS version:

cat /etc/os-release
uname -m

Check available resources:

free -h
df -h

Instale required packages:

sudo apt install -y build-essential libssl-dev libffi-dev python3-dev python3-pip python3-venv python3-wheel

Python Instaleation

Instale Python 3.8 or later:

sudo apt install -y python3 python3-pip

Verifique Python version:

python3 --version
pip3 --version

Instale required Python packages:

sudo apt install -y python3-docutils python3-imaging python3-jinja2 python3-ldap python3-lxml python3-mako python3-markupsafe python3-dev python3-mock python3-openid python3-odf python3-passlib python3-pil python3-psycopg2 python3-pydot python3-pypdf2 python3-pyserial python3-reportlab python3-requests python3-tz python3-urllib3 python3-werkzeug python3-xlrd python3-xlwt

PostgreSQL Setup

Instale PostgreSQL:

sudo apt install -y postgresql postgresql-contrib

Inicie y habilite PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Cree Odoo database user:

sudo -u postgres createuser odoo

Configure PostgreSQL authentication:

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

Ensure local connections use md5 or scram-sha-256:

local   all             odoo                                    md5

Reinicie PostgreSQL:

sudo systemctl restart postgresql

Odoo Instaleation

Cree Odoo user:

sudo useradd -r -s /bin/bash -m -d /opt/odoo odoo

Cree installation directory:

sudo mkdir -p /opt/odoo
sudo chown -R odoo:odoo /opt/odoo

Descargue Odoo:

cd /tmp
wget https://github.com/odoo/odoo/archive/refs/tags/16.0.tar.gz
tar -xzf 16.0.tar.gz
sudo mv odoo-16.0 /opt/odoo/server
sudo chown -R odoo:odoo /opt/odoo/server

Cree Python virtual environment:

cd /opt/odoo/server
sudo -u odoo python3 -m venv venv

Activate virtual environment:

sudo -u odoo bash -c "source venv/bin/activate && pip install --upgrade pip setuptools wheel"

Instale Odoo requirements:

sudo -u odoo bash -c "source venv/bin/activate && pip install -r requirements.txt"

Cree Odoo configuration directory:

sudo mkdir -p /etc/odoo
sudo chown -R odoo:odoo /etc/odoo

Cree Odoo configuration file:

sudo nano /etc/odoo/odoo.conf

Add configuration:

[options]
admin_passwd = SecurePassword123!
db_host = localhost
db_port = 5432
db_user = odoo
db_password = False
addons_path = /opt/odoo/server/addons
data_dir = /var/lib/odoo
logfile = /var/log/odoo/odoo-server.log
log_level = info
workers = 4
limit_memory_soft = 2147483648
limit_memory_hard = 2684354560
limit_request = 8192
max_cron_threads = 2

Cree log directory:

sudo mkdir -p /var/log/odoo
sudo chown -R odoo:odoo /var/log/odoo
sudo mkdir -p /var/lib/odoo
sudo chown -R odoo:odoo /var/lib/odoo

Configuración de Nginx

Instale Nginx:

sudo apt install -y nginx

Cree Nginx configuration:

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

Add configuration:

upstream odoo {
    server localhost:8069;
}

upstream odoo_websocket {
    server localhost:8072;
}

server {
    listen 80;
    listen [::]:80;
    server_name odoo.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name odoo.example.com;

    ssl_certificate /etc/letsencrypt/live/odoo.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/odoo.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    client_max_body_size 100M;

    location / {
        proxy_pass http://odoo;
        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 $scheme;
    }

    location /websocket {
        proxy_pass http://odoo_websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Enable site:

sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl start nginx
sudo systemctl enable nginx

Configuración del certificado SSL

Instale Certbot:

sudo apt install -y certbot python3-certbot-nginx

Obtain SSL certificate:

sudo certbot certonly --standalone -d odoo.example.com

Verifique certificate:

sudo openssl x509 -in /etc/letsencrypt/live/odoo.example.com/fullchain.pem -noout -dates

Production Configuration

Cree systemd service:

sudo nano /etc/systemd/system/odoo.service

Add:

[Unit]
Description=Odoo
After=postgresql.service

[Service]
Type=simple
User=odoo
Group=odoo
WorkingDirectory=/opt/odoo/server
ExecStart=/opt/odoo/server/venv/bin/python /opt/odoo/server/odoo-bin -c /etc/odoo/odoo.conf
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Enable and start Odoo:

sudo systemctl daemon-reload
sudo systemctl enable odoo
sudo systemctl start odoo

Verifique service:

sudo systemctl status odoo
sudo journalctl -u odoo -f

Access Odoo web interface:

Navigate to https://odoo.example.com

Module Management

Instale additional modules:

sudo -u odoo bash -c "cd /opt/odoo/server && source venv/bin/activate && pip install odoo-bin-addons-account"

Enable modules via web interface:

  1. Login to Odoo
  2. Go to Apps
  3. Search for module name
  4. Click "Instale"

Cree custom module:

cd /opt/odoo/server/addons
sudo -u odoo mkdir -p custom_module
sudo -u odoo nano custom_module/__manifest__.py

Add module manifest:

{
    'name': 'Custom Module',
    'version': '1.0',
    'depends': ['base'],
    'installable': True,
}

Database Management

Cree new Odoo database:

createdb -U odoo -h localhost new_database

Backup Odoo database:

pg_dump -U odoo new_database | gzip > /backups/odoo_database_backup.sql.gz

Restore Odoo database:

gunzip < /backups/odoo_database_backup.sql.gz | psql -U odoo new_database

Backup Strategy

Cree backup script:

sudo nano /usr/local/bin/odoo-backup.sh

Add:

#!/bin/bash

BACKUP_DIR="/backups/odoo"
ODOO_DIR="/opt/odoo"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR

# Database backup
pg_dump -U odoo -h localhost odoo | gzip > "$BACKUP_DIR/odoo-db-$DATE.sql.gz"

# Configuration backup
tar -czf "$BACKUP_DIR/odoo-config-$DATE.tar.gz" /etc/odoo

# Files backup
tar -czf "$BACKUP_DIR/odoo-data-$DATE.tar.gz" /var/lib/odoo

# Keep only 30 days
find $BACKUP_DIR -type f -mtime +30 -delete

echo "Backup completed: $DATE"

Make executable:

sudo chmod +x /usr/local/bin/odoo-backup.sh

Schedule daily backups:

sudo crontab -e

Add:

0 2 * * * /usr/local/bin/odoo-backup.sh >> /var/log/odoo-backup.log 2>&1

Conclusión

Odoo ERP is now fully installed and configured as an enterprise resource planning system. With PostgreSQL database, Nginx reverse proxy, SSL encryption, and multi-worker configuration, you have a scalable business management platform. Instale industry-specific modules, configure workflows, and integrate with your business processes. Regular backups ensure data protection and business continuity.