Instalador y actualizador de paquetes user friendly en cinnamon

El otro día reinstalé el ordenador de una usuaria a debian 11 con cinnamon. Se lo dejé todo niquelado con sus programas, su configuración anterior del navegador y la instalación del programa llamado keepassx para almacenar contraseñas. Instalé todos los programas y plugins que consideraba que la usuaria iba a necesitar, configuré el escritorio, los menús, etc. pero me quedó una cosa un poco coja, la de la actualización de los paquetes del sistema. Lo dejé como tarea pendiente a solucionar.

Tras unas dudas con una página web que le estoy haciendo, entré a su ordenador usando el programa anydesk y mientras ella atendía una llamada me miré el tema de las actualizaciones para que fuese un poco mas user friendly, pero el synaptic package manager era demasiado tosco para éste tipo de usuaria (ya usuaria experimentada de linux pero no al nivel de usar una terminal), además que no había tiempo para explicárselo de forma clara. No me convenció y decidí ponerme a buscar una solución. Así que os la comparto aquí hoy! :)

Al pensar en ello, se me ha ocurrido plantear la pregunta en el grupo de telegram de debian_es, y en poco rato han salido un par de opciones gnome-software y plasma de kde. Como no me gusta mucho la apariencia de la librería qt y al estar cinnamon basado en gnome me he tirado evidentemente a gnome-software.

Lo primero será instalarlo de esta forma tan cómoda que es para nosotros la instalación de …

Actualitzar gitlab 10.7.3 con debian 8 a gitlab 14.1.0 con debian 10

Hoy os traigo una migración que me ha llevado 4 días largos y el motivo es el de dejar sin actualizar demasiado tiempo un sistema. Con el tiempo lo he ido poniendo todo al día pero siempre había éste (y otro) servicio que se me resistía. Hablamos de gitlab instalado usando los repositorios de gitlab y cabe decir que aunque haya sido una actualización larga y puñetera me ha obligado a mirarme como funcionaba a nivel de sistemas gitlab y telita la de cosas que tiene!

El gitlab que tengo instalado, la curiosidad es que “trae los programas dentro”, es decir, en lugar de estar instalados por apt con los repositorios de debian están ahí metidos en una carpeta.

Otra cosa que tendremos que tener en cuenta es que para hacer una migración a una nueva versión se recomienda hacerlo desde otras versiones tal como explica en la documentación.

En mi caso por las versiones que debería pasar son las:

11.11.8 -12.0.12 -12.1.17 -12.10.14 -13.0.14 -13.1.11 -latest 13.12.Z -latest 14.0.Z -14.1.Z -latest 14.Y.Z

Así que vamos a empezar.

Actualizar de debian 8 a debian 10
En esta migración me ha tocado sacarme el miedo con los upgrades de versiones major de debian. Siempre he tenido la costumbre cada vez que ha habido una release de debian nueva ir migrando los servicios en un sistema nuevo. Por la complejidad de la instalación y porqué al principio no me enteraba muy bien …

Proxmox 7 y limpiar lvm ceph

Ayer instalé proxmox 7 que se ha avanzado a la release de debian 11, aunque debian 11 no haya salido estable, proxmox 7 ya viene con debian 11 bullseye. Debian 11 será liberada el próximo 17 de Julio.

Tenía que hacer la migración de unos datos de un clúster a éste y entre procastinación por otras cosas y una todolist líquida y movible la tarea se quedó pendiente, así que aprovechando a tener una máquina lista para tal tarea directamente le instalé la nueva versión de proxmox para ver qué tal! al hacerlo lo hice a lo bruto sin limpiar previamente los discos, como tal me encontré que al montar ceph los discos destinados al osd estaban ocupados por la instalación anterior y no había forma de borrar las particiones lvm que me había creado al no aparecer en pvscan, ni lvscan ni nada, así que aquí os traigo la solución de como limpiar las particiones para poder usarlas.

root@planet2A:~# sgdisk -Z /dev/sdb
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

root@planet2A:~# reboot

Esto en cada …

Instalar gnome40 en debian 11 (fail)

Spoiler: no funciona! mejor usar de momento otra distribución de linux que no sea debian quieres usar gnome40.

Ya tenemos a debian en RC2, que quiere decir esto? pues que le queda menos para su liberación a estable que está prevista el 17 de Julio de 2021.

Una de las “puñetas” de debian es que no siempre disponemos de las últimas versiones de los programas y una que me ha sabido un poco mal es la de gnome40, que salió como estable pocas horas después de que debian hiciese el freeze de bullseye, para los foráneos, la congelación de versiones de las versiones de los programas para empezar a prepararlo todo para la liberación de la versión estable de debian, debian 11. Esto se hace para dejar unos meses para comprobar que nada pete (cosa buena).

Así que vamos a ver que tal se comporta gnome40 con debian 11 (RC2).

El mayor problema es la actualización de gnome3 a gnome40, muchos de los programas usan la librería de gnome gtk para funcionar y esto puede hacer que algunos programas no funcionen correctamente (ventanas con apariencia extraña o fuera de lugar) o simplemente que se cierren programas de golpe! así que ya lo pruebo yo por vosotros y os ahorro todo este trabajo. Entonces decidid vosotros mismos si dais el salto o no :) Si las pruebas son infructuosas, a mis usuarios les diré de seguir con cinnamon que es un buen entorno de escritorio y muy cómo de usar :)…

Cambiar valor de option al seleccionar un campo select con jquery

Pequeño tip para hacer que al seleccionar un valor de un select se cambien las opciones de otro select.

Partimos de los dos select:

<select class="form-control rounded-0" name="sanctioningprocedure" onchange="update_reasons()">
    <option value="">{% trans "Select Sanctioning Procedure" %}</option>
    {% for sc in box.multiple_sanctioning_procedure_group.all %}
        <option value="{{ sc.pk }}">{{ sc|object_name:request.language }}</option>
    {% endfor %}
</select>

<select class="form-control rounded-0" name="complaint_reason">
    <option value="">{% trans "Select Reason" %}</option>
</select>

La parte de javascript:

<script>
function update_reasons(){
    var group = document.getElementById("sanctioningprocedure").value;

    $("#complaint_reason").empty();
    option = '';
    {% for r in all_reasons %}
        if (group == {{ r.group.pk }}) {
            option = option + '<option value="{{ r.pk }}">{{ r|object_name:request.language }}</option>';
        }
     {% endfor %}

     $("#complaint_reason").html(option);
}
</script>

 

 …

Cifrar un disco duro y compatible multiplataforma con veracrypt

En éste post de hoy veremos como cifrar un disco duro externo y que pueda ser accedido por los sistemas operativos mas comunes, windows, mac y linux. Cada sistema operativo trae consigo su sistema de cifrado de discos (Linux cryptoluks, Windows BitLocker y Mac OS X Filevault) pero son incompatibles entre ellos, para ello es necesario usar algún tipo de programa que haga la misma función y sea compatible para los múltiples sistemas operativos, para ello tenemos veracrypt.

Proxmox migrar máquinas con mountpoints locales

Tengo 2 contenedores LXC que comparten un directorio con ficheros de configuración que está sobre glusterfs y está montado en local a todos los nodos. El otro día al tratar de migrar las máquinas me decía que no podía migrar las máquinas porque algo no le gustaba del mountpoint. Es una puñeta porque si se para el nodo en el que se encuentra el contenedor por algún motivo, el HA fallará por no poder migrar el contenedor a otro nodo.
El otro día traté de añadir el mountpoint local desde la interfaz de proxmox y no daba la opción. Hoy tonteando en los foros de proxmox he encontrado la solución.

En los contenedores, había configurado a mano el mountpoint. Para ello, paramos el contenedor y nos vamos al nodo en el que se encuentra en aquel momento cada uno de los contenedores y editamos el fichero de configuración que se encuentra en /etc/pve/lxc/

root@planet1B:/etc/pve/lxc# vi 106.conf
mp0: /mnt/gluster/gvol1/nginx,mp=/mnt/conf-nginx,shared=1

El secreto para poder migrar los contenedores con el mountpoint, es añadirle “shared=1” y el directorio tiene que estar en todos los nodos.

Aquí una capturilla de pantalla de como queda en proxmox

Upgrade modoboa 1.14 a 1.17 + roundcube webmail

En la de hoy nos encontramos con un servidor de correo instalado con modoboa versión 1.14 que queremos actualizar a una versión mas nueva, en este caso la 1.17. Aprovecharemos también para actualizar la versión de roundcube 1.4 RC1 a la versión 1.4.11.

Como todo tiene sus puñetitas en la informática, nos encontramos con que la migración de modoboa 1.14 a la 1.17 implica cambiar la versión de python2 a python3 y usar el instalador para hacer el upgrade es lio asegurado. Así que vamos a ver como hacer la migración pasito a pasito y de forma humanamente viable! :D

Para alegrarte un poco el día, comentar que es posible hacer tranquilamente la instalación del nuevo entorno con una IP distinta a la definitiva. Es decir, si voy a usar mail.lamardebits.org no es necesario que el entorno que estamos montando tenga la IP que apunta a mail.lamardebits.org. Así que es posible dejarlo todo listo sin tocar el entorno que está en producción. Cuando queramos hacer el cambio, simplemente será apagar la máquina con la versión vieja de modoboa, cambiar la IP en el entorno nuevo y levantarlo!

Así que empezamos y como de costumbre hago la instalación sobre una debian 10 virtualizada con LXC y con el nesting activado. Además le pongo ya el mountpoint sobre el cephfs a /srv/vmail

Una vez arrancada la maquina, lo básico y recomendable, configurar y actualizar el sistema

root@mail:~# dpkg-reconfigure locales && dpkg-reconfigure tzdata && apt update && apt -y upgrade && apt -y 

Instalación iredmail en debian10

Hoy vamos a instalar iredmail en una debian10.

Partimos de un contenedor lxc dentro de nuestra querida infraestructura de proxmox con un template de debian10 y el nesting activado.

Una vez arrancado el contenedor vamos a actualizar el sistema e instalar algunos paquetes necesarios

root@mail:~# dpkg-reconfigure locales && dpkg-reconfigure tzdata && apt update && apt -y upgrade && apt -y dist-upgrade && apt -y install vim net-tools dnsutils gnupg2

Añadimos también los repositorios de sogo que durante la instalación nos peta si previamente no hacemos esto

root@mail:~# echo "deb https://packages.inverse.ca/SOGo/nightly/5/debian buster buster" /etc/apt/sources.list.d/sogo-nightly.list
root@mail:~# gpg --keyserver keyserver.ubuntu.com --recv 19CDA6A9810273C4
root@mail:~# gpg --export --armor 19CDA6A9810273C4 | apt-key add -
root@mail:~# apt update

Para instalar iredmail correctamente, el nombre del host tendrá que ser el correcto, en mi caso mail y dominio summercamp.cat (donde estoy haciendo la instalación para probar el software). En hostname -f debe salir el fqdn correcto del servidor. Evidentemente los dns deben apuntar a la ip del servidor.

root@mail:~# hostname -f
mail.summercamp.cat

Nos descargamos iredmail de su página web. La versión 1.4.0 corresponde a Abril de 2021, así que good ;)

root@mail:~# wget https://github.com/iredmail/iRedMail/archive/1.4.0.tar.gz
root@mail:~# tar xvzf 1.4.0.tar.gz
root@mail:~# cd iRedMail-1.4.0/
root@mail:~/iRedMail-1.4.0# bash iRedMail.sh 
[ INFO ] Checking new version of iRedMail ...
[ INFO ] Installing package(s): ca-certificates apt-transport-https dialog

Nos aparecerán varias pantallas de ncurses que deberemos rellenar de esta forma

Ahora a esperar un rato que descargue y configure todo lo necesario

Una vez terminado nos debería decir esto

Reiniciamos tal como nos pide

root@mail:~/iRedMail-1.4.0# 

ip real con frontal proxy nginx, backend apache y wordpress

Por fin he encontrado la solución! otra de estas tareas pendientes que hacía que una instalación no funcionase como era esperado! en este caso me encuentro con dos frontales de nginx que actúan como proxy http y detrás de ellos está un wordpress sobre apache. Hace un tiempo, hice un post similar a éste, pero detrás estaba otro nginx.

Así que aquí dejo la solución.

Frontal nginx
En este caso tengo 2 ficheros, el de la configuración del dominio y otro con la configuración específica para los wordpress almacenado en el directorio snippets

# vi /etc/nginx/sites-available/lamardebits.org
server {
    listen 80;
    listen [::]:80;

    server_name lamardebits.org
                www.lamardebits.org;
    return 301 https://lamardebits.org$request_uri;

    #root /var/www/html/;
    include snippets/certbot.conf;
}


server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name lamardebits.org;

    include snippets/certbot.conf;

    # Aquí s'inclou el servidor intern i la protecció específica de WP
    include snippets/wordpress10.conf;

    ssl_certificate /etc/letsencrypt/live/lamardebits.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/lamardebits.org/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_trusted_certificate /etc/letsencrypt/live/lamardebits.org/chain.pem;
}

Y la configuración específica para los wordpress

# vi /etc/nginx/snippets/wordpress10.conf
include conf.d/external-log.conf;
location / {
    proxy_pass http://172.31.0.145:6081;
    include proxy_params;

    location ~ \.php$ {
        proxy_pass http://172.31.0.145:6081;
        include proxy_params;

        location ~* wp\-login\.php {
            client_max_body_size 40M;
            proxy_pass http://172.31.0.145:6081;
            include proxy_params;
            include snippets/lmdb-protected.conf;
        }
    }

    proxy_headers_hash_max_size 512;
    proxy_headers_hash_bucket_size 128;

    fastcgi_read_timeout 300;
    proxy_read_timeout 300;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $remote_addr;
    proxy_set_header  X-Forwarded-Host $remote_addr;

    add_header X-Frame-Options SAMEORIGIN;

}

La configuración de proxy de nginx la tengo así

# vi /etc/nginx/conf.d/proxy.conf
proxy_buffer_size         128k;
proxy_buffers           4 256k;
proxy_busy_buffers_size   256k;
client_max_body_size      32M;

proxy_read_timeout 1800;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;             

Backend apache + wordpress

A …