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.
Requisitos previos
Section titled “Requisitos previos”- Bun
- 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.
1. Instala
Section titled “1. Instala”git clone https://github.com/Bredrumb/TomoriBot.gitcd TomoriBotbun install --frozen-lockfile2. Configura
Section titled “2. Configura”Cree su archivo de entorno a partir del ejemplo y complete los valores requeridos:
cp .env.example .envRequerida:
DISCORD_TOKEN: su token de bot Discord (habilite los intents privilegiadosGuildMembers,MessageContentyGuildPresences).CRYPTO_SECRET: una clave de cifrado de 32 caracteres (utilizada para cifrar las claves API almacenadas).- Conexión PostgreSQL:
POSTGRES_HOST,POSTGRES_PORT,POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB.
Guarda una copia protegida de tu secreto de cifrado por separado de las copias de seguridad de la base de datos. Las copias de seguridad nuevas no contienen .env. Para la rotación, utiliza CRYPTO_SECRET_V1, CRYPTO_SECRET_V2 o cualquier versión posterior con números enteros positivos, con la selección opcional de CRYPTO_SECRET_CURRENT.
El tuning opcional se encuentra en .env.optional.example. Copia cualquier valor que desee personalizar (límites, tiempos de espera, alternancia de funciones, URL del servidor local, etc.).
Las cargas de expresiones personalizadas se realizan de forma predeterminada en archivos locales en data/custom-expressions/. Mantén ese directorio en un almacenamiento persistente. EXPRESSION_STORAGE_BACKEND acepta local, gcs o s3. Los backends en la nube requieren EXPRESSION_STORAGE_BUCKET y las credenciales del SDK correspondientes. S3 también usa AWS_REGION (us-east-1 predeterminado) y S3_ENDPOINT opcional. GCS utiliza las credenciales predeterminadas de la aplicación. Las expresiones utilizan su propia configuración de depósito; La configuración de almacenamiento de avatar no selecciona un depósito de expresión. Los objetos siguen siendo legibles a través del SDK y se adjuntan como bytes, por lo que no es necesaria una URL de medios publicada públicamente. Conserve las claves de backend, depósito y objeto al restaurar referencias existentes.
MAX_CUSTOM_EXPRESSIONS_PER_SERVER limita las expresiones personalizadas por servidor (predeterminado 20, mínimo 1). Los enlaces y los archivos subidos comparten el límite entre todas las personas; los emojis y stickers nativos están excluidos. Reinicia el bot después de cambiarlo. Reducir el límite conserva las expresiones existentes y permite editar y eliminar, pero bloquea las adiciones hasta que el recuento caiga por debajo del límite.
3. Ejecuta
Section titled “3. Ejecuta”bun run devCuando 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 la
Guía rápida para conocer los pasos.
Usa bun run launch en lugar de bun run dev si quieres que los servidores locales opcionales (SearXNG, Crawl4AI,
TTS/STT local) se inicien junto al bot:
bun run launch --searxng --crawl4aibun run launch --help # see all flagsExtras 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 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:
pgvector : memoria de documentos/RAG
Section titled “pgvector : memoria de documentos/RAG”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:
# Debian/Ubuntu, e.g. for PostgreSQL 16sudo apt-get install -y postgresql-16-pgvectorLuego habilítala una vez en tu base de datos. Conéctate con psql usando los valores POSTGRES_* de tu
.env; te pedirá POSTGRES_PASSWORD:
# Native / host psql (substitute your own POSTGRES_USER and POSTGRES_DB):psql -h localhost -p 5432 -U tomori -d tomodb
# Or, if the database runs in the Docker container from step 2:docker exec -it tomori-db psql -U tomori -d tomoriUna 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 Mantenimiento y copias de seguridad 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
Section titled “Recursos del tokenizador”La generación de texto de NovelAI y el sesgo de logit según el modelo necesitan recursos de tokenizador locales:
bun run setup:tokenizersAlgunas familias (por ejemplo, Gemma) están restringidas y requieren un token de HuggingFace después de aceptar su licencia:
# Windows (PowerShell)$env:HF_TOKEN="hf_xxx"; bun run setup:tokenizers
# macOS/LinuxHF_TOKEN=hf_xxx bun run setup:tokenizersLa falta de recursos desactiva el sesgo de logit opcional. La generación de texto de NovelAI requiere sus tres familias de tokenizadores y devuelve un error de configuración si faltan o no son válidas. Estas familias utilizan definiciones públicas MIT fijadas y no necesitan un token de Hugging Face. Para instalar únicamente esas familias:
bun run setup:tokenizers --family novelai_nerdstash_v2bun run setup:tokenizers --family novelai_llama3bun run setup:tokenizers --family novelai_glmEl descargador escribe en el directorio tokenizers/ del repositorio. Si TOKENIZER_ASSET_DIR apunta a otro lugar, copia allí los directorios de familias descargados. Reinicia TomoriBot después de instalar o reparar recursos, porque el tiempo de ejecución almacena en caché los errores de carga.
El respaldo seguro de fetch_url y el respaldo de web_search de DuckDuckGo se ejecutan dentro del proceso, por lo que ninguno necesita una 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 Mantenimiento y copias de seguridad.