Chat2DB

Un cliente de bases de datos y espacio de trabajo SQL con IA para desarrolladores, administradores de bases de datos, analistas y equipos de datos.

OtterMind%2FChat2DB | Trendshift
[![ModelScope][Modelscope-image]][Modelscope-url] [![Discord][discord-image]][discord-url] [![X][x-image]][x-url] [Modelscope-image]: https://img.shields.io/badge/modelscope-blue?style=flat-square\&logo=modelscope [Modelscope-url]: https://modelscope.cn/ [discord-image]: https://img.shields.io/badge/-Join%20us%20on%20Discord-%237289DA.svg?style=flat&logo=discord&logoColor=white [discord-url]: https://discord.gg/uNjb3n5JVN [x-image]: https://img.shields.io/badge/X-%40Chat2DB_AI-000000?style=flat&logo=x&logoColor=white [x-url]: https://x.com/Chat2DB_AI
README en inglés README en chino simplificado README en japonés README en español README en coreano
> 📣 **¡Novedades del equipo de Chat2DB!** > Acabamos de publicar como código abierto **[Nubase](https://github.com/ottermind/nubase)**, nuestra nueva capa de despliegue para aplicaciones nativas de inteligencia artificial. > Si Chat2DB le ayuda a gestionar datos con facilidad, Nubase le ayudará a desplegar sus herramientas y agentes de programación con IA sin complicaciones. > > Apoye nuestro trabajo de código abierto y **[dé una ⭐️ a Nubase en GitHub](https://github.com/ottermind/nubase)**. ## Comparación de funciones Community, Pro y Enterprise comparten las mismas funciones básicas del cliente de bases de datos. Las ediciones comerciales añaden IA oficial, almacenamiento en la nube, acceso multidispositivo, colaboración y gobierno sobre esa base, en lugar de sustituirla por otro motor de base de datos. | Función | Community | Pro (personal en línea) | Enterprise | | --- | --- | --- | --- | | Conexiones a fuentes de datos y gestión de credenciales | ✅ | ✅ | ✅ | | Plugins de bases de datos y exploración de metadatos | ✅ | ✅ | ✅ | | Edición, autocompletado, formato y ejecución de SQL | ✅ | ✅ | ✅ | | DDL/DML, gestión de objetos y edición de datos | ✅ | ✅ | ✅ | | Importación y exportación de datos | ✅ | ✅ | ✅ | | SQL guardado, historial y tareas | ✅ | ✅ | ✅ | | Paneles y gráficos | ✅ | ✅ | ✅ | | CLI y MCP | ✅ | ✅ | ✅ | | Modelos de IA personalizados | ✅ | ✅ | ✅ | | Créditos oficiales de IA e historial de chat en la nube | ❌ | ✅ | ✅ | | Sistema de cuentas e identidad | ❌ | ✅ | ✅ | | Nube y varios dispositivos | ❌ | ✅ | ✅ | | Fuentes de datos de equipo y activos compartidos | ❌ | ❌ | ✅ | | Miembros y roles | ❌ | ❌ | ✅ | | Permisos, aprobaciones y auditoría | ❌ | ❌ | ✅ | | Contexto de datos de la organización y base de conocimiento empresarial | ❌ | ❌ | ✅ | ## Descarga e instalación Chat2DB es una aplicación multiplataforma compatible con Windows, macOS y Linux. Puede descargar Chat2DB desde los enlaces siguientes: - [Descargar la versión Pro](https://chat2db.ai/download) - [Descargar Community (Source Available)](https://github.com/OtterMind/Chat2DB/releases) ## Límite de seguridad de Community Edition > [!WARNING] > Chat2DB Community es una aplicación para un solo usuario y de uso local. No > proporciona cuentas de usuario, aislamiento entre inquilinos ni límites de > autorización entre varios usuarios. Mantenga el servicio HTTP enlazado a > `127.0.0.1` o `::1` y no lo exponga directamente a otros usuarios ni a redes > que no sean de confianza. > > Los controladores JDBC personalizados son código Java ejecutable. Instálelos > solo desde fuentes de confianza. Los archivos de configuración, archivos > comprimidos, archivos SQL, contenidos de bases de datos y respuestas de IA > importados siguen siendo datos no confiables. Consulte la [Política de > seguridad](SECURITY.md) para conocer el límite de confianza completo y el > proceso de notificación de vulnerabilidades. ## Instalación de Community Edition con Docker ### Requisitos del sistema Antes de instalar Chat2DB, asegúrese de que el sistema cumpla los requisitos siguientes: - Docker 19.03.0 o posterior - Docker Compose 2.0.0 o posterior (Compose V2) - CPU >= 2 núcleos - RAM >= 4 GiB ```bash # Ejecútelo una vez desde un checkout del repositorio. Las ejecuciones posteriores reutilizan la misma clave válida. ./script/security/init-community-encryption-key.sh docker run --detach \ --name chat2db-community \ --restart unless-stopped \ --publish 127.0.0.1:10825:10825 \ --volume "$HOME/.chat2db-community-docker:/root/.chat2db-community" \ --env CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE=/run/secrets/chat2db-community-encryption.key \ --volume "$HOME/.config/chat2db-community/encryption.key:/run/secrets/chat2db-community-encryption.key:ro" \ chat2db/chat2db:latest docker logs --follow chat2db-community ``` Abra `http://localhost:10825`. Para actualizar el contenedor, descargue la nueva imagen, elimine el contenedor anterior y vuelva a ejecutar el comando. Chat2DB Community 5.3.0 utiliza el directorio independiente `/root/.chat2db-community`. No migra automáticamente los datos de imágenes anteriores que utilizaban `/root/.chat2db`. Conserve `~/.config/chat2db-community/encryption.key` entre reconstrucciones del contenedor y haga una copia de seguridad por separado. Si la sustituye o la pierde, las contraseñas de fuentes de datos y las claves API de modelos de IA guardadas anteriormente dejarán de ser legibles. El inicio con un valor de `chat2db.mode` distinto de `DESKTOP`, incluido el inicio web/headless habitual, falla si no se proporciona una clave válida. El repositorio también incluye una definición de Compose: ```bash ./script/security/init-community-encryption-key.sh docker compose --file docker/docker-compose.yml up --detach ``` `docker run` guarda los datos en `$HOME/.chat2db-community-docker`, mientras que Compose utiliza el volumen con nombre `chat2db-community-data`. Ambos métodos no comparten ni migran los datos automáticamente. ## Clave de cifrado de Community Chat2DB Community cifra las contraseñas de fuentes de datos y las claves API de modelos de IA configuradas por el usuario mediante AES-256-GCM. Ambas utilizan la misma clave de instalación con valores AAD autenticados independientes, por lo que el texto cifrado de un propósito no se puede descifrar como si perteneciera al otro. La clave debe ser Base64 válido y decodificarse exactamente en 32 bytes. El inicializador incluido genera el formato estándar con relleno: 44 caracteres Base64 terminados en `=`. Es material criptográfico, no una contraseña legible. Cree una vez el archivo de clave predeterminado desde un checkout del repositorio: ```bash ./script/security/init-community-encryption-key.sh ``` La ruta predeterminada es `~/.config/chat2db-community/encryption.key`. Para utilizar otra ruta, pásela al script y configure la misma ruta al iniciar Chat2DB: ```bash ./script/security/init-community-encryption-key.sh /secure/path/chat2db-community.key java -Dloader.path=chat2db-community-server/chat2db-community-start/target/lib \ -Dchat2db.runtime.mode=community \ -Dchat2db.mode=WEB \ -Dchat2db.gui=false \ -Dchat2db.network.status=OFFLINE \ -Dchat2db.community.encryption-key-file=/secure/path/chat2db-community.key \ -Dserver.address=127.0.0.1 \ -Dserver.port=10825 \ -jar chat2db-community-server/chat2db-community-start/target/chat2db-community.jar ``` El script necesita `openssl`. La prioridad para seleccionar la ruta del archivo es: el argumento posicional, `CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE` y, por último, la ruta predeterminada. El script reutiliza un archivo normal válido, rechaza enlaces simbólicos y archivos que no sean normales, y se niega a sobrescribir un archivo no válido. Mantenga la clave legible únicamente por el propietario del proceso de Chat2DB, consérvela entre actualizaciones y reconstrucciones del contenedor, y haga una copia de seguridad independiente del almacenamiento de las fuentes de datos. La configuración de la clave se resuelve en este orden: 1. Propiedad JVM `chat2db.community.encryption-key` que contiene la clave Base64. 2. Variable de entorno `CHAT2DB_COMMUNITY_ENCRYPTION_KEY` que contiene la clave Base64. 3. Propiedad JVM `chat2db.community.encryption-key-file` que contiene la ruta del archivo de clave. 4. Variable de entorno `CHAT2DB_COMMUNITY_ENCRYPTION_KEY_FILE` que contiene la ruta del archivo de clave. 5. Archivo predeterminado `~/.config/chat2db-community/encryption.key`. El primer valor configurado es el que se utiliza. Un valor vacío, Base64 mal formado, una clave que no se decodifica en 32 bytes o un archivo de clave no válido provocan un error de inicio en vez de continuar con el origen siguiente. Se recomienda configurar un archivo porque evita incluir el valor de la clave directamente en los argumentos del proceso o en las variables de entorno. La creación automática del archivo de clave depende de `chat2db.mode`, no de `chat2db.gui`. El modo Community Desktop (`chat2db.runtime.mode=community` con `chat2db.mode=DESKTOP`) crea el archivo de clave seleccionado si no hay una clave en línea configurada y el archivo no existe. Cualquier modo que no sea Desktop, incluido el inicio web/headless habitual, nunca crea una clave que falte y genera un error hasta que se proporcione o inicialice una clave válida. La clave resuelta se almacena en caché durante la vida del proceso, por lo que los cambios en la configuración requieren reiniciar la aplicación. Si se sustituye o se pierde la clave, las contraseñas de fuentes de datos y las claves API de modelos de IA guardadas anteriormente dejan de ser legibles. ## Desarrollo ### Entorno de ejecución - Entorno de ejecución de Java: Eclipse Temurin 17 - Entorno de ejecución de Node.js: Node.js 18.17.0 o posterior - Maven 3.8 o posterior ### Clonar el repositorio localmente ```bash git clone git@github.com:OtterMind/Chat2DB.git ``` ### Depuración del frontend Use Yarn con el archivo de bloqueo incluido en el repositorio. ```bash cd Chat2DB/chat2db-community-client yarn install --frozen-lockfile yarn run start:community:hot ``` ### Depuración del backend ```bash cd Chat2DB mvn -B clean package -Dmaven.test.skip=true -Dchat2db.finalName=chat2db-community \ -f chat2db-community-server/pom.xml \ -pl chat2db-community-start -am ./script/security/init-community-encryption-key.sh java -Dloader.path=chat2db-community-server/chat2db-community-start/target/lib \ -Dchat2db.gui=false \ -Dchat2db.runtime.mode=community \ -Dchat2db.mode=WEB \ -Dchat2db.network.status=OFFLINE \ -Dchat2db.community.encryption-key-file="$HOME/.config/chat2db-community/encryption.key" \ -Dserver.address=127.0.0.1 \ -Dserver.port=10825 \ -Dspring.profiles.active=dev \ -jar chat2db-community-server/chat2db-community-start/target/chat2db-community.jar ``` ### Compilar una imagen de Docker local ```bash ./docker/docker-build.sh 5.3.0 chat2db/chat2db:5.3.0 ``` ## Contribuciones Agradecemos los informes de errores, las solicitudes de funciones, las mejoras de documentación, los comentarios sobre pruebas y las pull requests de la comunidad. Antes de abrir una incidencia o enviar una pull request, lea nuestra [Guía de contribución](./CONTRIBUTING.md). Explica cómo informar de errores, sugerir mejoras y facilitar la revisión de contribuciones por parte de los mantenedores. - Para errores y solicitudes de funciones, utilice [GitHub Issues](https://github.com/OtterMind/Chat2DB/issues). - Para preguntas, ayuda de configuración y debates abiertos, utilice [GitHub Discussions](https://github.com/OtterMind/Chat2DB/discussions). - Si su pull request está relacionada con una incidencia, incluya el enlace en su descripción. ## Contacto - Correo electrónico: Chat2DB@ch2db.com - Discord: [Únase a nuestro servidor de Discord](https://discord.gg/uNjb3n5JVN) - X: [@Chat2DB_AI](https://x.com/Chat2DB_AI) - YouTube: [Canal de Chat2DB](https://www.youtube.com/@chat2db.tutorial) - GitHub: [Chat2DB en GitHub](https://github.com/OtterMind/Chat2DB) ## Agradecimientos Gracias a todas las personas que han contribuido a Chat2DB. Colaboradores de Chat2DB ## Historial de estrellas Gráfico del historial de estrellas ## Licencia La versión 5.3.0 y posteriores de Chat2DB Community están disponibles bajo los [términos de licencia de este repositorio](./LICENSE). Se trata de una licencia de código disponible basada en Apache License 2.0 con condiciones adicionales. Las versiones de Chat2DB publicadas antes de la 5.3.0, incluida la 0.3.7 y las etiquetas históricas anteriores, siguen estando disponibles bajo Apache License 2.0.