# Trilium Notes - Aplicación de Notas Jerárquicas Trilium Notes es una aplicación de toma de notas jerárquicas con editor WYSIWYG, soporte para scripts, y cifrado de notas. ## 📋 Descripción Este stack despliega Trilium con: - Almacenamiento persistente de notas - Acceso mediante HTTPS con Traefik - Sincronización entre dispositivos - Sin protección SSO (Trilium tiene su propio sistema de autenticación) - Headers de seguridad configurados ## 🚀 Despliegue ### Prerequisitos 1. **Red Docker**: Asegúrate de que la red `proxy` existe 2. **Registro DNS**: Configura los registros A para tus dominios Trilium ### Desde Portainer 1. Ve a **Stacks** → **Add stack** 2. Nombre: `trilium` 3. Selecciona **Repository** o **Git repository** 4. Configura: - Repository URL: `` - Repository reference: `main` - Compose path: `trilium/docker-compose.yml` 5. Carga el archivo de variables de entorno: `trilium/stack.env` 6. Haz clic en **Deploy the stack** ### Variables de Entorno Edita el archivo `stack.env`: ```env # Imagen TRILIUM_IMAGE=zadam/trilium:latest # Hostname (para identificación interna) TRILIUM_HOSTNAME=trilium-server # Puerto HTTP interno TRILIUM_HTTP_PORT=8080 # Dominios (puedes tener múltiples dominios apuntando a la misma instancia) TRILIUM_DOMAIN_1=notes.tudominio.com TRILIUM_DOMAIN_2=trilium.tudominio.com # Ruta de datos TRILIUM_DATA_PATH=/opt/trilium/data # Zona horaria TZ=Europe/Madrid # Traefik TRAEFIK_DOCKER_NETWORK=proxy TRAEFIK_ENTRYPOINT_SECURE=websecure TRAEFIK_CERTRESOLVER=letsencrypt ``` ## ⚙️ Configuración Post-Instalación ### 1. Primer Acceso 1. Accede a `https://notes.tudominio.com` 2. En el primer acceso, Trilium te pedirá crear una contraseña 3. **Guarda bien esta contraseña**: Es la contraseña maestra que protege todas tus notas ### 2. Configuración Inicial Trilium te guiará por un tutorial interactivo. Explora: - **Crear notas**: Haz clic en el botón + o usa `Ctrl+P` - **Jerarquía**: Organiza notas en árbol jerárquico - **Atributos**: Añade etiquetas (#tag) y relaciones - **Scripts**: Automatiza tareas con JavaScript ### 3. Cifrado de Notas Para cifrar notas sensibles: 1. Haz clic derecho en una nota → **Note info** 2. Añade el atributo `#encrypted` 3. Trilium te pedirá una contraseña de cifrado 4. La nota se cifrará localmente ### 4. Sincronización entre Dispositivos Trilium soporta sincronización servidor-cliente: #### Configurar Servidor (ya está hecho) Tu instancia de Trilium ya funciona como servidor. #### Configurar Cliente Desktop 1. Descarga Trilium Desktop desde [GitHub](https://github.com/zadam/trilium/releases) 2. Instálalo en tu PC/Mac/Linux 3. En el primer inicio, selecciona **Sync from server** 4. Configura: - **Server URL**: `https://notes.tudominio.com` - **Username**: Crea un usuario de sincronización en el servidor - **Password**: Password del usuario #### Crear Usuario de Sincronización 1. En el servidor web, ve a **Options** → **Sync** 2. Haz clic en **Create sync user** 3. Usuario: `mi-desktop` 4. Password: (genera uno seguro) 5. Copia las credenciales para usarlas en el cliente ## 🔧 Características Principales ### Notas Jerárquicas - Organiza notas en árbol (padres e hijos) - Múltiples padres por nota (clones) - Drag & drop para reorganizar ### Tipos de Notas - **Text**: Notas de texto con editor WYSIWYG - **Code**: Notas de código con syntax highlighting - **Render**: Notas que ejecutan HTML/JavaScript - **Book**: Agrupaciones de notas - **Relation map**: Mapas de relaciones entre notas - **Canvas**: Notas de dibujo libre ### Atributos y Relaciones ``` #etiqueta - Etiqueta simple #etiqueta=valor - Etiqueta con valor ~relacion=@notaId - Relación a otra nota #cssClass=mi-clase - Clase CSS personalizada #hideChildrenOverview - Oculta hijos en overview ``` ### Scripts Trilium permite automatización con JavaScript: 1. Crea una nota de tipo **Code** (JavaScript) 2. Añade el atributo `#run=frontendStartup` o `#run=backendStartup` 3. El script se ejecutará automáticamente Ejemplo - Script de búsqueda personalizada: ```javascript api.addButtonToToolbar({ title: 'Buscar TODO', icon: 'check', action: () => { const notes = api.searchForNotes('#todo !#done'); api.showMessage(`Encontradas ${notes.length} tareas pendientes`); } }); ``` ### Plantillas Crea plantillas para notas recurrentes: 1. Crea una nota con la estructura deseada 2. Añade `#template` 3. Usa la plantilla: Clic derecho en padre → **Create note from template** ### Web Clipper Captura contenido web directamente a Trilium: 1. Ve a **Options** → **Web clipper** 2. Sigue las instrucciones para instalar la extensión del navegador 3. Captura páginas web con un clic ## 🔧 Configuración Avanzada ### Backup Automático Trilium hace backups automáticos diarios en `/opt/trilium/data/backup/`. Para configurar backups externos: ```bash # Script de backup #!/bin/bash BACKUP_DIR=/backups/trilium DATE=$(date +%Y%m%d_%H%M%S) # Backup de toda la data tar -czf $BACKUP_DIR/trilium-$DATE.tar.gz /opt/trilium/data/ # Mantener solo últimos 30 días find $BACKUP_DIR -name "trilium-*.tar.gz" -mtime +30 -delete ``` ### API Trilium tiene una API ETAPI para integración: 1. Ve a **Options** → **ETAPI** 2. Crea un token de API 3. Úsalo en tus scripts: ```bash # Obtener nota curl -H "Authorization: YOUR_ETAPI_TOKEN" \ https://notes.tudominio.com/etapi/notes/noteId # Crear nota curl -X POST https://notes.tudominio.com/etapi/notes \ -H "Authorization: YOUR_ETAPI_TOKEN" \ -H "Content-Type: application/json" \ -d '{"noteId":"new-note","title":"Mi Nota","content":"Contenido"}' ``` ### Temas y Estilos Personaliza la apariencia: 1. Crea una nota de tipo **Code** (CSS) 2. Añade `#appTheme` 3. Escribe tu CSS personalizado: ```css /* Tema oscuro personalizado */ body { --main-background-color: #1e1e1e; --main-text-color: #d4d4d4; } ``` ### Shortcuts Personalizados 1. Ve a **Options** → **Keyboard shortcuts** 2. Personaliza o añade nuevos shortcuts ## 🛠️ Troubleshooting ### No puedo acceder a Trilium 1. Verifica que está corriendo: ```bash docker ps | grep trilium ``` 2. Verifica los logs: ```bash docker logs trilium ``` 3. Verifica DNS: ```bash nslookup notes.tudominio.com ``` ### Olvidé la contraseña maestra Si perdiste la contraseña maestra, NO HAY forma de recuperarla. Las notas están cifradas localmente. **Prevención**: - Guarda la contraseña en un gestor de contraseñas - Haz backups regulares de `/opt/trilium/data/` - Considera no usar cifrado para todas las notas ### Sincronización no funciona 1. Verifica las credenciales del usuario de sync 2. Revisa los logs del servidor: ```bash docker logs trilium | grep sync ``` 3. En el cliente, ve a **Options** → **Sync** → **Check for updates** 4. Fuerza sincronización: **Options** → **Sync** → **Force full sync** ### Notas no se guardan 1. Verifica espacio en disco: ```bash df -h /opt/trilium/ ``` 2. Verifica permisos: ```bash ls -lh /opt/trilium/data/ ``` 3. Revisa los logs para errores ### Performance lento 1. Verifica el tamaño de la base de datos: ```bash du -sh /opt/trilium/data/document.db ``` 2. Considera optimizar la base de datos: - Ve a **Options** → **Advanced** → **Anonymize database** - Esto elimina historial antiguo 3. Aumenta recursos del contenedor si es necesario ## 📚 Recursos Adicionales - [Documentación oficial de Trilium](https://github.com/zadam/trilium/wiki) - [Galería de plantillas](https://github.com/zadam/trilium/wiki/Gallery) - [Scripts de ejemplo](https://github.com/zadam/trilium/wiki/Scripts) - [Forum de la comunidad](https://github.com/zadam/trilium/discussions) ## 🔒 Seguridad - **Contraseña maestra**: Protege todas tus notas - **Cifrado opcional**: Usa `#encrypted` para notas sensibles - **HTTPS**: Todo el tráfico está cifrado con SSL - **Backups**: Haz backups regulares de tus notas - **Sin SSO**: Trilium gestiona su propia autenticación (más seguro para notas personales) ## 💾 Backups ### Backup Manual ```bash # Backup completo sudo tar -czf trilium-backup-$(date +%Y%m%d).tar.gz /opt/trilium/data/ # Solo base de datos sudo cp /opt/trilium/data/document.db trilium-db-backup-$(date +%Y%m%d).db ``` ### Restaurar ```bash # Detener Trilium docker stop trilium # Restaurar backup sudo tar -xzf trilium-backup-YYYYMMDD.tar.gz -C / # Reiniciar docker start trilium ``` ### Backup Automático (dentro de Trilium) Trilium hace backups automáticos: - **Ubicación**: `/opt/trilium/data/backup/` - **Frecuencia**: Diaria - **Retención**: Configurable en **Options** → **Other** ## 🔄 Actualizaciones 1. Haz **backup completo** antes de actualizar 2. Actualiza en `stack.env`: ```env TRILIUM_IMAGE=zadam/trilium:0.63.7 ``` 3. Actualiza el stack en Portainer 4. Verifica los logs: `docker logs trilium` 5. Accede y verifica que todo funciona > **Nota**: Revisa el [changelog](https://github.com/zadam/trilium/blob/master/CHANGELOG.md) antes de actualizar. ## 📊 Uso ### Casos de Uso - **Notas personales**: Diario, ideas, recordatorios - **Base de conocimiento**: Wiki personal, documentación - **Gestión de proyectos**: Tareas, planificación - **Investigación**: Organización de información - **Snippets de código**: Biblioteca de código reutilizable - **Journaling**: Diario personal cifrado ### Tips - Usa `Ctrl+P` para búsqueda rápida - Usa `Ctrl+S` para guardar (automático) - Usa `Alt+Up/Down` para navegar por el árbol - Usa `Ctrl+K` para crear links internos - Usa `#` para etiquetas en el título - Usa backlinks para ver referencias a una nota