Cómo desplegar Odoo 17 en un servidor europeo seguro: guía completa
Aprende a instalar, configurar y asegurar Odoo 17 en un servidor Linux alojado en Europa. Tutorial paso a paso que cubre la configuración de PostgreSQL, reverse proxy, SSL y hosting compatible con el RGPD.
Si diriges una empresa europea y necesitas un sistema ERP que respete la soberanía de tus datos, desplegar Odoo 17 en un servidor ubicado físicamente en la UE es una de las decisiones más inteligentes que puedes tomar. Sin embargo, la mayoría de los tutoriales omiten los detalles críticos: dónde se encuentra realmente el servidor, cómo endurecerlo para producción y qué obligaciones del RGPD asumes en el momento en que los datos de los clientes tocan el disco.
Esta guía te lleva paso a paso por el despliegue de Odoo 17 en un servidor Linux europeo desde cero, cubriendo PostgreSQL, reverse proxy con Nginx, certificados SSL y la base de seguridad que toda instancia en producción necesita.
Por qué importa la ubicación del servidor para Odoo
Odoo almacena todo: facturas, contactos de clientes, registros de empleados, datos contables. Bajo el RGPD, esto se considera tratamiento de datos personales. Si tu servidor se encuentra fuera de la UE (o con un proveedor con sede en EE. UU. sujeto a la CLOUD Act), podrías enfrentar problemas de cumplimiento independientemente de lo que diga tu política de privacidad.
Elegir un proveedor de hosting de propiedad europea con servidores en la UE elimina este riesgo a nivel de infraestructura. No necesitas Cláusulas Contractuales Tipo, ni decisiones de adecuación que monitorizar: tus datos simplemente permanecen bajo jurisdicción europea.
Requisitos previos
Antes de empezar, asegúrate de tener:
- Un servidor limpio con Ubuntu 22.04 LTS o Debian 12 con al menos 2 vCPUs, 4 GB de RAM y 40 GB de SSD
- Un nombre de dominio apuntando a la dirección IP de tu servidor
- Acceso root o sudo por SSH
- El servidor alojado en un centro de datos de la UE (Alemania, Finlandia, Francia o los Países Bajos son opciones populares)
Paso 1: Preparación del sistema
Actualiza tu sistema e instala las dependencias necesarias:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip python3-dev python3-venv \
libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev \
libldap2-dev build-essential libssl-dev libffi-dev \
libjpeg-dev libpq-dev liblcms2-dev libblas-dev \
libatlas-base-dev node-less npm wkhtmltopdf
Crea un usuario de sistema dedicado para Odoo; nunca lo ejecutes como root:
sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
Paso 2: Instalar y configurar PostgreSQL
Odoo requiere PostgreSQL. Instálalo y crea un usuario de base de datos:
sudo apt install -y postgresql
sudo su - postgres
createuser --createdb --username postgres --no-createrole \
--no-superuser --pwprompt odoo
exit
Elige una contraseña segura y guárdala de forma segura. Este usuario será el propietario de todas las bases de datos de Odoo.
Para producción, ajusta PostgreSQL según la RAM disponible. Edita /etc/postgresql/15/main/postgresql.conf:
shared_buffers = 1GB
effective_cache_size = 3GB
work_mem = 16MB
maintenance_work_mem = 256MB
Reinicia PostgreSQL después de los cambios:
sudo systemctl restart postgresql
Paso 3: Instalar Odoo 17 desde el código fuente
Clona el repositorio oficial y configura un entorno virtual de Python:
sudo su - odoo
git clone https://github.com/odoo/odoo.git --depth 1 \
--branch 17.0 /opt/odoo/odoo17
python3 -m venv /opt/odoo/odoo17-venv
source /opt/odoo/odoo17-venv/bin/activate
pip install wheel
pip install -r /opt/odoo/odoo17/requirements.txt
deactivate
exit
Crea el archivo de configuración de Odoo en /etc/odoo.conf:
[options]
admin_passwd = YOUR_STRONG_MASTER_PASSWORD
db_host = localhost
db_port = 5432
db_user = odoo
db_password = YOUR_DB_PASSWORD
addons_path = /opt/odoo/odoo17/addons
default_productivity_apps = True
logfile = /var/log/odoo/odoo.log
log_level = warn
xmlrpc_port = 8069
proxy_mode = True
Importante: Configura proxy_mode = True ya que ejecutaremos Odoo detrás de Nginx.
Paso 4: Crear un servicio Systemd
Crea /etc/systemd/system/odoo17.service:
[Unit]
Description=Odoo 17
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo17
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo17-venv/bin/python3 \
/opt/odoo/odoo17/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
Restart=on-failure
[Install]
WantedBy=multi-user.target
Habilita e inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl enable --now odoo17
Paso 5: Configurar Nginx como reverse proxy con SSL
Instala Nginx y Certbot para obtener certificados gratuitos de Let's Encrypt:
sudo apt install -y nginx certbot python3-certbot-nginx
Crea la configuración del sitio en Nginx en /etc/nginx/sites-available/odoo:
upstream odoo {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name your-domain.eu;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name your-domain.eu;
ssl_certificate /etc/letsencrypt/live/your-domain.eu/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.eu/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
client_max_body_size 200m;
location / {
proxy_pass http://odoo;
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;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
}
Activa el sitio y obtén tu certificado SSL:
sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/
sudo certbot --nginx -d your-domain.eu
sudo systemctl restart nginx
Paso 6: Endurecimiento de seguridad
Una instancia de Odoo en producción necesita más que solo SSL. Aplica estos pasos esenciales de endurecimiento:
Reglas de firewall — permite solo SSH, HTTP y HTTPS:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Desactiva el gestor de bases de datos en producción añadiendo lo siguiente a /etc/odoo.conf:
list_db = False
Habilita las actualizaciones de seguridad automáticas:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Configura fail2ban para proteger contra ataques de fuerza bruta:
sudo apt install -y fail2ban
Copias de seguridad automatizadas
Los datos de tu Odoo son tu negocio. Configura copias de seguridad diarias de PostgreSQL:
sudo -u odoo pg_dump odoo_production | gzip > \
/opt/odoo/backups/odoo_$(date +%F).sql.gz
Añádelo a un cron job y considera replicar las copias de seguridad a una segunda ubicación en la UE para recuperación ante desastres.
Errores comunes que debes evitar
- Ejecutar Odoo como root — usa siempre un usuario de sistema dedicado
- Omitir
proxy_mode— sin él, Odoo no puede ver las IPs reales de los clientes detrás de Nginx - Usar la contraseña maestra por defecto — cambia
admin_passwdinmediatamente - No tener estrategia de backup — la corrupción de la base de datos o un borrado accidental te costará caro
- Ignorar la rotación de logs — los logs de Odoo pueden llenar tu disco; configura logrotate
Cuando el autoalojamiento se convierte en una carga
Desplegar Odoo tú mismo te da control total, pero también significa que asumes toda la responsabilidad operativa: parches de seguridad, ajuste de PostgreSQL, renovación de SSL, verificación de copias de seguridad, monitorización del uptime y escalado a medida que tu negocio crece.
Muchas empresas europeas empiezan con el autoalojamiento y rápidamente se dan cuenta de que la carga operativa resta tiempo de ingeniería a su producto principal. Ese es exactamente el problema que Alplink resuelve.
En Alplink, ofrecemos hosting gestionado de Odoo en infraestructura europea impulsada por NixOS, con despliegues reproducibles, copias de seguridad automatizadas, endurecimiento de seguridad y cumplimiento del RGPD integrado desde el primer día. Obtienes todos los beneficios del autoalojamiento (soberanía total de datos, residencia de datos exclusivamente en la UE) sin la carga operativa. Ponte en contacto y déjanos encargarnos de la infraestructura para que puedas centrarte en gestionar tu negocio.