665 - Tus notas en la nube con Note Mark

665 - Tus notas en la nube con Note Mark

Si quieres tener tus notas disponibles en cualquier sitio una opción mas que interesante es tener tus notas en la #nube con Note Mark utilizando #docker

1:25
-3:15

Ya lo he comentado en mas de una ocasión, la atracción fatal que tienen las aplicaciones de notas para llamar nuestra atención. Es como el perro de la película Up al oír ardilla. Creo que al ser humano le pasa algo similar al oír aplicación de notas. Mira que intento resistirme, pero es algo superior a mis fuerzas. En cuanto veo cualquier aplicación o servicio lo tengo que probar, y siempre encuentro alguna característica que me gusta y razón para quedarme con ella. En este episodio te traigo otra opción realmente interesante y que te puede servir para tener todas tus notas en la nube, en tu propia nube, y siempre disponibles para cuando lo necesites.

Tus notas en la nube con Note Mark

Markdown en Neovim

Si eres de los que utiliza Neovim y escribe en Markdown en este editor, te recomiendo dos renderizadores, si se les puede llamar de esa manera. Con renderizador de markdown me refiero a un plugin que mejora la visualización de un archivo Markdown. No es como si estuvieras previsualizando el estado final, pero se asemeja mucho.

Como he comentado en alguna ocasión, yo no utilizo un previsualizador de archivos markdown. Lo cierto es que con lo que me ofrece Neovim de caja tengo mas que suficiente. Sin embargo, este tipo de herramientas lo cierto es que ayuda a tener una visión mucho mas cercana al resultado final, sin necesidad de salir de Neovim.

En particular estas dos herramientas son render-markdown.nvim y Markview.nvim.

De estas dos herramientas, actualmente estoy utilizando la primera render-markdown, porque permite integrarla con otros plugin, pero es muy similar a la segunda.

Sincronización versus Servicio en la nube

Durante algunos episodios te comenté los problemas a los que me había enfrentado para tener todas mis notas sincronizadas en Obsidian. Actualmente tengo Obsidian en todos mis dispositivos, y lo que quiero es tener todas mis notas sincronizadas en todos los dispositivos. De esta forma puedo trabajar en mis notas en cualquier dispositivo.

Realmente la realidad es otra. Cada uno de los dispositivos lo trato de forma distinta. Por ejemplo, en el móvil, lo único que hago es anotar enlaces, apuntar tareas, y tomar notas rápidas que no quiero olvidar. La tablet si que la utilizo para desarrollar algún artículo o el guión de un episodio, mientras que en el ordenador de escritorio normalmente escribo artículo y organizo las notas.

La cuestión es que otra opción por la que puedes optar es, en lugar de instalar Obisidian en cada uno de tus dispositivos, puedes utilizar un servicio en la nube. De esta forma, no tienes que preocuparte de sincronizar todas tus instancias de Obisidian, aunque si que es imprescindible realizar copias de seguridad de tus notas. Aunque, realmente, si lo piensas, de tus notas, también necesitas realizar copias de seguridad, aunque las sincronices o precisamente por esto.

¿Que es Note Mark y por que me resulta interesante?

Note Mark es una aplicación de notas auto alojada rápida y realmente ligera. Y te puedo asegurar que es cumple con estos dos criterios de diseño a la perfección.

Características de Note Mark

Algunas de las características que me han llamado la atención de Note Mark son,

  • Markdown (Markdown con estilo de GitHub, consulta la especificación aquí)
  • Sanitización de HTML, minimizando ataques XSS
  • Compatibilidad móvil
  • URLs amigables para enlaces más limpios
  • Temas oscuro y claro
  • Posibilidad de Compartir notas
  • Sistema de almacenamiento personalizado basado en archivos planos
  • Múltiples vistas para una nota (renderizado, texto simple)
  • Editor ultra rápido con atajos

Instalación y configuración

Como te puedes imaginar la instalación es realmente sencilla porque la tendrás en un docker-compose.yml como el que te muestro a continuación,

services:
  notemark:
    image: ghcr.io/enchant97/note-mark-aio
    container_name: notemark
    init: true
    restart: unless-stopped
    volumes:
      - data:/data
    networks:
      - proxy
    environment:
      JWT_SECRET: "uQQqefewEFfU"
      CORS_ORIGINS: "https://notemark.tuservidor.es"
      ALLOW_SIGNUP: false
    labels:
      - traefik.enable=true
      - traefik.http.services.notemark.loadbalancer.server.port=8000
      - traefik.http.routers.notemark.rule=Host(`notemark.tuservidor.es`)
      - traefik.http.routers.notemark.entrypoints=https

volumes:
  data: {}

networks:
  proxy:
    external: true

Para general el JWT_SECRET puedes utilizar el siguiente comando,

tr -dc A-Za-z0-9 </dev/urandom | head -c 12; echo

Para dar de alta un usuario, en mi caso lo hice a lo cafre, es decir, configuré la opción ALLOW_SIGNUP a true, di de alta un usuario, y a continuación, lo cambié a false y reinicié el contenedor. Pero, no hace falta hacer nada de esto, puedes ejecutar el siguiente comando,

docker exec -it notemark /note-mark user add -u <nombre> -p <contraseña>

Y de la misma forma si quieres quitar alguno usuario, es tan sencillo como ejecutar este otro comando,

docker exec -it notemark /note-mark user remove -u <nombre>

Actualmente admite dos bases de datos para persistir parte de la información, por un lado sqlite y por otro postgresql. En mi caso, y, de nuevo, dado que la voy a utilizar solamente yo, me he decantado por sqlite.

Copias de seguridad

Desde luego si estás utilizando este servicio en producción, es fundamental que realices copias de seguridad para salvaguardar toda tu información.

En el caso de Note Mark, tienes que hacer copias de seguridad de las notas y de la meta información que se guarda en la base de datos. Y es que si bien, todas las notas se guardan directamente en archivos markdown, lo cierto es que la meta información se guarda en base de datos.

Para el caso de sqlite simplemente tendrás que copiar el archivo generado, mientras que si utilizas postgresql, necesitas algún servicio externo. Hace algún tiempo, desarrollé un contenedor que permitía hacer esto de forma sencilla. Lo tienes disponible en postgres-backup. Y te permite configurar cada cuanto tiempo quieres hacer copias de seguridad y cuantas copias quieres mantener a lo largo del tiempo.

Una de las grandes ventajas que ofrece Note Mark, frente a otras soluciones es que guarda todas las notas en texto plano, aunque, como te mencioné utiliza, una base de datos para guardar la meta información.

Uso

Indicarte que Note Mark soporta tanto Safari, como Chrome como Firefox, aunque a partir de determinadas versiones.

Utiliza algunos atajos de teclado, los mas habituales. Me refiero a negritas, cursivas, o sangría, por mencionar algunos. Aunque te tengo que decir, que por ejemplo, en mi caso, el atajo de teclado de cursivas no me termina de funcionar.

Se organiza en libros y notas, pero solo admite un nivel. Cosa que puede llegar a representarte un problema. En mi caso particular, actualmente estoy utilizando hasta tres niveles, pero todo es cuestión de organización.

Cada libro puede ser público o privado, de forma que todas las notas que están dentro de un libro público son libremente accesibles, mientras que las notas que están en un libro privado únicamente son accesibles mediante credenciales.

Por otro lado, para las notas puedes subir distintos archivos que posteriormente puedes utilizar en la nota que estés editando. En este caso, te tengo que decir que no es muy cómodo, porque no lo hace de forma integrada. Así, primero tienes que subir las imágenes, para poder utilizarlas posteriormente. No es como en otros casos, que al subirla directamente se crea el enlace en el propio documento.

Otra característica interesante, en lo que al uso se refiere, es que permite algunas variables de plantilla. Por ejemplo {{ note.name }} y {{ book.name }}. Por el momento estas dos. Yo intenté pasándome de listo probar con {{ note.date }} y me dio un error, como era de esperar.

Y como guinda, Note Mark permite simular Vim, y pese a mis reticencias, en este caso funciona fantásticamente bien, incluso cuando utilizas la tecla Esc.

Sobre el futuro de Note Mark

El desarrollador de esta aplicación ha puesto algunas características que le gustaría implementar, y que en particular, a mi me parecen realmente interesantes y a mi también me gustaría que desarrollara. Entre estas características cabe mencionar,

  • Un historial de revisiones de notas.
  • Almacenamiento de notas utilizando S3.
  • La posibilidad de utilizarlo offline.
  • Sincronización en vivo. Entiendo a que se refiere a que puedan editar varias personas simultáneamente una nota.
  • Una interfaz de línea de comandos.

Bajó el capó de Note Mark

Me ha llamado mucho la atención el desarrollo de esta herramienta. Realmente es muy interesante, porque utiliza hasta cuatro tecnologías distintas.

Por un lado el backend está implementado en Go, tampoco he profundizado mucho mas, porque este lenguaje, actualmente lo desconozco, y no tengo claro si utiliza algún framework o similar.

Respecto al frontend, está utilizando Rust para implementar el renderizador que utiliza, mientras que toda la aplicación está realizada utilizando SolidJS y TypeScript.


Más información,

1 comentario en “Tus notas en la nube con Note Mark

  1. RA
    Raúl hace 8 horas

    Hola. Me ha parecido muy interesante el capítulo. He intentado poner a andar el volumen, pero no he conseguido que me funcione. ¿Has pensado en añadirlo a tus otros servicios en el github de selh-hosted?

    Un saludo.

    P.D.: Por cierto en el docker-compose.yml que has propuesto hay un error. ALLOW_SIGNUP: false debería ser: ALLOW_SIGNUP: «false»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *