Chat2DB 安装与部署完全指南:桌面、Docker、源码三种方式跑起来
【免费下载链接】Chat2DBChat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.项目地址: https://gitcode.com/GitHub_Trending/ch/Chat2DB
Chat2DB 是一款免费、跨平台的数据库客户端和 SQL 工作台,可连接 MySQL、PostgreSQL、Oracle、Redis 等 40 余种数据库,还支持接入自己的 AI 模型来生成、解释和优化 SQL。本文围绕 Chat2DB 部署展开,按「桌面客户端 / Docker 容器 / 源码编译」三条路径给出完整操作,适合个人开发、服务器运维和想二开定制的同学各取所需。
先选对 Chat2DB 部署方式
三种方式的核心差别在于「给谁用、跑在哪」:
| 使用场景 | 推荐方式 | 说明 |
|---|---|---|
| 👤 个人电脑日常开发 | 桌面客户端 | 各平台均有安装包,装完即用,无需准备任何环境 |
| 🖥 服务器上跑、浏览器访问 | Docker 容器 | 一个镜像加一个数据卷即可,默认端口 10825 |
| 🔧 二次开发、调试或构建自定义镜像 | 源码编译 | 需要 JDK 17、Node.js 18.17+、Maven 3.8+ |
选型前有三件事必须知道:
- 桌面版与 Docker/Web 版数据目录独立,互不共享,别指望两边看到同一套连接。
- Docker 方式本质是单用户服务,没有账号体系和权限边界,端口建议只绑定
127.0.0.1或可信内网,不要直接暴露公网。 - Docker 方式必须先生成一个加密密钥,它用来加密数据库密码和 AI 模型 API Key,丢了就再也解不开旧数据。
硬件门槛不高:2 核 CPU、4GB 内存、2GB 可用磁盘即可运行,追求体验建议 4 核 8GB。
桌面客户端安装:Windows、macOS、Linux 各有路径
这是最省事的路线,三个平台都有对应安装包,从项目发布页面按系统下载即可。
- Windows:运行
.exe安装程序,建议以管理员身份执行,接受默认安装路径,完成后桌面会有快捷方式。 - macOS:打开
.dmg,把 Chat2DB 拖进 Applications;首次启动若提示开发者未验证,到系统设置里放行即可。 - Linux:推荐 AppImage,免安装、解压即用,拿到文件后补一个执行权限就行:
# 添加执行权限后直接运行 chmod +x Chat2DB-*.AppImage ./Chat2DB-*.AppImage桌面模式首次启动会自动生成缺失的加密密钥,不需要任何手工配置。启动后添加第一个数据库连接就可以开始写 SQL 了。
老版本发行版(如较旧的 Debian)上 AppImage 打不开,通常是缺 fuse 库,补装一下即可:
# Debian / Ubuntu sudo apt-get install -y libfuse2 # CentOS / RHEL sudo yum install fuse-libs用 Docker 跑 Chat2DB 容器的最快方式
要求 Docker 19.03+,机器 2 核 4G 起步。官方镜像为chat2db/chat2db:latest,容器内监听 10825 端口。
第一步:生成加密密钥。这个文件是全部敏感数据的唯一钥匙,写在~/.config/chat2db-community/encryption.key。在克隆了仓库的机器上执行一次即可,重复执行不会覆盖已有的有效密钥:
git clone https://gitcode.com/GitHub_Trending/ch/Chat2DB cd Chat2DB ./script/security/init-community-encryption-key.sh⚠️ 请把这个文件单独备份。后续升级镜像、重建容器时它必须原样保留,否则之前保存的数据库密码和 AI 密钥将永久无法解密。
第二步:启动容器。下面的docker run把端口绑定到 127.0.0.1(仅本机可访问),应用数据挂到宿主机目录,密钥文件以只读方式挂进容器:
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启动后浏览器打开http://localhost:10825。
如果习惯用 Compose,仓库自带了一份 docker/docker-compose.yml:数据存在命名卷chat2db-community-data里,端口默认绑 127.0.0.1,密钥通过环境变量指定路径:
docker compose --file docker/docker-compose.yml up --detach注意:docker run挂的宿主目录和 Compose 的命名卷互不共享数据,两种方式选一种长期使用即可。
升级镜像时,拉新镜像、删旧容器、重新执行启动命令三步走。只要密钥文件和数据卷保持不动,连接配置会完整保留:
docker pull chat2db/chat2db:latest docker rm -f chat2db-communityChat2DB 源码部署:前后端编译全流程
适合二次开发、调试问题、或想把改动打成自定义镜像分发的场景。环境要求:
- JDK 17(推荐 Eclipse Temurin)
- Node.js 18.17.0 以上,前端工程 chat2db-community-client 必须用 Yarn 管理依赖
- Maven 3.8 以上
仓库后端位于 chat2db-community-server,由 start、web、domain、plugins 等多个模块组成。
前端:装依赖并起开发服务。--frozen-lockfile保证依赖版本与 lockfile 完全一致,开发模式带热更新,服务默认监听127.0.0.1:8889:
cd chat2db-community-client yarn install --frozen-lockfile yarn run start:community:hot后端:打包并以 Web 模式启动。下面这条 Maven 命令只构建 start 模块及其依赖(-pl ... -am),比全量构建省不少时间:
mvn -B clean package -Dmaven.test.skip=true -Dchat2db.finalName=chat2db-community \ -f chat2db-community-server/pom.xml \ -pl chat2db-community-start -am打包完成后生成密钥(若之前没做过),然后以 Web 模式运行——关闭 GUI、离线模式、监听 127.0.0.1:10825:
./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构建本地 Docker 镜像。如果要把编译产物带到别的机器部署,可以直接用仓库里的 docker-build.sh,它会自动完成前端产物拷贝、jar 组装和镜像构建:
./docker/docker-build.sh 5.3.0 chat2db/chat2db:5.3.0镜像的构建逻辑见 docker/Dockerfile:基于 Temurin 17 JRE,固定暴露 10825 端口,数据卷为/root/.chat2db-community。
Chat2DB 部署常见问题排查
端口 10825 被占用:先用ss -tlnp | grep 10825找到占用进程;如果腾不出,就改宿主机侧端口,例如把 publish 写成127.0.0.1:10826:10825,容器内端口始终是 10825,不用改。
容器起不来就退出:最常见原因是没提供加密密钥。Web/无头模式绝不会自动建密钥,读不到有效密钥就会拒绝启动。检查密钥文件是否存在、挂载路径是否正确、是否真的可读。
升级后数据库密码全部丢失:如果密钥文件被删或被新密钥替换,旧数据依然躺在磁盘上,但密码和 AI 密钥已无法解密。恢复备份的密钥文件是唯一出路,这也是要求单独备份的原因。
AppImage 报缺少共享库:多见于老发行版,缺 fuse 库。Debian 系装libfuse2,RHEL 系装fuse-libs。
内存紧张:给 JVM 限个上限,比如 java 启动命令加-Xms1g -Xmx2g,docker 场景则在docker run里加--memory 2g之类限制,避免服务吃满宿主机内存。
部署选型:你的场景该用哪种
- 个人日常开发,装桌面客户端,零配置、开箱即用。
- 服务器常驻、浏览器访问,用 Docker Compose,端口绑 127.0.0.1,密钥文件单独备份。
- 要改代码、调问题或发内部镜像,走源码编译,再用 docker-build.sh 产出镜像。
- 无论哪种方式,把
~/.config/chat2db-community/encryption.key和数据目录分开备份——密钥一旦丢失,连接信息里的密码就找不回来了。
【免费下载链接】Chat2DBChat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries. Available on desktop, web, Docker, and CLI, with MCP support.项目地址: https://gitcode.com/GitHub_Trending/ch/Chat2DB
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考