Instalación de Trilium Notes: Base de Conocimiento Personal
Trilium Notes es una aplicación de toma de notas jerárquica y potente diseñada para construir bases de conocimiento personales complejas. Con soporte para notas en Markdown y HTML, scripting con JavaScript, sincronización entre dispositivos, clipping web y una estructura de árbol infinitamente anidable, Trilium es la herramienta definitiva para quienes necesitan más que un simple bloc de notas. Esta guía cubre el despliegue del servidor Trilium en Linux.
Requisitos Previos
- Servidor con Ubuntu 20.04+, Debian 11+ o CentOS 8+
- Node.js 18+ (para instalación del binario)
- Docker para instalación containerizada
- Mínimo 512 MB de RAM
- Puerto 8080 disponible
Instalación con Docker
# Crear directorio para datos persistentes
mkdir -p ~/trilium/data
# Ejecutar Trilium con Docker
docker run -d \
--name trilium \
--restart unless-stopped \
-p 8080:8080 \
-v ~/trilium/data:/home/node/trilium-data \
triliumnext/notes:latest
Con Docker Compose:
mkdir -p ~/trilium && cd ~/trilium
cat > docker-compose.yml << 'EOF'
version: '3'
services:
trilium:
image: triliumnext/notes:latest
container_name: trilium
restart: unless-stopped
ports:
- 8080:8080
volumes:
- ./data:/home/node/trilium-data
environment:
- TZ=Europe/Madrid
- USER_UID=1000
- USER_GID=1000
EOF
mkdir -p ~/trilium/data
docker compose up -d
docker compose logs -f trilium
Instalación del Binario del Servidor
Para instalación sin Docker en un VPS:
# Instalar Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Descargar Trilium Server
TRILIUM_VERSION="0.90.7"
wget "https://github.com/TriliumNext/Notes/releases/download/v${TRILIUM_VERSION}/TriliumNextNotes-Server-linux-x64-v${TRILIUM_VERSION}.tar.xz"
# Extraer
mkdir -p /opt/trilium
tar -xJf TriliumNextNotes-Server-linux-x64-v${TRILIUM_VERSION}.tar.xz -C /opt/trilium/
# Crear usuario dedicado
sudo useradd -r -s /bin/false -d /opt/trilium trilium
sudo chown -R trilium:trilium /opt/trilium/
# Crear directorio de datos
sudo mkdir -p /var/lib/trilium
sudo chown trilium:trilium /var/lib/trilium
Crear servicio systemd:
sudo tee /etc/systemd/system/trilium.service << 'EOF'
[Unit]
Description=Trilium Notes Server
After=network.target
[Service]
Type=simple
User=trilium
Group=trilium
Environment=TRILIUM_DATA_DIR=/var/lib/trilium
WorkingDirectory=/opt/trilium
ExecStart=/usr/bin/node /opt/trilium/src/www
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now trilium
sudo systemctl status trilium
Configuración Inicial
Acceder a http://TU-SERVIDOR:8080 para la configuración inicial:
- Elegir entre configuración nueva o sincronización desde otra instancia
- Establecer contraseña de la base de datos (cifrado de notas en reposo)
- La interfaz web de Trilium estará disponible tras el login
# El archivo de configuración de Trilium está en:
# ~/trilium/data/config.ini (Docker)
# /var/lib/trilium/config.ini (instalación nativa)
# Ver la configuración actual
cat ~/trilium/data/config.ini
La estructura básica del archivo de configuración:
[Network]
# Puerto de escucha (defecto: 8080)
port=8080
# Deshabilitar la autenticación por certificado del lado del cliente
# (útil cuando se usa detrás de proxy)
httpsEnabled=false
[Database]
# Ruta de la base de datos (auto-configurado)
# dbFileName=document.db
Sincronización del Cliente de Escritorio
Trilium tiene aplicaciones de escritorio para Linux, Windows y macOS que se sincronizan con el servidor:
# Descargar la aplicación de escritorio para Linux
TRILIUM_VERSION="0.90.7"
wget "https://github.com/TriliumNext/Notes/releases/download/v${TRILIUM_VERSION}/TriliumNextNotes-linux-x64-v${TRILIUM_VERSION}.AppImage"
chmod +x TriliumNextNotes-linux-x64-v${TRILIUM_VERSION}.AppImage
./TriliumNextNotes-linux-x64-v${TRILIUM_VERSION}.AppImage
Configurar la sincronización en la app de escritorio:
- Primera vez: seleccionar "Sincronizar con servidor existente"
- URL del servidor:
https://notas.tu-dominio.com - Contraseña del servidor
- La sincronización es bidireccional y en tiempo real
# Verificar el estado de sincronización desde los logs del servidor
docker logs trilium 2>&1 | grep -i "sync"
Markdown y Edición de Notas
Trilium soporta múltiples tipos de contenido:
- Texto (HTML enriquecido con editor WYSIWYG)
- Código (con resaltado de sintaxis para más de 100 lenguajes)
- Markdown (con previsualización en tiempo real)
- Imagen (galería y anotación)
- Mapa mental (diagramas con flechas y conexiones)
- Relaciones (notas enlazadas)
# Importar notas Markdown existentes:
# Panel > Botón derecho sobre la carpeta destino > Importar
# Soporta archivos .md individuales y ZIPs con estructura de carpetas
# Exportar notas en diferentes formatos:
# Botón derecho > Exportar > HTML, Markdown, Opml
# La estructura de árbol de Trilium permite organización profunda:
# Mi Base de Conocimiento
# ├── Trabajo
# │ ├── Proyectos
# │ │ ├── Proyecto A
# │ │ └── Proyecto B
# │ └── Reuniones
# ├── Personal
# │ ├── Libros leídos
# │ └── Ideas
# └── Referencia
# ├── Linux
# └── Recetas
Scripting con JavaScript
Trilium permite notas de tipo "código" que pueden ejecutarse como scripts:
// Ejemplo de script en Trilium para crear notas automáticamente
// Tipo de nota: Código > JavaScript frontend
// Obtener la fecha actual formateada
const hoy = new Date().toLocaleDateString('es-ES', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
// Crear una nota de diario automáticamente
const notaDiario = await api.createTextNote(
api.currentNote.noteId,
`Diario - ${hoy}`,
`<h2>Resumen del día ${hoy}</h2><p></p>`
);
// Navegar a la nota recién creada
await api.activateNote(notaDiario.note.noteId);
// Script de tipo "Código - JavaScript backend" para automatización
// Se puede ejecutar con un botón o en un intervalo
// Buscar todas las notas con la etiqueta "TODO"
const notasTodo = await api.searchNotes('#todo #!done');
// Contar y mostrar estadísticas
const stats = {
total: notasTodo.length,
pendientes: notasTodo.filter(n => !n.hasLabel('done')).length
};
log(`Tareas pendientes: ${stats.pendientes} de ${stats.total}`);
Web Clipper
El web clipper de Trilium permite guardar páginas web directamente en la base de conocimiento:
# Instalar la extensión del navegador:
# Firefox: https://addons.mozilla.org/firefox/addon/trilium-web-clipper/
# Chrome: https://chrome.google.com/webstore/ (buscar "Trilium Web Clipper")
# Configurar la extensión:
# URL del servidor: https://notas.tu-dominio.com
# Contraseña: contraseña del servidor Trilium
Opciones de clipping disponibles:
- Artículo de texto: Solo el contenido principal
- Selección de texto: Solo el texto seleccionado
- Captura de pantalla: Imagen de la página
- Página completa: HTML completo de la página
- Marcador: Solo la URL con metadatos
Backup y Exportación
# Trilium hace backups automáticos de la base de datos
# Ubicación por defecto: ~/trilium/data/backup/ (Docker)
# Ver los backups automáticos existentes
ls -la ~/trilium/data/backup/
# El backup incluye comprimidos ZIP de la base de datos cada X horas
# Configurar frecuencia en: Panel > Opciones > Backup
# Backup manual (Docker)
docker exec trilium cp /home/node/trilium-data/document.db /home/node/trilium-data/backup/manual-$(date +%Y%m%d).db
# Exportar toda la base de conocimiento como HTML
# Panel > Botón derecho en la raíz > Exportar > HTML/ZIP
# Exportar como Markdown (para migración a otros sistemas)
# Panel > Botón derecho en la raíz > Exportar > Markdown/ZIP
Proxy Inverso con Nginx
# Obtener certificado SSL
sudo certbot --nginx -d notas.tu-dominio.com
# Configuración de Nginx para Trilium
sudo tee /etc/nginx/sites-available/trilium << 'EOF'
server {
listen 443 ssl http2;
server_name notas.tu-dominio.com;
ssl_certificate /etc/letsencrypt/live/notas.tu-dominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/notas.tu-dominio.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
# WebSocket para sincronización en tiempo real
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/trilium /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Solución de Problemas
Trilium no inicia:
# Ver logs del contenedor
docker logs trilium --tail 50
# Verificar permisos del directorio de datos
ls -la ~/trilium/data/
sudo chown -R 1000:1000 ~/trilium/data/
# Para instalación nativa, verificar que Node.js está instalado
node --version
No se puede conectar el cliente de escritorio:
# Verificar que el servidor está accesible
curl -I https://notas.tu-dominio.com
# Comprobar los logs del servidor durante el intento de sincronización
docker logs trilium -f
# Verificar que el WebSocket está funcionando
curl -I -H "Upgrade: websocket" -H "Connection: Upgrade" https://notas.tu-dominio.com
Base de datos corrupta o pérdida de notas:
# Restaurar desde backup automático
ls ~/trilium/data/backup/
docker stop trilium
cp ~/trilium/data/backup/backup-YYYYMMDD.db ~/trilium/data/document.db
docker start trilium
Conclusión
Trilium Notes es la herramienta más potente disponible para construir bases de conocimiento personales self-hosted. Su combinación de estructura jerárquica infinita, scripting integrado y sincronización multiplataforma lo distingue de simples aplicaciones de notas. Desplegado en tu propio servidor, garantiza que tu base de conocimiento permanece completamente privada y accesible desde cualquier dispositivo.


