Hace poco empecé a utilizar la aplicación Joplin para gestionar mis notas, y así empezar a depender menos de Google Keep, que es lo que uso actualmente para guardar casi todo tipo de notas, apuntes, listas...

De Joplin ya hablaré en otra entrada cuando la pruebe más a fondo, y veremos si cumple con mis expectativas. El motivo de esta entrada surgió cuando quise sincronizar mis notas haciendo uso de mi propio servidor de MinIO, el cual ofrece una interfaz compatible con la API de S3 (y soportado por Joplin).

Para este tutorial, partiremos de las siguientes premisas:

  • Servidor de ejemplo configurado en .mc/config.json:  myminio
  • Bucket de ejemplo: misNotas
  • Usuario de ejemplo: bob

Para ello, lo primero será crear un bucket nuevo, que estaría dedicado en exclusiva a la sincronización de notas. Hacer esto es muy sencillo, gracias al uso de la herramienta mc (MinIO client) y el comando:

$ mc mb myminio/misNotas

Con el bucket creado, ahora necesito el usuario que usaré únicamente para esto (y así, si el día de mañana dejo de usar esto, bastará con borrar dicho usuario o quitarle los permisos sobre el bucket en cuestión). Bastará con:

$ mc admin user add myminio/misNotas

E indicar el access key (bob en nuestro ejemplo) y el secret key, siendo este último generado, por ejemplo, con Bitwarden.

Con el bucket y el usuario creados, es el turno de la definición de la política que vamos a aplicar sobre el bucket. Puesto que lo quiero para sincronizar notas, deberá ser una política de lectura y escritura, pero limitada únicamente al bucket que queremos, con lo que comenzaremos por crear un fichero que llamaremos tmpPolicy.json (ya que, una vez terminemos, podremos borrarlo) y lo rellenaremos con:

{
  "Version": "2020-11-05",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::misNotas/*"
      ],
      "Sid": ""
    }
  ]
}

Una vez creado, necesitamos cargar esa política en el servidor, para lo cual volveremos a hacer uso del comando mc y le proveeremos de servidor, nombre que le damos a la nueva política y el fichero en el que está:

$ mc admin policy add myminio misNotasPolicy tmpPolicy.json

Y, una vez agregada al servidor, se la podremos asignar a nuestro usuario:

$ mc admin policy set myminio misNotasPolicy user=bob

¡Y listo! Si queremos comprobar que se ha ejecutado correctamente, bastará con listar las políticas de nuestro servidor, y veremos que nos aparece ahí:

$ mc admin user list myminio

enabled    bob            misNotasPolicy

Y ahora, ya podremos configurar Joplin para que sincronice nuestras notas añadiendo el bucket misNotas, la URL donde tengamos nuestro servidor privado y el access key y secret key que creamos para ello.

¡Sed felices!