如何在本地部署小智服務器:從源碼到全模塊運行的詳細步驟

小智聊天機器人本地后臺服務器源碼全模塊部署

作者:林甲酸 -不是小女子也不是女漢子 是大女子
更新日期:2025年4月29日

我覺得新的控制臺好看耶

🎯 前言:為什么要寫這篇教程?

上周按照蝦哥小智服務器的教程去部署本地后臺,我用的是本地源碼運行全模塊的方法去部署,雖然照著文字教程去部署了,但是教程一看要安裝好多東西啊,我是一個硬件的,對于服務器這塊也不熟悉,一路坎坎坷坷,還好借助各類gpt解決了問題。感謝AI工具🙏。如果你也跟我一樣看著教程有些下不去手,或許你可以參考我這篇文章開始動手,幫您少走一步彎路。:
在這里插入圖片描述

本文將用最直白的語言+圖解,帶你完成全模塊部署!
注:部署過程也不是一次就能搞定的,出現問題可以備注交流,文章是經過驗證后才寫的,如果錯誤請指正,歡迎交流!


采用本地源碼運行全模塊的好處是,你可以體驗最全的小智大模型各類工具。
聲明,本文參考了:
小智源碼文檔
本地源碼運行全模塊步驟
小智硬件源碼
下面跟著蝦哥本地源碼運行全模塊的流程來吧!

📦 環境總覽

組件版本用途
Docker最新版容器化部署數據庫
MySQL8.0+數據存儲
Redis7.0+緩存服務
JDK21后端運行環境
Python3.10AI模型推理

🔧 一、安裝MySQL數據庫

1. 先安裝Docker

通過docker安轉MySQL。這里因為我是沒有MySQL,所以我采取了使用Docker安裝。我用的Docker是在官方下載的,我并沒有按照他上面給的方式去安裝,感覺看的不清晰。
(1)安裝Docker我是win11系統,我選擇了第3個。
在這里插入圖片描述
(2)安裝的時候記得要關閉所有殺毒軟件!關閉所有防火墻!安裝的時候使用管理員運行.exe文件,安裝的時候按照默認選擇。
在這里插入圖片描述

(2)安裝好后關閉,然后重新管理員運行打開軟件。進入界面時Accept一下條款,然后Skip跳過介紹。

在這里插入圖片描述
(3)Docker設置。這一步是在 Docker Desktop 里開啟 WSL 2 集成,目的是讓 Docker 可以直接在你的 WSL 2(例如 Ubuntu)環境中運行容器。點擊設置->Resources->WSL integration,然后打開Ubuntu的按鈕,為了讓你的 Ubuntu WSL 環境可以直接用 Docker。
在這里插入圖片描述

這里我當時安裝的時候沒有出現Ubuntu的按鈕,是因為當時我的系統尚未安裝任何WSL 2發行版。如果你沒有遇到這個問題可以跳過這里。解決方法:
① 安裝WSL 2發行版

wsl –install

②將發行版設置為WSL 2模式

wsl --set-version Ubuntu 2

③驗證是否成功

wsl --list –verbose

確認輸出中包含Ubuntu且版本為WSL 2。然后在關閉、管理員重啟Docker,就可以看到這里有這個Ubuntu選項了。
(4)接下來。在Docker Desktop 中設置 磁盤鏡像存儲位置,Docker Desktop 會把所有的數據(包括鏡像、容器、卷)存在 C 盤,如果不改路徑,時間長了 C 盤可能爆滿。我選擇了D盤。然后點擊Apply&restart。
在這里插入圖片描述等待安裝好后,管理員打開Docker,這樣就安裝好這個大部頭。

2. 通過docker安轉MySQL

安裝好 Docker 后,確保Docker打開的狀態。你可以通過 命令行終端PowerShell,通過docker安裝mysql。
在這里插入圖片描述
這個時候你可以看到在Docker中看到當前系統正在運行一個MySQL容器
在這里插入圖片描述

🔧 二、安裝redis

如果還沒有Redis,你可以通過docker安裝redis
在這里插入圖片描述
回車之后,可以看到redis啟動運行
在這里插入圖片描述

🔧 三、運行manager-api程序(后端服務)

1. 安裝JDK21

① JDK下載網址:Java 。我是window系統行4位。解壓后,可安裝到D盤。D:\JDK21_0_6
在這里插入圖片描述
② 設置JDK的path環境變量。首先是Path環境變量設置。在“系統變量”區域找到并選中 Path,然后點擊“編輯”。 在編輯窗口中,點擊“新建”,添加以下JDK的安裝路徑
在這里插入圖片描述
③ 設置JDK的JAVA_HOME 環境變量。在“系統變量”部分點擊“新建”, 變量名:JAVA_HOME,變量值:JDK 安裝路徑。
在這里插入圖片描述
④ 可以打開PowerShell,驗證 JDK 是否安裝成功

java -version

如果返回類似下面的結果,說明 JDK 已正確安裝

java version "21" 2025-03-21
Java(TM) SE Runtime Environment (build 21+36-2239)
Java HotSpot(TM) 64-Bit Server VM (build 21+36-2239, mixed mode)

2.安裝Maven

① Maven 壓縮包(下載 Maven 的二進制 zip 文件)。我安裝到D:\JDK21_0_6
在這里插入圖片描述
②解壓 Maven 到 D 盤,例如:D:\Apache\Maven。
在這里插入圖片描述
③設置環境變量
? MAVEN_HOME:指向你解壓 Maven 的目錄(例如:D:\Apache\Maven)。
? Path:將 Maven 的 bin 目錄添加到 Path 環境變量中(例如:D:\Apache\Maven\bin)。

3.安裝Java環境相關插件

打開 VSCode,安裝 Java 插件(例如:Java Extension Pack)以支持 Java 開發
在這里插入圖片描述

4.使用Vscode編程工具加載manager-api模塊

首先你需要去下載源碼
蝦哥源碼地址 解壓后按照蝦哥的教程你需要“把它重命名成xiaozhi-esp32-server,我把工程放在了E盤,然后使用VScode打開路徑“E:\xiaozhi-esp32-server\main\manager-api”。
①按照蝦哥提供的配置,將數據庫連接信息填入

src/main/resources/application-dev.yml中:
spring:datasource:username: root
password: 123456

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

spring:data:redis:host: localhostport: 6379password:database: 0

在這里插入圖片描述

5.運行manager-api程序

一定要確保你的Docker是打開的,這倆是在運行的情況下,再去運行程序。
在這里插入圖片描述
當你看到輸出日志時,說明你的manager-api啟動成功了。
在這里插入圖片描述

🔧四、運行manager-web程序(前端控制臺)

1. 安裝nodejs

(下面的步驟都是按照蝦哥的教程來的)
nodejs的安裝地址:Node.js — 在任何地方運行 JavaScript

2. 使用Vscode編程工具加載manager-web模塊

①終端命令進入manager-web目錄下。

npm install

② 啟動

npm run serve

在這里插入圖片描述
③ 到這一步,運行成功后,打開智控臺,鏈接:http://127.0.0.1:8001,注冊第一個用戶。第一個用戶即是超級管理員,以后的用戶都是普通用戶。然后在里面配置你的LLM密鑰。這一步可以去申請阿里或者智譜的密鑰,網上很多,我就不描述了。
在這里插入圖片描述
重要:注冊成功后,使用超級管理員賬號,登錄智控臺,在頂部菜單找到模型配置,然后在左側欄點擊大語言模型,找到第一條數據智譜AI,點擊修改按鈕, 彈出修改框后,將你注冊到的智譜AI的密鑰填寫到API密鑰中。然后點擊保存。然后窗口別關閉了。
注意:采用豆包語音識別請看,沒有可跳過這里。你如果使用豆包然后tts報錯的話,你應該是voice_type參數出錯了。別問我為啥知道…
如果你開通了豆包的語音識別,然后有這些參數
在這里插入圖片描述
你可以按照我這個參數去修改豆包的語音合成。
在這里插入圖片描述
然后要記得在外面這里音色管理修改參數編碼,根據你開通填的音色去修改
在這里插入圖片描述

🔧五、安裝Python環境

我按照蝦哥的教程使用 Conda 創建 Python 環境,這一步是為本地化運行的語音交互、設備通信、AI模型推理等關鍵功能提供隔離、穩定的Python運行時環境。因此需要先去安裝Anaconda。

1. 安裝清華鏡像源的Anaconda

盡量安裝Anaconda3-5.3.0后面的版本,python版本3.6。安裝我是安裝在D盤的
在這里插入圖片描述

2. 通過conda_prompt運行指令

(1) 使用管理員身份運行
在這里插入圖片描述
(2)執行命令

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-forgeconda install libopus -y
conda install ffmpeg -y

安裝libopus可能會出現如下報錯:
在這里插入圖片描述
你可以嘗試:指定conda-forge安裝
libopus主要在conda-forge倉庫中,可以指定從conda-forge安裝:

conda install -c conda-forge libopus -y

上面的命令都要一步一步執行下來。出現問題,及時問AI。
在這里插入圖片描述

🔧六、運行源碼依賴

1. 安裝依賴

# 繼續使用conda環境
conda activate xiaozhi-esp32-server
# 進入到你的項目根目錄,再進入main/xiaozhi-server
cd main/xiaozhi-server
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt

在這里插入圖片描述

🔧七、 下載語音識別模型文件

還是按照蝦哥的教程去下載語音識別模塊,然后下載后把model.pt文件放在models/SenseVoiceSmall目錄下線路 百度網盤下載SenseVoiceSmall 提取碼:qvna

🔧八、 配置項目文件

1. 復制server.secret參數

使用 超級管理員賬號 登錄系統管理后臺(智控臺),在頂部菜單找到參數管理(參數編碼為server.secret),找到列表中第一條數據,參數編碼是server.secret,它是隨機生成的,每次重新部署都會隨機生成,復制它到參數值。
在這里插入圖片描述

2. 配置.config.yaml文件

打開整一個源碼文件,進入xiaozhi-server目錄,檢查是否存在data文件夾,如果沒有data目錄,請手動創建。如果 data 目錄下沒有 .config.yaml 文件,執行以下操作:
將 xiaozhi-server 目錄下的 config_from_api.yaml 復制到 data 目錄。重命名復制的文件為 .config.yaml
在這里插入圖片描述
將復制的server.secret值粘貼到secret字段中。
在這里插入圖片描述

🔧九、 運行xiaozhi-esp32-server項目

1.運行本地服務端

在剛剛安裝依賴的環境下繼續執行

# 確保在xiaozhi-server目錄下執行
conda activate xiaozhi-esp32-server
python app.py

在這里插入圖片描述
如果出現上面的結果,表示你的server端已經部署好了。接下來就是跟小智硬件的結合。注意看返回的ws://xxx.xx.xx.xx:8000/xiaozhi/v1/,其中xxx.xx.xx.xx就是你本地的地址,后面都會用到。

2.硬件接口更新

接下來你可以去在智控臺更新硬件接口。
①使用超級管理員賬號,登錄智控臺,在頂部菜單找到參數管理,找到參數編碼是server.websocket,輸入你的Websocket接口。
②使用超級管理員賬號,登錄智控臺,在頂部菜單找到參數管理,找到數編碼是server.ota,輸入你的OTA接口。
不知道為啥我沒找到,所以我通過手動新增了這兩個參數
在這里插入圖片描述

🔧十、 小智硬件燒錄

打開小智的硬件源碼程序。

  1. OTA接口更新
http://你電腦局域網的ip:8002/xiaozhi/ota/
  1. Websocket接口更新
ws://你電腦局域網的ip:8000/xiaozhi/v1/

這里我是寫在Kconfig.projbuild文件里面,后面配置的時候會根據這個文件去更新。記得保存
在這里插入圖片描述
你可以點擊下方的設置那里,查看右邊配置有沒有更新到,沒有問題可以下載到小智硬件了。
在這里插入圖片描述
硬件燒錄成功后,根據屏幕播報的設備碼填寫到控制臺。點擊智能體管理,還沒新建智能體的話,就新建一個,然后填寫設備管理,綁定播報的6位驗證碼。
在這里插入圖片描述
在這里插入圖片描述
然后點擊硬件重啟設備。接下來就是見證奇跡的時候。
在這里插入圖片描述

總結:

通過上述步驟,你已經成功在本地部署了小智服務器。無論是后端服務的管理、前端控制臺的操作,還是語音交互與硬件控制的集成,都可以在本地環境中完成。這種部署方式給開發者提供了極大的靈活性,同時也幫助你更深入地理解整個系統的工作流程。希望本文能幫助你少走彎路,順利搭建起屬于自己的智能硬件系統。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78679.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

github開源項目添加開源協議,使用很簡單

直接在 GitHub 網頁上創建 進入你的 GitHub 倉庫 打開你的項目倉庫頁面(如 https://github.com/用戶名/倉庫名)。 點擊 "Add file" → "Create new file" 在倉庫主頁,點擊右上角的 "Add file" 按鈕&#xff…

8.idea創建maven項目(使用Log4j日志記錄框架+Log4j 介紹)

8.idea創建maven項目(使用Log4j日志記錄框架Log4j 介紹) 在 IntelliJ IDEA 的 Maven 項目中引入了 Log4j,并配置了日志同時輸出到控制臺和文件。 Log4j 提供了靈活的日志配置選項,可以根據項目需求調整日志級別、輸出目標和格式。 1. 創建 Maven 項目 …

【和春筍一起學C++】函數——C++的編程模塊

目錄 1. 原型句法 2. 函數分類 3. 函數參數之按值傳遞 4. 數組作為函數參數 在C中,要使用函數,必須要有這三個方面: 函數原型,函數原型描述了函數到編譯器的接口,函數原型一般放在include文件中。函數原型告訴編譯…

深挖Java基礎之:認識Java(創立空間/先導:Java認識)

今天我要介紹的是在Java中對Java的一些基本語法的認識與他們的運用,以及擬舉例子說明和運用場景,優勢和劣勢, 注:本篇文章是對Java的一些基本的,簡單的代碼塊的一些內容,后續會講解在Java中的變量類型&…

Python+Selenium+Pytest+Allure PO模式UI自動化框架

一、框架結構 allure-report:測試報告base:定位元素封裝data:數據log:日志文件page:頁面封裝文件夾report:緩存報告testcases:測試用例層utils:工具類run.py:執行文件 二…

博物館除濕控濕保衛戰:M-5J1R 電解除濕科技如何重塑文物守護的未來

在盧浮宮幽深的長廊里,達芬奇的《蒙娜麗莎》正經歷著一場看不見的戰爭——不是來自時間的侵蝕,而是空氣中無形的水分子。每一件文物都在與濕度進行著無聲的抗爭,這場抗爭關乎人類文明的延續。濕度,這個看不見的文物殺手&#xff0…

【嘉立創EDA】如何找到曲線和直線的交點,或找到弧線和直線的交點

文章路標?? :one: 文章解決問題:two: 主題內容:three: 參考方法be end..1?? 文章解決問題 操作環境:嘉立創EDA專業版 V2.2.38 本文使用嘉立創EDA,描述如何快速找到曲線和直線交點的方法,這里的曲線包括了弧線等。本文將此過程記錄,以供有需要的讀者參考。 2?? 主題…

大語言模型能否替代心理治療師的深度拓展研究:fou

大語言模型能否替代心理治療師的深度拓展研究 在科技初創企業和研究領域,大型語言模型(LLMs)用于替代心理健康服務提供者的應用備受關注。但研究人員通過對主要醫療機構治療指南的梳理回顧,并對當前 LLMs(如 gpt-4o)進行實驗評估后發現,LLMs 存在對心理疾病患者表達污名…

【linux】Chrony服務器

簡介 1.1 時間的重要性 由于 IT 系統中,準確的計時非常重要,有很多種原因需要準確計時: 在網絡傳輸中,數據包括和日志需要準確的時間戳 各種應用程序中,如訂單信息,交易信息等 都需要準確的時間戳 1.2 時區…

mysql查看哪些表的自增id已超過某個值

場景 想看哪些表數據比較大,如果用count 比較慢,同時表設計如果是自增,有沒有辦法一次查出自增id已超過某值的所有表呢。 方法 SELECT AUTO_INCREMENT,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA 庫名 AND AUTO_INCRE…

SiamMask原理詳解:從SiamFC到SiamRPN++,再到多任務分支設計

SiamMask原理詳解:從SiamFC到SiamRPN,再到多任務分支設計 一、引言二、SiamFC:目標跟蹤的奠基者1. SiamFC的結構2. SiamFC的局限性 三、SiamRPN:引入Anchor機制的改進1. SiamRPN的創新2. SiamRPN的進一步優化 四、SiamMask&#x…

SpringBoot終極形態:AI生成帶OAuth2鑒權的微服務模塊(節省20人日)

在數字化轉型的浪潮中,開發效率和質量是企業競爭力的關鍵要素。飛算 JavaAI 作為一款創新的 AI 工具,能在 Spring Boot 開發中,自動生成完整微服務模塊,極大提升開發效率。下面,我們就詳細介紹如何借助飛算 JavaAI,實現 Spring Boot 微服務模塊的自動化生成。 飛算 JavaAI 簡介…

Spring緩存注解深度實戰:3大核心注解解鎖高并發系統性能優化?

引言:緩存——高并發系統的“性能加速器”? 在互聯網應用中,數據庫查詢往往是性能瓶頸的核心。當每秒數千次的請求直接沖擊數據庫時,系統響應速度會急劇下降,甚至引發宕機風險。?緩存技術?應運而生,成為解決這一痛…

CSS元素動畫篇:基于當前位置的變換動畫(二)

基于當前位置的變換動畫(二) 前言旋轉效果類元素動畫搖擺動畫效果效果預覽代碼實現 搖晃動畫效果效果預覽代碼實現 螺旋旋轉效果預覽代碼實現 結語 前言 CSS元素動畫一般分為兩種:一種是元素基于當前位置的變換動畫,通過不明顯的…

Qt/C++開發監控GB28181系統/設備注冊/設備注銷/密碼認證/心跳保活/校時

一、前言 根據gb28181協議文檔,第一步就是需要實現設備的注冊,和onvif不同,gb是反過來的,設備端主動連接服務端,而onvif是服務端主動發出搜索,設備被動應答,包括后續的交互幾乎都是被動應答&am…

MATLAB 中的圖形繪制

一、線圖 plot 函數用來創建x和y值的簡單線圖。 x 0 : 0.05 : 30; %從0到30,每隔0.05取一次值 y sin(x); plot(x,y,LineWidth,2) %若(x,y,LineWidth,2)可變粗 xlabel("橫軸標題") ylab…

go語言八股文(五)

1.go的局部變量是分配在棧上還是在堆上 在Go語言中,局部變量的內存分配(棧或堆)由編譯器基于逃逸分析(escape analysis)來決定。以下是總結和具體示例: 棧上分配 當局部變量的生命周期嚴格限定在函數作用…

Gradients of Matrix-Matrix Multiplication in Deep Learning

Gradients of Matrix-Matrix Multiplication in Deep Learning 1. Matrix multiplication2. Derivation of the gradients2.1. Dimensions of the gradients2.2. The chain rule2.3. Derivation of the gradient ? L ? A \frac{ {\partial L} }{ {\partial \boldsymbol {\bo…

Spring Boot 框架簡介

? Spring Boot 框架簡介 1?? 🚀 快速構建 Spring Boot 能夠快速構建可直接運行的、企業級 Spring 應用。 2?? ?? “約定優于配置” 該框架采用"約定優于配置"理念,默認集成 Spring 平臺與主流第三方庫,開發者僅需簡單配置…

【Robocorp實戰指南】Python驅動的開源RPA框架

目錄 前言技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解核心作用講解關鍵技術模塊說明技術選型對比 二、實戰演示環境配置要求核心代碼實現案例1:網頁數據抓取案例2:Excel報表生成 運行結果驗證 三、性能對比測試方…