Files
root fd332455c1 fix: hardcode Traefik port labels (Gotcha 6 - vars not expanded in labels)
Coolify does not expand ${VAR} in label values. All loadbalancer port
labels must use hardcoded values:
- trilium:   ${TRILIUM_HTTP_PORT}  → 8080
- adguard:   ${ADGUARD_HTTP_PORT}  → 80
- authentik: ${AUTHENTIK_HTTP_PORT} → 9000
- gitea:     ${GITEA_HTTP_PORT}    → 3000
- wireguard: ${WG_UI_PORT}         → 51821

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:44:58 +00:00
..

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 StacksAdd stack
  2. Nombre: trilium
  3. Selecciona Repository o Git repository
  4. Configura:
    • Repository URL: <tu-repositorio>
    • 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:

# 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
  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 OptionsSync
  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:

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 OptionsWeb 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:

# 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 OptionsETAPI
  2. Crea un token de API
  3. Úsalo en tus scripts:
# 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:
/* Tema oscuro personalizado */
body {
    --main-background-color: #1e1e1e;
    --main-text-color: #d4d4d4;
}

Shortcuts Personalizados

  1. Ve a OptionsKeyboard shortcuts
  2. Personaliza o añade nuevos shortcuts

🛠️ Troubleshooting

No puedo acceder a Trilium

  1. Verifica que está corriendo:

    docker ps | grep trilium
    
  2. Verifica los logs:

    docker logs trilium
    
  3. Verifica DNS:

    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:
    docker logs trilium | grep sync
    
  3. En el cliente, ve a OptionsSyncCheck for updates
  4. Fuerza sincronización: OptionsSyncForce full sync

Notas no se guardan

  1. Verifica espacio en disco:

    df -h /opt/trilium/
    
  2. Verifica permisos:

    ls -lh /opt/trilium/data/
    
  3. Revisa los logs para errores

Performance lento

  1. Verifica el tamaño de la base de datos:

    du -sh /opt/trilium/data/document.db
    
  2. Considera optimizar la base de datos:

    • Ve a OptionsAdvancedAnonymize database
    • Esto elimina historial antiguo
  3. Aumenta recursos del contenedor si es necesario

📚 Recursos Adicionales

🔒 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

# 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

# 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 OptionsOther

🔄 Actualizaciones

  1. Haz backup completo antes de actualizar
  2. Actualiza en stack.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 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