Skip to content

Instalación manual

Este es el procedimiento de instalación manual para usuarios técnicos que prefieren no usar el asistente guiado. Si quieres la ruta asistida, usa en su lugar el asistente de instalación, ya que crea .env, genera un CRYPTO_SECRET seguro, configura PostgreSQL y ejecuta la instalación por ti.

  • Bun
  • Node.js v20+ (usado para las herramientas de MCP)
  • PostgreSQL instalado de forma nativa, o ejecutado en un contenedor de Docker (consulta el paso 2)

El esquema de PostgreSQL, pgcrypto, las semillas y las migraciones se inicializan automáticamente al arrancar el bot.

Terminal window
git clone https://github.com/Bredrumb/TomoriBot.git
cd TomoriBot
bun install --frozen-lockfile

Crea tu archivo de entorno a partir del ejemplo y completa los valores requeridos:

Terminal window
cp .env.example .env

Requeridos:

  • DISCORD_TOKEN: el token de tu bot de Discord (habilita los intents privilegiados GuildMembers, MessageContent y GuildPresences).
  • CRYPTO_SECRET: una clave de cifrado de 32 caracteres (usada para cifrar las claves de API almacenadas).
  • Conexión a PostgreSQL: POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB.

El ajuste opcional vive en .env.optional.example. Copia los valores que quieras personalizar (límites, tiempos de espera, interruptores de funciones, URLs de sidecars, etc.).

Terminal window
bun run dev

Cuando veas TomoriBot up and running!, ve a Discord y ejecuta /setup en tu servidor para conectar un proveedor de IA e inicializar el bot. El comando abre un panel de lista de verificación guiada, y no se escribe nada hasta que presiones Finalizar configuración; consulta El comando /setup para los pasos y la Guía rápida para el lado dentro de Discord.

Usa bun run launch en lugar de bun run dev si quieres que los sidecars opcionales (SearXNG, Crawl4AI, TTS/STT local) se inicien junto al bot:

Terminal window
bun run launch --searxng --crawl4ai
bun run launch --help # ver todos los indicadores

Extras opcionales (la “instalación completa” manual)

Section titled “Extras opcionales (la “instalación completa” manual)”

La ruta Instalación completa del asistente de instalación agrega cuatro extras livianos encima de la instalación base. Ninguno es necesario para ejecutar el bot, pero cada uno desbloquea una función. Si estás instalando a mano, agrega el que quieras:

RAG (subidas de documentos y recuerdo entre canales) almacena incrustaciones en una columna vector, lo que necesita la extensión pgvector. Instálala para tu versión mayor de PostgreSQL:

Terminal window
# Debian/Ubuntu, por ejemplo para PostgreSQL 16
sudo apt-get install -y postgresql-16-pgvector

Luego habilítala una vez en tu base de datos. Conéctate con psql usando los valores POSTGRES_* de tu .env; te pedirá POSTGRES_PASSWORD:

Terminal window
# psql nativo / del host (sustituye tu propio POSTGRES_USER y POSTGRES_DB):
psql -h localhost -p 5432 -U tomori -d tomodb
# O bien, si la base de datos se ejecuta en el contenedor de Docker del paso 2:
docker exec -it tomori-db psql -U tomori -d tomori

Una vez conectado, ejecuta:

CREATE EXTENSION vector;

Sin pgvector el bot sigue funcionando, pero las funciones de RAG quedan completamente no disponibles. Esta extensión también se requiere en la base de datos de destino antes de restaurar una copia de seguridad; consulta Migración segura para más detalles.

pg_cron : trabajos de limpieza programados

Section titled “pg_cron : trabajos de limpieza programados”

pg_cron impulsa el mantenimiento periódico opcional de la base de datos (limpieza de filas de enfriamiento/recordatorio). Docker Compose de este repositorio ya lo configura.

Para un PostgreSQL autogestionado, encuentra tu archivo de configuración activo:

SHOW config_file;

Habilita la extensión en postgresql.conf; agrégala a shared_preload_libraries si ya lista otras bibliotecas:

shared_preload_libraries = 'pg_cron' # e.g. 'pg_stat_statements,pg_cron'
cron.database_name = 'your_dbname'

Reinicia PostgreSQL y luego:

CREATE EXTENSION IF NOT EXISTS pg_cron;

Recursos del tokenizador : sesgo de logit según el modelo

Section titled “Recursos del tokenizador : sesgo de logit según el modelo”

El sesgo de logit (penalizaciones de repetición de emojis/palabras) necesita recursos de tokenizador locales:

Terminal window
bun run setup:tokenizers

Algunas familias (por ejemplo, Gemma) están restringidas y requieren un token de HuggingFace después de aceptar su licencia:

Terminal window
# Windows (PowerShell)
$env:HF_TOKEN="hf_xxx"; bun run setup:tokenizers
# macOS/Linux
HF_TOKEN=hf_xxx bun run setup:tokenizers

Sin este paso, el sesgo de logit se deshabilita silenciosamente y todo lo demás funciona con normalidad.

El respaldo seguro de fetch_url se ejecuta en el proceso y no necesita ningún paquete de Python. web_search de DuckDuckGo/IAsk se incluye con bun install --frozen-lockfile, así que tampoco necesita instalación adicional.

Mantenimiento, actualización y copias de seguridad

Section titled “Mantenimiento, actualización y copias de seguridad”

Una vez instalado, los scripts del lado del host (bun run update, bun run backup, bun run restore-backup, bun run nuke-db, bun run rotate-keys, …) y los procedimientos de actualización y copia de seguridad viven todos en la página de Mantenimiento y copias de seguridad. Si estás por descargar una nueva versión, comienza con Migración segura.