¿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.

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

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

    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:

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

    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á:

    Los dos dominios o subdominios

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

    Generar un certificado SSL que cubra tantos dominios.

    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:

    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.

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

    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:

    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

    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=]",
],

    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).

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

    Hacemos clic en Generar Clave de Soporte

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

    Borramos 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:

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

    Enviar la clave de soporte a la cuenta de otro administrador

    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 independecia económica es
poco. Saber prever es saber actuar.