在Ubuntu服务器以”本地源码全模块”方式部署xiaozhi-esp32-server

安装MySQL数据库

Ubuntu服务器上安装MySQL数据库,我在之前的文章中有专门谈过,我们本文重新复习下,依然以非docker的方式来安装MySQL数据库

安装MySQL

更新到最新版本

sudo apt update

安装mysql-server

sudo apt-get install mysql-server

检查MySQL状态

sudo systemctl status mysql

为root用户设置密码

因为是全新安装的 MySQL,可能不需要密码即可使用 sudo 登录

sudo mysql

切换到 MySQL 数据库:

USE mysql;

在 MySQL 5.7 及更高版本

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

刷新权限表

FLUSH PRIVILEGES;

设置密码之后如果root用户依然可以通过mysql -u root命令无密码登陆,我们可以检查是否由 auth_socket 插件导致的

mysql -u root
USE mysql;
SELECT user, host, plugin FROM user WHERE user = 'root';

输出中,如果 plugin 列显示的是 auth_socket,说明 root 用户通过 auth_socket 插件进行身份验证,不需要密码。
这时候为了安全,我们需要将身份验证插件改为 mysql_native_password 或 caching_sha2_password。执行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '你的密码';

重新刷新权限

FLUSH PRIVILEGES;

新建非root用户

CREATE USER 'newUser'@'localhost' IDENTIFIED BY 'newPassword';
GRANT ALL PRIVILEGES ON *.* TO 'newUser'@'localhost';
FLUSH PRIVILEGES;

其中:newUser是你新用户的名字,newPassword是你新用户的密码;日常使用可以用该用户进行操作,增强安全性;

退出登陆数据库

EXIT;

启动MySQL服务

确保MySQL服务已运行:

sudo systemctl start mysql # 启动服务
sudo systemctl status mysql # 检查状态

连接到MySQL服务器

使用MySQL命令行客户端登录:

mysql -u root -p

-u root:以root用户身份登录(可替换为其他用户名)。

-p:提示输入密码(密码默认为空或安装时设置的密码)。

执行创建数据库的SQL命令

粘贴并执行以下命令:

CREATE DATABASE xiaozhi_esp32_server 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

成功后提示:Query OK, 1 row affected

验证数据库是否创建

SHOW DATABASES;

确认输出列表中包含 xiaozhi_esp32_server

重置root密码(非必要步骤)

假如您是之前就安装过MySQL,但是忘记了root密码的话(比如我),可以参考如下的重置密码的流程(适合远程SSH连接到服务器的用户场景)!

1. 修改 MySQL 配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在 [mysqld] 区块下添加:

skip-grant-tables

2. 重启 MySQL

sudo systemctl restart mysql

3. 修改密码(无需密码登录)

mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
EXIT;

4. 恢复配置文件并重启

删除 skip-grant-tables,然后:

sudo systemctl restart mysql

验证密码是否生效

mysql -u root -p

输入新密码,确认登录成功。

安装redis

我们同样以非docker的方式在Ubuntu服务器安装redis服务

一、安装 Redis

sudo apt update
sudo apt install redis-server -y

二、启动 Redis 服务

sudo systemctl enable --now redis-server  # 启动并设置开机自启

三、验证 Redis 运行

sudo systemctl status redis-server

正常状态应显示 active (running),类似:

● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since ...

四、检查 Redis 端口监听

ss -tuln | grep 6379

正常应显示 Redis 监听 0.0.0.0:6379 或 127.0.0.1:6379

五、若需配置远程访问(本教程中不需要该步骤!只做知识备注)

编辑配置文件(根据你的需求):

sudo vim /etc/redis/redis.conf

修改以下参数后重启服务:

bind 0.0.0.0
protected-mode no
sudo systemctl restart redis-server

六、停止/卸载 Redis(本教程中不需要该步骤!只做知识备注)

假如你想卸载Redis,可以执行如下的操作

# 停止服务
sudo systemctl stop redis

# 卸载 Redis(Ubuntu/Debian)
sudo apt purge redis-server -y

# 卸载 Redis(CentOS)
sudo yum remove redis -y

运行manager-api程序

安装 JDK21 并设置环境变量

安装 JDK21

# 更新软件包列表
sudo apt update
sudo apt install openjdk-21-jdk

设置 JDK 环境变量(这一步我没做好像也没影响)

# 查找 JDK21 安装路径(通常为 /usr/lib/jvm/java-21-openjdk-amd64)
sudo update-alternatives --config java

# 将以下内容添加到 ~/.bashrc 或 ~/.zshrc(根据实际路径修改)
echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc

# 使配置生效
source ~/.bashrc

# 验证安装
java -version

安装 Maven 并设置环境变量

安装 Maven

# 安装默认 Maven
sudo apt install maven
# 验证安装
mvn -version

设置 Maven 环境变量(这一步我也没做)

# 编辑 ~/.bashrc 或 ~/.zshrc
echo 'export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc

# 使配置生效
source ~/.bashrc

# 验证安装
mvn -version

配置数据库和 Redis 连接

修改 application-dev.yml

文件路径在/xiaozhi-esp32-server/main/manager-api/src/main/resources目录下面

src/main/resources/application-dev.yml中配置MySQL数据库连接信息

spring:
  datasource:
    username: root
    password: 123456

src/main/resources/application-dev.yml中配置Redis连接信息

spring:
    data:
      redis:
        host: localhost
        port: 6379
        password:
        database: 0

运行主程序

可以通过 Maven 直接运行

首先要cd到/xiaozhi-esp32-server/main/manager-api的目录下面,根据你自己的实际情况

# 进入项目根目录(包含 pom.xml 的目录)
cd /home/caovan/caovan_ai/xiaozhi-esp32-server/main/manager-api
# 清理并运行 Spring Boot 项目
mvn clean spring-boot:run

当你看到输出日志时,说明你的manager-api启动成功了。

2025-xx-xx 22:11:12.445 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure - Init DruidDataSource
2025-xx-xx 21:28:53.873 [main] INFO  xiaozhi.AdminApplication - Started AdminApplication in 16.057 seconds (process running for 17.941)
http://localhost:8002/xiaozhi/doc.html

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

运行manager-web程序

安装nodejs

# 1. 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# 2. 添加 NodeSource 仓库(以 20.x LTS 版本为例)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# 3. 安装 Node.js(包含 npm)
sudo apt-get install -y nodejs

# 4. 验证安装
node -v # 应显示 v20.x.x
npm -v # 应显示 10.x.x

安装项目包

# 首先要cd到manager-web目录下,具体的路径根据你自己的实际情况
cd /home/caovan/caovan_ai/xiaozhi-esp32-server/main/manager-web

npm install

启动项目

npm run serve

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

这一步运行完成之后,我们就可以Ubuntu服务器的IP地址+8001端口来访问智控台后台管理界面了!

浏览器访问http://服务器ip:8001,就可以打开如下的管理后台页面

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

注册第一个用户。第一个用户即是超级管理员,以后的用户都是普通用户。普通用户只能绑定设备和配置智能体;超级管理员可以进行模型管理、用户管理、参数配置等功能。

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

运行xiaozhi-server程序

安装Python环境

本项目使用conda管理依赖环境。

conda remove -n xiaozhi-esp32-server --all -y
conda create -n xiaozhi-esp32-server python=3.10 -y
conda activate xiaozhi-esp32-server

# 添加清华源通道
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

conda install libopus -y
conda install ffmpeg -y

一步步执行上述的每行命令,每一步执行完后,都检查一下输出的日志,查看是否成功。

安装本项目依赖

# 首先要cd到xiaozhi-server目录,具体路径根据自己的实际情况
cd /home/caovan/caovan_ai/xiaozhi-esp32-server/main/xiaozhi-server

# 激活虚拟环境
conda activate xiaozhi-esp32-server

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt

下载语音识别模型文件

本项目语音识别模型,默认使用SenseVoiceSmall模型,进行语音转文字。因为模型较大,需要独立下载,下载后把model.pt 文件放在models/SenseVoiceSmall 目录下。

推荐从魔搭社区下载

阿里魔塔下载SenseVoiceSmall

配置项目文件

复制“config_from_api.yaml”这个文件到“data”目录中,并且重命名为“.config.yaml”

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

然后修改“.config.yaml”这文件中的“secret”的值

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

这个值的获取方法如下:

首先登录到智控台的管理员后台,点击“参数字典”-“参数管理”

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

第一行“server.secret”的参数值就是我们需要的“secret”的值,我们复制这个值然后把它填入到“.config.yaml”这文件中

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

修改之后的“.config.yaml”如下:

在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server

运行项目

# 确保在xiaozhi-server目录下执行
conda activate xiaozhi-esp32-server
python app.py

如果你能看到,类似以下日志,则是本项目服务启动成功的标志。

25-02-23 12:01:09[core.websocket_server] - INFO - Server is running at ws://xxx.xx.xx.xx:8000/xiaozhi/v1/
25-02-23 12:01:09[core.websocket_server] - INFO - =======上面的地址是websocket协议地址,请勿用浏览器访问=======
25-02-23 12:01:09[core.websocket_server] - INFO - 如想测试websocket请用谷歌浏览器打开test目录下的test_page.html
25-02-23 12:01:09[core.websocket_server] - INFO - =======================================================
在Ubuntu服务器以"本地源码全模块"方式部署xiaozhi-esp32-server
要正常使用的话,项目运行之后我们还需要完善智控台中“模型配置”中的需要用到的模型配置,比如填写自己的api-key等;

原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/zaiubuntufuwuqiyibendeyuanmaquanmokuaifangshibushuxiaozhi-esp32-server/.html

Like (0)
Donate 微信扫一扫 微信扫一扫
朋远方的头像朋远方
Previous 2025年3月16日 上午10:54
Next 2023年9月27日 下午11:35

相关推荐

发表回复

Please Login to Comment