El objetivo que planteo en este caso es una instalación de Odoo 10 en un contenedor Proxmox con ubuntu 16.04 Nginx y certificado LetsEncrypt.

Partimos de la base de que tenemos el servidor en So You Star (ovh). Vamos a ello!!

  1. En primer lugar vamos de compras, compramos  en so you star (ovh) una ip failover que asignaremos al contenedor que crearemos en nuestro servidor dedicado con proxmox instalado, y a la ip le creamos una dirección mac (todo ello en so you star).
  2. Nos conectamos a proxmox y creamos el contenedor, a continuación pongo imagen (1) de la configuración de la red ya que es lo más dificil, en la puerta de enlace ponemos la ip del servidor proxmox con el último bloque de la ip con valor .254. Es importante asignar bien la ip del contenedor, si es una sola ip la que compramos pondremos /32 al final. No hemos de olvidar indicar también la dirección mac. Dejo una imagen de la parte más difícil que es configurar en proxmox la red del contenedor:

    (1) Configuración de red de nuestro contenedor en Proxmox para instalar Odoo 10

  3. Una vez creada, entramos por ssh y probamos una dirección externa haciendo un pin, por ejemplo yo hice «ping zonamovil.es» y tuve respusesta del servidor de destino por lo que todo ok, tenemos conexión a internet con el exterior.
  4. Ahora nos conectamos por consola al contenedor desde el panel de proxmox, nos pedirá la contraseña que hemos puesto al crear el contenedor, una vez hemos entrado vamos a crear el archivo de instalación de odoo, o mejor nos lo bajaremos directamente de internet y lo instalaremos todo de una vez, para ello utilizaremos los siguientes pasos:
    Installation procedure
    Download the script:
    sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/10.0/odoo_install.sh
    Make the script executable:
    sudo chmod +x odoo_install.sh
    Execute the script:
    sudo ./odoo_install.sh

    Una vez instalado todo escribiendo en la barra de dirección de nuestro navegador: http://:8069 veremos que tenemos acceso a odoo. Aunque el objetivo es que funcione con el protocolo https y por tanto que nuestros datos viajen cifrados, vamos a ello …

  5. El siguiente paso es cifrar el envío y recepción de paquetes en Odoo vamos a ver como añadir certificado de seguridad. Para ello utilizaremos Certbot y Nginx:
    Asumimos que tenemos instalado Odoo correctamente
    
    Instalamos Nginx:
    apt-get install nginx
    
    Instalamos Certbot
    apt-get update
    apt-get install software-properties-common
    add-apt-repository ppa:certbot/certbot
    apt-get update 
    apt-get install certbot
    
    Obtenemos el certificado
    Se recomienda detener el servicio de nginx y el dominio.com será el dominio del cual deseas obtener el certificado de seguridad.
    service nginx stop
    certbot certonly --standalone -d dominio.com
    service nginx start
    
    Al ejecutar el comando de la linea 2, nos pedirá nuestro correo, el cual debemos de colocar, también nos pedirá que aceptemos los términos y condiciones (Aceptamos) y una pregunta final si nos gustaría compartir nuestro correo con Electronic Frontier Foundation (EFF), el cual aceptamos también.
    
    El certificado si lo queremos ver está en la siguiente ruta:
    cd /etc/letsencrypt/live/dominio.com/
    
    
  6. EL siguiente paso es Configurar Nginx
    Creamos el directorio:
    mkdir /etc/nginx/ssl
    
    Ejecutamos el siguiente comando, esto puede demorar un poco.
    openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048
    
    Creamos el siguiente archivo donde dominio.com es el mombre propiamente dicho te tu dominio
    nano /etc/nginx/sites-available/dominio.com
    
    Agregamos el siguiente contenido, reemplazando dominio.com por su propio dominio
    upstream odoo {
        server 127.0.0.1:8069;
    }
     
    server {
        listen      443 default;
        server_name dominio.com;
     
        access_log  /var/log/nginx/odoo.access.log;
        error_log   /var/log/nginx/odoo.error.log;
     
        ssl on;
        ssl_certificate     /etc/letsencrypt/live/dominio.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/dominio.com/privkey.pem;
        keepalive_timeout   60;
     
        ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
        ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/nginx/ssl/dhp-2048.pem;
     
        proxy_buffers 16 64k;
        proxy_buffer_size 128k;
        client_max_body_size 500M;
        proxy_read_timeout 600;
        proxy_connect_timeout 600;
    
     
        location / {
            proxy_pass  http://odoo;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            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-Proto https;
        }
     
        location ~* /web/static/ {
            proxy_cache_valid 200 60m;
            proxy_buffering on;
            expires 864000;
            proxy_pass http://odoo;
        }
    }
     
    server {
        listen      80;
        server_name dominio.com;
     
        add_header Strict-Transport-Security max-age=2592000;
        rewrite ^/.*$ https://$host$request_uri? permanent;
    }
     
    
    Activamos la nueva configuración de Nginx y reiniciamos el servicio:
    ln -s /etc/nginx/sites-available/dominio.com /etc/nginx/sites-enabled/dominio.com
    /etc/init.d/nginx restart
    
    Los certificados tienen una duración de 90 días, vamos a crear un cron para que se renueve automáticamente cada lunes a las 2:30 am y reiniciamos nginx a las 2:35 am para que use el nuevo certificado.
    crontab -e
    Agregamos lo siguiente:
    30 2 * * 1 certbot renew >> /var/log/le-renew.log
    35 2 * * 1 /etc/init.d/nginx reload
    

     

  7. Problemas y mejoras partiendo de que todo está funcionando:
    Al crear una base de datos nos aparece el siguiente mensaje:
    Database creation error: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) HINT: Use the same encoding as in the template database, or use template0 as template.
    
    La solución es esta:
    In console run psql:
    
    sudo -u postgres psql postgres
    
    then in psql console execute sequence of commands:
    update pg_database set datallowconn = TRUE where datname = 'template0';
    \c template0
    update pg_database set datistemplate = FALSE where datname = 'template1';
    drop database template1;
    create database template1 with template = template0 encoding = 'UTF8';
    update pg_database set datistemplate = TRUE where datname = 'template1';
    \c template1
    update pg_database set datallowconn = FALSE where datname = 'template0';
    
    (press Ctrl-D to quit from psql)
    
    Acceso al contenedor desde el servidor por WinSCP, para ello ver el siguiente entrada:
    
    Acceder a contenedor (CT) de Proxmox como root por ssh desde conexión remota
    Si hemos seguido la instalación sin cambiar nada en el archivo odoo_install.sh comprobaremos que podemos crear y borrar bases de datos a nuestro antojo. Claro esto no es nada seguro y nada profesional. Vamos a cambiar el password para crear y borrar bases de datos, es decir el llamado master password.
    
    Vamos al archivo de configuración de odoo en nuestro servidor, si lo hacemos por consola:
    nano /etc/odoo-server.conf
    
    Y lo dejamos como sigue sustituyendo nuevopassword por el nuestro:
    [options]
    ; This is the password that allows database operations:
    admin_passwd = nuevopassword
    db_host = False
    db_port = False
    db_user = odoo
    db_password = nuevopassword
    addons_path = /usr/lib/python2.7/dist-packages/odoo/addons
    [options]
    logfile = /var/log/odoo/odoo-server.log
    addons_path=/odoo/odoo-server/addons,/odoo/custom/addons
    xmlrpc_port = 8069
    
    hacemos un 
    reboot
    
    Y ya lo tenemos
    
    Al generar un documento en pdf para imprimirlo posteriormente me sale el siguiente mensaje "Imposible encontrar Wkhtmltopdf en el sistema. El informe será mostrado en HTML.". La herramienta Wkhtmltopdf que sirve para convertir html en un documento pdf ya se instaló junto con odoo en un paso anterior, pero al parecer la versión instalada no es compatible con ubuntu 16.04. En fin, vamos a arreglarlo:
    
    Paso 1
    Desinstalar wkhtmltox si tienes instalado alguna versión antigua:
    sudo dpkg -r wkhtmltox
    sudo rm /usr/bin/wkhtmltopdf
    sudo rm /usr/bin/wkhtmltoimage
    
    Paso2
    Descargamos una dependencia:
    sudo apt-get install xfonts-75dpi
    
    Ingresamos a una terminal y descargamos wkhtmltopdf
    sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    
    Descomprimimos:
    sudo tar Jvfx wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    
    Al descomprimir se crea una carpeta wkhtmltox y hacemos lo siguiente:
    sudo cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/
    sudo cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/
     
    sudo cp wkhtmltox/bin/wkhtmltopdf /usr/bin/
    sudo cp wkhtmltox/bin/wkhtmltoimage /usr/bin/
    
    Reiniciamos el servicio de Odoo 10 y ya está.
    service odoo-server restart