https://paquita.masto.host/polkillas

Armas buenas, armas malas

Vuelve a oírse hablar de Siria después de unos meses de silencio. Como si hubieran dejado de pasar cosas terribles en los últimos meses, como si hubiera algún tipo de tregua que se hubiera roto ahora.

No, en Siria no ha habido ningún cambio importante. Lo que ha pasado es que ha habido unas cuantas muertes debidas a algún tipo de intoxicación debido a armas químicas. Y ya se sabe que las armas químicas son intolerables.

Y esto me parece una hipocresía terrible. Es decir, que hay armas buenas y armas malas. Las armas malas están oficialmente prohibidas en casi todo el mundo y usarlas significa echarte encima a la puta comunidad internacional.

Sin embargo, los misiles Tomahawk, los fusiles de asalto, los vehículos blindados de transporte, etc. son buenos. Se pueden usar sin problemas. Son armas buenas, porque… La verdad es que no sé por qué podrían serlo.

Aparte están las armas nucleares, que son buenas si las tienen los buenos. Y por los buenos quiero decir nuestros aliados, no los que sean éticamente menos malos, por supuesto.

Yo, ingenuo de mí, pensaba que las armas eran malas porque hieren y matan a seres humanos. No debe de ser el caso, claramente, porque hay armas buenas. Pero no entiendo qué es lo que las convierte en buenas. ¿Tú lo sabes?

Nextcloud en la Raspberry Pi (14). Más seguridad con fail2ban

Si tenemos datos personales o delicados almacenados en nuestra nube o si somos de natural desconfiado, veremos con buenos ojos la posibilidad de aumentar la seguridad de nuestro Nextcloud. Una posibilidad para ello es instalar fail2ban.

La idea de fail2ban es controlar los intentos fallidos de registrarse en nuestra nube. Si fail2ban detecta que desde una dirección IP está habiendo demasiados intentos fallidos, lo que suele indicar que alguien está intentando entrar sin tener contraseña, lo que se conoce como un ataque de fuerza bruta, produce un tiempo de espera que, a cada intento fallido,  va aumentando, de tal manera que fallar una o dos veces al meter nuestra contraseña no sea un incordio pero si alguien se pone a meter contraseñas una tras otra el tiempo aumente tanto que no merezca la pena.

Para esta guía sigo a pies juntillas el tutorial de Carsten Rieger en su página web.

Actualizamos la información e instalamos fail2ban con sudo apt update && sudo apt install fail2ban.

A continuación tenemos que crear un filtro, para que fail2ban pueda saber que ha habido un intento fallido. Lo creamos con sudo nano /etc/fail2ban/filter.d/nextcloud.conf y copiamos el siguiente texto:

[Definition]
failregex=^{"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}$
^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","app":"core".*","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)".*}$
ignoreregex =

Aunque en realidad las expresiones regulares me superan, lo que entiendo que hace esto es buscar el mensaje «Login failed» (registro fallido) para saber que ha habido un intento. Guardamos el filtro con ctrl+W.

A continuación, creamos una nueva jaula (jail). No me preguntéis para qué sirve esto, porque no lo sé, supongo que será el archivo que dice a fail2ban qué tiene que hacer cuando detecta estos fallos. Lo hacemos con sudo /etc/fail2ban/jail.d/nextcloud.local y copiamos el siguiente texto:

[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 36000
findtime = 36000
logpath = /var/nc_data/nextcloud.log

Podemos variar la última línea si queremos cambiar el lugar donde se guarda el registro, el que viene es la configuración por defecto en la instalación de Carsten Rieger. Tenemos que tener cuidado porque, si en esta línea ponemos un archivo que no existe, fail2ban dará un error.

Si no pasa nada malo, con esto ya tenemos instalado y configurado fail2ban, lo podemos comprobar con sudo service fail2ban status.

Estado de fails2ban

Para salir de esta información, pulsamos ctrl+C.

Si nos salta un error, es posible que sea por lo que comentaba antes. Para crear el archivo, se usa el comando touch. Siguiendo el ejemplo anterior, deberíamos hacerlo con sudo touch /var/nc_data/nextcloud.log. Volvemos a reiniciar el servicio con sudo service fail2ban status y ya debería estar.

Colores personalizados en LibreOffice

Nota rápida para no olvidar cómo lo hice. ¿El qué? Conseguir cambiar los colores que propone LibreOffice para, por ejemplo, rellenar el fondo de tablas y celdas.

Estaba copiando un cartel que he visto en Twitter (licencia CC, por supuesto) y no era capaz de poner un color mostaza como fondo de una celda en una tabla. Pues la cosa es que hay que insertar cualquier objeto (elipse, flecha, rectángulo…) desde la barra de dibujo. Se selecciona y vamos al menú Formato > Cuadro de texto y forma > Relleno y podemos cambiar la paleta por, por ejemplo, «html», que tiene colores más variados. Incluso se pueden definir colores personalizados.

Algo que tendrán que simplificar, sin duda.

Días desencantadores [actualizado]

  1. Estar en el instituto, ir al baño de profesores, ver a un compañero miccionando en el váter sin tirar de la cadena ni limpiar las tres gotitas.
  2. Estar en el departameno de Lengua y oír a alguien quejarse de que sus alumnos no saben nada de Lengua.

Sinceramente, hay días que me vengo un poco abajo. Si somos nosotros quienes tenemos que educar a las nuevas generaciones, vamos jodidos.

  1. Ni reglas básicas de urbanidad. Cuántas veces habremos dicho eso de «¿En tu casa tirarías papeles al suelo?». Pues no veo a nadie dejando un baño (recién limpiado, por cierto) en su casa como me he encontrado el de profesores hoy.
  2. ¿Qué queremos? ¿Alumnos que ya saben? ¿Para qué servimos entonces? ¿Cuál debería ser nuestro trabajo si solo queremos alumnos que vienen ya enseñados?

En fin. Seguiremos. Qué remedio.

Actualizado 10/2/17: Hoy, en otro baño de profesores de otro edificio del instituto, me he encontrado un cartel revelador: UTILIZAR LA ESCOBILLA. GRACIAS. Intentaré tomármelo como que hay gente que sigue luchando contra cómo son las cosas.

Nextcloud en la Raspberry Pi (10). Avisos de seguridad de Nextcloud

Actualizado a Nextcloud 14 el 14/10/18

Pantalla de configuración de Nextcloud 14

Cuando entramos en la configuración de Nextcloud 14, nos vamos a encontrar varios avisos de cosas que no están configuradas de la mejor manera posible.  Vamos a ver cómo solucionarlo.

Correo

El primer aviso es sobre el servidor de correo que usa Nextcloud para mandar sus correos de bienvenida, avisos, etc. a los usuarios.  Hasta la versión 13, Nextcloud usaba el servidor de correo incorporado de PHP, pero ha dejado de usarlo. Ahora debemos suministrarle los datos de una cuenta de correo que funcione. Lo haremos de la siguiente manera:

Configuración de correo para Nextcloud

Como vemos, debemos ir a los Ajustes básicos de la configuración y debemos dar los datos  del apartado de Servidor de correo electrónico:

  • Modo de envío: SMTP (no parece que haya otra opción)
  • Cifrado: ninguno, si no tienes configurado en el correo
  • Desde la dirección: podemos poner la que queramos, lo suyo es poner una de la que podamos disponer
  • Método de autenticación: yo he usado Iniciar sesión, para poder dar los datos siguientes
  • Dirección del servidor: suele ser smtp.dominio o mail.dominio o algo similar, depende de cada servidor.
  • Puerto: el estándar de SMTP es 587
  • Credenciales: ponemos el usuario y contraseña. Ojo aquí, en algunos servidores hace falta poner el @dominio.com y en otros dos. Lo mejor es consultar la ayuda de cada uno.

HSTS

El aviso escrito en texto rojo de la captura anterior nos recuerda que no se ha configurado la cabecera HTTP Strict Transport Security. Esto hace que no se permita ninguna conexión que no sea segura (HTTPS) y hace más difíciles los ataques al sitio. Para configurarlo, podemos editar el archivo de configuración que ha creado Let’s Encrypt:
sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf

Vamos al final del archivo y, bajo la línea que empieza ServerName y encima de la línea </VirtualHost> añadimos lo siguiente:

    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    </IfModule>

Aunque podemos limitarnos a reiniciar el servidor, como siempre, con sudo service apache2 restart, no es mala idea reiniciar la Raspberry con sudo reboot.

Nota: la última parte de la línea central (; preload) añade el dominio que hemos configurado con DDNS a una lista que incluyen los grandes navegadores y que obliga a usar HTTPS en estos dominios. Esto significa que si tienes un problema y tienes que volver a empezar, puede ser difícil volver a trabajar con el dominio antes de configurar Let’s Encrypt, porque no tendrás https y el navegador estará obligado a intentar usarlo.

Well-known

Los siguientes avisos están relacionados con el calendario y los contactos, se refieren a las llamadas direcciones «well-known» que permiten configurar estos dos elementos en clientes (móviles, por ejemplo) de forma más sencilla. Para eliminar este aviso, lo que hay que hacer es crear un archivo nuevo llamado .htaccess en la raíz del servidor, /var/www/html. Se puede hacer con sudo

 

  • Tu servidor web no está configurado correctamente para resolver «/.well-known/caldav». Se puede encontrar más información en la documentación.
  • Tu servidor web no está configurado correctamente para resolver «/.well-known/carddav».

 

Cache

La memoria caché es un sistema que permite al servidor servir ciertos objetos habituales de manera más rápida. Es fácil configurar una caché de última generación con sudo apt-get install php-redis redis-server.

Comprobamos que ha arrancado con ps ax | grep redis y editamos el archivo de configuración para que Nextcloud use esta cache: sudo nano /var/www/html/nube/config/config.php.

Aunque recomiendan otra configuración si el servidor redis está instalado en la misma máquina, a mí no solo no me funciona sino que cuelga Nextcloud. Así que como ofrecen otra posibilidad, añadimos

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),

para configurar la caché local, y

'memcache.locking' => '\OC\Memcache\Redis',

para configurar la caché de bloqueo de archivos.

Por último, la misma página de Administración nos recomienda configurar el archivo php.ini para la memoria OPcache. Para ello, lanzamos el comando sudo nano /etc/php/7.0/apache2/php.ini.

Tenemos que buscar (con CTRL+W) los valores de la izquierda de cada signo igual y cambiarlo a lo siguiente. Ojo: si la línea comienza con un punto y coma (;), también hay que borrarlo.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Y reiniciamos el servidor con sudo service apache2 restart.

Permisos de archivos

Me doy cuenta al repasar esta serie de entradas que no había apuntado de dónde saqué este script, y lo lamento, debería darle el reconocimiento debido al autor. No lo he encontrado, parece que es de la documentación oficial pero no encuentro la página. Aun así, vamos con esto.

Para estar seguros de que todos los archivos de Nextcloud están bien configurados en cuanto a sus permisos y propietarios, podemos crear un script que lo comprueba.

Creamos un archivo nuevo con sudo nano permisos.sh y copiamos dentro el siguiente código con MAYS+Ins. Si hace falta, hay que cambiar la segunda línea para que refleje la carpeta exacta donde hemos instalado Nextcloud.

#!/bin/bash
ocpath='/var/www/html/nextcloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/updater

printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

Cambiando en la segunda línea la carpeta donde está instalado Nextcloud. Guardamos con CTRL+X, «s» y ejecutamos el script con sudo sh ./permisos.sh.

Nextcloud en la Raspberry Pi (9). Afinando Nextcloud

Actualizada el 5/11/17 y el 14/10/18

Si hemos seguido hasta ahora las instrucciones de este tutorial, ya tenemos una nube privada funcionando. Sin embargo, hay ciertas configuraciones por defecto que podemos retocar para que sea más fácil, más segura, más elegante o más útil. Vamos a ver cómo podemos tunear nuestra instalación de Nextcloud.

Tamaño máximo de archivos

Debido a las configuraciones por defecto de PHP, mediante la interfaz web no se pueden subir archivos de más de 2 Mb, lo cual es muy pero que muy poco. Para subir este límite, debemos editar algunas cosas. El límite máximo que podremos poner son 2 Gb, que está mucho mejor aunque deja fuera ciertos archivos de vídeo, pero este límite ya es cosa de la Raspberry, y su arquitectura, de 32 bits, no de Nextcloud.

Siguiendo las instrucciones del manual de Nextcloud, para aumentar este límite, debemos editar el archivo de configuración de PHP 7.0. Lo hacemos escribiendo en el terminal:

sudo nano /etc/php/7.0/apache2/php.ini

Aparece el editor de texto y buscamos (con las teclas CTRL+W) las líneas en que aparecen las expresiones upload_max_filesize y post_max_size. Cambiamos las cifras para que de 2M y 8M pasen a ser 2G. Deben quedar así:

upload_max_filesize = 2G
(...)
post_max_size = 2G

También podemos aprovechar para configurar la carpeta temporal. Si subimos archivos grandes, podemos llenar la tarjeta SD y esto nunca es bueno, así que es mejor usar una carpeta del disco duro externo. Buscamos (CTRL+W otra vez) la línea ;upload_tmp_dir = y hacemos dos cosas: borramos el punto y coma del inicio (si no lo hacemos, los cambios que hagamos en esta línea no tendrán efecto ) y añadimos al final la carpeta que queramos del disco duro. No es recomendable usar una subcarpeta del directorio de la nube, eso sí, porque si se creara un usuario con el mismo nombre que esta carpeta, usaría la carpeta temporal como sus propios archivos.

Guardamos el archivo (CTRL+X, «s» para decir que sí queremos guardar) pero no reiniciamos todavía el servidor web porque tenemos que ocuparnos de la carpeta temporal. La creamos con
sudo mkdir /media/Vir/nubetmp (por ejemplo)

Cambiamos los permisos de la carpeta
sudo chown -R www-data:www-data /media/Vir/nubetmp

Y, ahora sí, reiniciamos el servidor Apache con
sudo service apache2 restart

Podemos comprobar que lo hemos hecho bien en Nextcloud. Pulsamos en nuestro usuario arriba a la derecha para mostrar el menú, seleccionamos Administración y miramos en los apartados «Monitorizando» (información del servidor) y «Configuración adicional»:

El ratón nos muestra que, efectivamente, ya está configurado para aceptar archivos de 2 Gb.

Eliminar «index.php» de las URLs de Nextcloud

Nextcloud, como su predecesor Owncloud, crea unas direcciones (URLs) bastante largas porque incluye por defecto el fragmento «index.php». Lukas Reschke (su avatar siempre me recuerda al niño del vídeo viral de Star Wars) lo explica en la ayuda de Nextcloud. Se puede eliminar, para pasar de algo como
https://polkas.ddns.net/nube/index.php/apps/files/ a  esto otro: https://polkas.ddns.net/nube/apps/files/, que queda más claro y sencillo.

Para ello, editamos el archivo config.php: sudo nano /var/www/html/config/config.php y añadimos al final la siguiente línea:
'htaccess.RewriteBase' => '/',

Debemos cambiar el final si no tenemos instalado Nextcloud en la carpeta raíz del servidor sino en una subcarpeta. Es decir, si los archivos de Nextcloud están en /var/www/html/nextcloud, la línea anterior debe quedar así:
'htaccess.RewriteBase' => '/nextcloud',

No estoy seguro de que el siguiente paso sea necesario, pero no hace daño hacerlo. Tenemos que activar unos cuantos módulos de Apache, concretamente rewrite, headers, env, dir y mime. Esto se hace con las siguientes instrucciones:

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

Todos menos headers deberían estar activos, pero no pasa nada por asegurarse. Una vez los hemos activado todos, debemos crear un sitio nuevo en la configuración de Apache:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Aparece el editor nano, que ya seguro conocéis, con un archivo vacío. Tenemos que copiar (con la combinación de teclas MAYS+Ins) el siguiente código (extraído, de nuevo, del manual):

Alias / "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud

</Directory>

Y hay que cambiar el directorio todas las veces que aparece, en lugar de /var/www/nextcloud/, debemos poner la carpeta que hayamos usado. Si hemos instalado Nextcloud en la raíz del servidor, debería ser /var/www/html/ y, si lo hemos hecho en una carpeta, deberá ser /var/www/html/nextcloud, dependiendo de lo que hayamos usado en la quinta entrada de la serie. Debemos cambiarlo las 4 veces que aparece. También, igual que antes, debemos cambiar la barra de la primera línea si tenemos Nextcloud en una subcarpeta.

Por último, creamos un enlace simbólico a la carpeta de sitios activos:
sudo ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf

El útlimo paso es ejecutar una actualización de mantenimiento con el comando
sudo -u www-data php /var/www/html/occ maintenance:update:htaccess

Reiniciamos el servidor con
sudo service apache2 restart

Y podemos comprobar, encima del cursor, que ha desaparecido el «index.php» de la URL:

Cron

Es muy habitual que Nextcloud necesite que ciertas acciones tengan lugar cada cierto tiempo. La forma de asegurarse es el cron, cuya misma forma nos dice que tiene que ver con el tiempo (cronos en griego). Por defecto, el cron de Nextcloud se ejecuta cada vez que se carga una página. Es lo más sencillo pero normalmente no vamos a usar la interfaz web sino los clientes de escritorio y móvil, así que puede pasar demasiado tiempo sin que se ejecute el cron. Por ello, es muy recomendable hacerlo de otra manera. ¿Cómo? Encargándoselo al sistema operativo. Raspbian, como todos los sistemas Linux, tiene una opción para esto.

Para sacar ventaja de esto, debemos definir un cronjob. Es así:
sudo crontab -u www-data -e

Aparece un archivo bastante largo, con un montón de explicaciones (todas las líneas que empiezan por una almohadilla [ #] o un punto y coma [;] son comentarios). La orden significa «editar el crontab (lista de tareas que se ejecutan periódicamente) del usuario www-data (el de Apache)».

Podemos irnos al final del archivo y copiar la siguiente orden:
*/15 * * * * php -f /var/www/html/nextcloud/cron.php

Que significa que cada 15 minutos se va a ejecutar el cron. Como siempre, debemos cambiar la carpeta si fuera preciso. Guardamos como siempre con CTRL+X, «s» y podemos comprobar que se ha guardado con
sudo crontab -u www-data -l
que nos muestra el contenido del crontab.

Una vez lo hemos comprobado, podemos ir a la configuración de Nextcloud y cambiar este estado, si no se ha cambiado automáticamente:

Nextcloud en la Raspberry Pi (8). Apps

Actualizada el 5/11/17

Ya tenemos configurada nuestra nube en la Raspberry, con una conexión segura pero ahora mismo es menos útil de lo que puede llegar a ser.

Una característica muy interesante de Nextcloud son las apps. Son añadidos que extienden su funcionalidad mucho más. Convierten algo que es básicamente un Dropbox en algo mucho más grande y útil, más parecido a casi todos los servicios de Google.

Se pueden instalar cosas como un calendario, tareas, lista de contactos, notas, favoritos… Incluso hay una opción de añadir una especie de Google Docs, pero eso, por ahora, es demasiado para la pobre Raspberry. Aun así, las posibilidades son muy grandes.

Si entramos en nuestra nube con un usuario administrador como el que creamos al instalarla, veremos arriba a la izquierda un pequeño menú con cuatro elementos:

archivos-nextcloud-mozilla-firefox_067

  • Archivos: lo que estamos viendo, nuestros archivos y carpetas.
  • Actividad: aquí aparecen los registros de archivos creados, editados, eliminados (que se pueden recuperar)…
  • Galería: un visor de las imágenes que tengamos. Al pulsarlo aparece una lista de las carpetas que incluyen fotos y podemos seleccionarlas. Va lentilla, eso sí.
  • +: Si pulsamos en el signo +, iremos a una pantalla en la que veremos las apps que vienen instaladas de inicio, y podemos instalar muchas más.

En la pantalla que aparece, tenemos la lista de apps instalada y podemos ver en las categorías del menú de la izquierda otras opciones. Pero es interesante activar la opción de «Apps experimentales» pulsando en la rueda dentada de abajo a la izquierda y marcando la casilla, pues aparecen unas cuantas más, algunas muy interesantes.

Para instalar una app, solo hay que encontrarla y pulsa el botón «Activar». Tardará un ratito: nuestra nube tiene que ponerse en contacto con la app store y descargarla.

Después tendremos la posibilidad de desactivar la app. Si más tarde queremos reactivarla, el proceso será más rápido.

La mayoría de las apps de Nextcloud aparecen tras ser activadas en el menú de la izquierda (o arriba, si se instala la app Direct Menu). Otras, en cambio, añaden funcionalidades a otras y no tienen su propia entrada. Es cuestión de probar.


Y tras esta explicación, mis recomendaciones de de apps. Las apps que no deben faltar en una instalación de Nextcloud, en mi humilde opinión, las pongo con el nombre en negrita, mientras que las que no son tan imprescindibles van en cursiva:

  1. Personalización
    1. Direct Menu. Permite poner el menú en la barra superior, lo que nos evita un clic cada vez que queremos cambiar de app.
  2. Archivos
    1. Nextant. Permite buscar en el contenido de los archivos y no solo en el nombre. Muy interesante, pero algo difícil de configurar.
    2. Reader. Con ella puedes leer directamente en la nube los libros electrónicos que tengas.
  3. Multimedia
    1. Audio Player. Reproductor para tus archivos MP3.
    2. GPXPod.Para los que disfrutamos con mapas, es un visor de archivos gpx, como los que utilizan las apps de GPS.
    3. News. Lector de feeds RSS. Es parecida al desaparecido Google Reader. Incluso hay app para Android.
  4. Oficina & texto
    1. Calendar. ¿Cómo te lo diría? Im-pres-cin-di-ble, en cinco sílabas. Muy interesante para los que desconfían de Google y preferirían no tener que usar Google Calendar para guardar sus eventos. Una vez instalada, se puede acceder a los calendarios desde Mozilla Thunderbird con Lightning, desde Outlook, desde el móvil (instalando DAVdroid para la sincronización).
    2. Contacts. Lo mismo que lo anterior. No hace falta nada más para tener un respaldo de tus contactos del móvil en la red y, a la vez, en casa. Igual que con la anterior, hace falta DAVdroid para sincronizarlo.
    3. Notes. Editor rápido de notas. Hay app Android.
  5. Organización
    1. Bookmarks. App de favoritos, permite guardar enlaces. Es muy rudimentaria todavía, parece ser que en el futuro tienen pensado extenderla y, quizás, convertirla en una forma de sincronizar los favoritos del navegador. Aun sin esta capacidad, sigue siendo muy interesante.
    2. Tasks. Un gestor de tareas. Gracias a la magia de DAVdroid, se puede controlar también desde el móvil, instalando la app OpenTasks (si lo vas a usar, instala OpenTasks antes de instalar DAVdroid).
  6. Herramientas
    1. Keeweb/Passman. Gestores de contraseñas compatibles con Keepass y similares. He empezado usando Keeweb pero Passman parece que tiene más vida y se está actualizando con algo muy útil: integración con el navegador (Chrome y, más o menos, Firefox).
    2. Piwik Tracking. Si usas este sistema de estadísticas similar a Google Analytics, esta app te permite integrarlo en la nube.

 

Otras que pueden ser interesantes, al menos para mí, son:

  1. Autenticación & autorización
    1.  Two Factor TOTP Provider. Permite usar el registro en dos pasos, con apps de seguridad como Google Authenticator o una versión libre, Autenticador.
    2. Registration. Si algún año me decido a usar Nextcloud con mis alumnos, usaré esto para que se registren ellos mismos sin tener que crearles yo la cuenta de usuario.
  2. Personalización
    1. AppOrder. Permite cambiar el orden de las apps en el menú. Es compatible con Direct Menu.
  3. Archivos
    1. Checksum. Permite comprobar que hemos realizado correctamente una descarga calculando el checksum del archivo.
    2. OPDS Catalog. Permite crear una biblioteca online de libros electrónicos a la que se puede acceder con FBReader, por ejemplo, y leer en tu móvil o tableta.
    3. Optical Character Recognition. Permite leer los contenidos escritos en imágenes.
  4. Integración
    1. Collabora Online. Es genial, o lo sería si fuera fácil de configurar. Es una versión en línea de LibreOffice, con la que se pueden editar tus documentos de texto o tus hojas de cálculo. Estoy la caza de enterarme de cómo instalarla en condiciones.
    2. Video Calls. Puede ser útil si tienes varios usuarios en el servidor, no tanto para una instalación privada. Es como Skype, pero sin salir de Nextcloud.
  5. Multimedia
    1. Documents. Permite ver algunos documentos. Está superado por LibreOffice Online, pero esta app puede permitirte salir de algún apuro. Es bastante cutre, eso sí, y parece ser que está abandonada así que no se va a actualizar más
    2. Weather. Sencilla app con información del tiempo. Una curiosidad que demuestra lo fácil que es extender Nextcloud.
    3. GPX Edit. Permite editar tus pistas GPX. Muy especializada, pero útil sobre todo porque en Linux no es una tarea fácil.
    4. PhoneSync (antes llamada Owncloud SMS). Como se puede deducir por el nombre antiguo, permite hacer una copia de seguridad de los mensajes SMS. Ya casi no se usan, hace unos años habría sido imprescindible.
    5. Preview Generator. Crea vistas previas de los archivos.
    6. Deck. App recién llegada, pero con mucho potencial para organizar equipos.
    7. Mail. Cliente de correo. tiene la ventaja de integrarse con los contactos, por ejemplo.
  6. Organización
    1. Dashboard. Permite crear un panel de control con widgets que interactúan con otras apps como Contacts o Weather.
    2. Admin notifications. Permite enviar notificaciones a los usuarios. Por ejemplo, a mis alumnos.
  7. Social y comunicación
    1. Polls. Similar a servicios online como Doodle, permite hacer encuestas y organizar grupos de gente.
    2. JavaScript XMPP Chat. Un chat privado para los usuarios.
    3. RainLoop. Otro cliente de correo, como Mail.
  8. Herramientas
    1. Ownbackup. Para crear copias de seguridad.
    2. Ownnotes. Un sistema de notas más potente que Notes a secas.
    3. OownnotesAPI. Permite usar un cliente de escritorio para las notas, llamado QOwnNotes, más potente que la app del móvil.

 

Apps antiguas, no compatibles con la última versión

Hay alguna que usaba y no son compatibles todavía con la versión más moderna:

  • Polls. Similar a servicios online como Doodle, permite hacer encuestas y organizar grupos de gente.
  • Weather. Sencilla app con información del tiempo. Una curiosidad que demuestra lo fácil que es extender Nextcloud.
  • Documents. Permite ver algunos documentos. Está superado por LibreOffice Online, pero esta app puede permitirte salir de algún apuro. Es bastante cutre, eso sí, y parece ser que está abandonada así que no se va a actualizar más
  • Shorten. Acortador de URLS. Acorta las direcciones que compartimos para que sean más agradables.
  • Files Share Link Renamer. Aparentemente parecida a Shorten, pero lo que acorta son los enlaces de los archivos que compartamos con otras personas, para que queden más legibles y más recordables.
  • Dashboard. Permite crear un panel de control con widgets que interactúan con otras apps como Contacts o Weather. Está, como indica su nombre, sin mantenimiento, aunque parece que se puede conseguir que funcione en Nextcloud 10, no sé si en el 11.

Nextcloud en la Raspberry Pi (7). Let’s Encrypt – Tu propio dominio seguro (y 2)

Actualizado el 5/11/17

(Las imágenes corresponden a una versión anterior de Certbot, pero el proceso sigue siendo prácticamente igual)

En la entrada anterior veíamos que Nextcloud nos advertía de que no estábamos usando una conexión segura para verlo. Hasta hace bien poco, la única opción que podría haber funcionado era comprar un certificado de servidor, pero si la idea es ahorrar lo más posible, salía más caro el certificado que la propia Raspberry.

Sin embargo, no hace demasiado ha aparecido el proyect Let’s Encrypt, que pretende facilitar y abaratar (¡es gratis!) el acceso a conexiones seguras. Está apoyado por jugadores tan importantes dentro del campo del software libre y de la libertad en internet como la EFF o la Fundación Mozilla. Con Let’s Encrypt («Vamos a cifrar») es mucho más fácil crear conexiones seguras. Y esto es importante por detalles como que yo guardo en mi nube el cuaderno de clase con datos personales de mis alumnos, y usar una conexión no fiable es peligroso e, incluso. podría ir en contra de la LOPD. Este, por cierto, es un problema de Dropbox.

Técnicamente estoy convencido de que es muy difícil de entender, pero por suerte no hace falta saber mucho, es muy fácil de llevar a cabo.

Los pasos son estos:

  1. Instalamos el paquete python-certbot-apache, que instala todo lo necesario:
    sudo apt-get install python-certbot-apache
  2. Actualización (12/6/18): parece que ha habido algún tipo de problema de seguridad con certbot, y da un error al llegar a este paso. Lo que hay que hacer es ejecutar sudo certbot --authenticator webroot --installer apache.
    Los pasos son similares, pero algo más largos.
    certbot en raspbian
    Nos preguntará en primer lugar sobre el dominio. Respondemos el ddns.net que hayamos escogido. Después nos pide una dirección de correo y nos pide que aceptemos los términos y condiciones, lo que hacemos escribiendo ‘a’. A continuación nos pregunta por la raíz web, y deberemos responder que /var/www/html. Por último nos pregunta si queremos el método fácil o el seguro. A gusto del consumidor pero, evidentemente, es más seguro el Seguro. Lo escogemos pulsando ‘2’.
    Una vez hemos terminado, podemos probar nuestro dominio de ddns en el navegador. Nos pedirá que añadamos LOQUESEA.ddns.net a los dominios fiables (trusted domains) porque de primeras Nextcloud no se fía del cambio en la dirección. Pulsamos el botón… y nos dará un error. Es normal: se debe a que el certificado de Let’s Encrypt que hemos instalado certifica que esa web es realmente LOQUESEA.ddns.net, mientras que la página que acaba de cargar sigue estando en la red local con 192.168.0.x. Debemos agregar una excepción pulsando el botón «Avanzado» y después «Añadir excepción»:
    Agregar excepción en Firefox
    Y lo que nos queda es añadir el dominio pulsando Sí en la ventana emergente que nos aparece.
    Añadir dominio de confianza a Nextcloud
    Ejecutamos el archivo:
    sudo certbot --apache
    Aparece un mensaje de aviso y nos pide nuestro dominio. Lo rellenamos. La captura de pantalla siguiente contiene un error, no se debe añadir el http:// al principio sino empezar directamente.

  3. Nos pide nuestro correo:
  4. Empieza a trabajar  y nos solicita que aceptemos los términos de usuario. Podemos aceptar con la A.
  5. pipolkillas-pi-_064
  6. Respondemos las preguntas que nos hace el instalador:
    Dominio: ponemos el que hayamos escogido en no-ip.com
    Correo: nuestra cuenta
  7. Después nos pregunta si queremos el método fácil o el seguro. A gusto del consumidor pero, evidentemente, es más seguro el Seguro.
    pipolkillas-pi-_065
  8. Comprobamos que está bien hecho yendo a una prueba de seguridad. Vamos a https://www.ssllabs.com/ssltest e introducimos nuestra dirección de No IP. Nos debe dar este resultado, que está muy bien.
    ssl-server-test-mozilla-firefox_066

Y ya está. Sencillo, ¿verdad? En próximas entradas veremos cómo mejorar y ajustar nuestra nube, ya con un servidor más seguro.

 

Nextcloud en la Raspberry Pi (6). DDNS – Tu propio dominio seguro (1)

El siguiente paso para tener una verdadera nube a la que podamos acceder desde cualquier parte del mundo con nuestro ordenador o móvil es configurar una dirección única para la Raspberry. La dirección que hemos estado utilizando hasta ahora (192.168.0.26 o similar) no sirve más que en nuestra red local. Pero lo interesante de tener una nube propia está en poder acceder a ella desde cualquier lugar. Hay un problema para ello: la práctica totalidad de las empresas proveedoras de servicios de internet en España funcionan mediante lo que se conoce como IP dinámica: la IP, la dirección en internet, va cambiando de forma que los clientes no podemos controlarlo. De tal manera que si acudimos a servicios como What’s My IP, hoy nos puede dar un resultado y mañana otro que no podemos adivinar. Para ello hace falta algo llamado servidor de nombre de dominio dinámico o DDNS, por sus siglas en inglés. Este tipo de servicios instala un pequeño programa en nuestro servidor que periódicamente comprueba si ha cambiado nuestra dirección y lo actualiza en un «dominio» propio, de tal manera que solo tenemos que usar este «dominio». Lo escribo entre comillas porque esta explicación no es técnicamente del todo precisa, pero es más que suficiente para nuestras necesidades.

¿Qué necesitamos para tener una dirección propia reconocible? Hay muchos servicios DDNS disponibles. El que yo uso es no-ip.com, que es bastante fácil de utilizar.

En primer lugar tenemos que registrarnos en la web de No IP.

free-dynamic-dns-managed-dns-managed-email-domain-registration-no-ip-mozilla-firefox_055

Como se ve en la imagen, podemos elegir una dirección que sea «lo-que-te-dé-la-gana.una-de-las-cuatro-opciones». Mi nube en producción usa la dirección http://polkillas.ddns.net, pero puedes escoger la opción que prefieras.

Cuando nos registramos, nos envía un correo de confirmación a nuestra cuenta de correo. Cuando activamos mediante el enlace, podemos entrar en el servicio. El segundo paso consiste en descargarse el programa que se conecta a No IP. Lo llaman DUC y se instala así, siguiendo las instrucciones oficiales:

mkdir /home/pi/noip (creamos un directorio para bajarlo)

cd /home/pi/noip (vamos al directorio)

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz (descargamos el DUC)

tar vzxf noip-duc-linux.tar.gz (lo descomprimimos)

cd noip-2.1.9-1 (entramos en el directorio que se ha creado)

sudo make (preparamos el programa para instalarlo)

sudo make install (lo instalamos)

Este procedimiento se llama compilar el programa. En el último paso, nos pedirá la dirección de correo y la contraseña de nuestra cuenta en no-ip.com.

Luego nos pedirá el intervalo de tiempo en minutos tras el cual se actualizará la dirección, si fuera necesario. El mínimo es 5 y en realidad 30, lo que sale por defecto, suele ser suficiente, pero se puede poner menos. También nos preguntará si queremos ejecutar algo después, pero podemos contestar que no.

pipolkillas-pi-noip-noip-2-1-9-1_058

Ya podemos ejecutarlo con la orden sudo noip2. Y como querremos que se ejecute solo al arrancar la Raspberry, lo hacemos de la siguiente manera. Vamos a editar los programas que se ejecutan cada cierto tiempo o en momentos determinados (como el arranque o el apagado) de la Raspberry con la orden

sudo crontab -e

La primera vez que editamos el archivo crontab nos dará a elegir entre diferentes editores de texto. El recomendado es «nano», la opción 2.

En el archivo que aparece, añadimos en la última línea lo siguiente:

@reboot sudo -u root noip2

Cerramos con CTRL + X y le decimos que guarde el archivo.

Si ahora mismo volvemos a ejecutar el DUC, nos dará el siguiente error:

sudo noip2

One noip2 process is already active,
and the multiple instance flag (-M) is not set.

Lo que significa que ya está funcionando. Vamos a comprobar así que lo hemos hecho bien, reiniciando la Raspberry con la orden sudo reboot. Si intentamos ejecutar el DUC, nos dará el mismo mensaje, con lo que es correcto. Así pues, ya podemos ir a nuestro navegador y buscar la dirección que hemos escogido al principio (http://polkillas.ddns.net/nube, en mi caso), y nos debería aparecer lo siguiente:

nextcloud-mozilla-firefox_060

Que significa que nuestra nube ha detectado algo raro: ya no accedemos desde la IP local, sino desde un dominio de internet. Por si acaso, no se fía y nos pregunta. Pulsamos el botón «Añadir … como dominio de confianza» o, en inglés «Add … as trusted domain» y, si estábamos registrados como administradores, directamente nos sale una pantalla en la que nos pregunta si queremos añadir el dominio. Respondemos que sí y nos saldrá la pantalla de administración de Nextcloud. El mensaje rojo no es exactamente un error, sino una advertencia que corregiremos en próximas entradas.

administracion-nextcloud-mozilla-firefox_061

SI no funciona este proceso, hace falta abrir los puertos del router. Es un proceso que depende mucho del modelo de router que tengamos en casa, así que, en este caso, toca recurrir a Google o a DuckDuckGo para buscar información concreta de cómo se hace.

Nextcloud en la Raspberry Pi con PHP 7 y MariaDB (5). Instalación de Nextcloud

Actualizado el 15/11/17 a la versión 12.0.3

El siguiente paso es, por fin, instalar Nextcloud en nuestra Raspberry. Es un paso más sencillo que los anteriores, paradójicamente. Pero aun así, vamos con ello. Lo mejor en este paso es entrar a la Raspberry desde otro ordenador con SSH.

En PuTTY o el terminal, entramos en la Raspberry y nos dirigimos a la carpeta raíz del servidor web, que es una carpeta de sistema, está protegida contra escritura  y el usuario ‘pi’ no puede hacer nada en ella, a no ser que tome privilegios de superusuario. Es decir, todo lo que hagamos aquí deberemos hacerlo empezando las órdenes con ‘sudo’. La carpeta es /var/www/html.

cd /var/www/html
ls

La segunda orden lista el contenido de la carpeta. Veremos uno o dos archivos si hemos ido siguiendo las instrucciones de esta serie de entradas: index.html, que es el archivo de inicio de Apache, e info.php, el archivo que podemos haber creado en una entrada anterior para comprobar el buen funcionamiento de PHP. En realidad, no es una idea especialmente buena tener estos archivos porque pueden dar información a posibles atacantes, por lo que podemos querer borrarlos.

Directorio /var/www/html

Ojo con este paso, que la herramienta de borrado es muy potente y si nos equivocamos podemos llegar a borrar todo el disco duro. En la siguiente orden, la parte de ./ indica que solo se tiene en cuenta el directorio en el que estamos:

sudo rm ./index.html

sudo rm ./info.php

Y nos queda un directorio en blanco. Si abrimos ahora la dirección de la Raspberry en un navegador saldrá una página diferente. Bien, pues vamos a llenarla con nuestro Nextcloud.  Para encontrar la última versión  (ahora mismo la 12.0.3), vamos a http://www.nextcloud.com/install, pulsamos el botón azul ‘Download’ y en la siguiente pantalla vamos de nuevo al botón azul pero lo pulsamos con el botón derecho y seleccionamos la opción de copiar el enlace al portapapeles.

La versión ha cambiado, pero el botón es el mismo: ‘Download Nextcloud’

Para descargar Nextcloud, vamos al terminal SSH, e indicamos que vamos a descargar ese archivo. Escribimos la orden wget y pegamos la URL que acabamos de copiar con MAYS + Ins:

sudo wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.zip

(Hace falta sudo porque la carpeta es del administrador) Tras descargarse, tenemos un archivo comprimido en zip. Para descomprimirlo, debemos hacer lo siguiente:

sudo unzip nextcloud-11.0.2.zip

Cambiando el nombre, claro, dependiendo del archivo que nos hayamos descargado Esto nos creará una carpeta llamada ‘nextcloud’ con los archivos necesarios. Pero hay que tener en cuenta una cosa importante sobre los permisos y las cuentas de usuario en Linux.

En Linux los usuarios tienen una importancia mayor que en Windows, donde normalmente utilizamos un solo usuario para todo. Sin embargo, en Linux se usan mucho más. En concreto, el servidor web Apache utiliza un usuario diferente para sus tareas, que se llama, en Raspbian, ‘www-data’. Como hemos usado privilegios de superusuario para descargar y descomprimir Nextcloud, el propietario de los archivos no es www-data sino el superusuario, ‘root’. Debemos cambiar esto para no tener problemas.

Para cambiar los permisos de archivo, usamos la siguiente orden:

sudo chown -R www-data:www-data nextcloud

Es decir, con permisos de superusuario, cambiamos la propiedad [change ownership] de todos los contenidos [-R] al usuario ‘www-data’ que pertenece al grupo ‘www-data’ para la carpeta ‘nube’.

Una vez hecho esto, se me ocurren tres opciones:

  1. SI no vamos a instalar más cosas y servidores, lo mejor es mover los contenidos de ‘nextcloud’ a ‘/var/www/html’, para que al escribir la dirección 192.168.XX.XX salga directamente la nube.
  2. Si queremos instalar más cosas, lo podemos dejar tal cual.
  3. Si queremos instalar más cosas, también tenemos la opción de cambiar el nombre de la carpeta para que sea más fácil de escribir y recordar. Como se podrá ver en mis capturas, es la opción que he llevado a cabo yo, cambiando ‘nextcloud’ por ‘nube’.

Para llevar a cabo estas opciones, estos son los comandos necesarios:

  1. sudo mv nextcloud/*.* ../*.* (mover todos los archivos dentro de ‘nextcloud’ al directorio superior)
  2. No hay que hacer nada, evidentemente.
  3. sudo mv nextcloud nube (mover la carpeta nextcloud’ a la carpeta ‘nube’)

Ahora ya podemos borrar el archivo .zip. Si no lo hacemos, Nextcloud nos dará un mensaje de advertencia que puede ser molesto. Lo hacemos con el comando
sudo rm./nextcloud-12.0.3.zip.

A partir de este paso, ya podemos trabajar en el navegador, entrando en la dirección adecuada. Según la opción que hayamos escogido de las tres, será:

  1. http://192.168.XX.XX
  2. http://192.168.XX.XX/nextcloud
  3. http://192.168.XX.XX/nube

Como mi opción es la 3, he ido a esa dirección y veo esto:nextcloud-mozilla-firefox_051

Este es el momento en que podemos escoger nuestro nombre de usuario y la contraseña que nos dé la gana. Luego podremos crear más cuentas de usuario si queremos. Pero más importante que el usuario y contraseña es la información siguiente.

El segundo recuadro blanco nos pregunta dónde queremos guardar los archivos que subamos a nuestra nube. Es importante cambiar el directorio que aparece por defecto, porque está en la tarjeta SD y, aparte de que lo llenaríamos en seguida, si la tarjeta se estropea perderíamos la información. Para evitar este problema era la cuarta entrada de la serie. Como se puede ver, he señalado la carpeta /media/Vir/nube. Si el disco duro no lo vamos a usar para nada más, no haría falta el último directorio pero al crear esta subcarpeta la raíz del disco duro queda  más ordenada. (por cierto que, si quieres hacer algo así, deberás crear la carpeta con sudo mkdir /media/Vir/nube y darle los permisos al usuario del servidor con sudo chown -R www-data:www-data /media/Vir/nube).

La advertencia que hay en el centro de la página es sobre los tipos de bases de datos. Nos avisa de que solo puede utilizarse una base de datos MySQL o MariaDB. Como esta última es la que hemos instalado y creado, no hay problema, así que en el último recuadro blanco podemos añadir el nombre de la base de datos y del usuario (será el mismo si hemos seguido el tutorial) y la contraseña que creamos en su momento. La última casilla podemos dejarla con ‘localhost’.

Si hemos introducido bien todos los datos, tardará un ratito (está creando los archivos y carpetas necesarios para el nuevo usuario) y nos saldrá una pantalla de bienvenida:

seleccion_054

No la cierres directamente. Tienes ahí enlaces para descargar los clientes de escritorio (el primer botón negro, para Ubuntu el proceso es algo más complicado pero para Windows es muy fácil) y móviles (los otros dos botones, dependiendo de si usas Android o iPhone). Yo el cliente de Android lo he descargado de F-Droid, que es una appstore alternativa que solo ofrece software libre.

Antes, Nextcloud aparecía por defecto en inglés. Ahora no debería ser el caso, pero si te ocurriera, es probable que quieras ponerlo en español. Para ello, pulsamos en nuestro nombre de usuario que aparece arriba a la derecha y seleccionamos ‘Administración’. En la pantalla que aparece, podemos cambiar el idioma como se ve en la siguiente imagen.

También hay enlaces sobre cómo usar nuestra flamante nube para, además de los archivos y documentos que queramos, almacenar nuestro calendario, nuestras tareas, nuestros contactos… Cuando la cerramos, veremos que tenemos algunas carpetas y documentos de ejemplo.

archivos-nextcloud-chromium_053

Y ya podemos decir que tenemos nuestra propia nube. Pero ¿cómo acceder a ella desde fuera de casa? Si lo intentáramos, veríamos que la dirección 192.168… no funciona. Ese será el contenido de la siguiente entrada.

Cargar más