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
- Prerequisites
- System Requirements
- Python Instaleation
- PostgreSQL Setup
- Odoo Instaleation
- Nginx Configuration
- SSL Certificate Setup
- Production Configuration
- Module Management
- Database Management
- Backup Strategy
- Conclusion
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:
- Login to Odoo
- Go to Apps
- Search for module name
- 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.


