• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Docker KaraKeep para notas, fotos y enlaces
#1
Hola

El compañero Yeraycito de este foro nos habló en el grupo de Telegram de este docker llamado Karakeep

Sirve a modo de cuaderno para insertar rápidamente un enlace a una web, una fotografía, un pdf o una nota.
permite asignar comentarios y etiquetas al contenido para una mejor clasificación y búsqueda posteriores.
Además dispone de app para IOs y para Android.

Si lo comparamos con Joplin, Karakeep es mas visual y parece mas amigable. 
Por ponerlo algún "pero" diré no le veo un motor dedicado de SQL como puede tener Joplin y que para utilizarlo hay que despegar un total de tres dockers.

Podemos tenerlo sólo como un docker local y para usarlo desde el exterior deberíamos acceder a la nas vía VPN (OpenVPN, Wireguard, ...)
Pero creo que es mas interesante hacerlo público a Internet protegido desde algún tipo de proxy inverso tipo Nginx y así accederíamos a él con una dirección web del tipo "https://misnotas.midominio.eu"

Evidentemente hemos de tener instalado en la nas la aplicación Container Station para poder hacerlo instalar y funcionar Wink

Voy a describir como desplegarlo de tres formas distintas:
1-por consola 
  1.1-con archivo de configuración
  1.2-sin archivo de configuración
2-por docker-compose
3-Uso básico
4-Bonus
5-Bonus II


1- Instalación por consola

Esta es la forma mas espartana y poco amigable de hacerlo.
En cambio es la que funcionará en la mayoría de sistemas sean o no máquinas de QNAP.
Además es la que nos permite desplegarla mas fácilmente desplegarlo en máquinas remotas.

Abrimos la consola, yo lo haré por Putty, aunque mas programas para ello.

Vamos a una carpeta compartida que es donde dejaremos los datos persistentes: Esto se hace para que resistan a reinicios y se mantengan aunque eliminemos el docker.
En mi caso tenemos una carpeta compartida llamada "DockerData" (nos es indiferente en que conjunto de almacenamiento esté).
El comando para entrar a esa carpeta es 
Code:
cd /share/DockerData

Ahora vamos a crear dos claves aleatorias de las que tomaremos nota (copiar y pegar en un bloc de notas)
Las claves las generaremos desde la consola ejecutando
Code:
openssl rand -base64 36

Ahora crearemos en la carpeta donde estamos una nueva carpeta de nombre "karakeep"
Code:
mkdir karakeep
cd karakeep


Ahora tenemos dos variantes para hacerlo. Una con archivo de configuración y otra sin él.


   1.1-Instalación por consola con archivo de configuración

Ahora crearemos en la carpeta donde estamos un archivo de nombre ".env" escribiendo el comando siguiente:
Code:
touch .env

ahora editamos el archivo .env y le añadimos 4 líneas con el siguiente contenido.

Como estamos por consola, está es la parte mas "arisca" ya que usaremos el sempiterno editor VI

Para comenzar la edición escribimos en la consola
Code:
vi .env

Y escribiremos un contenido como el siguiente con las correspondientes claves anteriormente generadas y la ip local ( o la dns pública que queramos). 

La versión a usar podemos obtenerla de la web de karakeep desde este enlace.
Code:
KARAKEEP_VERSION=0.25.0
NEXTAUTH_SECRET=la_cadena_alfanumerica que salio al escribir openssl rand -base64 36
MEILI_MASTER_KEY=la_OTRA_cadena_alfanumerica que salio al escribir openssl rand -base64 36
NEXTAUTH_URL=http://192.168.x.y:3000

Para salir del editor VI y guardar los cambios pulsaremos la siguiente secuencia de teclas
ESC , carácter de dos puntos (no punto y punto), carácter w, carácter q, carácter ! (cierre de exclamación) y tecla intro 

Si queremos comprobar el contenido del archivo escribiremos en la consola
Code:
cat .env

La ventaja de usar el archivo de configuración es que estos valores podemos modificarlos y/o consultarlo y/o ocultarlos a otros usuarios de la nas restringiendo el acceso a la carpeta persistente "/share/DockerData/karakeep"

Ahora ya podemos lanzar los comandos de creación de los tres contenedores con los siguientes comandos:
  • docker auxiliar de mielisearch
Code:
docker run -d --restart unless-stopped --name karakeep_meilisearch -v /share/DockerData/karakeep/meilisearch:/meili_data -e "MEILI_NO_ANALYTICS=true"  getmeili/meilisearch:v1.13.3
  • docker auxiliar de chrome
Code:
docker run -d --restart unless-stopped --name karakeep_chrome gcr.io/zenika-hub/alpine-chrome:123 --no-sandbox --disable-gpu--disable-dev-shm-usage --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 --hide-scrollbars
  • docker principal de karakeep
Code:
docker run -d --restart unless-stopped --name karakeep_web -p 3000:3000 -v /share/DockerData/karakeep:/data --env-file /share/DockerData/karakeep/.env -e "MEILI_ADDR=http://karakeep_meilisearch:7700" -e "BROWSER_WEB_URL=http://karakeep_chrome:9222" -e "DATA_DIR=/data" -e " ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}


Los nombres de los tres dockers comienzan por "karakeep" para que en caso de gestionarlos por nombre nos salgan consecutivos.
En el caso del comando del docker principal "karakeep_web", vemos que hay valores y puertos que hacen llamadas a los otros mediante unos puertos específicos (7700 y 9222). No deberíamos alterarlos y si lo hacemos asegurarnos que ambos usan los mismos.

Si quisiésemos que karakeep estuviese accesible por un puerto distinto del 3000, debemos cambiar "-p 3000:3000" por "-p nuevo_puerto:3000" y debemos hacerlo también en archivo ".env"

Si todo ha ido bien ya debería estar accesible la web "http://192.168.x.y:3000" y presentarnos la web de acceso principal.




  1.2-Instalación por consola sin archivo de configuración

Este despliegue es mas rápido que el anterior de cara a nos evitamos la creación del archivo de configuración, pero en cambio la cadena de creación será sensiblemente mas larga.

Los comandos de creación de los tres contenedores serán los siguientes:
  • docker auxiliar de mielisearch
Code:
docker run -d --restart unless-stopped --name karakeep_meilisearch -v /share/DockerData/karakeep/meilisearch:/meili_data -e "MEILI_NO_ANALYTICS=true"  getmeili/meilisearch:v1.13.3
  • docker auxiliar de chrome
Code:
docker run -d --restart unless-stopped --name karakeep_chrome gcr.io/zenika-hub/alpine-chrome:123 --no-sandbox --disable-gpu--disable-dev-shm-usage --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 --hide-scrollbars
  • docker principal de karakeep
Code:
docker run -d --restart unless-stopped --name karakeep_web -p 3000:3000 -v /share/DockerData/karakeep:/data -e "MEILI_ADDR=http://karakeep_meilisearch:7700" -e "BROWSER_WEB_URL=http://karakeep_chrome:9222" -e "DATA_DIR=/data" -e "NEXTAUTH_URL=http://192.168.x.y:3000" -e "NEXTAUTH_SECRET=la_cadena_alfanumerica que salió al escribir openssl rand -base64 36" -e "MEILI_MASTER_KEY=la_OTRA_cadena_alfanumerica que salió al escribir openssl rand -base64 36" ghcr.io/karakeep-app/karakeep:0.25.0

Si todo ha ido bien ya debería estar accesible la web "http://192.168.x.y:3000" y presentarnos la web de acceso principal.


2-Instalación por docker-compose

A diferencia del anterior sistema, aquí de nuevo usamos la consola pero nos basamos un archivo llamado "docker-compose.yml" donde tenemos la definición de los tres dockers y en el archivo ".env" 

Ambos archivos han de estar ubicados en la carpeta persistente. En nuestro caso en "/share/DockerData/karakeep"

El archivo ".env" contendrá lo siguiente
Code:
KARAKEEP_VERSION=0.25.0
NEXTAUTH_SECRET=la_cadena_alfanumerica que se generó al escribir openssl rand -base64 36
MEILI_MASTER_KEY=la_OTRA_cadena_alfanumerica que se generó al escribir openssl rand -base64 36
NEXTAUTH_URL=http://192.168.x.y:3000

Recordad adaptar la anterior configuración a nuestra configuración pudiendo ser una dirección local o una web pública.

Para generar el archivo podemos hacerlo por consola según está explicado en un punto anterior

Y el archivo "docker-cmpose.yml" tiene el siguiente contenido:
Code:
services:
  web:
    image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
    restart: unless-stopped
    volumes:
      - /share/DockerData/karakeep:/data
    ports:
      - 3000:3000
    env_file:
      - .env
    environment:
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      DATA_DIR: /data
  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:123
    restart: unless-stopped
    command:
      - --no-sandbox
      - --disable-gpu
      - --disable-dev-shm-usage
      - --remote-debugging-address=0.0.0.0
      - --remote-debugging-port=9222
      - --hide-scrollbars
  meilisearch:
    image: getmeili/meilisearch:v1.13.3
    restart: unless-stopped
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - meilisearch:/meili_data

volumes:
  meilisearch:
  data:

Los espacios y tabulaciones son importantes en este archivo.

Para hacer el despliegue sólo hemos de ejecutar el siguiente comando de consola estando en "/share/DockerData/karakeep"
Code:
docker compose up -d


Si nos queremos evitar tener el archivo ".env" podemos usar el siguiente archivo "docker-composer.yml" en el hemos incluido las variables definidas en el anterior archivo .env. 

Luego veremos una desventaja de usar este sistema de no tener el archivo .env

Code:
services:
  web:
    image: ghcr.io/karakeep-app/karakeep:0.25.0
    restart: unless-stopped
    volumes:
      - /share/DockerData/karakeep:/data
    ports:
      - 3000:3000
    environment:
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      NEXTAUTH_SECRET: "la_cadena_alfanumerica generada al escribir openssl rand -base64 36"
      MEILI_MASTER_KEY: "la_OTRA cadena_alfanumerica generada al escribir openssl rand -base64 36"
      NEXTAUTH_URL: http://192.168.x.y:3000
      DATA_DIR: /data
  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:123
    restart: unless-stopped
    command:
      - --no-sandbox
      - --disable-gpu
      - --disable-dev-shm-usage
      - --remote-debugging-address=0.0.0.0
      - --remote-debugging-port=9222
      - --hide-scrollbars
  meilisearch:
    image: getmeili/meilisearch:v1.13.3
    restart: unless-stopped
    environment:
      NEXTAUTH_SECRET: "la_cadena_alfanumerica generada al escribir openssl rand -base64 36"
      MEILI_MASTER_KEY: "la_OTRA cadena_alfanumerica generada al escribir openssl rand -base64 36"
      NEXTAUTH_URL: http://192.168.x.y:3000
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - meilisearch:/meili_data
volumes:
  meilisearch:
  data:

De nuevo el despliegue se hace con el comando
Code:
docker compose up -d


3- Uso básico

El primer paso es crear un usuario yendo a la opción de "Sing Up"
   

Rellenamos los datos y 
   

al ser el primero será con permisos de administración.

Una vez dentro del la web tenemos la opcón de agregar una nota, una web o una imagen
   

El funcionamiento es muy intuitivo y sencillo. De hecho parece que no podemos hacer muchas mas cosas.

Si queremos cambiarlo de idioma haremos clic en la parte superior derecha donde esta el circulo del usuario

   

Y se nos abre un panel de opciones, entre ellas las del idioma
   

Vemos que hay mas funciones y el autor está aumentándolas  Smile

En cuanto al uso en teléfono móvil es similar al de la web, aunque está algo más limitado.
Por ejemplo no deja agregar texto a una imagen que ya tenemos, cosa que si podemos desde el ordenador.

Al ser un móvil deberemos usar una dns publica que apunte a nuestra docker (a no ser que se quiera usar sólo en casa en una wifi privada)
   

Podemos también hacerlo mediante una Clave API (que podemos generar en el menú de configuración)
   

Si pulsamos sobre el botón con forma de insecto (bug) podemos comprobar el estado del servidor y la conexión
En este caso con fallo
   

Si es correcto veremos
   


Si ponemos los datos correctos en la pantalla de login
   


Accederemos a la pantalla siguiente para insertar los contenidos.
   

Y poco mas puedo añadir de este contenedor.

Estéticamente me ha gustado mas que Joplin, aunque todavía queda margen para mejorarlo (por ejemplo integrarlo en una BBDD tipo MariaDB o PostgreSQL)
Una que cosa que valoro es que dispongamos de clientes nativos para móvil Smile

Espero que os haya gustado y la uséis.

Nota

Si no hacemos nada, cualquiera podría abrirse una cuenta de usuario (no de administrador) y agregar sus contenidos.

Si queremos desactivar hemos de hacer lo siguiente:
-detener el contenedor karakeep (no hace falta detener los dos primeros)
-agregar una variable DISABLE_SIGNUPS con valor a "true" en el archivo ".env"
-volvemos a iniciar el docker

Si lo hacemos por Portainer agregando la variable a mano en el docker, no hace falta detenerlo, él se encarga de reiniciarlo con el cambio.

Bonus II

Bueno, en este enlace tenemos la opción de bajar el qpkg para tener este docker Wink
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply
#2
   




Una vista de panel de inicio más compacta para navegar por tus marcadores de KaraKeep. Todos los marcadores de KaraKeep se muestran en una sola página, organizados por listas. Esto está pensado para ser un panel muy simple y despejado para tus marcadores; todas las funciones de gestión de marcadores se realizan a través de la aplicación completa de KaraKeep.


Instalación en docker:



version: '3.8'

services:
    karakeep-homedash:
        image: ghcr.io/codejawn/karakeep-homedash:latest
        container_name: karakeep-homedash
        ports:
            - "8595:8595"
        volumes:
            # Mount the KaraKeep database (read-only)
            - /path/to/karakeep/db.db:/app/db.db:ro
            # Mount config directory for persistence
            - ./config:/app/config
        restart: unless-stopped
Opnsense router

Qnap TS-264 QTS Hero

Minipc All - flash N305 Truenas Scale
  Reply




Users browsing this thread: 1 Guest(s)