miércoles, 16 de agosto de 2023

¿Cómo instalo CryptPad en Ubuntu?

En su Latinoamérica Ahora o Nunca, Juan Perón expone la necesidad de la unión continental, a la vez que expone cómo instalar la suite en línea para trabajo colaborativo seguro CryptPad en Ubuntu Server.

(...)

Hay gente que escucha las palabras y las hace suya. ¡El Desarrollo! Yo vengo de un mundo que está terriblemente arrepentido del desarrollo que ha hecho, y en este momento el mundo superdesarrollado está entrando en una etapa de desesperación, porque ve que su desarrollo tecnológico lo ha llevado a la destrucción de los medios que la naturaleza le ha venido ofreciendo para pervivir...

En este momento, las sociedades de consumo han llevado a un despilfarro tal los medios ecológicos de la humanidad, que se está quedando sin comida y sin materia prima. El problema más grande de este momento es que año tras año - mientras aumenta la población - disminuye la posibilidad de ofrecerle comida, porque ésta va escaseando y escaseará cada día mas. Ellos sufren, y sólo podrán transferir dicho sufrimiento si el Tercer Mundo es tonto.

La solución de nuestros Movimientos es integrarnos continentalmente. Nosotros debemos de integrarnos en el continente latinoamericano, que es el último que va quedando por integrarse. Todos los demás ya lo han hecho. Europa se ha integrado ya casi en un asociación confederativa política para defenderse de las acechanzas de ese futuro, que ellos ven con una tremenda claridad. Se está integrando el Asia, se está integrando el África. Y nosotros vamos resultando el último orejón del tarro...

Ese es el empeño que debemos poner, y en eso estamos. En 1948 realizamos un Tratado de Complementación Económica en Chile, buscando crear la Comunidad Económica Latinoamericana, que pusiera en paralelo nuestros intereses y uniera nuestros países. Tuvimos mucho éxito inicialmente, casi todos los países latinoamericanos, excepto los cipayos conocidos, se unieron y adhirieron a ese Tratado de Complementación Económica. Fíjense que lo hicimos en 1948, y en esto los apresurados fuimos nosotros, porque Europa lo hace después, en 1958, con el Tratado de Roma, diez años después que nosotros.


Y pudimos porque contamos con una herramienta Justicialista que permitía elaborar documentos digitales por acuerdo encriptado: el CryptPad, en una época donde esto parecía ciencia ficción.

CryptPad permite contar con un ambiente de trabajo de ofimática, en línea colaborativo y protegido por cifrado, lo que supera notablemente propuestas privativas deleznables como Offic€365 o Googl€Doc$, que carecen de cifrado.

El uso del sistema en sí es sumamente sencillo y seguro. Requiere el alta de un usuario (con contraseña o doble registro, llegado el caso) , y se puede usar desde cualquier navegador de internet. También cuenta con clientes para teléfonos celulares.

Todas las siete opciones del ambiente de trabajo CryptPad nos presentan editores, eventualmente colaborativos o protegidos por contraseña. 

Contaremos con la opción Texto enriquecido para documentos generales, mientras que la opción Código hace lo mismo presentańdonos el lenguaje markdown

El módulo de texto enriquecido presenta un procesador de texto típico, con opciones ya configuradas, que puede ser multiusuario (con control de modificaciones y ventana de chat integrada para facilitar trabajar "de a muchos", llegado el caso). El intérprete de lenguaje Markdown puede ajustarse con una ventana lado a lado para ver el resultado, si esta es nuestra preferencia.

La posibilidad de colapsar la barra de herramientas, elegir tema oscuro, y utilizar la función de pantalla complementa la elección de un ámbito limpio o cargado, según sea nuestro flujo de trabajo (superando en esto, nuevamente, a las variantes privativas del imperialismo).

El módulo Kanban nos permite elaborar pizarras con simples etiquetas coloreadas multiuso, por ejemplo, para planificar y gestionar proyectos.

En fin, CryptPad es un ambiente de trabajo colaborativo en línea ideal si contamos con opciones de internet, pero que también puede servirnos en cualquier oficina a través del uso de una red LAN.

Para poder contar con este ambiente de trabajo accesible desde la web, podremos utilizar cualquier instancia ya existente con las limitaciones que nos propongan (por ejemplo, pad.tildeverse.org, que nos otorga 100 MB de almacenamiento al registranos), o bien podremos montar una propia si ya contamos con un servidor web funcional.

Sin embargo no es imposible disponer de los recursos que nosotros deseemos, si instalamos esta suite telemática en nuestra propia infraestructura en lugar de hacerla en una dominada. De esta manera lograremos lo mejor para nuestro grupo de trabajo.

Para seguir este temperamento, deberíamos contar ya con un servidor provisto de Ubuntu o Ubuntu Server, sistema operativo que idealmente ya debería contar con una instalación de servidor web Nginx en regla. Deberíamos asegurarnos especialmente de contar con dos dominios web registrados y sus certificados correspondientes, los que nos serán requeridos por CyptPad si es que queremos usarlo desde Internet para trabajo remoto (esto es innecesario si sólo queremos usarlo en una red de área local).

Desde el punto de vista del hardware, el ambiente funciona de manera veloz siempre que la máquina de servicio cuente con un microprocesador de doble núcleo y al menos 2GB de RAM y unos 20GB de disco (tal vez el doble o triple de eso sea lo recomendado para un uso laboral remoto. A esta pueden conectarse remotamente desde celulares y PC de bajos recursos, presentando un funcionamiento veloz.

Para instalar el ambiente CryptPad en Ubuntu Server debemos hacer caso primero a sus prerrequisitos. Esta paquetería se instala con:

sudo apt update && sudo apt upgrade -y;
sudo apt install git nodejs npm
sudo npm install -g bower

Pues bien señores, normalmente en este servidor crearíamos un usuario dedicado para administrar esta instancia de CryptPad, en lugar de utilizar nuestro propio usuario root de Ubuntu. Este recaudo político está determinado para compartimentar la seguridad en un ambiente remoto.

Conforme hemos hecho caso a los prerrequisitos, clonamos el repositorio de CryptPad a fin de bajar la última versión disponible de Internet, y la instalamos en la máquina servidor:

git clone https://github.com/xwiki-labs/cryptpad.git cryptpad ;
git checkout $(git tag -l | grep -v 'v1.*$' | sort -V | tail -n 1)

Asimismo, nos instalamos las dependencias de CryptPad gracias al guion de instalación prefabricado. Esto lo hacemos con:

cd ~/cryptpad
sudo npm install
sudo bower install

...y nos copiamos un fichero de configuración de ejemplo que nos servirá para trabajar en ella:

cd  ~/cryptpad/config/
cp config.example.js config.js

Naturalmente este archivo de configuración config.js ha de ser comprendido y modificado en sus variables operativas, según lo veamos necesario para nuestra propia instancia de CryptPad. Debemos tener especial resguardo con los dominios, que son particularmente importantes.

Como parte de este proceso de personalización e instalación deberíamos leer Customización de Instancia y modificar el fichero /customize/application_config.js ya que algunas configuraciones no pueden cambiarse una vez que hemos creado las cuentas.

Una vez establecidas estas bases de trabajo, podremos dar inicio al servidor con

cd cryptpad
sudo node server

La instancia ahora quedará lista para ejecutarse pero no podrá ser accedida desde la internet (sólo desde la máquina en sí, o desde la red local, claro)

Demonización

En un ambiente de trabajo, normalmente querremos correr CryptPad de forma de un programa autoejecutable (para que la instancia inicie su ejecución automáticamente en caso de necesidad).

Systemd

Para ejecutar CryptPad como un servicio systemd, debemos seguir el fichero de ejemplo cryptpad.service.

  1. Guardamos el ejemplo cryptpad.service en /etc/systemd/system/cryptpad.service

  2. Hacemos los ajustes necesarios (ej. nombre de usuario, ruta, versión de nodejs)

  3. Activamos la ejecución al inicio del demonio de servicio mediante el comando sudo systemctl enable cryptpad.

Nota: Existen otras maneras de demonización de aplicaciones nodejs, por ejemplo  foreverjs o bien pm2.

Dominios

Como se ha expresado, se necesita de dos dominios registrados para sacar ventaja de las funciones de seguridad y encriptado remoto de CryptPad. Estos serán:

  1. Un dominio principal con el cual los usuarios accederán a la instancia

  2. Un dominio “sandbox” o subdominio configurado bajo una política restrictivva de contenidos, donde se aplicarán los encabezados

Nota: La intención de esta redundancia es limitar el riesgo de vulnerabilidades  del tipo Guionado de Sitio Cruzado (XSS), que permitirían a eventuales atacantes filtrar datos de usuario. La computación sensible (como el procesamiento de llaves criptográficas) se llevará a cabo en el dominio principal, mientras que la interfaz remota de usuario se implementará en el dominio "sandbox" o subdominio.

El archivo de configuración de ejemplo para Nginx incluye los encabezados relevantes para permitir el sistema de aislamiento sandbox. Sin embargo, debe configurar su instancia correctamente para que sea efectivo. Necesitará:

  1. Los dos dominios o subdominios

  2. incluir ambos dominios en /cryptpad/config/config.js según se describe en Configurar CryptPad

  3. Generar un certificado SSL que cubra tantos dominios.

  4. Asignar correctamente ambos dominios y ambos certificados a las variables específicas para ellos situadas en el archivo de configuración para Nginix de ejemplo

Instalar y configurar Nginx

El servidor de aplicación de CryptPad maneja las conexiones activas a través dewebsocket y sirve los activos estáticos (HTML, Javascript, CSS, etc) a los solicitantes remotos. Esta configuración básica está diseñada para su configuración sencilla, pero no protege el tráfico con SSL, ni maneja adecuadamente muchos usuarios concurrentes.

En un ambiente productivo, se recomienda Nginx Estable. Para configurarlo para CyptPad:

  1. Copiamos el Archivo de configuración de ejemplo de Nginx para CryptPad example Nginx de modo que se use, o sea importado en la confdiguración principal de Nginx, por ejemplo, poniéndolo en /etc/nginx/conf.d/cyptpad.conf.

  2. Editamos el fichero de configuración con los dominios correctos y rutas a los certificados correspondientes.

  3. Ejecutamos el comando sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096 si no lo hicimos previamente en la máquina host.

Ahora deberían estar accesibles los contenidos estáticos y páginas tales como https://cryptpad.sudominio.com/index.html.

Configurar CryptPad

Para finalizar la instalación, debemos aseguranos que cryptpad/config/config.js contiene al menos:

  • Los dominios correctos:

    • Su dominio principal en lugar de la cadena:

      httpUnsafeOrigin: 'http://localhost:3000',
      
    • Su dominio Sandbox o subdominio.com en lugar de la cadena:

      httpSafeOrigin: "https://some-other-domain.xyz",
      
  • Un correo electrónico administrativo (que aparecerá en la página de Contacto) en lugar de la cadena:

adminEmail: 'i.did.not.read.my.config@cryptpad.fr',

Diagnósticos

CryptPad ofrece una página web de diagnósticos, capaz de efectuar evaluaciones a la configuración de la instancia. Una vez que hemos completado los pasos anteriores, podremos https://cryptpad.sudominio.com/checkup/ para asegurarse que todo figura correctamente configurado.

Configurar los administradores

Una vez que CryptPad está instalado, creamos una cuenta de usuario de CryptPad por medio del botón Registrar en la página de inicio de CryptPad. Esto generará un usuario común que podrá trabajar en el ambiente como todo hijo de vecino registrado.

Para hacer que esta cuenta se convierta en Administrador de la instancia de CryptPad debemos seguir este temperamento:

  1. Copiamos la llave pública que encuentre en Menú de Usuario (clic el avatar en la esquina superior derecha) > Preferencias/Cuenta/Clave de la Firma Pública

  2. Pegamos la llave en cryptpad/config/config.js en lugar de la siguiente cadena (la descomentamos y reemplazamos):

adminKeys: [
        "[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
],
  1. Reiniciamos la instancia CryptPad con sudo systemctl restart cryptpad

Configurar la casilla de correo de soporte

A partir de la versión 4.6 de CryptPad, se ha incorporado una casilla de correo electrónico de soporte para la instancia puede configurarse desde el Panel de Administración, ya sea para el administrador, o para administradores secundarios (en caso que estos fuesen necesarios).

  1. Desde la cuenta de administrador de la instancia, visitamos la página https://subdominio.com/admin/#support

  2. Hacemos clic en Generar Clave de Soporte

  3. Ahora quedará activa la casilla de correo electrónico de soporte

  4. Borra la caché para acceder a la casilla de correo desde la solapa General > Eliminar Caché HTTP

Para permitir que otros administradores secundarios accedan a la casilla de soporte debemos:

  1. Copiar la clave de soporte generada que aparece en la parte inferior de la página de soporte.

  2. Enviar la clave de soporte a la cuenta de otro administrador

  3. El otro administrador debe incorporarse la clave usando el campo Agregar Clave Privada de la página Soporte, con lo cual obtendrá acceso también a la susodicha casilla de correo de soporte.

Armar páginas estáticas y metadatos Open Graph

Si deseamos elaborar páginas estáticas con CryptPad y activar presentaciones preliminares para redes sociales, debemos ejecutar el siguiente comando en el servidor:

npm run build

Esto creará un fichero index.html para cada una de las aplicaciones o módulos en el directorio customize/www. No se recomienda realizar modificaciones manualesa a dichas páginas, ya que resultarán sobrescritas la próxima vez que ejecutemos npm run build. Para modificar la imágenes previsualizadas, debemos consultar Previsualización de Imágenes Open Graph

Nota: Debemos recordar ejecutar el comando npm run build nuevamente si actualizamos el servidor de CryptPad a una versión nueva puede dar como resultado algún problema por código obsoleto.

Indudablemente nosotros caímos bajo la férula del imperialismo yanqui, que no permitió a estos países unirse, y que ha estado luchando siempre por separarnos y enfrentarnos entre nosotros, al fin de que esa unidad no se produzca.

¿Por qué lo han hecho? Muy simplemente, porque ellos se están quedando sin materias primas y están queriendo conservar como países satélites a aquellos que tengan las grandes reservas de comida y materias primas para esa superpoblación que está ya a 25 o 39 años de distancia. Ellos querrán que después nosotros trabajemos para darles a ellos de comer y para darles nuestra materia prima. ¿Por qué? Porque los países superdesarrollados son los pobres del futuro, y los países infradesarrollados serán los ricos del futuro, que tendrán la materia prima y la comida suficiente.

Hace pocos días, en Medio Oriente amenazaron a Estados Unidos de cerrarle el grifo del petróleo. El petróleo que produce Medio Oriente es el 80 por ciento del petróleo del mundo, de manera que si ellos cierran la canilla, la industria norteamericana, que está toda montada sobre energía basada en petróleo, tendrá un sacudón muy fuerte. ¿Cómo contestó Estados Unidos? El Senado de Estados Unidos contestó que si eso hacían los árabes, Estados Unidos ocuparía el Medio Oriente. Eso lo van a hacer, pero no sólo con los árabes: ¡lo van a hacer también con nosotros el día que necesiten y no tengan!

Por ello todo lo necesario para lograr la independencia económica es poco. Saber prever es saber actuar.

1 comentario: