Odoo: cómo hacer que un vendedor sólo pueda ver sus propios clientes


Ya vimos anteriormente cómo instalar Odoo 10 en Ubuntu 16.04. Pero, como dijimos, la labor de configuración posterior a la instalación es aún más importante. Nos podemos encontrar con muchísimas particularidades de nuestra empresa que queremos implementar en el ERP. En nuestro caso, una de las necesidades era que cada uno de los miembros del equipo de venta sólo pudiera visualizar sus propios clientes dentro del sistema.

Paso a paso

En el vídeo anterior se puede ver paso a paso el proceso que seguimos para conseguirlo. De forma resumida, son los siguientes:

  1. En Configuración, activar el “Modo Desarrollador”
  2. Crear un nuevo grupo de vendedores, o modificar alguno de los existentes. En nuestro caso, modificamos el grupo “Ventas / Usuario: Solo mostrar documentos propios”
  3. En la pestaña “Reglas”, hacer clic en “Añadir un elemento” y una vez aquí, hacer clic en el botón “Crear”.
  4. Ponerle un nombre a la nueva regla. Como objeto, buscar y seleccionar “res.partner”
  5. En el campo “Definición de regla (filtro de dominio)”, pegar el siguiente código:
    [‘|’,(‘user_id’,’=’,user.id),(‘user_id’,’=’,False)]
  6. Guardar

Con estos pasos, ya podemos comprobar cómo cada uno de los miembros de los equipos de venta sólo puede ver exclusivamente los clientes que se le han asignado.

Instalar Odoo en Ubuntu 16.04

Toda empresa necesita apoyarse en herramientas que den cobertura a sus necesidades de negocio. Existen en el mercado multitud de sistemas de información que cubren esta necesidad. Los llamados ERP ayudan a la gestión de las actividades de ventas, entregas, pagos, producción, administración de inventarios, contabilidad, recursos humanos , etc.

En nuestro caso, necesitábamos una herramienta para gestionar ventas, selección, contabilidad y facturación. Entre las muchas opciones existentes, nos decantamos por Odoo (aquí su página oficial), que es quizá el software para negocios más instalado en el mundo, con más de 2 millones de usuarios. Nació en el 2004 como Tiny ERP, posteriormente OpenERP y desde 2013 se presenta con su actual nombre.

Odoo tiene tres versiones distintas: Enterprise, Online SaaS y Community version. Esta última es la que nos resulta especialmente interesante, se trata de una aplicación plenamente OpenSource. Es una suite que consta de 34 aplicaciones principales creadas por Odoo, pero que además tiene más de 5,500 aplicaciones desarrolladas por su muy activa comunidad y que dan cobertura a la mayor parte de las necesidades de cualquier negocio. Y con la ventaja de que, al ser modular, puedes instalarte sólo aquello que necesites.

A continuación detallo los pasos que seguimos para su instalación en un servidor con Ubuntu 16.04.

Prerrequisitos

Antes de instalar Odoo realizamos los siguientes pasos:

  1. Actualizar el sistema
    sudo apt update && sudo apt upgrade
  2. Si no tenemos instalado ninguno, instalaremos un servidor web. En nuestro caso, Apache:
    sudo apt-get install apache2
  3. Hay que configurar el firewall para dejar abierto, tanto para acceso ssh como tcp, el puerto utilizado por defecto por Odoo (8069). Este puerto puede personalizarse (aunque no es recomendable configurarlo en el puerto 80, el utilizado por Apache), pero en nuestro caso será el que utilicemos. Lo habilitamos en UFW:
    sudo ufw allow ssh
    sudo ufw allow 8069/tcp
    sudo ufw enable
  4. Odoo está desarrollado en Python. Instalamos sus dependencias:
    sudo apt-get install python-dateutil python-docutils python-feedparser python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-psycopg2 python-psutil python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-unittest2 python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi poppler-utils python-pip python-pypdf python-passlib python-decorator gcc python-dev mc bzr python-setuptools python-markupsafe python-reportlab-accel python-zsi python-yaml python-argparse python-openssl python-egenix-mxdatetime python-usb python-serial lptools make python-pydot python-psutil python-paramiko poppler-utils python-pdftools antiword python-requests python-xlsxwriter python-suds python-psycogreen python-ofxparse python-gevent
  5. La base de datos que utiliza Odoo es PostgreSql. La instalamos y creamos un usuario (en nuestro ejemplo, ‘odoo’):
    sudo apt-get install postgresql
    su -- postgres
    createuser odoo
  6. Ahora creamos el directorio donde vamos a instalar Odoo (en nuestro caso, /opt/odoo):
    sudo mkdir /opt/odoo
  7. Creamos el usuario y grupo ‘odoo’ en nuestro sistema:
    sudo adduser --system --home=/opt/odoo --group odoo

Instalación de Odoo

  1. Clonamos los ficheros de Odoo en la ubicación elegida (en nuestro caso, /opt/odoo/):
    sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 10.0 --single-branch /opt/odoo
  2. Instalamos las dependencias necesarias para las App de Odoo. Wkhtmltopdf, necesario para la generación de informes en PDF, así como NPM y su paquete less:
    wget http://download.gna.org/wkhtmltopdf/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
    sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb
    sudo cp /usr/local/bin/wkhtmltopdf /usr/bin
    sudo cp /usr/local/bin/wkhtmltoimage /usr/bin
    sudo apt-get -yq install npm
    sudo ln -s /usr/bin/nodejs /usr/bin/node
    sudo npm install -g less less-plugin-clean-css
  3. Instalar las dependencias de Python (si la ruta donde instalaste Odoo es diferente, tienes que cambiar /opt/odoo/odoo-10.0 por tu ruta personalizada):
    sudo pip install -r /opt/odoo/odoo-10.0/doc/requirements.txt
    sudo pip install -r /opt/odoo/odoo-10.0/requirements.txt

Configuración

  1. Copiar el fichero de configuración que viene de ejemplo a una ubicación más conveniente. Si utilizaste una ruta personalizada, tienes que sustituir ‘/opt/odoo/odoo-10.0’ por la tuya propia:
    sudo cp /opt/odoo/odoo-10.0/debian/odoo.conf /etc/odoo.conf
  2. Modificar el fichero de configuración con tus propios datos:
    [options]
    admin_passwd = tupasswordpersonalizadoyfuerte
    db_host = False
    db_port = False
    db_user = odoo
    db_password = False
    addons_path = /opt/odoo/odoo-10.0/addons (modificar si instalaste en otra ruta)
    xmlrpc_port = 8069
    logfile = /var/log/odoo/odoo.log
    log_level = error
    SECURITY_EMAIL_SENDER = ‘tu@mail.com’

Configurar Odoo como servicio

  1. Creamos un fichero llamado odoo.service en /etc/systemd/system, con un contenido como este (de nuevo, si utilizaste rutas diferentes en la instalación, tendrás que personalizarlas aquí):
    [Unit]
    Description=Odoo
    Documentation=http://www.odoo.com/
    [Service]
    # Ubuntu/Debian convention:
    Type=simple
    User=odoo
    ExecStart=/opt/odoo/odoo-10.0/odoo-bin -c /etc/odoo.conf[Install]
    WantedBy=default.target
  2. Cambia propietario y permisos del fichero de configuración para que lo lance el usuario que hemos creado (‘odoo’) :
    sudo chown odoo: /etc/odoo.conf
    sudo chmod 640 /etc/odoo.conf
  3. Arrancamos el servicio:
    sudo systemctl start odoo.service
  4. Comprobamos que funciona:
    sudo systemctl status odoo.service
  5. Si todo está bien, habilitamos el servicio, con lo que se iniciará cada vez que arranque el sistema:
    sudo systemctl enable odoo.service

Configuración de Apache

  1. Para poder acceder a Odoo desde tu propio dominio y sin necesidad de añadir el puerto 8069 en la URL, configuramos un Proxy Reverso en Apache. Primero, habilitamos los siguientes módulos:
    sudo a2enmod proxy
    sudo a2enmod proxy_http
  2. Creamos un archivo de configuración para tu dominio:
    sudo gedit /etc/apache2/sites-available/tu-dominio.com.conf
  3. Añadimos el siguiente contenido:
    <VirtualHost *:80>
    ServerName tu-dominio.com
    ServerAlias www.tu-dominio.com
    ProxyRequests Off
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    ProxyPass / http://tu-dominio.com:8069/
    ProxyPassReverse / http://tu-dominio.com:8069/
    <Location />
    Order allow,deny
    Allow from all
    </Location>
    </VirtualHost>
  4. Una vez guardado el contenido del fichero de configuración, lo habilitamos:
    sudo a2ensite tu-dominio.com.conf
  5. Reiniciamos Apache:
    sudo service apache2 restart

Iniciando Odoo

  1. Si todo ha ido bien hasta ahora, ya podemos acceder a Odoo simplemente introduciendo en un navegador la direccón de nuestro dominio:
    http://tu-dominio.com
  2. Debe aparecer una pantalla como la siguiente:
  3. Sólo debemos proporcionar el nombre de la base de datos que creamos en un paso anterior, nuestro e-mail y el password. Con esto ya está Odoo completamente instalado y funcional… ahora sólo queda (pero eso ya no es objeto de este post) instalar los módulos deseados, así como configurar e implementar los procesos de nuestra empresa.

Adiós, Joselito

Me envía mi hermana el artículo que ha publicado Enrique Sánchez en La Voz de Alcalá, en memoria de mi padre:

“Cuando uno supera cierta edad, la memoria se va perdiendo pero a cambio se hace más selectiva, más concreta. Por eso tengo recuerdos concretos y seguidos de mi amigo José Antonio Moreno Martín, recientemente fallecido después de una difícil enfermedad.

Nos conocíamos desde la infancia, nacimos en el mismo barrio, en El Derribo. Estuvimos juntos en la clase segunda del colegio salesiano. Jugamos en el colegio y en la calle.

Cuando estuvo en la tienda de Juan Alarcón, en La Cruz del Inglés, todavía tenía pantalones cortos. Su afición al motor y a todo aquello que tenía ruedas le cautivaba. Después entró en la fábrica de cementos de Alcalá. Nuestra amistad se retomó. Hicimos viajes juntos con su mujer, Águila, y con la mía. Nos reíamos, José Antonio,  Pepe o Joselito como me gustaba llamarle tenía sentido del humor a pesar de su aparente seriedad. Será muy difícil olvidarlo en sus salidas acompañado por Águila por la calle La Mina. Con su amistad, la de su mujer, su hijo Martín y la de su hija Lorena, siempre lo tendré en mi recuerdo como amigo y como persona”.

Ahora que no estás

Papá

José Antonio Moreno Martín. Papá: te echo rabiosa y dolorosamente de menos. Y no es que no haya tenido tiempo para prepararme para tu ausencia, es simplemente que soy incapaz de rehacer los mapas con los que he guiado mi vida y en los que tú, siempre, has sido ese puerto en el que tarde o temprano acababa recalando, y el único lugar de mi universo al que podía llamar casa, hogar, patria.
Ahora ya no puedo regresar a ti, no de una forma material y concreta y palpable, porque ahora vives en mi memoria. Ahora, que ya no estás, igual ha llegado el momento de decirte algunas cosas.

Forma de ser

Tú ya sabes, cómo no vas a saber, de esa forma mía de ser. Sabes que me guardo los sentimientos bajo siete candados cuya llave perdí mucho antes de que algún día tuviera la necesidad de ir a buscarla. A pesar de eso, a pesar de que durante gran parte de nuestra vida el afecto se comunicaba disimulado bajo pequeños gestos, hace ya algún tiempo que conseguí decirte abiertamente que te amaba. “Te quiero, papá”, te he dicho muchas veces, y cada vez más claro en los últimos años. Pero quizá no te dije exactamente lo que quería decir. No todos los “te quiero” son iguales.
Hemos compartido juntos casi medio siglo de vida. Cuando llegué a la tuya tú eras un joven pletórico, exultante de vida. Habías nacido 26 años atrás en una Alcalá de Guadaira que aún aguantaba la respiración, con miedo, tras la Guerra Civil. Pero tú no sabías nada de eso. La tuya fue una infancia libre y rebelde, feliz. Tu madre, mi abuela, trabajaba en uno de tantos almacenes de aceitunas, y eso te daba vía libre para campar a tus anchas por las calles de nuestro pueblo. Casi te cuesta la vida cuando te arreguinchaste a uno de los pocos coches que había en Alcalá en aquella época (el del notario, creo) y, pasado el puente con dirección a Utrera, te caíste hacia atrás. Casi mueres aquella vez, pero tú lo único que contabas era que se te había quedado el cráneo blando como una breva. Y te reías.

Guadaira

También te colabas el el tren de los panaderos en dirección a Mairena, para visitar a tu abuelo el picapedrero, que trabajaba en una cantera por allá. O te escapabas al río para bañarte con tus amigos… aunque esto último no te salió tan bien. Avisada un día tu madre por unas vecinas, te sorprendió en las riberas del Guadaira y te dio tal cantidad de alpargatazos que no volviste a aparecer por allí. Ni aprendiste a nadar. Nunca aprendiste a nadar.
A mediados de la década de los 50 tú ya eras un hombrecito alto, desgarbado y encantador. A ti te hubiera gustado estudiar medicina, era tu gran sueño, pero la realidad material de nuestra familia te impuso otro destino. Abandonaste los Salesianos antes de comenzar el Bachiller, y comenzaste a trabajar con apenas 14 años.
Previamente habías seguido un curso de contabilidad por correspondencia en CEAC. Eso te permitió entrar como aprendiz en el taller de Juan Alarcón.
Trabajabas incansablemente porque tenías que sustentar a tu familia. La abuela ganaba poco en el almacén de aceitunas, y el abuelo, devastado por el alcohol, aún menos en los trabajos ocasionales que le iban saliendo. Así que, con dos hermanos pequeños (Consuelo, nueve años menor, y Javier, un recién nacido en la época, catorce años más joven que tú), te echaste a la espalda la responsabilidad de sacar esa casa adelante.
Para ti era un orgullo entregar el salario a tu madre. Para ti era la pura felicidad poder comprarles la primera televisión que tuvieron. Y para ti el trabajo era también, además de una responsabilidad, un espacio donde crecer, donde seguir aprendiendo y también donde divertirte.

Trastadas

Aún sigues sin explicarte cómo no te despidió Juan Alarcón de tantas trastadas como hiciste. Como aquella vez que, intentando aprender a conducir, empotraste un seiscientos contra una columna y, de los nervios, acelerabas aún más, al punto de casi derribar por completo la nave. O esa otra que, trasteando con unos cables y una navaja (ni te acuerdas para qué) casi te matas electrocutado, y provocaste un apagón en el taller.
Pero bueno, me dejo de historias porque, al final, la gran historia de tu vida ha sido, hasta el final, tu mujer, mi madre. “Mi Águila”, como decías con todo el amor del mundo rebosando de tus palabras. Con ella has estado hasta el final, en una historia de amor tan enorme que muchas veces en mi vida me ha resultado difícil de comprender. De tan hermosa.

Amor

Y vuelvo por donde empecé. A mi me gustaría quererte sólo la mitad de bien que nos amaste. Bien que sé de las noches sin dormir por mi culpa, pero nunca hubo una mala palabra por tu parte. Me quisiste libre y me apoyaste, sin niguna queja, aunque te hiciera daño. Tan buena persona, que siempre me he sentido indigno a tu lado (seguro que me hubieras regañado al oír esto). Por eso, ahora que no estás, te digo más fuerte que nunca: “te quiero, papá”. Siempre.

Miedo

Miedo
La vida pasa como pasa, no como uno quisiera. Yo había planeado con tanto cariño la llegada de mi hija a México… Sí, está aquí conmigo, por fin después de tanto tiempo.
Soy muy feliz por eso, y también estoy ilusionado por el comienzo de un nuevo trabajo. En breve nos cambiaremos de departamento, en la misma colonia de Ciudad de México, pero mucho más cerca tanto del trabajo como de la escuela de Sara.
Todo va bien, todo debería ir bien, yo debería estar tranquilo y relajado.
Pero siento miedo.

La enfermedad de mi padre absorbe todos mis pensamientos y no hay nada que haga o que diga que lo pueda evitar. Me gustaría soñar, pero solo tengo miedo.

No me canso de decir “te quiero”

Mi primer cumpleañosNo hay nada peor que estar lejos cuando te necesitan. No hay nada peor que estar lejos cuando me necesitas, papá. Hace más de un año que supimos que estabas muy enfermo. Más de un año en el que te he visto cada vez que he podido, que siempre ha sido demasiado poco.

Mamá y hermana han estado ahí, a tu lado, cuidándote, haciendo lo posible y lo imposible para que el devastador efecto de la quimioterapia te fuera lo más llevadero posible. Vigilando tu dieta, tu medicación, pero, sobre todo, estando a tu lado.

Yo, a 10.000 kilómetros, siento que te he fallado. El mes pasado todo empeoró. Quién sabe si por el tratamiento, por tu enfermedad o porque sí, se quebró una de tus caderas. Yo volé en cuanto lo supe hasta Sevilla, fui directo al hospital de Valme, donde mamá llevaba ni se sabe cuánto tiempo a tu lado, sin dormir.

Las noches

Pedí las noches para mi. Todas las noches en el hospital las pasé contigo, obligué a mamá a retirarse a casa, aunque sé que ella no tiene otro lugar que no sea a tu lado. Casi te nos vas. La operación de la cadera salió aparentemente “bien”, pero no se dieron cuenta de que te habían dejado perforada una arteria. Te estabas desangrado por dentro, y pese a nuestras reiteradas llamadas de ayuda al equipo médico, no te hicieron caso durante todo el fin de semana. Solo el lunes repararon en su “error”.

Pero bueno, la pasamos. Eres fuerte. Poco a poco recuperaste la consciencia. No sabes qué hermoso es oír tu voz. Pero también lo es velar tu sueño, en silencio. Fueron horas en que la memoria, mientras mi vista reposaba en tu cuerpo debilitado, se disparaba frenética hacia recuerdos que ni sospechaba que aún estaban ahí. Recordé esos domingos, todos los domingos durante años en nuestras vidas, que íbamos en familia a la Dehesa de Bulnes. Dejábamos el auto a la sombra de alguna buena encina, el abuelo preparaba el fuego y demás nos dispersábamos por los cerros de la Dehesa a la busca de espárragos. Al principio yo iba contigo, me enseñabas con tu mirada a saber dónde tenía que mirar.

Recuerdos

Recordé un viaje a Galicia que, en aquella época, yo tenía 9 años, fue toda una aventura para mi. Tres maravillosos días en el R6. Recordé la primera vez que fuimos a la que después fue tu segunda casa, Conil. Recordé cosas mucho más antiguas, como los paseos por el parque de Maria Luisa, y sí, recordé, aunque creo que era demasiado pequeño para recordar, mis primeros años en la calle Nueva. Sí, como en la foto. Tú tenías 27 años en mi primer cumpleaños, y aunque no puedo recordar tan lejos, sí que tengo en la memoria a ese joven de mirada bondadosa y sonrisa de felicidad. Mi papá.

Pero bueno, el mes pasó. Finalmente te dieron el alta. Tu vuelta a casa ya no fue como antes. Tuvimos que colocar una cama adaptada en la sala. Contratamos a una enfermera para que te ayudara a volver a ponerte en pie. Lo hiciste, conseguiste incorporarte sobre tu propio peso. Pero siempre por poco tiempo. Estás muy enfermo, muy débil, y yo siento de nuevo que te he vuelto a fallar. Me tuve que regresar. 10.000 kilómetros nos separan de nuevo.

Pero en todo este tiempo sí hubo una cosa que no me cansé de decir: “te quiero”. Te lo dije todos los días a todas horas, porque sé que a lo largo de mi vida no te lo había dicho lo suficiente. Pero ya no. Ya no juego a los sobreentendidos. Ya no me canso de decir “te quiero”.

 

 

Cómo instalar Plexpy en Ubuntu

Una eficaz y potente herramienta para monitorizar la actividad de tu Plex Media Server

PlexPy
Cuando tu servidor Plex alcanza una cantidad de contenido multimedia considerable y cuando, además, compartes tus contenidos con decenas de usuarios, es una buena idea tener algún tipo de sistema de monitorización. Puede que te interese saber quién está viendo, y cuándo, tu biblioteca multimedia, saber cuáles son los contenidos más demandados, desde qué dispositivos se consumen, etcétera.
Para ello, y de entre las varias opciones que existen, PlexPy es posiblemente una de las más completas y potentes. Se trata de un sistema de monitorización escrito en python y que ha sido diseñado específicamente para Plex. Incluye una increíble cantidad de características que permiten monitorizar la actividad en tiempo real del servidor Plex, acceder a registros históricos, configurar todo tipo de alertas personalizadas, estadísticas, actividad por usuario, y muchas más.

Instalación de Plexpy

El proceso de instalación en Ubuntu es bien simple, lo resumo a continuación:

  1. Si no tenemos aún instalado git, lo instalamos:
    sudo apt-get install git-core
  2. Instalamos PlexPy:
    cd /opt
    sudo git clone https://github.com/drzoidberg33/plexpy.git
    cd plexpy
    sudo python PlexPy.py
  3. Para salir de la pantalla que se nos muestra a continuación, tecleamos:
    :q
  4. En un navegador, introducimos la IP del servidor donde hayamos instalado PlexPy seguido del puerto 8181. Por ejemplo, 192.168.0.1:8181
  5. Esto nos muestra la pantalla de configuración de PlexPy. Introducimos nuestro usuario y contraseña de Plex y ya está. Sólo tenemos que configurarlo a nuestro gusto.
  6. Finalmente, para arrancar automáticamente Plexpy como servicio, tecleamos lo siguiente:
    sudo adduser –system –no-create-home plexpy
    sudo chown plexpy:nogroup -R /opt/plexpy
    sudo ln -s /opt/plexpy/init-scripts/init.ubuntu /etc/init.d/plexpy
    sudo update-rc.d plexpy defaults
  7. Ya hemos terminado. Para arrancar el servicio:
    sudo service plexpy start

La página del proyecto en GitHub, donde se puede obtener el código fuente (y donde se pueden consultar instrucciones para su instalación en otros sistemas operativos), es la siguiente: https://github.com/drzoidberg33/plexpy

HTTPS con LetsEncrypt

Y algunos ajustes adicionales para sitios construidos con WordPress

LetsEncrypt

Cuando nació, allá por la década de los 60 del siglo pasado, Internet servía casi exclusivamente para el envío y recepción de mensajes, y el modelo se parecía mucho al del correo tradicional: el emisor envía algo a un receptor, pero siempre origen, destino y contenido eran conocidos previamente.
Este modelo del Internet primitivo cambió para siempre en 1989. Tim Berners-Lee ideó el lenguaje HTML con el objetivo de organizar los documentos del CERN.

Poco después, en 1991, este sistema se extendió para el envío de todo tipo de documentos a través de Internet, dando origen a la World Wide Web, que es lo mismo que decir Internet tal y como lo conocemos hoy día. Y todo estaba fundamentado en el protocolo de transferencia para hipertextos (HTTP). Exactamente igual que hoy.

HTTP es el protocolo que utiliza cualquier navegador para comunicarse con los servidores web, y que permiten que puedas ver, por ejemplo, esta página. Funciona bien, pero hay que tener en cuenta que con él todos los datos se transmite en texto plano, sin cifrar.

Cualquier persona dentro de tu red o que pueda interponerse entre tu computadora y el servidor será capaz de ver tus contraseñas, datos bancarios, etc. Por eso desde hace años prácticamente todas las webs transaccionales (aquellas en las que puedes realizar operaciones de cualquier índole, pero especialmente compras, transferencias, etc) utilizan HTTPS.

HTTPS

Hyper Text Transfer Protocol Secure (HTTPS) es la versión segura de HTTP. Todas las comunicaciones entre tu navegador y el servidor son encriptadas utilizando SSL/TLS (Secure Sockets Layer/Transmission Layer Security), que son dos protocolos para enviar paquetes cifrados a través de Internet. Su uso como dijimos, está ampliamente difundido entre comercios electrónicos y banca online, aunque desde hace unos años crece la presión para generalizar su uso en detrimento de HTTP. Google, por ejemplo, concede mayor relevancia en sus resultados a los sitios con HTTPS, lo que hace que cualquier experto en posicionamiento se decante por su uso.

El problema, hasta hace poco, es que los certificados que se usan para el cifrado HTTPS eran de pago. Pero todo eso cambió desde el finales del año pasado, cuando la Electronic Frontier Foundation se propuso la puesta en marcha de una “autoridad certificadora” con la intención de ayudar a cifrar el tráfico de toda la web.

LetsEncrypt

Con el nacimiento de LetsEncrypt, cualquiera puede asegurar su sitio web con HTTPS en cuestión de minutos y de forma absolutamente gratuita. Veamos cómo hacerlo en un servidor con Ubuntu Server y Apache:

  1. Comprobar que todos los paquetes del sistema están actualizados, e instalar git:
    apt-get update
    apt-get upgrade
    apt-get install git
  2. Instalar Let’s Encrypt:
    git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  3. Generar los certificados de Let’s Encrypt:
    cd /opt/letsencrypt
    ./letsencrypt-auto --apache -d ejemplo.com

    También puedes utilizar un único certificado para múltiples dominios o subdominios, para lo que tienes que añadir algunos parámetros al comando:
    ./letsencrypt-auto --apache -d ejemplo.com -d www.ejemplo.com

Con esto ya tenemos el certificado para nuestro sitio web, podemos asegurar razonablemente (https no es invulnerable) que la comunicación entre nuestro servidor y los navegadores de los visitantes del mismo ha sido cifrada y es inviolable. Cuando visiten nuestro sitio, verán algo así:

Candado verde https

Un candado verde, seguido de “https”, que indica que la conexión es segura.

Aspectos adicionales

Ya casi todo el trabajo está hecho. Pero veamos algunos aspectos a revisar.

  1. Para evitar que se pueda acceder a tu sitio web por http, y obligar a que la conexión sea siempre segura, https y por el puerto 443, teclea lo siguiente en la terminal:
    cd /etc/apache2/sites-available
    gedit tusitio.com.conf
  2. Sustituye el contenido del fichero de configuración por lo siguiente:
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =tusitio.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

    Guarda el fichero y reinicia apache
    sudo service apache2 reload

    Con esto, cualquier visitante a tu sitio web será redireccionado a la versión segura.
  3. Si tu sitio está construido con WordPress, tendrás que cambiar la configuración para evitar que el navegador te alerte de que estás ofreciendo contenido inseguro (el candado se verá tachado y/o de color naranja, según el navegador). Ve a la administración de WordPress y en “Ajustes”, cambia la URL del sitio añadiendo “https”.
  4. En función del “Theme” que estés utilizando, es posible que te salga el mismo mensaje de alerta. Revisa que todas las imágenes y URL’s introducidas en las opciones de personalización del Theme comienzan por “https”.
  5. Como apunta Manuti en su comentario, aún pueden quedar elementos que realicen llamadas hacia fuera sin usar https (puede ser el caso de algunos plugins). Estas llamadas se realizan o bien desde el código fuente del sitio web, bien desde su base de datos. Para solucionar los enlaces incorrectos en el código fuente hacemos lo siguiente:
    cd /var/www/tusitio.com
    grep -lir “http://tusitio.com”

    Este comando nos listará los ficheros que contengan un enlace con HTTP. Modificamos estos enlaces por HTTPS.
    Para corregir los enlaces incorrectos que puedan quedar en la base de datos, hacemos lo siguiente:
    mysql -u root -p nombre_de_tu_base_de_datos

    UPDATE wp_options SET option_value = replace(option_value, ‘http://tusitio.com’, ‘https://tusitio.com’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

    UPDATE wp_posts SET guid = replace(guid, ‘http://tusitio.com’,’https://tusitio.com’);

    UPDATE wp_posts SET post_content = replace(post_content, ‘http://tusitio.com’, ‘https://tusitio.com’);

    UPDATE wp_postmeta SET meta_value = replace(meta_value,’http://tusitio.com’,’https://tusitio.com’);

Y esto es todo. Ya tienes tu sitio web securizado con HTTPS.

Cambiando la ubicación de los contenidos multimedia en Plex

Paso a paso para no perder la indexación de los contenidos multimedia

Migrar contenido multimedia en Plex
Cuando migré MartinServer a un Hp Proliant G8 mantuve temporalmente todos mis contenidos multimedia en las dos NAS  Western Digital de de 3 TB y  de 6 TB que venía utilizando hasta entonces. Pero las bibliotecas de Plex (películas, series, fotos y música) habían crecido exponencialmente desde la primera instalación del Servidor Plex, y por tanto había llegado la hora de migrarlos a los dos discos de 6TB que había añadido al servidor HP Proliant G8.

La forma fácil

El procedimiento viene bien explicado en las páginas de soporte de Plex. Si lo que necesitas es solamente cambiar el contenido a un nuevo disco, la forma más sencilla es ponerle exactamente el mismo nombre al nuevo disco, y conservar la misma ruta de acceso para todos los contenidos. El procedimiento en Ubuntu sería algo así:

  1. Tienes que detener el servidor Plex. Abre una terminal y teclea:
    sudo service plexmediaserver stop
  2. Cambiamos el nombre del disco actual. Por ejemplo, si se llama “Plex”, lo renombramos a “PlexAntiguo”. En el terminal:
    sudo mv /media/Plex /media/PlexAntiguo

    Suponiendo que la partición del disco sea /dev/sdb1, tecleamos:
    sudo mount /dev/sdb1 /media/PlexAntiguo
  3. Ahora montamos el nuevo disco y le ponemos el mismo nombre que al original (en este caso, “Plex”):
    sudo mkdir /media/Plex

    Suponiendo que la partición del nuevo disco sea /dev/sdb2 (esto lo comprobamos con el comando “fdisk -l”), tecleamos:
    sudo mount /dev/sdb2 /media/Plex

    Añadimos el nuevo disco a fstab para que se monte al inicio:
    sudo nano fstab

    Añadimos la siguiente línea a fstab:
    /dev/sdb2 /media/Plex ext4 defaults 0 2

    Si hay una entrada para el disco antiguo en fstab, la eliminamos. Guardamos fstab y actualizamos:
    sudo mount -a
  4. Ya estamos en condiciones de mover todo el contenido del viejo al nuevo disco:
    mv  -v /media/PlexAntiguo/* /media/Plex/

    Si son Terabytes de contenido… paciencia.
  5. Una vez que acabe de moverse todo el contenido, desmontamos el disco antiguo:
    sudo umount /media/PlexAntiguo

    Ya podemos desconectar el disco antiguo. Sólo queda iniciar el servidor Plex:
    sudo service plexmediaserver start

    Y eso sería todo. Debería funcionar con normalidad.

La vía del penitente

Pero en ocasiones esta forma simple no nos sirve. Por ejemplo en mi caso, yo había creado mis bibliotecas de Plex en el NAS de 3TB, y cuando se llenó añadí otro NAS de 6TB. Esto supuso duplicar la estructura de carpetas, solución que no me gustaba nada. Aprovechando el cambio a los dos nuevos discos de 6TB, quería aprovechar para dejar una estructura limpia, algo así:

/Plex/
    /Peliculas/
        /NombredePelicula (año)/
            NombredePelicula (año).ext
            SubtitulodePelicula (año).spa.srt
    /Series/
        /NombreSerie/
            /Temporada 01/
                NombreSerie - s01e01.ext
                SubtituloSerie - s01e01.spa.srt

En este caso, el procedimiento se complica un poco:

  1. Deshabilitar la opción “Vaciar la papelera automáticamente después de cada escaneado”. En la interfaz web de Plex hay que ir a “Ajustes/Biblioteca/” y desmarcar la opción que se reproduce en la imagen:
    deshabilitar-vaciar-papelera
  2. Detener el servidor Plex. Abre una terminal y teclea:
    sudo service plexmediaserver stop
  3. Copiar (no mover) el contenido del viejo al nuevo disco:
    cp -R /media/PlexAntiguo/ /media/PlexNuevo/

    Aquí no tenemos que conservar la misma estructura. Es el paso que podemos aprovechar para reestructurar nuestras bibliotecas.
  4. De nuevo en la interfaz web de Plex, nos vamos a “Librerías/Añadir Biblioteca”. Aquí vamos añadiendo las diferentes bibliotecas de películas, series, música o fotos con la ubicación del disco nuevo:
    añadir-a-la-biblioteca
  5. Una vez que se han añadido todas las nuevas bibliotecas, iniciamos Plex Media Server:
    sudo service plexmediaserver start
  6. Actualiza las bibliotecas desde la interfaz web. Si tienes mucho contenido multimedia, tardará bastante. Cuando termine el proceso, verás que todo el contenido aparece duplicado.
  7. Desde la interfaz web, buscamos las bibliotecas correspondientes al disco antiguo. Seleccionamos “editar” y borramos las carpetas correspondientes al disco antiguo una a una.
    borrar-biblioteca
  8. Volvemos a actualizar las bibliotecas. Ya sólo debe aparecer el contenido del nuevo disco. Para comprobar que no hay errores, utilizamos el filtro de contenidos “buscar duplicados”. Si hay algún duplicado, seguramente se debe a un error de indexación. Editamos manualmente los contenidos mal indexados.
  9. Finalmente, vaciamos la papelera de las bibliotecas.
  10. Y con esto ya está: migrado el contenido de Plex Media Server a un disco nuevo y con una estructura distinta.

Nunca olvides el factor humano

Cómo aprendí de primera mano que no siempre la solución a los problemas de un sistema está en los logs

Limpiando la computadora
Cuando hice la migración de MartinServer ya era consciente de que no había sido todo lo “limpia” que hubiera sido de desear, y me esperaba algunos problemas.
Efectivamente, en los días siguientes vi cómo se producían desconexiones intermitentes. Creí haberlo solucionado, primero, con un script para actualizar FreeDNS, y más tarde, ya de forma más definitiva, solucionando un problema con la interfaz de red.

Problemas menores

En verdad el sistema quedó mucho más estable, ya apenas se producían caídas. Pero persistían algunos problemillas que me traían de cabeza, y me puse a estudiar como loco los logs del sistema para ver de qué coño se trataba. En primer lugar, cada vez que reiniciaba el sistema, se demoraba una eternidad. No era normal. Yo estoy acostumbrado a trabajar con Ubuntu desde hace años y nunca me había pasado nada igual. Por mucho que un servidor HP ProLiant Gen8 sea diferente, no se justificaba.
El otro problema, poco importante pero desconcertante, es que todos los días se desconectaba unos minutos a las 7:00 AM. Yo monitorizo algunos de los sitios web que alojo en MartinServer con una funcionalidad del plugin JetPack para WordPress. Este plugin te avisa si se ha producido una caída en el servicio y durante bastantes días, como digo, puntualmente me llegaba un mensaje a las 7:00 AM. Sólo duraba unos minutos, pero jodía.

Swap

En cuanto al primer problema, lo que me llamó la atención fue este error:

The disk drive for /dev/mapper/ubuntu--vg-swap_1 is not ready yet or not present.

Esto quería decir que el espacio de intercambio o “swap” no era reconocido en el arranque. Con casi toda seguridad era esto lo que estaba enlenteciendo el arranque.
Me llamó la atención la ruta “/dev/mapper/”, es la que se suele utilizar para las particiones encriptadas. Y yo no recordaba haber encriptado mi partición swap. Así que, tecleando blkid en una terminal, comprobé la UUID de la partición swap, y efectivamente no era la que daba el error. Edité fstab:
sudo nano /etc/fstab

Cambié la ruta de la partición swap por la UUID que me había proporcionado el comando blkid. Guardé y reinicié. Problema resuelto, el arranque ya era normal. Y además (y esto ya no sé explicarme por qué), el segundo problema, el de las desconexiones todos los días a las 7:00AM, también desapareció.

Factor humano

Aún quedaba otro problema más pequeño aún, pero me obsesioné con resolverlo. Todos los miércoles por la mañana, el equipo se apagaba. No era una desconexión de red, sino apagado. Mis sitios webs, el accesso SSH y todos los servicios en general eran inaccesibles, pero sí podía acceder a través del interfaz HP iLO, donde veía que el equipo estaba apagado.

Tampoco podía deberse a un corte de electricidad, porque el equipo se reiniciaría solo. No. La única alternativa que me quedaba era, como digo, volver a encender el equipo a través del interfaz HP iLO. Y después todo volvía a funcionar con normalidad, hasta el siguiente miércoles, cuando volvía a pasar lo mismo.

Me quemé las cejas revisando los logs del servidor, para no encontrar finalmente nada. Estas misteriosas caídas del servidor hubieran quedado para siempre sin resolver si no hubiera recordado que lo único que diferencia los miércoles al resto de los días de la semana es que… ¡una chica viene a limpiar la casa por las mañanas!

La llamé. Le pregunté si había tocado el equipo, y me dijo que sí, que por supuesto, que había visto que yo me lo había dejado encendido y que ella lo apagaba. “Por favor, no lo vuelvas a apagar nunca más -le rogué-“. Misterio resuelto. Maldito factor humano 🙂 .