timothepoznanski/poznote
timothepoznanski/poznote has 1,034 GitHub stars and 52 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-12 22:29 UTC. Last push 2026-11-05.
Powerful note-taking without the hassle.
Crecimiento de estrellas medido
- in 24h
- +1
- in 7 days
- Recopilando historial
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
docs/README.es.md
OriginalEnglish · Français · Deutsch · Español · Português · Русский · 简体中文 · 한국어 · 日本語 · Català
Toma de notas potente, sin complicaciones.
Una alternativa gratuita, autoalojada y de código abierto a Notion, Obsidian, Evernote o OneNote.
Funciones
Descubre todas las funciones aquí.
Capturas de pantalla
Consulta todas las capturas de pantalla aquí.
Demo
Usuario: poznote
Contraseña: poznote
¿No quieres administrar un servidor?
Un proveedor de alojamiento puede ejecutar Poznote por ti.
Compara los proveedores o despliega directamente:
Hablan de Poznote
https://poznote.com/press.html
Discord
Únete a la comunidad para hacer preguntas, compartir tus comentarios o seguir el desarrollo:
Índice
- Instalación
- Acceso
- Cambiar la configuración
- Actualizar la aplicación
- Autenticación
- Contraseñas de aplicación
- Tipos de notas
- Revisiones
- Personalización
- Multiusuario
- Compartir y colaboración
- Acceso rápido
- Registro de actividad
- Webhooks
- Sincronización Git
- Almacenamiento de adjuntos en S3
- Copia de seguridad / Exportar
- Restaurar / Importar
- Sin conexión
- Varias instancias
- Asistente IA
- Transcripción (voz a texto)
- Servidor MCP
- Aplicaciones
- Extensión de Chrome
- Compartir con Poznote en Android
- Documentación de la API
- Stack tecnológico
Instalación
La imagen oficial es multiarquitectura (linux/amd64, linux/arm64) y funciona en Windows/macOS con Docker Desktop, así como en dispositivos ARM64 como Raspberry Pi, sistemas NAS, etc.
Elige a continuación tu método de instalación preferido:
🖥️ Windows
Paso 1: Requisito previo
Instala e inicia Docker Desktop
Paso 2: Desplegar Poznote
Crea un nuevo directorio:
mkdir poznote
Entra en el directorio de Poznote:
cd poznote
Crea el archivo de entorno:
curl -o .env https://raw.githubusercontent.com/timothepoznanski/poznote/main/.env.template
Edita el archivo .env:
notepad .env
Descarga el archivo de configuración de Docker Compose:
curl -o docker-compose.yml https://raw.githubusercontent.com/timothepoznanski/poznote/main/docker-compose.yml
Descarga las últimas imágenes de Poznote Webserver y Poznote MCP:
docker compose pull
Inicia los contenedores de Poznote:
docker compose up -d
🐧 Linux
Paso 1: Requisito previo
- Instala Docker engine
- Instala Docker Compose
Paso 2: Instalar Poznote
Crea un nuevo directorio:
mkdir poznote
Entra en el directorio de Poznote:
cd poznote
Crea el archivo de entorno:
curl -o .env https://raw.githubusercontent.com/timothepoznanski/poznote/main/.env.template
Edita el archivo .env:
vi .env
Descarga el archivo de configuración de Docker Compose:
curl -o docker-compose.yml https://raw.githubusercontent.com/timothepoznanski/poznote/main/docker-compose.yml
Descarga las últimas imágenes de Poznote Webserver y Poznote MCP:
docker compose pull
Inicia los contenedores de Poznote:
docker compose up -d
🍎 macOS
Paso 1: Requisito previo
Instala e inicia Docker Desktop
Paso 2: Desplegar Poznote
Crea un nuevo directorio:
mkdir poznote
Entra en el directorio de Poznote:
cd poznote
Descarga el archivo de entorno:
curl -o .env https://raw.githubusercontent.com/timothepoznanski/poznote/main/.env.template
Edita el archivo .env:
vi .env
Descarga el archivo de configuración de Docker Compose:
curl -o docker-compose.yml https://raw.githubusercontent.com/timothepoznanski/poznote/main/docker-compose.yml
Descarga las últimas imágenes de Poznote Webserver y Poznote MCP:
docker compose pull
Inicia los contenedores de Poznote:
docker compose up -d
☁️ Nube
¿No quieres administrar un servidor? Un proveedor de alojamiento puede ejecutar Poznote por ti y mantenerlo en línea. Consulta los proveedores disponibles y cómo elegir entre ellos aquí.
🗄️ Proxmox VE
En un host Proxmox VE, el proyecto Proxmox VE Community Scripts instala Poznote en su propio contenedor con un solo comando, sin Docker: crea un LXC Debian 13 sin privilegios (1 vCPU, 512 MB de RAM y un disco de 4 GB por defecto) y sirve Poznote con nginx y PHP dentro de él.
Ejecuta esto desde la shell del host Proxmox:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/poznote.sh)"
Poznote responde entonces en http://<container-ip>:8040, con las mismas credenciales por defecto que cualquier otra instalación. Para actualizarlo más adelante, ejecuta update en la consola del contenedor.
Este script lo escribe y mantiene la comunidad, no Poznote. Consulta la página del script de Poznote para ver sus opciones y notas.
☸️ Kubernetes con Helm
Paso 1: Requisito previo
Instala Helm y asegúrate de que tu contexto de Kubernetes apunta al clúster donde quieres desplegar Poznote.
Paso 2: Desplegar Poznote
Añade el repositorio de charts de HelmForge:
helm repo add helmforge https://repo.helmforge.dev
Actualiza tu índice local de charts:
helm repo update
Instala Poznote:
helm install poznote helmforge/poznote --namespace poznote --create-namespace
El chart de Helm de Poznote lo mantiene la comunidad HelmForge como opción de instalación nativa para Kubernetes. Consulta la documentación del chart de Poznote de HelmForge para los valores, la persistencia, la exposición del servicio, las sondas, los contextos de seguridad y otros ajustes orientados a producción.
🔒 Rootless
Poznote también ofrece una variante rootless de la imagen que se ejecuta por completo como usuario sin privilegios (uid/gid 1000) en lugar de root, para los entornos que prohíben root dentro de los contenedores (PodSecurityStandard restringido de Kubernetes, Podman rootless, docker run --user, etc.). Funciona exactamente igual que la imagen por defecto; las únicas diferencias son que escucha internamente en el puerto 8080 y que no puede corregir el propietario de tu directorio de datos al arrancar.
Paso 1: Requisito previo
- Instala Docker engine
- Instala Docker Compose
Paso 2: Desplegar Poznote
Crea un nuevo directorio:
mkdir poznote
Entra en el directorio de Poznote:
cd poznote
Crea el directorio de datos y asigna su propiedad al uid/gid 1000 (obligatorio: a diferencia de la imagen por defecto, el contenedor rootless no puede corregir él mismo este propietario al arrancar):
mkdir -p data
sudo chown -R 1000:1000 data
A menudo sudo no es necesario aquí: si tu usuario ya tiene el uid 1000, puedes omitir el chown, y con Podman/Docker rootless se puede ejecutar sin root, consulta Ejecución rootless.
Crea el archivo de entorno:
curl -o .env https://raw.githubusercontent.com/timothepoznanski/poznote/main/.env.template
Edita el archivo .env:
vi .env
Descarga el archivo de configuración de Docker Compose rootless:
curl -o docker-compose.rootless.yml https://raw.githubusercontent.com/timothepoznanski/poznote/main/docker-compose.rootless.yml
Descarga las últimas imágenes rootless de Poznote Webserver y Poznote MCP:
docker compose -f docker-compose.rootless.yml pull
Inicia los contenedores de Poznote:
docker compose -f docker-compose.rootless.yml up -d
Para migrar una instancia de Poznote existente a la variante rootless, o para más detalles, consulta Ejecución rootless en la Guía de resolución de problemas.
Si tienes problemas durante la instalación, consulta la Guía de resolución de problemas.
Acceso
Tras la instalación, accede a Poznote desde tu navegador web:
- Nombre de usuario:
admin_change_me - Contraseña:
admin - Puerto:
8040
Cambia el nombre de la cuenta de administrador por defecto y su contraseña después del primer inicio de sesión.
Cambiar la configuración
La mayoría de los ajustes del día a día se cambian desde la interfaz de Poznote. Usa el archivo .env solo para los valores de despliegue y ejecución que se leen al iniciar los contenedores.
Usa el archivo .env para
HTTP_WEB_PORTPOZNOTE_OIDC_CLIENT_IDPOZNOTE_OIDC_CLIENT_SECRETPOZNOTE_OIDC_DISABLE_NORMAL_LOGIN- Variables opcionales de ejecución, como
POZNOTE_MCP_PORTyPOZNOTE_DEBUG POZNOTE_PHP_FPM_MAX_CHILDRENpara cambiar el número de peticiones PHP simultáneas (10 por defecto) en una instancia muy solicitada, consulta la Guía de resolución de problemasPOZNOTE_PHP_MEMORY_LIMITpara cambiar el límite de memoria de PHP por petición, en MB (512 por defecto), consulta la Guía de resolución de problemasPOZNOTE_LISTEN_PORTpara cambiar el puerto en el que escucha el servidor web dentro del contenedor (80 por defecto), solo necesario connetwork_mode: host, consulta la Guía de resolución de problemasPOZNOTE_SETTINGS_PASSWORDpara pedir una contraseña adicional antes de abrir la página de Configuración, vacía por defectoPOZNOTE_MCP_AUTH_TOKENpara exigir un token bearer a los clientes MCP, consulta Servidor MCP
Usa la interfaz para
- Los ajustes globales y de administración, como la configuración del proveedor OIDC, la activación de la Sincronización Git, los límites de importación y la subida de CSS personalizado
- Los ajustes de usuario y de perfil, como las contraseñas de las cuentas locales, el tema, los tamaños de fuente, el orden de las notas, el fondo del espacio de trabajo y los elementos ocultos de la interfaz
Modificar la configuración del sistema (.env)
Entra en tu directorio de Poznote:
cd poznote
Detén los contenedores de Poznote en ejecución:
docker compose down
Edita tu archivo .env con tu editor de texto preferido (por ejemplo, nano .env o notepad .env).
Guarda el archivo y vuelve a iniciar los contenedores para aplicar los cambios:
docker compose up -d
Actualizar la aplicación
Entra en tu directorio de Poznote:
cd poznote
Detén los contenedores en ejecución antes de actualizar:
docker compose down
Descarga la última configuración de Docker Compose:
curl -o docker-compose.yml https://raw.githubusercontent.com/timothepoznanski/poznote/main/docker-compose.yml
Descarga el último .env.template:
curl -o .env.template https://raw.githubusercontent.com/timothepoznanski/poznote/main/.env.template
Usa sdiff para revisar .env.template y añade las nuevas variables a tu archivo .env si hace falta:
sdiff .env .env.template
Descarga las últimas imágenes de Poznote Webserver y Poznote MCP:
docker compose pull
Inicia los contenedores actualizados:
docker compose up -d
Tus datos se conservan en el directorio ./data y la actualización no les afecta.
Versiones beta
Las versiones beta traen nuevas funciones antes de que salgan como versión estable, y aparecen como prelanzamientos en la página de releases. Se publican con la etiqueta latest-and-beta, que siempre apunta a la versión más reciente, beta o estable.
Para usarlas, cambia las dos líneas image de tu docker-compose.yml y deja el resto del archivo tal como está:
services:
webserver:
image: ghcr.io/timothepoznanski/poznote:latest-and-beta
...
mcp-server:
image: ghcr.io/timothepoznanski/poznote-mcp:latest-and-beta
...
Con la variante rootless, la imagen del webserver en docker-compose.rootless.yml pasa a ser poznote:latest-and-beta-rootless, y la imagen MCP sigue siendo la misma: poznote-mcp:latest-and-beta.
Descarga las imágenes y reinicia los contenedores:
docker compose pull
docker compose up -d
- Antes de cambiar: una beta aún puede contener errores, así que haz primero una copia de seguridad. Los problemas se pueden informar en los issues de GitHub o en Discord.
- Actualizaciones: a partir de entonces, cada
docker compose pullobtiene la beta más reciente, o la versión estable cuando se publique. El procedimiento de actualización anterior descarga un nuevodocker-compose.ymlque vuelve a usar las etiquetas estables, así que cambia de nuevo las dos líneasimagedespués de ese paso. - Volver a la versión estable: como una beta puede modificar la base de datos, volver a una versión estable más antigua puede no funcionar. Espera a la siguiente versión estable, que incluye los cambios de la beta, y luego sigue el procedimiento de actualización anterior.
Autenticación
Poznote admite varios métodos de autenticación, entre ellos las cuentas locales y los proveedores de identidad externos. Las aplicaciones y extensiones que se comunican con la API REST usan contraseñas de aplicación, una credencial independiente que se describe en la sección siguiente.
Autenticación con cuentas locales
Poznote autentica a los usuarios contra su perfil mediante un nombre de usuario o una dirección de correo electrónico y una contraseña.
Cuenta por defecto
En una instalación nueva, Poznote crea un perfil de administrador activo:
- Nombre de usuario:
admin_change_me - Contraseña:
admin
Cambia la contraseña por defecto y el nombre de la cuenta después del primer inicio de sesión.
Gestión de contraseñas
Las contraseñas se gestionan desde la interfaz web de Poznote, no desde .env:
- Los usuarios pueden cambiar su propia contraseña desde Configuración > Cambiar contraseña.
- Los administradores pueden definir una contraseña personalizada para cualquier usuario, o restablecer la contraseña por defecto, desde Configuración > Herramientas de administración > Gestión de usuarios.
- La opción Recordarme por 30 días mantiene la sesión abierta durante ese tiempo.
- Cambiar una contraseña invalida las cookies de «recordarme» existentes de ese usuario.
Autenticación de dos factores
Cada usuario puede activar la autenticación de dos factores (TOTP) desde Settings > Two-factor authentication. Después de la contraseña, el formulario de inicio de sesión pide entonces un código de 6 dígitos de una aplicación de autenticación (Aegis, Google Authenticator, 1Password, Bitwarden...).
- La configuración muestra un código QR, dibujado en el navegador, y diez códigos de recuperación de un solo uso que conviene guardar por si se pierde el teléfono.
- Protege el inicio de sesión con contraseña. Un inicio de sesión SSO queda en manos del proveedor de identidad y de su propio segundo factor.
- Mientras está activada, la API REST ya no acepta la contraseña de la cuenta por sí sola: da a los clientes una contraseña de aplicación, o envía el código actual en la cabecera
X-Poznote-OTP. - Un administrador puede desactivarla para un usuario que haya perdido tanto su dispositivo como sus códigos de recuperación, desde Settings > Admin Tools > User Management (diálogo de contraseña).
- Un administrador puede hacerla obligatoria para toda cuenta que inicie sesión con contraseña, desde Settings > Admin Tools > Require two-factor. Una cuenta que no la tenga la configura en su próximo inicio de sesión (código QR y primer código en la página de inicio de sesión), las sesiones abiertas sin ella se cierran, y su titular ya no puede desactivarla. Los inicios de sesión SSO no se ven afectados.
- Activarla o desactivarla invalida las cookies de «Remember me» existentes de ese usuario.
Contraseñas por defecto
- Cuentas de administrador:
admin - Cuentas de usuario estándar:
user
Mientras un usuario no haya cambiado su contraseña, se usa el valor por defecto indicado arriba. En cuanto se cambia una contraseña desde la interfaz, se guarda en la base de datos un hash bcrypt seguro, que tiene prioridad.
Autenticación OIDC / SSO (opcional)
Poznote admite OpenID Connect (código de autorización + PKCE) para el inicio de sesión único. Esto permite a los usuarios iniciar sesión con proveedores de identidad externos como Auth0, Keycloak, Azure AD o Google Identity.
Cómo funciona
- La página de inicio de sesión muestra un botón
Continue with [Provider Name]cuando OIDC está activado. - Los usuarios se autentican con el flujo de código de autorización de OIDC, protegido por PKCE.
- El acceso puede restringirse con grupos permitidos y, si hace falta, con una lista heredada de usuarios permitidos.
- Tras la autenticación, Poznote vincula la identidad por
sub(oidc_subject) y después por un email verificado (definido por un administrador o sincronizado desde el proveedor, sin distinguir mayúsculas). Un perfil existente nunca se vincula por su nombre de usuario: para vincularlo en su primer inicio de sesión SSO, asígnale en Settings > Admin Tools > User Management el email que envía el proveedor, o pega su sujeto OIDC. Un primer inicio de sesión rechazado registra en el log el sujeto que hay que pegar. - Si la creación automática de usuarios está activada y ningún perfil coincide, Poznote crea uno automáticamente. Un perfil así no tiene ninguna contraseña: nunca pasó por la entrega de credenciales iniciales que hace un administrador al crear una cuenta, por lo que no acepta la contraseña por defecto. El inicio de sesión pasa por el proveedor, o bien un administrador define una contraseña explícita desde Configuración > Herramientas de administración > Gestión de usuarios.
- Si
POZNOTE_OIDC_DISABLE_NORMAL_LOGIN=true, el formulario de usuario y contraseña se oculta y la página de inicio de sesión pasa a ser solo SSO. - Los clientes de la API REST pueden autenticarse con
Authorization: Bearer <OIDC JWT>cuando OIDC está activado; Poznote valida el JWKS del proveedor, el emisor, la caducidad, la audiencia y los controles de acceso configurados. - Los clientes que no pueden realizar ningún flujo OIDC (extensión del navegador, aplicación móvil, scripts) usan en su lugar una contraseña de aplicación, que cada usuario crea desde su propia configuración.
- La autenticación de dos factores solo cubre el formulario de contraseña: un inicio de sesión SSO nunca pide el código de Poznote. Exige en su lugar un segundo factor en el proveedor de identidad. Un usuario que tiene a la vez contraseña e identidad SSO conserva ambos accesos, y el de SSO solo es tan fuerte como la política del proveedor.
Configuración
OIDC se configura desde la interfaz de administración: ve a Configuración > Herramientas de administración > OIDC / SSO.
La mayoría de los ajustes (activación, emisor, nombre del proveedor, scopes, control de acceso, grupos y usuarios permitidos, creación automática de usuarios, comportamiento de HTTP Basic Auth, etc.) se gestionan desde esta página y se guardan en la base de datos.
Para la autenticación Bearer JWT de la API REST, configura Audiencia JWT de la API si tu proveedor emite tokens de acceso para una audiencia de API dedicada. Si se deja vacío, Poznote acepta como audiencia del JWT el Client ID de OIDC configurado.
Los siguientes ajustes siguen en el archivo .env:
POZNOTE_OIDC_CLIENT_ID=your_client_id
POZNOTE_OIDC_CLIENT_SECRET=your_client_secret
POZNOTE_OIDC_DISABLE_NORMAL_LOGIN=false
Usa POZNOTE_OIDC_DISABLE_NORMAL_LOGIN=true si quieres ocultar el formulario local de usuario y contraseña y obligar a iniciar sesión solo con SSO. Es el único interruptor que bloquea la autenticación por contraseña: elimina el formulario, rechaza en el servidor los POST de contraseña y oculta el ajuste «Cambiar contraseña».
Recuperarse de una caída del proveedor de identidad. Solo SSO significa exactamente eso: mientras
POZNOTE_OIDC_DISABLE_NORMAL_LOGIN=true, nadie puede iniciar sesión con contraseña, tampoco los administradores, así que no hay ninguna vía de escape desde el navegador. Es intencionado: un atacante que haya comprometido una cuenta de administrador no puede volver a activar el inicio de sesión por contraseña para garantizarse un acceso persistente. La recuperación requiere acceso al servidor: definePOZNOTE_OIDC_DISABLE_NORMAL_LOGIN=falseen.env, reinicia el contenedor e inicia sesión con una contraseña local. Antes de activar el modo solo SSO, asegúrate de que al menos una cuenta de administrador tiene una contraseña explícita (Configuración > Herramientas de administración > Gestión de usuarios); si no, volver a cambiar el indicador no servirá de nada. Ten en cuenta que un perfil de administrador creado automáticamente por OIDC no tiene contraseña hasta que se le define una.
Cambio incompatible: los antiguos ajustes de OIDC en
.envya no se leen, salvoPOZNOTE_OIDC_CLIENT_ID,POZNOTE_OIDC_CLIENT_SECRETyPOZNOTE_OIDC_DISABLE_NORMAL_LOGIN. Tras actualizar, vuelve a introducir los demás ajustes de OIDC desde la página de administración.
URL que hay que registrar en tu proveedor de identidad
Al crear la aplicación (cliente) en tu proveedor de identidad, registra la primera URL de abajo como URI de redirección (también llamada URL de callback), y la segunda como URI de redirección tras cerrar sesión si tu proveedor la pide:
https://YOUR_SERVER/oidc_callback.php
https://YOUR_SERVER/login.php
Poznote construye ambas a partir del nombre de host por el que llega la petición, siempre con https://. Si tu proveedor necesita otra cosa, define URI de redirección o URI de redirección tras cerrar sesión en la sección Avanzado de la página de administración de OIDC, y registra exactamente ese valor.
Por lo general no hace falta rellenar la URL de descubrimiento: Poznote añade /.well-known/openid-configuration a la URL del emisor. Con Authentik, por ejemplo, el emisor es https://AUTHENTIK_HOST/application/o/APPLICATION_SLUG/. Define URL de descubrimiento solo si tu proveedor publica ese documento en otro lugar.
Ejemplo de control de acceso (grupos + aprovisionamiento automático)
Desde la página de administración de OIDC, configura:
- Claim de grupos:
groups - Grupos permitidos:
poznote - Crear perfiles de usuario automáticamente: activado
Si el aprovisionamiento automático está activado, Poznote genera un nombre de usuario a partir de los claims de OIDC (preferred_username, nickname, la parte local del correo electrónico, name y después sub) y guarda el subject de OIDC en el perfil creado. Si un perfil existente que nunca ha iniciado sesión por SSO ya tiene ese preferred_username, el inicio de sesión se rechaza en lugar de crear un segundo perfil a su lado: asígnale a ese perfil el correo que envía el proveedor, o su subject de OIDC, para que quede vinculado.
Contraseñas de aplicación
Las aplicaciones no pueden iniciar sesión a través de un proveedor de identidad como lo hace un navegador. Una contraseña de aplicación es una credencial independiente que creas para un único cliente (la extensión del navegador, un teléfono, un script) y que puedes revocar en cualquier momento, así nunca tienes que entregar la contraseña de tu cuenta.
Crea una desde Configuración > Contraseñas de aplicación: ponle un nombre, opcionalmente una fecha de caducidad, y copia el secreto generado. Se muestra una sola vez y nunca más. Después, en el cliente, introduce tu nombre de usuario habitual y la contraseña de aplicación donde pida una contraseña. Viaja como HTTP Basic Auth normal, así que todos los clientes existentes funcionan tal cual:
curl -u 'username:pzn_2f7c…' https://YOUR_SERVER/api/v1/notes
Una contraseña de aplicación solo llega a la API REST, y solo para su propio perfil: no puede abrir la interfaz web, llamar a un endpoint de administración, cambiar tu contraseña ni gestionar tu cuenta, ni siquiera cuando la cuenta es de administrador. Por eso una contraseña filtrada expone las notas de una sola cuenta y nada más, y revocarla cierra la brecha. En una instancia solo SSO, donde las cuentas creadas por OIDC no tienen contraseña alguna, es la única credencial que la API acepta mediante Basic Auth.
La lista completa de límites y los endpoints que gestionan las contraseñas de aplicación están en la documentación de la API REST.
Tipos de notas
Poznote admite dos formatos principales de notas, cada uno adaptado a una forma de trabajar distinta.
Notas de texto enriquecido
- Editor: edición WYSIWYG (lo que ves es lo que obtienes) directa.
- Almacenamiento: se guardan como archivos
.htmlen el directorio de datos del usuario. Al ser HTML estándar, pueden abrirse directamente en cualquier navegador web. - Funciones exclusivas:
- Formato enriquecido: soporte nativo de colores de texto, resaltado y elementos HTML estándar.
- Interfaz interactiva: manipulación directa de los elementos en el editor.
Notas Markdown
- Editor: editor de sintaxis Markdown con vista previa en tiempo real.
- Almacenamiento: se guardan como archivos
.mden el directorio de datos del usuario. - Funciones exclusivas:
- Diagramas Mermaid: soporte nativo para generar diagramas (diagramas de flujo, de secuencia, etc.) mediante bloques de código
```mermaid. - Ecuaciones matemáticas: soporte completo de LaTeX para fórmulas matemáticas con la sintaxis
$ inline $y$$ block $$. - Portabilidad: formato Markdown estándar compatible con cualquier editor externo o generador de sitios estáticos.
- Diagramas Mermaid: soporte nativo para generar diagramas (diagramas de flujo, de secuencia, etc.) mediante bloques de código
Listas de tareas
- Uso: gestiona tareas y proyectos con listas de verificación interactivas.
- Flujo de trabajo: sigue el progreso con casillas que se pueden marcar directamente en el editor o en la lista de notas. Una barra de progreso muestra el grado de avance de cada lista.
- Opciones de las tareas: cada tarea puede tener una fecha de vencimiento con hora opcional, una notificación de recordatorio que salta a la hora de vencimiento y una prioridad (alta, media o baja, en rojo, naranja o verde), y puede moverse a otra lista.
- Página de tareas: una página de Tareas dedicada, que se abre desde la barra de iconos de la izquierda, reúne en un solo lugar todas las tareas de tus listas de tareas y, opcionalmente, las casillas que hay dentro de las notas normales. Ofrece filtros de estado (pendientes, con prioridad, vencidas, con fecha de vencimiento, completadas), un filtro de texto y una vista de calendario de las tareas que tienen fecha de vencimiento. Una lista de tareas, o las casillas de una nota, se puede ocultar en la página con el botón del ojo de su encabezado y recuperar con Mostrar las listas ocultas. Esta elección se guarda en tu cuenta, así que te acompaña de un dispositivo a otro.
- Colaboración pública: las listas de tareas pueden compartirse mediante una URL pública. Si se conceden permisos de edición, los colaboradores externos pueden marcar elementos de la lista sin necesidad de una cuenta de Poznote.
Atajos
- Funcionalidad: crea una referencia a una nota existente en otra ubicación.
- Caso de uso: permite referenciar una nota en dos lugares distintos a la vez. Por ejemplo, una nota puede estar en una carpeta de clasificación mientras su atajo aparece en un tablero Kanban para el seguimiento activo.
Plantillas
- Funcionalidad: reutiliza contenido ya escrito para estandarizar tu documentación, desde una nota completa hasta un fragmento breve.
- Configuración: coloca las notas que quieres reutilizar en una carpeta llamada
Templates(las subcarpetas también sirven). Un espacio de trabajo llamadoTemplatestambién funciona y se ofrece desde todos los espacios de trabajo. El nombre también se reconoce en el idioma de la interfaz (Modèles,Vorlagen,Plantillas,Modelos,Шаблоны,模板,템플릿,テンプレート). - Insertar en una nota: escribe
/template(o/seguido del título de la plantilla) en una nota de texto enriquecido o Markdown y elige una plantilla: su contenido se pega en la posición del cursor, convertido si la plantilla y la nota no son del mismo tipo. - Nueva nota a partir de una plantilla: duplica la nota de la plantilla, o duplica una carpeta
Templatescompleta para empezar un proyecto con una estructura de carpetas ya preparada.
Notas diarias (Diario)
- Uso: escribe una nota al día, al estilo de un diario, desde un tablero de Diario dedicado.
- Flujo de trabajo: el botón «Crear la entrada de hoy» crea la nota del día (pasa a llamarse «Ir a la entrada de hoy» cuando ya existe), con la fecha actual como título y guardada automáticamente en una estructura de carpetas
Diary/YYYY/MM. - Otro día: el botón de calendario, junto a los controles de vista, permite elegir cualquier día, también en el móvil. Los días que ya tienen una entrada llevan un punto: elegir uno abre su entrada, elegir otro día crea la entrada de esa fecha.
- Vista de tablero: las entradas se muestran como tarjetas agrupadas por mes, de la más reciente a la más antigua, con un filtro para encontrar rápidamente entradas pasadas.
- Vista continua: el botón con forma de pergamino, junto a los controles de vista, cambia a una sola columna de lectura: cada entrada con su contenido completo, de la más reciente a la más antigua, cargadas a medida que te desplazas. El filtro también funciona ahí. Haz clic en una entrada, o en su lápiz, para editarla ahí mismo; los cambios se guardan mientras escribes. El botón de etiqueta, junto al lápiz, permite editar las etiquetas de la entrada: añade o quita etiquetas sin abrir la nota.
- Formato: las nuevas entradas se crean como notas de texto enriquecido o Markdown, según el ajuste «Formato de las entradas del diario» de Configuración > Comportamiento.
Revisiones
Las revisiones conservan versiones anteriores del contenido de una nota, junto con su título y sus etiquetas, para que puedas compararlas con la nota actual y volver a un estado previo. El icono de historial de la barra de herramientas de la nota abre la página Revisiones de la nota.
La página Revisiones
- Historial: la columna izquierda lista las revisiones de la nota agrupadas por día, cada una con su tipo: Automática, Manual, Antes de edición IA o Antes de edición MCP. La insignia «Actual» marca las revisiones idénticas a la nota actual, y «Sin cambios» las idénticas a la revisión anterior. Ambas insignias exigen también el mismo título y las mismas etiquetas.
- Contenido: la página se abre en esta pestaña, que muestra la propia revisión seleccionada renderizada. Para las notas Markdown, un selector Vista previa/Código fuente se encuentra junto a las pestañas.
- Cambios: la segunda pestaña muestra una comparación línea por línea, con las palabras cambiadas resaltadas, frente a la versión actual, la revisión anterior o cualquier otra revisión. La comparación se muestra Unificada o En paralelo, las líneas sin cambios se pliegan (haz clic para desplegarlas), los botones de cambio anterior y siguiente saltan de un cambio a otro, y se indica el número de líneas añadidas y eliminadas. Las notas Markdown se comparan por su código fuente. Las notas de texto enriquecido se comparan por su texto, así que un simple cambio de formato no aparece. Encima de la comparación, la pestaña indica el cambio de título (antiguo → nuevo) y las etiquetas añadidas o quitadas entre las dos versiones comparadas.
- Acciones: el menú «Acciones» reúne «Restaurar esta revisión», «Guardar una revisión», «Copiar contenido» y «Eliminar esta revisión». «Guardar una revisión» guarda al momento el contenido actual, las demás entradas actúan sobre la revisión seleccionada.
- Restauración: una restauración devuelve a la nota el contenido, el título y las etiquetas de la revisión. El estado que reemplaza no se guarda: si te importa, guarda antes una revisión («Guardar una revisión» en el menú Acciones, o Ctrl + Alt + S). Un título restaurado sigue las reglas de renombrado: si otra nota de la misma carpeta ya tiene ese título, se añade un sufijo como «(1)». Una revisión guardada antes de que se registraran las etiquetas no contiene ninguna y deja intactas las etiquetas de la nota.
Cómo funcionan las revisiones
- Automáticas: Poznote guarda una revisión cuando una nota se modifica, no cuando se abre. Cada vez que se guarda un cambio en el contenido, el título o las etiquetas (el guardado automático del editor, una tarea marcada, un dibujo guardado, la API REST, una edición desde un enlace público compartido), Poznote conserva primero la nota tal como estaba justo antes de ese cambio, salvo que ya se haya tomado una revisión de esa nota en los últimos 10 minutos. Así, una revisión contiene siempre el estado anterior a un cambio, y una sesión de edición produce como máximo una revisión automática cada 10 minutos. Abrir o leer una nota nunca crea una revisión. No se guarda nada para una nota vacía, ni cuando la revisión más reciente ya contiene exactamente el contenido, el título y las etiquetas actuales, de modo que el historial no tiene duplicados. Estas revisiones aparecen como «Automática» en el historial, igual que las que las versiones anteriores de Poznote tomaban al abrir una nota: siguen las mismas reglas.
- Ejemplo: editas una nota de 9:00 a 9:35. El historial recibe revisiones hacia las 9:00 (la nota antes de que la tocaras), las 9:10, las 9:20 y las 9:30. Vuelves a las 14:00 y cambias una palabra: una revisión de las 14:00 conserva la nota tal como la dejaste a las 9:35.
- A qué puedes volver: el estado en el que dejas una nota al final de una sesión no se guarda como revisión en ese momento, porque es la propia nota. Lo captura el primer cambio de la sesión siguiente, por mucho más tarde que llegue. Así que siempre puedes volver a cómo estaba la nota antes de empezar a editarla hoy y, dentro de una sesión larga, a estados separados por unos 10 minutos como máximo. El estado más reciente es siempre la propia nota: compara cualquier revisión con «Versión actual» para ver qué ha cambiado desde entonces.
- Cuánto tiempo se conservan las revisiones automáticas: se conservan todas las revisiones automáticas de las últimas 24 horas. Pasadas 24 horas, solo se conserva la revisión automática más reciente de cada día, durante 30 días por defecto. Ese número de días puede cambiarse en Configuración > Revisiones (de 1 a 30). Si ya habías cambiado este ajuste en una versión anterior, en la que contaba revisiones, tu valor se conserva y ahora cuenta días.
- Manuales: «Guardar una revisión» añade una revisión en cualquier momento, y también Ctrl + Alt + S (Cmd + Alt + S en Mac) con una nota abierta. Las revisiones manuales son ilimitadas y nunca se reducen: solo desaparecen al caducar, a los 30 días.
- Antes de una edición por IA: se guarda automáticamente una revisión justo antes de que el Asistente IA o el servidor MCP cambien el contenido de una nota, aunque se haya tomado una revisión automática menos de 10 minutos antes, así una reescritura que sale mal se deshace con un clic. Estas revisiones aparecen en el historial como «Antes de edición IA» o «Antes de edición MCP» y se omiten cuando la última revisión ya contiene el mismo contenido, el mismo título y las mismas etiquetas.
- Revisiones de seguridad: las revisiones «Antes de edición IA» y «Antes de edición MCP» comparten un mismo límite: se conservan las 20 más recientes por nota, un número que puedes cambiar en Configuración → Revisiones (de 1 a 200) si tu instancia edita muchas notas mediante IA o MCP.
- Caducidad: todas las revisiones, sean del tipo que sean, se eliminan 30 días después de guardarse. Una revisión también puede eliminarse a mano desde la página Revisiones.
- Adjuntos e imágenes: las revisiones guardan el texto, el título y las etiquetas de la nota, nunca sus archivos. Los adjuntos nunca se copian, así que un archivo al que hacen referencia varias revisiones existe una sola vez en el disco. Un archivo quitado de una nota permanece en el disco, oculto en la nota, mientras alguna revisión lo siga conteniendo, de modo que restaurar esa revisión lo recupera. Se elimina definitivamente cuando caduca o se elimina la última revisión que lo contiene, o cuando la nota se elimina de forma permanente. Por tanto, conservar más revisiones nunca duplica archivos. Solo mantiene los archivos quitados durante más tiempo, 30 días como máximo.
- API y MCP: la API REST y las herramientas del servidor MCP siguen llamando «snapshots» a las revisiones (
/notes/{id}/snapshots,list_snapshots,get_snapshot,restore_snapshot).
Personalización
Poznote ofrece varias opciones de personalización integradas directamente en la aplicación, sin necesidad de modificar ningún archivo de configuración.
Ajustes de Pantalla, Comportamiento y Markdown
En Configuración > Pantalla puedes configurar:
- Fuente de la aplicación: elige la tipografía usada en toda la interfaz
- Tamaño de fuente: ajusta el tamaño del texto de las notas, la barra lateral, los bloques de código y la página de configuración
- Colores de notas: elige la paleta que se ofrece al colorear una nota
- Iconos por tipo de nota: da a las listas de tareas y a las notas Markdown su propio icono en la lista de notas
- Escalado de iconos del índice: cambia el tamaño de los iconos del índice de notas
- Orden de la barra de iconos: reordena los botones de la barra de iconos de la izquierda y cambia su color (un clic derecho en un botón de la barra también abre el selector de color)
- Ancho del contenido de la nota: controla el ancho máximo del área del editor de notas
- Vistas previas de adjuntos: muestra los adjuntos como vistas previas dentro de la nota
- Borde de imagen por defecto: enmarca las imágenes insertadas sin añadir relleno
- Resaltar el árbol de carpetas actual: atenúa las notas y carpetas que quedan fuera de la jerarquía de carpetas en la que trabajas
- Título de página de inicio de sesión: cambia el título que se muestra en la página de inicio de sesión
- Visibilidad de los elementos: oculta los elementos de la interfaz que no usas, ver más abajo
En Configuración > Comportamiento puedes configurar:
- Orden de clasificación de notas: elige cómo se ordenan las notas en la lista
- Filtro de antigüedad: muestra solo las notas actualizadas en el número de días elegido
- Revisiones: durante cuántos días se conservan las revisiones automáticas (una por día pasadas las últimas 24 horas) y cuántas revisiones de seguridad se conservan por nota
- Orden de inserción de tareas: controla dónde se insertan las nuevas tareas
- Mostrar notas después de las carpetas: muestra las notas sin carpeta debajo de la lista de carpetas
- Ajuste de línea en bloques de código: activa o desactiva el ajuste de línea en los bloques de código
- Formato de las entradas del diario: crea las entradas del diario como notas de texto enriquecido o Markdown
- El idioma de la interfaz, la zona horaria y el formato de fecha, los adjuntos y backlinks al final de una nota, el corrector ortográfico y los atajos de teclado
En Configuración > Markdown puedes configurar el modo de apertura, la fuente del editor, el Markdown con marco y a color, y los números de línea en los bloques de código.
El tema no es una tarjeta de esta página: el botón de la parte inferior de la barra de iconos de la izquierda recorre los temas, y un administrador elige cuáles ofrece en Configuración > Herramientas de administración > Lista de temas.
Imagen de fondo del espacio de trabajo
Puedes definir una imagen de fondo por espacio de trabajo: abre Configuración > Espacios de trabajo y usa la acción Fondo del espacio de trabajo para subir una imagen y ajustar su opacidad, así cada espacio de trabajo tiene su propia identidad visual.
Visibilidad de los elementos
Poznote te permite despejar la interfaz ocultando los elementos que no usas.
Configúralo en Configuración > Pantalla > Visibilidad de los elementos.
- Control detallado: activa o desactiva la visibilidad de las tarjetas del panel, las acciones de la barra de herramientas, los elementos del menú de comandos y más. La insignia de fecha de creación de las notas (Mostrar fecha de creación de la nota) y el número de notas junto a cada carpeta (Mostrar conteo de notas de carpetas) también se activan y desactivan aquí.
- Por usuario: cada usuario puede tener su propia disposición de la interfaz.
- Administradores: la misma ventana muestra una segunda columna «Usuarios» junto a la columna «Yo» del propio administrador, para ocultar elementos a todos los usuarios de la instancia (excepto a los administradores).
- Con búsqueda: encuentra fácilmente el elemento que quieres ocultar con el filtro de la ventana de configuración.
Fuentes personalizadas
Poznote incluye Inter y puede usar las fuentes instaladas en tu dispositivo. Para usar cualquier otra fuente, por ejemplo una familia de Google Fonts, un administrador sube sus archivos una vez y cada usuario puede elegirla después.
Súbelas en Configuración > Herramientas de administración > Fuentes personalizadas, y luego elige la fuente en Configuración > Pantalla > Fuente de la aplicación o Configuración > Markdown > Fuente del editor markdown.
Notas:
- Los formatos aceptados son WOFF2, WOFF, TTF y OTF, hasta 10 MB por archivo.
- Una familia son varios archivos (normal, negrita, cursiva...) o un único archivo de fuente variable. Selecciona todos los archivos de una familia en la misma subida, se agrupan bajo el nombre de la familia.
- Las fuentes las sirve tu propia instancia, no se carga nada desde Google ni desde ningún otro tercero. Descarga primero la familia, desde Google Fonts (Get font > Download all) o google-webfonts-helper.
- Una familia sin archivo de negrita conserva la fuente predeterminada para el texto en negrita y los títulos, así que sube también el archivo de negrita.
- Los archivos se guardan en
data/fonts/(tu volumen de Docker), por lo que sobreviven a las actualizaciones de la imagen. Los archivos copiados a mano en esa carpeta se detectan al abrir el diálogo Fuentes personalizadas. - Cada usuario elige su propia fuente. Eliminar una familia devuelve a la fuente predeterminada a los usuarios que la habían elegido.
- Solo los administradores pueden subir o eliminar fuentes.
Personalización con CSS
Si quieres ajustar las fuentes, los espaciados u otros detalles visuales más allá de las opciones integradas, puedes subir hojas de estilo adicionales que se aplican a todas las páginas HTML para todos los usuarios.
Configúralas en Configuración > Herramientas de administración > Archivo CSS personalizado.
Notas:
- Haz clic en Subir archivo CSS para seleccionar un archivo
.cssde tu equipo. - Todos los archivos subidos se conservan, así que puedes guardar varios temas y cambiar de uno a otro sin volver a subirlos.
- La ventana muestra lo que está guardado: elige el que se aplicará a todos los usuarios, o Sin CSS personalizado para volver a la apariencia integrada, y haz clic en Guardar.
- Subir un archivo con el mismo nombre que uno ya guardado reemplaza ese tema.
- Los archivos se guardan en
data/css/(tu volumen de Docker), así que sobreviven a las actualizaciones de la imagen. - Haz clic en el icono de papelera junto a un tema para eliminar ese archivo de tu volumen.
- Poznote añade automáticamente un parámetro
v=para invalidar la caché. - La hoja de estilo se inyecta cerca del final de
<head>, por lo que puede sobrescribir los estilos por defecto de la aplicación. - Solo los administradores pueden subir, aplicar o eliminar un archivo CSS personalizado.
La lista de temas
Configuración > Herramientas de administración > Lista de temas define lo que recorre el botón de tema de la parte inferior de la barra de iconos: un tema por clic, en el orden mostrado.
- Marca los temas integrados que quieres conservar y deja fuera los que nadie usa.
- Marca un archivo CSS guardado para ofrecerlo como tema propio. Recibe un icono de paleta y el nombre del archivo.
- Usa las flechas para definir el orden en el que el botón los recorre.
- Un tema personalizado se pinta sobre una base clara u oscura, algo que el archivo no puede indicar por sí solo: elígela junto al archivo. Es el valor que toma
data-theme, así que una hoja de estilo escrita para el modo oscuro necesita Oscuro aquí. - La lista es un ajuste global, así que todos recorren los mismos temas; el tema aplicado sigue siendo una elección de cada usuario.
- Quien esté usando un tema que quites de la lista pasa de inmediato al primer tema de la lista.
- Elegir un tema personalizado carga ese archivo solo para ese usuario, en lugar de la hoja de estilo aplicada a toda la instancia.
- Eliminar un archivo CSS también lo quita de la lista.
- Con un solo tema en la lista no hay nada que recorrer, así que el botón abre esta lista para un administrador y no hace nada para los demás.
Antes de escribir CSS, comprueba si un tema integrado ya hace lo que quieres: el botón de tema de la parte inferior de la barra de iconos recorre Claro, Oscuro, Negro, Lavanda, Sepia y Terminal.
Ejemplos
Los colores, los espaciados, los radios y los grosores de fuente son tokens de diseño, así que la mayoría de los cambios son una breve lista de variables sobrescritas en lugar de una pelea con los selectores. La lista completa está en src/public/css/tokens.css.
Cambiar el color de acento
:root {
--pz-accent: #d6336c;
--pz-accent-hover: #a61e4d;
--pz-accent-rgb: 214, 51, 108; /* same colour, channels only, used for tints */
}
html[data-theme='dark'] {
--pz-accent-text: #f783ac; /* lighter, because it sits on a dark ground */
}
Dos tokens en lugar de uno porque un relleno y una etiqueta no pueden tener el mismo color: --pz-accent rellena los botones, --pz-accent-text es el acento para texto, iconos y contornos. En un tema claro sigue a --pz-accent por sí solo; un fondo oscuro necesita un valor más claro. Cada token conserva el mismo nombre --pz-* en todos los temas, solo cambia su valor. Los nombres --dm-* de las hojas de estilo más antiguas siguen funcionando.
Cambiar el color de los iconos de la barra de herramientas de la nota
.note-edit-toolbar .toolbar-btn i,
.note-edit-toolbar .toolbar-btn [class*="lucide-"],
.note-edit-toolbar .toolbar-btn:hover i,
.note-edit-toolbar .toolbar-btn:hover [class*="lucide-"] {
color: #e5322d !important;
}
Los iconos son máscaras CSS pintadas con background-color: currentColor, así que basta con color. Aquí hace falta !important porque algunos de esos iconos ya tienen un color propio (la estrella cuando una nota es favorita, el icono de compartir cuando está publicada, el clip cuando tiene adjuntos).
Para colorear un solo icono no hace falta CSS: haga clic derecho sobre él en la barra de herramientas de la nota o en la barra de iconos y elija un color. Estos colores se guardan por usuario y no afectan a los colores de estado anteriores.
Dar un tono cálido a toda la interfaz
:root {
--pz-bg: #f6ecd8; /* page and note background */
--pz-surface: #efe0c4; /* panels, cards, menus */
--pz-text: #3b2c1a;
--pz-border: #d4bd94;
}
Escribir un tema completo
Sobrescribe los tokens en :root para el modo claro y en :root[data-theme='dark'] para el oscuro, y nada más. src/public/css/README.md documenta todos los tokens y muestra un ejemplo completo; los temas integrados Lavanda, Sepia y Terminal de src/public/css/tokens.css son exactamente lo mismo, escritos de la misma manera.
Multiusuario
No confundir con la función de Varias instancias.
Poznote es multiusuario: cada perfil tiene sus propias notas, espacios de trabajo, etiquetas, carpetas, adjuntos y ajustes, e inicia sesión con su propio nombre de usuario o dirección de correo electrónico y su contraseña.
- Gestión de usuarios: los administradores crean, desactivan y gestionan perfiles desde Configuración > Herramientas de administración > Gestión de usuarios, y pueden dar a un usuario acceso a la cuenta de otro usuario sin transferir su propiedad.
- Compartir y colaboración: los espacios de trabajo, las notas y las carpetas pueden compartirse con los demás usuarios de la instancia, consulta Compartir y colaboración.
- Aislamiento de cuentas (modo SaaS): los administradores pueden impedir que los usuarios que no son administradores descubran las demás cuentas de la instancia, compartan con ellas o registren webhooks personales. Deja todo sin marcar para una instancia familiar o de equipo.
- Acceso a la red local: los usuarios que no son administradores solo pueden conectar los webhooks, Git Sync y sus propios servidores de IA, transcripción o MCP a hosts públicos de Internet, aparte de los hosts locales que permita un administrador, consulta Acceso a la red local para usuarios no administradores.
Acceso a la red local para usuarios no administradores
Algunas funciones hacen que el propio servidor de Poznote se conecte a una dirección escrita por un usuario: los webhooks, Git Sync y sus propios servidores de IA, transcripción o MCP. La petición sale del servidor, no del navegador del usuario. Sin un límite, cualquier cuenta podría usar Poznote para llegar al propio servidor, a los demás contenedores Docker, a tu red local o a un servicio de metadatos de la nube, sitios a los que no puede llegar por sí misma.
Por eso la regla depende de quién escribió la dirección:
- Los administradores no tienen límites: ya controlan el servidor.
- Los demás usuarios solo pueden usar hosts públicos de Internet. Una dirección local o privada se rechaza:
localhosty127.0.0.1,10.x.x.x, de172.16.x.xa172.31.x.x,192.168.x.x,169.254.x.x, las direcciones IPv6 locales (fc00::/7,fe80::/10) y cualquier nombre que apunte a una de ellas, como el nombre de otro servicio Docker.
Lo que un administrador configura para toda la instancia (el Asistente de IA, la Transcripción, los webhooks de administración, S3, OIDC, SMTP) no se ve afectado.
En una instancia familiar o de equipo, los usuarios pueden necesitar un servidor de tu red, por ejemplo un servidor Ollama para su IA personal o n8n para sus webhooks. Indica esos hosts en Configuración > Herramientas de administración > Integraciones > Acceso a la red local, una entrada por línea:
| Entrada | Qué permite |
|---|---|
ollama o ollama.lan |
este nombre de host, sea cual sea la dirección a la que apunte (un nombre de servicio Docker funciona) |
*.home.arpa |
todos los nombres de host bajo este dominio |
192.168.1.20 |
esta dirección |
192.168.1.0/24 |
todas las direcciones de esta red (IPv6 también funciona, fd00::/8) |
Una entrada permite todos los puertos de ese host. Las entradas no válidas se rechazan al guardar, con la lista de las que hay que corregir. La tarjeta muestra Solo públicos mientras la lista está vacía y, si no, el número de entradas.
Conviene saber:
- Un nombre de host de la lista debe poder resolverse desde el contenedor de Poznote, no solo desde tu ordenador. Un nombre que solo conocen tu ordenador o tu router no lo puede resolver Poznote, y se rechaza como cualquier nombre desconocido: escribe en su lugar su dirección o su red.
- La dirección se comprueba en cada conexión, no solo al guardar: quitar una entrada surte efecto enseguida, y un nombre que más tarde apunte a una dirección local se rechaza.
- Para los usuarios no administradores, Poznote no sigue las redirecciones, salvo en Git Sync, que vuelve a comprobar cada paso de la redirección.
Organización de los datos en el disco
Poznote usa una base de datos maestra (data/master.db) para los datos de coordinación compartidos, y bases de datos y archivos independientes por usuario para el contenido real de las notas.
data/
├── master.db # Profiles, global settings, shared links, account access, edit locks
├── css/ # Custom CSS files uploaded by an administrator
├── fonts/ # Custom fonts uploaded by an administrator
├── backups/ # Scheduled local backups, one folder per user ID
└── users/
├── 1/ # User ID 1 (default admin)
│ ├── database/poznote.db # User's notes database
│ ├── entries/ # User's note files (HTML/MD)
│ ├── attachments/ # User's attachments
│ ├── snapshots/ # Earlier versions of the user's notes (revisions)
│ ├── backgrounds/ # Workspace background images
│ └── backups/ # Backup archives prepared for download
├── 2/ # User ID 2
└── ...
Compartir y colaboración
Poznote ofrece varias formas de trabajar con los demás usuarios de tu instancia, y cada persona conserva su propia cuenta. Para un espacio común (familia, amigos, un equipo), comparte un espacio de trabajo.
- Compartir un espacio de trabajo: el propietario abre Configuración > Espacios de trabajo, hace clic en Compartir en la fila del espacio (el icono de compartir, o la primera entrada de su menú ...) y elige los usuarios. Estos encuentran el espacio en su propio menú de espacios de trabajo, en Compartidos conmigo, y editan sus notas y carpetas con el editor completo, con los mismos permisos de escritura que el propietario. Los demás espacios de trabajo del propietario, su configuración, su papelera y sus copias de seguridad siguen siendo privados. En un espacio compartido, escribir
@usuarioen una nota menciona a esa persona, que la encuentra en su página Menciones. Cuando la instancia envía correos (SMTP), cada miembro puede activar Configuración > Espacios de trabajo > Correos de espacios compartidos para recibir la lista de las notas que los demás crearon, editaron o eliminaron allí, unos minutos después de los cambios, o como resumen enviado cada día a las 8:00 o cada lunes a las 8:00 (en la zona horaria del miembro). - Compartir una nota o una carpeta: Compartir en el menú de la nota, o en el de la carpeta, crea un enlace solo a esa nota o carpeta. El enlace puede ser público, estar protegido por contraseña o reservado a algunos usuarios de la instancia, que inician sesión para abrirlo, y puede permitir la edición. La página Compartidos de la barra de iconos lista tus elementos compartidos, y lo que otros han compartido contigo en Compartido conmigo.
- Dar acceso a una cuenta completa: un administrador puede permitir que un usuario abra la cuenta de otro usuario desde Configuración > Herramientas de administración > Gestión de usuarios, sin transferir su propiedad. El usuario cambia a ella desde la sección Cuentas del menú de espacios de trabajo.
- Editar la misma nota: solo una persona edita a la vez. Una nota abierta solo para leerla no bloquea a nadie: el bloqueo se toma con el primer cambio y se libera tras 15 segundos sin cambios. Cuando una nota está bloqueada, el banner de solo lectura ofrece tomar el control: la pantalla de la otra persona pasa a solo lectura y sus cambios sin guardar se quedan en su navegador, y se le ofrecen de nuevo cuando la nota queda libre. Una nota abierta recoge en pocos segundos los cambios hechos en otro sitio. En una nota Markdown con cambios sin guardar en ambos lados, los dos conjuntos de cambios se fusionan automáticamente cuando tocan líneas distintas, y un banner te deja elegir cuando se solapan. Las notas de texto enriquecido nunca se fusionan, eliges qué versión conservar. Mantén los scripts y demás código en bloques de código delimitados (
```): el HTML sin procesar fuera de un bloque de código se sanea al guardar, lo que puede hacer que una fusión limpia parezca un conflicto.
Acceso rápido
La vista Acceso rápido convierte notas en una página de mosaicos de enlaces, pensada como página de inicio de tu navegador.
Da a una nota la etiqueta speed-dial, o elige Añadir al acceso rápido en el menú de una nota o una carpeta (para una carpeta, todas sus notas, subcarpetas incluidas). Abre la vista con el icono de rayo de la barra de iconos de la izquierda.
- Un enlace o ninguno: la nota es un mosaico que abre ese enlace, o la propia nota. Su icono es la primera imagen de la nota, si no el icono del sitio, si no la primera letra del título.
- Varios enlaces: la nota es un grupo de mosaicos con el nombre de la nota y un mosaico por enlace. Una línea horizontal (
----) inicia una nueva fila, y un enlace alrededor de una imagen la usa como icono:[](https://github.com). - Nombre del grupo: un clic abre la nota, un clic derecho cambia el color de su etiqueta.
- Varios accesos rápidos: Nuevo acceso rápido crea otro, y unas pastillas permiten cambiar entre ellos (por ejemplo Trabajo y Casa). Cada uno es una etiqueta, como
speed-dial-Trabajo, con su propia imagen de fondo. Un clic derecho en una pastilla lo renombra o lo elimina: al eliminarlo se conservan las notas. Los menús de notas y carpetas ofrecen entonces Añadir a un acceso rápido, con la lista al lado: una marca indica en cuáles están, y un clic añade o quita. - Organizar la vista: arrastra mosaicos y grupos para moverlos, y cambia su tamaño con el botón junto al filtro. El menú ... abajo a la derecha define una imagen de fondo, y el botón del ojo oculta lo que no necesites.
- Página de inicio del navegador: usa
speed_dial.php?workspace=Name&focus=1después de tu dirección de Poznote.focus=1también oculta la barra de iconos.
Registro de actividad
Poznote guarda un historial de las operaciones sensibles realizadas en la instancia, para que los administradores puedan ver qué pasó, cuándo y quién lo hizo: inicios y cierres de sesión, cambios de cuentas y de cuotas, creación y compartición de espacios de trabajo, copias de seguridad y restauraciones, vaciado de la papelera y eliminaciones permanentes, contraseñas de aplicación. Está disponible en Configuración > Herramientas de administración > Registro de actividad, reservado a los administradores, y el icono de ayuda de la parte superior de la página enumera todas las operaciones registradas.
El registro anota que una operación tuvo lugar, no los datos que tocó: el contenido de las notas y las contraseñas nunca se escriben en él, y la actividad rutinaria, como escribir una nota o moverla a la papelera, se deja fuera. Las entradas se conservan 90 días por defecto (30, 90, 365 días o ilimitado), y el registro puede vaciarse desde la misma página.
Webhooks
Poznote puede avisar a servicios externos cuando ocurre algo en la instancia, enviando webhooks salientes (peticiones HTTP POST con un contenido JSON) a los endpoints que registres, lo que permite conectarlo con herramientas de automatización como n8n, Zapier o tus propios scripts. Los administradores registran los eventos de la instancia (cuentas, cuotas, registros) en Configuración > Herramientas de administración > Webhooks de administrador, y cada usuario puede registrar endpoints para sus propias notas y recordatorios en Configuración > Webhooks de usuario.
Las entregas se firman con HMAC-SHA256 cuando el webhook tiene un secreto, y el contenido de las notas nunca se envía. Cada evento, los campos del contenido, la verificación de la firma y las garantías de entrega se describen en la documentación de Webhooks.
Sincronización Git
Poznote admite la sincronización automática y manual con GitHub, GitLab (gitlab.com o una instancia autoalojada) o Forgejo. Cada usuario configura su propio repositorio de forma independiente. No hay ningún repositorio global compartido.
La Sincronización Git se comunica con la API REST del proveedor por HTTPS, así que la autenticación siempre se basa en tokens. No se usan claves SSH.
Cómo configurar la Sincronización Git
Paso 1: activar la función (administrador, en Configuración > Herramientas de administración)
Activa Sincronización Git en la sección Herramientas de administración de la página de Configuración. Esto activa la Sincronización Git de forma global y hace que la tarjeta y la configuración de Sincronización Git de cada usuario estén disponibles en Configuración.
Paso 2: cada usuario configura su propio repositorio (Configuración > Sincronización Git)
| Campo | Descripción |
|---|---|
| Proveedor | GitHub, GitLab o Forgejo |
| URL base de la API | GitHub: se rellena automáticamente (solo lectura). GitLab: https://gitlab.com/api/v4, o la URL de tu instancia, por ejemplo https://gitlab.example.com/api/v4. Forgejo: la URL de tu instancia, por ejemplo https://forgejo.example.com/api/v1 |
| Token de acceso | PAT de GitHub (ghp_...), token de GitLab con el scope api (glpat-..., token de acceso personal o de proyecto) o token de Forgejo (Settings > Applications) |
| Repositorio | Formato owner/repo. GitLab: la ruta completa del proyecto, incluidos los subgrupos, por ejemplo group/subgroup/project |
| Rama | Por defecto: main |
| Nombre / correo del autor | Se usan en los metadatos de los commits |
🔒 Los tokens de acceso se cifran en reposo con AES-256-GCM. Se genera automáticamente una clave de cifrado que se guarda en
data/.app_secret.
Sincronización automática
Cuando el usuario la activa, Poznote automáticamente:
- Recupera al iniciar sesión
- Envía cada vez que se crea, actualiza o elimina una nota
El envío y la recuperación manuales también están disponibles con los botones Enviar y Recuperar de la barra de iconos de la izquierda.
Espacios de trabajo sincronizados
Por defecto se sincronizan todos los espacios de trabajo. En Configuración > Sincronización Git, cada usuario puede limitar la Sincronización Git a los espacios de trabajo seleccionados:
- Solo se envían y recuperan las notas y adjuntos de los espacios de trabajo seleccionados.
- Una recuperación nunca toca las notas de los demás espacios de trabajo.
- Un envío elimina del repositorio los archivos que quedan fuera de los espacios de trabajo seleccionados, así el repositorio siempre refleja exactamente el conjunto sincronizado.
- Los botones Enviar y Recuperar de la barra lateral, el envío automático y la propuesta de recuperación solo aparecen mientras se visualiza un espacio de trabajo sincronizado.
Almacenamiento de adjuntos en S3
Por defecto, los adjuntos de las notas se guardan en el disco local. Los administradores pueden guardarlos en su lugar en un almacenamiento de objetos compatible con S3 (AWS S3, MinIO, Garage, Cloudflare R2, Backblaze B2, ...). El ajuste se aplica a todos los usuarios de la instancia.
Cómo configurar el almacenamiento S3
Configúralo en Configuración > Adjuntos S3 (solo administradores).
- Configuración: URL del endpoint, región, bucket, clave de acceso, clave secreta y direccionamiento de tipo path-style, con una prueba de conexión integrada.
- Migración: mueve los archivos adjuntos existentes entre el disco local y el bucket, en ambos sentidos y para todos los usuarios. La migración se ejecuta por lotes y puede interrumpirse y reanudarse sin riesgo.
- Privacidad: los adjuntos se guardan en
attachments/{user id}/dentro del bucket y siempre se sirven a través de Poznote, así que el bucket puede seguir siendo privado. - Cuotas: se puede definir una cuota de almacenamiento S3 por usuario, y el uso de S3 aparece en las estadísticas de almacenamiento de administración.
- Copias de seguridad: las exportaciones zip incluyen por defecto los adjuntos de S3 (obtenidos del bucket sobre la marcha), tanto si se hacen desde la ventana de copia de seguridad como mediante la API REST o con las copias de seguridad S3 automáticas. Una opción de la ventana de copia de seguridad permite dejarlos fuera para obtener un archivo más ligero. Si no se puede leer el bucket mientras se genera un archivo, la exportación falla con un error en lugar de producir un archivo al que le faltan ficheros.
Mientras el almacenamiento S3 está activado, se rechaza la restauración de una copia de seguridad a la que le faltan algunos de los archivos adjuntos a los que hace referencia, porque una restauración completa reemplaza el contenido del bucket y los archivos que faltan se perderían. Hay dos formas de restaurar una copia así:
- La más sencilla: desactiva el interruptor «Almacenar adjuntos en S3» (conserva las credenciales), restaura la copia de seguridad y vuelve a activar el interruptor. Una restauración en modo local nunca toca el bucket, y los adjuntos que siguen guardados allí se siguen sirviendo. También es el camino adecuado en un servidor nuevo cuando el bucket está intacto, ya que la exportación de adjuntos de la otra opción necesita una instancia que aún conozca las notas.
- Reconstruir un archivo completo:
- Descarga la Exportación de adjuntos desde la ventana de copia de seguridad: contiene todos los adjuntos de tu cuenta en una carpeta
files/. - Descomprime la copia de seguridad, copia los archivos de
files/en la carpetaattachments/de la copia y vuelve a comprimirla. Cuidado al volver a comprimir: selecciona el contenido de la copia (database/,entries/,attachments/, ...) y comprime esa selección, no la carpeta que lo contiene. Las carpetas deben estar en la raíz del zip; de lo contrario, la restauración indica que faltadatabase/poznote_backup.sql. - Restaura el zip reconstruido de la forma habitual.
- Descarga la Exportación de adjuntos desde la ventana de copia de seguridad: contiene todos los adjuntos de tu cuenta en una carpeta
La Sincronización Git ignora los adjuntos mientras el almacenamiento S3 está activado.
Copia de seguridad / Exportar
Poznote puede hacer la copia de seguridad de una cuenta de varias formas. Todas producen el mismo archivo ZIP (base de datos, notas y adjuntos, con un index.html en la raíz para consultarlo sin conexión), y la página Restaurar / Importar acepta todas:
- Manualmente, como descarga desde Configuración > Copia de seguridad / Exportar.
- De forma programada, en una carpeta del servidor o en un bucket compatible con S3, configurada por un administrador.
- Desde un script, mediante la API REST, por ejemplo con el script bash de más abajo.
Cada opción se detalla a continuación, y las notas también se pueden exportar de una en una.
Copia de seguridad en un archivo ZIP de Poznote
Un único ZIP que contiene la base de datos, todas las notas y los adjuntos de todos los espacios de trabajo:
- Incluye un
index.htmlen la raíz para la navegación sin conexión - Las notas se organizan por espacio de trabajo y por carpeta
- Los adjuntos son accesibles mediante enlaces en los que se puede hacer clic
El archivo lo genera en segundo plano un proceso de trabajo, no la petición que lo inicia, así que una cuenta grande no puede chocar con un tiempo de espera del navegador o del proxy inverso. La página sigue el progreso del trabajo y la descarga empieza sola en cuanto el archivo está listo. Puedes salir de la página y volver, la preparación continúa. Un archivo preparado sigue disponible durante 24 horas, y un botón permite eliminarlo de inmediato.
Copias por usuario frente a copias completas
Todos los métodos anteriores producen copias de seguridad por usuario: un archivo contiene solo los datos de una cuenta (su base de datos, sus notas y sus adjuntos). Cada usuario puede hacer una copia de su propia cuenta y restaurarla, los administradores pueden elegir cualquier cuenta. El archivo de un administrador también incluye el logo de la instancia si se subió uno, y restaurarlo en una cuenta de administrador vuelve a poner ese logo.
Una copia de seguridad completa del sistema, que incluye la configuración maestra (cuentas, ajustes globales, enlaces compartidos) y todos los usuarios a la vez, se hace copiando todo el directorio /data:
# Copia de seguridad completa del sistema desde la línea de comandos
tar -czvf poznote-full-backup.tar.gz data/
Copias de seguridad programadas en una carpeta del servidor
Los administradores pueden hacer que se guarden archivos de copia de seguridad completos (un ZIP por usuario, idéntico al que se descarga con «Copia de seguridad en un archivo ZIP de Poznote») en una carpeta del servidor, manualmente o automáticamente según una programación, conservando solo los más recientes. No hace falta nada fuera de Poznote: ni bucket, ni tarea cron, ni script.
Configúralas en Configuración > Copias de seguridad en el servidor (solo administradores).
- Carpeta de copias de seguridad: una ruta absoluta en el servidor (dentro del contenedor con Docker). Si se deja vacía, los archivos van a
data/backups, que ya forma parte del volumen de datos. La carpeta se crea si es necesario y el usuario del servidor web debe poder escribir en ella. - Selección de usuarios: unas casillas eligen qué usuarios cubren las copias. Todos están marcados por defecto y, mientras todos lo estén, las cuentas nuevas se incluyen automáticamente.
- Copias manuales: un botón «Respaldar ahora» guarda un archivo nuevo para cada usuario seleccionado, un usuario cada vez, con el progreso por usuario. Funciona aunque las copias automáticas estén desactivadas.
- Copias automáticas: cuando están activadas, un worker en segundo plano copia los usuarios seleccionados con la frecuencia elegida (diaria, semanal o mensual). La primera ejecución se produce a los pocos minutos de activarlas, las siguientes tras el intervalo elegido. La página muestra el resultado de la última ejecución y la fecha de la siguiente.
- Retención: solo se conservan los N archivos más recientes por usuario, los más antiguos se eliminan de la carpeta tras cada copia (0 lo conserva todo).
- Exploración: la página lista los archivos presentes en la carpeta, con acciones de descarga y eliminación.
- Restauración: los archivos se almacenan bajo
{id de usuario}/en la carpeta de copias de seguridad y pueden restaurarse con la página estándar Restaurar / Importar. - Eliminación de cuentas: al eliminar una cuenta también se eliminan sus archivos de la carpeta de copias de seguridad.
Para guardar las copias en otro disco o en un recurso de red, móntalo en el contenedor e introduce la ruta del contenedor (/backups en este ejemplo) como carpeta de copias de seguridad:
services:
webserver:
volumes:
- "./data:/var/www/html/data"
- "/mnt/nas/poznote-backups:/backups"
Una carpeta situada dentro de la propia aplicación se rechaza, salvo data/backups. Cuando los adjuntos se almacenan en S3 (almacenamiento de adjuntos en S3), se incluyen en los archivos, obtenidos del bucket sobre la marcha.
Copias de seguridad programadas en un bucket S3
Los administradores pueden enviar archivos de copia de seguridad completos (un ZIP por usuario, idéntico al que se descarga con «Copia de seguridad en un archivo ZIP de Poznote») a un bucket compatible con S3, manualmente o de forma automática según una programación. La configuración es independiente de la del almacenamiento de adjuntos en S3, así que las copias de seguridad pueden ir a otro bucket u otro proveedor.
Configúralo en Configuración > Copias de seguridad S3 (solo administradores).
- Interruptor general: un interruptor en la parte superior de la página activa o desactiva toda la función. Cuando está desactivada, las copias automáticas se detienen y las secciones de copia de seguridad y restauración S3 desaparecen para todos los usuarios (el servidor también rechaza las acciones de autoservicio).
- Configuración: URL del endpoint, región, bucket, clave de acceso, clave secreta y direccionamiento de tipo path-style, con una prueba de conexión integrada.
- Selección de usuarios: unas casillas eligen qué usuarios cubren las copias de seguridad. Todos están marcados por defecto y, mientras todos lo estén, las cuentas nuevas se incluyen automáticamente.
- Copias manuales: un botón «Respaldar ahora» sube un archivo nuevo para cada usuario seleccionado, un usuario tras otro, con el progreso de cada uno. Funciona en cuanto la conexión está configurada, aunque las copias automáticas estén desactivadas.
- Copias automáticas: cuando están activadas, un proceso en segundo plano hace la copia de seguridad de los usuarios seleccionados con la frecuencia elegida (diaria, semanal o mensual). La primera ejecución tiene lugar a los pocos minutos de activarlas, las siguientes tras el intervalo elegido.
- Conservación: solo se conservan los N archivos más recientes por usuario, los más antiguos se eliminan del bucket después de cada copia (0 lo conserva todo).
- Exploración: la página lista los archivos que hay actualmente en el bucket, con acciones de descarga y eliminación.
- Restauración: los archivos se guardan en
backups/{user id}/dentro del bucket y pueden restaurarse con la página estándar de Restaurar / Importar. - Autoservicio: una vez configurado el bucket, cada usuario tiene una sección «Copia de seguridad en S3» en su página de Copia de seguridad / Exportar para subir un archivo nuevo de su propia cuenta, y para descargar o eliminar sus archivos existentes. Una sección «Restaurar desde S3» en la página de Restaurar / Importar restaura su cuenta directamente desde uno de esos archivos.
- Aislamiento de cuentas: dos opciones («Copias S3 en la página de copias de seguridad» y «Restauración S3 en la página de restauración») desactivan estas secciones de autoservicio para los usuarios que no son administradores. Se aplican en el servidor, así que las acciones bloqueadas se rechazan incluso cuando se llaman directamente.
Cuando los adjuntos se guardan en S3 (almacenamiento de adjuntos en S3), se incluyen por defecto en los archivos, obtenidos del bucket sobre la marcha. Una opción permite dejarlos fuera de las copias de seguridad para obtener archivos más ligeros y ejecuciones más rápidas.
Copias de seguridad automatizadas con un script Bash
Para programar copias de seguridad automatizadas mediante la API, puedes usar el script incluido backup-poznote.sh.
IMPORTANTE: solo los administradores pueden crear copias de seguridad mediante la API.
Usa la contraseña actual del perfil de administrador con el que te autenticas. En una instalación nueva, es la contraseña de administrador por defecto (admin) hasta que se cambie en Poznote. Una vez definida una contraseña personalizada, esa contraseña es la que se exige para las llamadas a la API.
Ubicación del script: backup-poznote.sh en la carpeta tools del repositorio de Poznote
Uso por parte de un administrador:
Los administradores pueden hacer la copia de seguridad de cualquier perfil de usuario: no hace falta conocer los ID de usuario, basta con el nombre de usuario:
# Copia de seguridad de tu propio perfil
bash backup-poznote.sh 'https://poznote.example.com' 'admin' 'admin_password' 'admin' '/backups' '30'
# Copia de seguridad del perfil de otro usuario (Nina)
bash backup-poznote.sh 'https://poznote.example.com' 'admin' 'admin_password' 'Nina' '/backups' '30'
Uso:
bash backup-poznote.sh '<poznote_url>' '<admin_username>' '<admin_password>' '<target_username>' '<backup_directory>' '<retention_count>'
Ejemplo con crontab (un administrador hace la copia de seguridad de Nina):
# Añadir al crontab para copias de seguridad automáticas dos veces al día
0 0,12 * * * bash /root/backup-poznote.sh 'https://poznote.example.com' 'admin' 'admin_password' 'Nina' '/root/backups' '30'
Explicación de los parámetros:
'https://poznote.example.com': la URL de tu instancia de Poznote'admin': nombre de usuario de administrador para la autenticación (debe ser un administrador)'admin_password': contraseña actual de administrador del perfil usado para la API (adminpor defecto hasta que se cambie, después la contraseña personalizada)'Nina': nombre del usuario cuya copia de seguridad se hace'/root/backups': directorio padre donde se guardarán las copias de seguridad (crea una carpetabackups-poznote-<username>)'30': número de copias de seguridad que se conservan (las más antiguas se eliminan automáticamente)
Cómo funciona el proceso de copia de seguridad:
- El script se autentica con credenciales de administrador
- Busca automáticamente el ID de usuario a partir del nombre de usuario
- Crea una copia de seguridad mediante la API
- Llama a la API REST v1 de Poznote (
POST /api/v1/backupscon la cabeceraX-User-ID) - Descarga localmente el ZIP de la copia de seguridad en
backups-poznote-<username>/ - Gestiona automáticamente la conservación (solo guarda el número indicado de copias recientes)
Nota: las copias de seguridad de cada usuario se guardan en carpetas separadas (backups-poznote-Nina, backups-poznote-Tim, etc.)
Exportar notas individuales
Exporta notas individuales con el botón Exportar de la barra de herramientas de la nota:
- Notas de texto enriquecido: exportar a HTML, o a un único archivo HTML con las imágenes integradas
- Notas Markdown: exportar a Markdown, a HTML, o a un único archivo HTML con las imágenes integradas
- Listas de tareas: las mismas opciones, más una exportación JSON en bruto de la lista
Restaurar / Importar
Poznote ofrece opciones de restauración flexibles desde la interfaz web (Configuración > Restaurar / Importar) o, para los administradores, de forma programática mediante la API REST. Los usuarios pueden restaurar los datos de su propio perfil desde una copia de seguridad ZIP completa o importar archivos individuales, mientras que los administradores pueden gestionar las restauraciones en todo el sistema.
Restaurar desde una copia ZIP de Poznote
Sube el ZIP de la copia de seguridad completa para restaurarlo todo:
- Reemplaza la base de datos y restaura todas las notas y los adjuntos
- Funciona para todos los espacios de trabajo a la vez
No hay límite de tamaño en la práctica. El archivo se sube por fragmentos (un fragmento que falla se reintenta en lugar de perder toda la subida), se vuelve a ensamblar en el servidor y después lo extrae y restaura un proceso en segundo plano, así que ni el navegador ni un proxy inverso delante de la instancia pueden interrumpir la restauración por tiempo de espera. Una barra de progreso cubre todo el proceso: subida, extracción, base de datos, notas y, por último, adjuntos. Cuando termina la restauración, Poznote te pregunta qué espacio de trabajo quieres abrir.
La restauración desde un bucket S3 (consulta Copias de seguridad S3) se ejecuta como el mismo trabajo en segundo plano, así que obtener un archivo grande del bucket y restaurarlo tampoco depende de que una petición siga activa.
Si la subida no es posible en absoluto, la página de Restaurar / Importar también ofrece una alternativa, «Restauración por copia directa»: copia el archivo en el contenedor de Poznote exactamente en /tmp/backup_restore.zip por SSH, recarga la página y restaura desde ahí.
Importar archivos individuales
Importa directamente una o varias notas HTML, Markdown o de texto:
- Admite los tipos de archivo
.html,.md,.markdown,.txty.json - Se pueden seleccionar hasta 50 archivos a la vez, configurable en Configuración > Herramientas de administración > Límites de importación
Importar un archivo ZIP
Importa un archivo ZIP que contiene varias notas:
- Admite los tipos de archivo
.html,.md,.markdowno.txt - Los archivos ZIP pueden contener hasta 300 archivos, configurable en Configuración > Herramientas de administración > Límites de importación
- Al importar un archivo ZIP, Poznote detecta y recrea automáticamente la estructura de carpetas
No hay límite de tamaño en la práctica para el archivo. Igual que en una restauración completa, se sube por fragmentos (un fragmento que falla se reintenta en lugar de perder toda la subida), se vuelve a ensamblar en el servidor y después lo procesa un proceso en segundo plano, así que ni el navegador ni un proxy inverso delante de la instancia pueden interrumpir la importación por tiempo de espera. Una barra de progreso cubre todo el proceso: subida, imágenes y adjuntos y, por último, notas.
Migrar un vault de Obsidian
Un vault de Obsidian es una carpeta de archivos Markdown, así que se importa tal cual, en un único archivo ZIP.
Pasos
- Comprime la carpeta de tu vault en un archivo ZIP. No hace falta limpiar nada antes: las carpetas ocultas como
.obsidiano.trashse ignoran. - En Poznote, abre Configuración > Restaurar / Importar y ve a la sección que importa archivos y archivos ZIP. Elige el workspace de destino (un workspace nuevo y vacío permite comprobar fácilmente el resultado), selecciona el ZIP e inicia la importación. Soltar el ZIP sobre la lista de notas de la página principal hace lo mismo.
- Lee el resumen que aparece al final: indica el número de notas, carpetas, imágenes y archivos PDF importados, y nombra los archivos que no se pudieron importar.
Un ZIP puede contener hasta 300 notas (las imágenes y los PDF no cuentan), un límite que un administrador puede aumentar en Configuración > Herramientas de administración > Límites de importación. El tamaño del archivo no está limitado, consulta Importar un archivo ZIP.
Lo que se conserva
- Notas: cada archivo
.mdse convierte en una nota Markdown con el nombre del archivo, o con el de la clavetitlede su front matter. - Carpetas: se recrea el árbol de carpetas del vault, subcarpetas incluidas. Cuando todo el vault está dentro de una única carpeta en la raíz del ZIP, esa carpeta se omite.
- Etiquetas: la clave
tagsdel front matter y una línea de#tagsal principio de una nota. Los espacios de una etiqueta se convierten en guiones bajos. - Front matter: se leen
title,folder,tags,favorite,createdyupdated, consulta Soporte de front matter en Markdown. - Enlaces entre notas:
[[Título de la nota]]funciona tal cual. Poznote lo resuelve por el título, lo muestra como enlace interno y lo cuenta en los backlinks y en el grafo. - Imágenes:
![[imagen.png]],![[imagen.png|leyenda]]yse convierten en adjuntos de la nota y se muestran en su sitio, esté donde esté la imagen en el vault (junto a las notas, en una subcarpeta o en una carpetaattachments). - Archivos PDF: un PDF enlazado desde una nota (
![[archivo.pdf]],[[archivo.pdf]]o un enlace Markdown) se adjunta a esa nota, y el enlace apunta al adjunto. Cualquier otro PDF, junto a las notas o en una carpetaattachments, se convierte en una nota con el nombre del archivo y el PDF como adjunto, en la carpeta que corresponde a su lugar en el vault.
Lo que no se conserva
- Los enlaces con alias o a un encabezado (
[[Nota|alias]],[[Nota#Encabezado]]) permanecen en el texto pero no llevan a ninguna nota. - Las notas incrustadas (
![[Otra nota]]) y el contenido de plugins: consultas Dataview, archivos.canvas, dibujos hechos con el plugin Excalidraw de Obsidian. - Las etiquetas escritas en medio de una nota quedan como texto.
- Los archivos de otros tipos situados junto a las notas (audio, vídeo, documentos de Office) se ignoran. Adjúntalos después a la nota correspondiente.
Las imágenes y los PDF se localizan por su nombre de archivo, no por su ruta. Si dos archivos del vault tienen el mismo nombre, renombra uno antes de importar.
Soporte de front matter en Markdown
Los archivos Markdown pueden incluir un front matter YAML para indicar los metadatos de la nota. Se admiten las siguientes claves:
title: sobrescribe el título de la nota (por defecto: el nombre del archivo sin extensión)folder: sobrescribe la carpeta de destino. Un nombre simple debe coincidir con una carpeta que ya existe en el espacio de trabajo; una ruta comoProjects/2026crea las carpetas que necesita.tags: lista de etiquetas que se aplican a la nota. Admite tanto la sintaxis en línea[tag1, tag2]como la sintaxis en varias líneasfavorite: marca la nota como favorita (trueofalse)created: define una fecha de creación personalizada (formato:YYYY-MM-DD HH:MM:SS)updated: define una fecha de actualización personalizada (formato:YYYY-MM-DD HH:MM:SS)
Ejemplo con la sintaxis de lista en línea:
---
title: My Important Note
folder: Projects
tags: [important, work]
favorite: true
created: 2024-01-15 10:30:00
updated: 2024-01-20 15:45:00
---
Ejemplo con la sintaxis en varias líneas:
---
title: My Important Note
folder: Projects
tags:
- important
- work
favorite: true
created: 2024-01-15 10:30:00
updated: 2024-01-20 15:45:00
---
Sin conexión
Poznote sigue funcionando sin red de dos maneras: las notas que modificaste recientemente, tus favoritos y las notas o carpetas que elijas guardar siguen disponibles en tu navegador, listas para leerlas y editarlas, y una copia de seguridad completa puede consultarse en cualquier lugar como una exportación de solo lectura.
Notas sin conexión
Las notas que modificaste en los últimos 5 días se guardan en cada navegador donde usas Poznote, y esta copia se actualiza después de cada guardado. En clase, en el tren o en cualquier lugar sin Wi-Fi, abre la dirección habitual de Poznote: el navegador muestra la versión sin conexión de Poznote, con la misma barra lateral, los mismos editores, la misma barra de herramientas, la misma búsqueda y las mismas pestañas (un doble clic o un clic central abre una nota en una pestaña nueva, y se recuperan las pestañas abiertas en línea), y solo lista las notas guardadas sin conexión.
- Inicio de sesión: escribe la contraseña con la que iniciaste sesión por última vez en este navegador, se comprueba sin el servidor. Si nunca escribiste tu contraseña en este navegador (SSO, inicio de sesión automático), la última cuenta usada se abre con un botón Continuar como.
- Lectura y edición: las notas de texto enriquecido, las notas Markdown y las listas de tareas se abren en su editor habitual, y puedes crear notas nuevas. El menú / y el menú del clic derecho también funcionan, sin los comandos que necesitan el servidor (imágenes y archivos que subir, plantillas, dibujos, enlaces a otras notas). Los demás tipos de notas, como los dibujos, solo están disponibles en línea. Los cambios se guardan en el navegador hasta que se envían.
- Guardar sin conexión: los favoritos siempre se guardan, y Guardar sin conexión en el menú de una nota o de una carpeta (subcarpetas incluidas) la guarda sea cual sea su fecha, con todos sus adjuntos (PDF, audio, archivos) de hasta 25 MB cada uno. El mismo menú de una nota indica si está disponible sin conexión en este navegador, y las páginas Notas y Carpetas señalan las notas y carpetas disponibles sin conexión en este navegador. La página Notas también permite guardar varias notas sin conexión a la vez (o dejar de hacerlo) desde sus acciones en bloque, y la página Carpetas ofrece Guardar sin conexión en el menú de cada carpeta.
- Página Sin conexión: el botón Sin conexión de la barra de iconos muestra las notas y carpetas guardadas sin conexión, como la página Compartidos: las carpetas en árbol con sus notas, por qué se guarda cada nota (guardada sin conexión, en una carpeta guardada sin conexión, favorito, modificada recientemente), un filtro y un botón para guardar una nota sin conexión o dejar de hacerlo. Un icono de advertencia señala una nota que este navegador aún no tiene.
- De vuelta en línea: los cambios se envían automáticamente. Si una nota también se modificó en el servidor mientras tanto, las dos versiones se combinan cuando es posible; si no, tu versión sin conexión se guarda como una nota aparte llamada "... (copia sin conexión)". Una nota eliminada en el servidor mientras tanto se vuelve a crear.
- Ajustes: Configuración > Sincronización e historial > Notas sin conexión define cuántos días de notas se guardan (5 por defecto, hasta 30, 0 desactiva las notas sin conexión) y muestra lo que contiene el navegador actual.
- Límites: como máximo 300 notas y 50 MB de texto, primero las modificadas más recientemente. También se guardan archivos: las imágenes que muestran estas notas y todos los adjuntos (PDF, audio, archivos) de los favoritos y de las notas guardadas con Guardar sin conexión, hasta 25 MB cada uno, 400 archivos y 200 MB en total, y nunca más de la mitad del espacio libre del navegador. Un archivo más grande solo está en línea, y la nota lo indica cuando se abre sin conexión.
- Requisitos: Poznote debe servirse por HTTPS (los navegadores solo guardan páginas sin conexión en una conexión segura,
http://localhosttambién funciona) y haberse abierto una vez en línea en el navegador, tras iniciar sesión, para que se haga la copia. - Privacidad: solo se guardan las notas de tu propia cuenta, no las de una cuenta o un espacio de trabajo compartidos contigo. Se almacenan sin cifrar en el navegador. Cerrar sesión las elimina del navegador (también los cambios aún no enviados, tras un aviso que los enumera): en un ordenador compartido, cierra sesión al irte. Cerrar sesión también funciona sin red, desde la página sin conexión: las notas se eliminan al momento y la sesión en el servidor termina la próxima vez que Poznote se abra en línea.
Exportación sin conexión
La 📦 Copia de seguridad en un archivo ZIP de Poznote crea una versión independiente de tus notas para consultarla sin conexión. Solo tienes que extraer el ZIP y abrir index.html en cualquier navegador web. Así puedes leer tus notas sin conexión, pero sin todas las funciones de Poznote: es una exportación de solo lectura.
Varias instancias
No confundir con la función Multiusuario.
Puedes ejecutar varias instancias aisladas de Poznote en el mismo servidor. Cada instancia tiene sus propios datos, su puerto y sus credenciales.
Ideal para:
- Alojar a distintos usuarios en el mismo servidor, cada uno con su propia instancia y su propia cuenta
- Probar nuevas funciones sin afectar a tu instancia de producción
Basta con repetir los pasos de instalación en directorios distintos y con puertos distintos.
Ejemplo: instancias de Tom y Alice en el mismo servidor
Server: my-server.com
├── Poznote-Tom
│ ├── Port: 8040
│ ├── URL: http://my-server.com:8040
│ ├── Container: poznote-tom-webserver-1
│ └── Data: ./poznote-tom/data/
│
└── Poznote-Alice
├── Port: YOUR_POZNOTE_API_PORT
├── URL: http://my-server.com:YOUR_POZNOTE_API_PORT
├── Container: poznote-alice-webserver-1
└── Data: ./poznote-alice/data/
Asistente IA
Poznote incluye un chat de IA integrado que se conecta a una instancia local de Ollama o LM Studio, a un proveedor en la nube como Anthropic (Claude) u OpenAI, o a cualquier servidor compatible con OpenAI. Busca y lee tus notas para responder a tus preguntas y, cuando se lo pides, las crea, las reescribe y las organiza, dentro del espacio de trabajo en el que abriste el chat.
Un administrador lo activa desde Configuración → Herramientas de administración → Asistente IA, y cada perfil obtiene entonces un botón Asistente IA en la barra de iconos de la izquierda. El servidor de IA se llama desde el servidor de Poznote, nunca desde tu navegador, así que con una instancia local de Ollama tus notas nunca salen de tu máquina.
Lo que puede hacer el asistente, la elección de un proveedor y de un modelo, las claves de API personales, las herramientas externas como una búsqueda web (servidores MCP remotos) y la conexión de un servidor local desde el contenedor de Poznote se describen en la documentación del Asistente IA. Para que sea un asistente de IA externo (VS Code Copilot, Claude CLI...) quien gestione tus notas, consulta el Servidor MCP más abajo.
Transcripción (voz a texto)
Convierte la voz en texto de nota con un servidor de voz a texto que ejecutas tú mismo. Poznote no integra ningún modelo de voz: se comunica con cualquier servidor que exponga la API de audio de OpenAI (POST /v1/audio/transcriptions), como un Whisper autoalojado, así el audio nunca tiene que salir de tu máquina.
Cuando un administrador lo activa en Configuración → Herramientas de administración → Transcripción, aparece Dictar en Insertar dentro del menú de comandos, y un botón Transcribir en los adjuntos de audio.
La puesta en marcha de un servidor, la elección de un modelo y todo lo demás están en la documentación de Transcripción.
Servidor MCP
Poznote incluye un servidor Model Context Protocol (MCP) que permite a asistentes de IA como GitHub Copilot o Claude CLI interactuar con tus notas en lenguaje natural. Por ejemplo:
- «Crea una nueva nota titulada 'Meeting Notes' con el contenido...»
- «Busca notas sobre 'Docker'»
- «Lista todas las notas de mi espacio de trabajo de Poznote»
- «Actualiza la nota 42 con nueva información»
El servidor MCP viene con el docker-compose.yml oficial y solo se publica en 127.0.0.1, así que por defecto nada fuera de tu máquina puede alcanzarlo. La instalación, la configuración de los clientes, los cambios de puerto y de depuración, y cómo protegerlo con POZNOTE_MCP_AUTH_TOKEN cuando lo expones más allá se describen en la documentación del Servidor MCP.
Aplicaciones
Poznote funciona en cualquier navegador, y también se puede instalar desde el navegador como aplicación web (PWA): pasa a tener su propio icono y su propia ventana, como una aplicación nativa.
- Android y ordenador: abre tu instancia de Poznote en Chrome o Edge y elige Instalar en el menú del navegador.
- Firefox en Android: abre tu instancia de Poznote en Firefox y elige Añadir a la pantalla de inicio en el menú del navegador.
- iPhone y iPad: abre tu instancia de Poznote en Safari, toca Compartir y luego Añadir a pantalla de inicio.
Para instalar la aplicación web, Poznote debe servirse por HTTPS (
http://localhosttambién funciona).
La página Aplicaciones del sitio web reúne todo lo disponible: la aplicación web, la extensión de Chrome y las aplicaciones móviles creadas por la comunidad.
Extensión de Chrome
Poznote URL Saver es una extensión del navegador que guarda con un solo clic la URL, o incluso una captura de pantalla completa, de la página actual en tu instancia de Poznote. Instálala desde Chrome Web Store: Instalar la extensión
La extensión se conecta a tu instancia con tu nombre de usuario y una contraseña de aplicación. Los pasos de configuración están en la documentación de la extensión de Chrome.
Compartir con Poznote en Android
En Android, Poznote aparece en el menú Compartir del sistema una vez instalada la PWA. Comparte una página desde Chrome (o un enlace o texto desde cualquier aplicación), elige Poznote y se crea una nueva nota con el título de la página y un enlace en el que se puede hacer clic, sin necesidad de extensión.
Para usarlo:
- Abre tu instancia de Poznote en Chrome para Android e instálala como aplicación (menú → Añadir a pantalla de inicio → Instalar).
- En cualquier aplicación, toca Compartir y elige Poznote.
Si Poznote no aparece enseguida en el menú de compartir, asegúrate de que la aplicación está instalada (no solo guardada como marcador). Si instalaste la PWA antes de que saliera esta función, Chrome detecta la nueva capacidad automáticamente al cabo de unos días, o de inmediato si reinstalas la aplicación.
Documentación de la API
Poznote ofrece una API RESTful v1 completa para acceder de forma programática a las notas, carpetas, espacios de trabajo, etiquetas, adjuntos, copias de seguridad, ajustes y más.
Para la referencia completa de la API, con todos los endpoints, parámetros y ejemplos con curl, consulta la documentación de la API REST.
Inicio rápido
# Listar todas las notas del usuario con ID 1
curl -u 'username:password' -H "X-User-ID: 1" \
http://YOUR_SERVER/api/v1/notes
# Lo mismo, con una contraseña de aplicación creada en Configuración > Contraseñas de aplicación
# (funciona en instancias solo SSO; X-User-ID va implícito)
curl -u 'username:pzn_2f7c…' http://YOUR_SERVER/api/v1/notes
# Crear una nota
curl -X POST -u 'username:password' -H "X-User-ID: 1" \
-H "Content-Type: application/json" \
-d '{"heading": "My Note", "content": "Hello!", "type": "markdown"}' \
http://YOUR_SERVER/api/v1/notes
Documentación interactiva (Swagger)
Accede a Swagger UI directamente desde Poznote en Settings > About > API REST para explorar todos los endpoints, ver los esquemas de petición y respuesta, y probar las llamadas a la API de forma interactiva.
Stack tecnológico
Poznote da prioridad a la sencillez y la portabilidad: sin frameworks complejos ni dependencias pesadas. Solo tecnologías web sencillas y fiables que garantizan que tus notas sigan siendo accesibles y estén bajo tu control.
Arquitectura centrada en la privacidad: Poznote funciona completamente en local, sin necesidad de conexiones externas para su funcionamiento. Todas las bibliotecas (Excalidraw, Mermaid, KaTeX) vienen incluidas y se sirven desde tu propia instancia. De serie, la única conexión saliente es una comprobación diaria de actualizaciones; las funciones opcionales que actives tú mismo (Sincronización Git, S3, un proveedor de IA y las herramientas externas que le conectes, webhooks, SMTP, OIDC) son las únicas otras.
Si te interesa el stack tecnológico sobre el que está construido Poznote, échale un vistazo aquí.
Backend
- PHP 8.5: lenguaje de scripting del lado del servidor
- SQLite 3: base de datos relacional ligera basada en archivos
Frontend
- HTML5: marcado y estructura
- CSS3: estilos y diseño adaptable
- JavaScript (Vanilla): funciones interactivas y contenido dinámico
- Vite: cadena de compilación de los componentes Excalidraw (React) y CodeMirror (empaquetados como IIFE)
- AJAX: carga asíncrona de datos
Bibliotecas
- CodeMirror 6: editor de código y texto extensible para la experiencia de edición Markdown
- Excalidraw: pizarra virtual para dibujar diagramas y bocetos
- Mermaid: biblioteca JavaScript del lado del cliente para generar diagramas y diagramas de flujo a partir de texto
- KaTeX: biblioteca JavaScript del lado del cliente para la composición rápida de fórmulas y el renderizado de ecuaciones matemáticas
- Sortable.js: biblioteca JavaScript para ordenar mediante arrastrar y soltar
- Lucide: conjunto de iconos de toda la interfaz
- Devicon: iconos de los lenguajes de programación en los bloques de código
- highlight.js: resaltado de sintaxis para los bloques de código
- Swagger UI: documentación interactiva de la API e interfaz de pruebas
Almacenamiento
- Archivos HTML/Markdown: las notas se guardan como archivos HTML o Markdown simples en el sistema de archivos
- Base de datos SQLite: metadatos, etiquetas, relaciones y datos de usuario
- Archivos adjuntos: se guardan en el sistema de archivos local o, opcionalmente, en un almacenamiento de objetos compatible con S3
Infraestructura
- Nginx + PHP-FPM: servidor web de alto rendimiento con FastCGI Process Manager
- Alpine Linux: imagen base segura y ligera
- Docker: contenedores para un despliegue sencillo y portable
- Supervisor: ejecuta Nginx, PHP-FPM y los procesos en segundo plano (recordatorios, copias de seguridad programadas)
- Python 3.12 (Alpine): entorno de ejecución del servidor MCP con las bibliotecas httpx, uvicorn y fastmcp para la integración con asistentes de IA
Explorar proyectos relacionados
n8n-io/n8n
Plataforma Fair-code de automatización de flujos de trabajo con capacidades nativas de IA. Combina la creación visual con código personalizado, se puede alojar en tus propios servidores o en la nube y ofrece más de 400 integraciones.
210,350 estrellaslanggenius/dify
Crea flujos de trabajo de agentes y canalizaciones RAG, con amplio soporte de modelos y herramientas de IA, en un único espacio de trabajo colaborativo. Despliega en la nube, en una VPC o en tus propios servidores para que los equipos pasen del prototipo a producción sin reconstruir la pila.
161,046 estrellasmicrosoft/PowerToys
Microsoft PowerToys es un conjunto de utilidades que potencian la productividad y la personalización en Windows
140,926 estrellasstablyai/orca
Orca es el lugar para trabajar con una flota de agentes (p. ej., Grok Bot y Claude Code). Ejecuta cualquier agente de programación con tu propia suscripción. Disponible en escritorio, móvil y tiempo de ejecución remoto.
123,759 estrellas