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>
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
- Red Docker: Asegúrate de que la red
proxyexiste - Registro DNS: Configura los registros A para tus dominios Trilium
Desde Portainer
- Ve a Stacks → Add stack
- Nombre:
trilium - Selecciona Repository o Git repository
- Configura:
- Repository URL:
<tu-repositorio> - Repository reference:
main - Compose path:
trilium/docker-compose.yml
- Repository URL:
- Carga el archivo de variables de entorno:
trilium/stack.env - 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
- Accede a
https://notes.tudominio.com - En el primer acceso, Trilium te pedirá crear una contraseña
- 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:
- Haz clic derecho en una nota → Note info
- Añade el atributo
#encrypted - Trilium te pedirá una contraseña de cifrado
- 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
- Descarga Trilium Desktop desde GitHub
- Instálalo en tu PC/Mac/Linux
- En el primer inicio, selecciona Sync from server
- Configura:
- Server URL:
https://notes.tudominio.com - Username: Crea un usuario de sincronización en el servidor
- Password: Password del usuario
- Server URL:
Crear Usuario de Sincronización
- En el servidor web, ve a Options → Sync
- Haz clic en Create sync user
- Usuario:
mi-desktop - Password: (genera uno seguro)
- 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:
- Crea una nota de tipo Code (JavaScript)
- Añade el atributo
#run=frontendStartupo#run=backendStartup - 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:
- Crea una nota con la estructura deseada
- Añade
#template - Usa la plantilla: Clic derecho en padre → Create note from template
Web Clipper
Captura contenido web directamente a Trilium:
- Ve a Options → Web clipper
- Sigue las instrucciones para instalar la extensión del navegador
- 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:
- Ve a Options → ETAPI
- Crea un token de API
- Ú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:
- Crea una nota de tipo Code (CSS)
- Añade
#appTheme - Escribe tu CSS personalizado:
/* Tema oscuro personalizado */
body {
--main-background-color: #1e1e1e;
--main-text-color: #d4d4d4;
}
Shortcuts Personalizados
- Ve a Options → Keyboard shortcuts
- Personaliza o añade nuevos shortcuts
🛠️ Troubleshooting
No puedo acceder a Trilium
-
Verifica que está corriendo:
docker ps | grep trilium -
Verifica los logs:
docker logs trilium -
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
- Verifica las credenciales del usuario de sync
- Revisa los logs del servidor:
docker logs trilium | grep sync - En el cliente, ve a Options → Sync → Check for updates
- Fuerza sincronización: Options → Sync → Force full sync
Notas no se guardan
-
Verifica espacio en disco:
df -h /opt/trilium/ -
Verifica permisos:
ls -lh /opt/trilium/data/ -
Revisa los logs para errores
Performance lento
-
Verifica el tamaño de la base de datos:
du -sh /opt/trilium/data/document.db -
Considera optimizar la base de datos:
- Ve a Options → Advanced → Anonymize database
- Esto elimina historial antiguo
-
Aumenta recursos del contenedor si es necesario
📚 Recursos Adicionales
🔒 Seguridad
- Contraseña maestra: Protege todas tus notas
- Cifrado opcional: Usa
#encryptedpara 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 Options → Other
🔄 Actualizaciones
- Haz backup completo antes de actualizar
- Actualiza en
stack.env:TRILIUM_IMAGE=zadam/trilium:0.63.7 - Actualiza el stack en Portainer
- Verifica los logs:
docker logs trilium - 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+Ppara búsqueda rápida - Usa
Ctrl+Spara guardar (automático) - Usa
Alt+Up/Downpara navegar por el árbol - Usa
Ctrl+Kpara crear links internos - Usa
#para etiquetas en el título - Usa backlinks para ver referencias a una nota