21-06-2025, 03:59 PM
(This post was last modified: 23-06-2025, 07:37 PM by Ganekogorta.)
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
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
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
Ahora crearemos en la carpeta donde estamos una nueva carpeta de nombre "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:
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
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.
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
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:
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:
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
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:
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"
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
De nuevo el despliegue se hace con el comando
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
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
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
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

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

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

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

Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η