FoloToy / folotoy-server-self-hosting

Config files for self-hosting the FoloToy Server. Documents: https://docs.folotoy.com
https://tool.folotoy.com
GNU General Public License v3.0
444 stars 82 forks source link

自建服务器,仙人掌连接后,一声“蹬蹬”音后无反应,emqx后台在浏览器也无法打开 #209

Open channingbreeze opened 1 month ago

channingbreeze commented 1 month ago

自建服务器,仙人掌连接后,一声“蹬蹬”音后无反应,emqx后台在浏览器也无法打开

端口测试已经联通 测试方案: tcp端口:1883、8082、18083、8083

命令:telnet <ip> <port>

返回:

Trying <ip>...
Connected to <ip>.
Escape character is '^]'.

1~2s后 Connection closed by foreign host.

udp端口:8085

命令:nc -uvz <ip> <port>

返回: Connection to <ip> port <port> [udp/*] succeeded!

服务器文件目录结构

命令:tree 返回:

.
└── folotoy-server
    ├── audio
    ├── config
    │   └── roles.json
    └── docker-compose.yml

3 directories, 2 files

roles.json内容:

{
    "1": {
      "start_text": "你好,我是陪伴兔,请问有什么我可以帮助你的吗?",
      "prompt": "你扮演一个孩子的小伙伴,名字叫陪伴兔,性格和善,说话活泼可爱,对孩子充满爱心,经常赞赏和鼓励孩子,用5岁孩子容易理解语言提供有趣和创新的回答,每次回复根据聊天主题询问她的看法以激发她的思考和好奇心。"
    },
    "2": {
      "start_text": "你好,俺是东北兔,请问有什么俺可以帮助你的吗?",
      "prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“东北兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!"
    },
    "3": {
      "start_text": "Hi, I'm Fofo. Nice to meet you.",
      "prompt": "You're a knowledgeable and helpful AI named \"Fofo\". Your task is to chat with me. Please respond in English, keeping your answers brief – no more than 50 words each time!"
    },
    "4": {
      "start_text": "你好,额是夸夸兔,请问有什么额可以帮助你的吗? ",
      "prompt": "夸夸我"
    },
    "5": {
      "start_text": "你好,我是口算兔,我们一起来玩玩口算游戏吧?",
      "prompt": "我是一个6岁小朋友,你陪我玩口算游戏。你出题,我回答结果。如果答对了你就说好棒,答错了你就告诉我正确答案,并且鼓励我。你一题一题的出,我一个个回答。不要有太多的解释说明。明白了吗?"
    },
    "6": {
      "start_text": "你好,我是台湾兔,请问有什么我可以帮助你的吗?",
      "prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“台湾兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!"
    },
    "7": {
      "start_text": "你好,我是小兔,请问有什么我可以帮助你的吗?",
      "prompt": "你是一个知识渊博,乐于助人的智能机器人,你的名字叫“小兔”,你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!"
    }
}

docker-compose.yml内容

version: '3'
volumes:
  emqx-etc:
  emqx-data:
  emqx-log:
services:
  emqx:
    image: emqx/emqx:latest
    restart: always
    ports:
      - "1883:1883/tcp"
      - "18083:18083/tcp"
      - "8083:8083/tcp"
    volumes:
      - emqx-etc:/opt/emqx/etc    
      - emqx-data:/opt/emqx/data
      - emqx-log:/opt/emqx/log
    environment:
      EMQX_NODE_NAME: emqx@node1.emqx.io
  nginx:
    image: nginx:latest
    restart: always
    ports:
      - "8082:80/tcp"
    volumes:
      - ./audio:/usr/share/nginx/html
  folotoy:
    image: lewangdev/folotoy-server:latest
    restart: always
    ports:
      - "8085:8085/udp"
    volumes:
      - ./audio:/audio
      - ./config:/config
    environment:
      TZ: Asia/Shanghai

      LOG_LEVEL: DEBUG

      ROLES_FILE_PATH: /config/roles.json

      # Default STT(Sound To Text) type
      # Options: [openai-whisper, azure-whisper, azure-stt, dify-stt, aliyun-asr, volcengine-asr]
      STT_TYPE: aliyun-asr

      # OpenAI Whisper
      #OPENAI_WHISPER_API_BASE: https://one-api.xxxx.com/v1
      #OPENAI_WHISPER_KEY: sk-Gnkw1ZnG5rUWbzVl316dddddddddddddddddd
      #OPENAI_WHISPER_MODEL: whisper-1

      # Azure Whisper
      #AZURE_WHISPER_API_BASE: https://xxxxx.openai.azure.com
      #AZURE_WHISPER_KEY: 9afbef65bcf6487eeeeeeeeeeeeeeeeeee
      #AZURE_WHISPER_DEPLOYMENT_NAME: whisper
      #AZURE_WHISPER_API_VERSION: 2023-09-01-preview

      # Azure STT
      #AZURE_STT_KEY: 3eba91b6143f4d3eeeeeeeeeeeeeeeeeeeeeeeee
      #AZURE_STT_SERVICE_REGION: eastasia

      # Dify STT
      #DIFY_STT_API_BASE: https://api.dify.ai/v1
      #DIFY_STT_KEY: app-xxxxxxxxxxxxxxxxxxxxx

      # Aliyun ASR
      ALIYUN_ASR_ACCESS_KEY_ID: <real access key id>
      ALIYUN_ASR_ACCESS_KEY_SECRET: <real access key secret>
      ALIYUN_ASR_APP_KEY: <real app key>

      #Volcengine ASR
      #VOLCENGINE_ASR_ACCESS_TOKEN: U5joq1ow-Goyxxxxxxxxxxxxxx
      #VOLCENGINE_ASR_APP_ID: 4556821315
      #VOLCENGINE_ASR_CLUSTER_ID: volcengine_input_common

      # Default LLM(Large Language Model) type
      # Options: ['openai', 'azure-openai', 'gemini', 'dify', 'qianfan', 'xiaodu',
      #           'ollama', 'groq', 'moonshot', 'anthropic', 'zhipu', 'lingyiwanwu', 
      #           'dashscope', 'spark-desk', 'minimax', 'aws-bedrock', 'coze']
      LLM_TYPE: dashscope

      # OpenAI
      #OPENAI_OPENAI_API_BASE: https://one-api.xxx.com/v1
      #OPENAI_OPENAI_MODEL: gpt-3.5-turbo
      #OPENAI_OPENAI_KEY: sk-5N8F5VXsa7oOZI8Q874601110AAAAAAAAAAAAAAAAAAAAAA

      #Azure OpenAI
      #AZURE_OPENAI_KEY: ef0f2781b5a24b15baaaaaaaaaaaaaaaaaaaaaaa
      #AZURE_OPENAI_ENDPOINT: https://xxxxx.openai.azure.com/
      #AZURE_OPENAI_API_VERSION: "2023-05-15"
      #AZURE_OPENAI_MODEL: gpt-35-turbo

      #DIFY
      #DIFY_API_BASE: https://api.dify.ai/v1
      #DIFY_KEY: app-5YGbxxxxxxxxxxxxxxxxxxxxx

      #Xiaodu API
      #XIAODU_CLIENT_ID: xxxxxxxxxxxxxxxxxx
      #XIAODU_SECRET: xxxxxxxxxxxxxxxxxxxxx

      # GEMINI
      #GEMINI_KEY: AIzaSyxxxxxxxxxxxxxxxxxxk

      # Qianfan
      #QIANFAN_CLIENT_ID: 13rBTgxxxxxxxxxxxxxxxxxx
      #QIANFAN_SECRET: zYxtMIQLexxxxxxxxxxxxxxxxxx

      # Moonshot
      #MOONSHOT_API_BASE: https://api.moonshot.cn/v1
      #MOONSHOT_KEY: sk-XCLMlj54GDTxxxx
      #MOONSHOT_MODEL: moonshot-v1-8k

      # Aliyun Dashscope
      DASHSCOPE_KEY: <real api-key>
      DASHSCOPE_MODEL: qwen-max
      DASHSCOPE_ENABLE_SEARCH: "true"

      # Lingyiwanwu
      #LINGYIWANWU_KEY: 4b2f584b4x
      #LINGYIWANWU_MODEL: yi-34b-chat-200k

      # Zhipu
      #ZHIPU_KEY: 4544625bb0d0ax
      #ZHIPU_MODEL=glm-3-turbo

      # Spark Desk
      #SPARK_DESK_API_VERSION: v2.0
      #SPARK_DESK_APP_ID: d2c1xxxxxxxxxxx
      #SPARK_DESK_API_KEY: 10610b3xxxxxxx
      #SPARK_DESK_API_SECRET: N2I5xxxxxxxxx
      #SPARK_DESK_TEMPERATURE: 0.7
      #SPARK_DESK_MAX_TOKENS: 4096

      # MINIMAX
      #MINIMAX_KEY: eyJhbGciOiJSUzI1NiIsInRxxxxxxxxxxxxxxx

      # AWS Bedrock
      #AWS_BEDROCK_ACCESS_KEY_ID: AKIAQLJIxxxxxxxxxxxxxxxxxxx
      #AWS_BEDROCK_ACCESS_KEY_SECRET: ss07ojxxW/X7YHZkxxxxxxxxxx
      #AWS_BEDROCK_MODEL: anthropic.claude-v2:1

      # FastGPT
      #FASTGPT_KEY: here-is-app-key-not-account-key
      #FASTGPT_API_BASE: https://api.fastgpt.in/api
      #FASTGPT_CHAT_ID: xxx

      #Coze
      #COZE_API_BASE: https://api.coze.cn/open_api/v2
      #COZE_PERSONAL_ACCESS_TOKEN: pat_Vl3CaNcFgf67wx
      #COZE_BOT_ID: 73568618000000060037

      # If your elevenlabs is a free account, keep 2 here
      #VOICE_EXECUTOR_MAX_WORKERS: 2

      # Default TTS(Text to Sound) type
      # Options: [openai-tts, azure-openai-tts, azure-tts, dify-tts, elevenlabs, edge-tts, aliyun-tts, volcengine-tts]
      # edge-tts is Free but slow
      TTS_TYPE: aliyun-tts

      # Azure TTS
      #AZURE_TTS_KEY: 3eba91b6143f4d399edeeeeeeeeeeeeeeeeeeeee
      #AZURE_TTS_SERVICE_REGION: eastasia

      # elevenlabs
      #ELEVENLABS_TTS_KEY: a920b73991e68d5c9c9aaaaaaaaaaaaaaaa
      #ELEVENLABS_TTS_MODEL: eleven_multilingual_v2

      # OpenAI TTS
      #OPENAI_TTS_KEY: sk-16XnP3HLHWho21oO2m0AAAAAAAAAAAAAAAAAAAAAA
      #OPENAI_TTS_MODEL: tts-1  

      # Aliyun TTS
      ALIYUN_TTS_ACCESS_KEY_ID: <real access key id>
      ALIYUN_TTS_ACCESS_KEY_SECRET: <real access key secret>
      ALIYUN_TTS_APP_KEY: <real app key>

      # Azure Openai TTS
      #AZURE_OPENAI_TTS_API_BASE: https://xxx-whisper.openai.azure.com/
      #AZURE_OPENAI_TTS_API_VERSION: 2024-02-15-preview
      #AZURE_OPENAI_TTS_DEPLOYMENT_NAME: tts
      #AZURE_OPENAI_TTS_KEY: 01fdbc75bdxxxxxx
      #AZURE_OPENAI_TTS_MODEL: tts-1

      # Dify TTS
      #DIFY_TTS_API_BASE: https://api.dify.ai/v1
      #DIFY_TTS_KEY: app-5YGbAx

      #Volcengine TTS
      #VOLCENGINE_TTS_ACCESS_TOKEN: U5joq1ow-xxxxxxxxxxxx
      #VOLCENGINE_TTS_APP_ID: 45568210000
      #VOLCENGINE_TTS_CLUSTER_ID: volcano_tts
      #VOLCENGINE_TTS_VOICE_TYPE: BV700_V2_streaming
      #VOLCENGINE_TTS_EMOTION: conniving
      #VOLCENGINE_TTS_LANGUAGE: zh_guangxi

      AUDIO_DOWNLOAD_URL: http://<real ip>:8082
      AUDIO_SAVE_PATH: /audio

      # MQTT Broker
      MQTT_BROKER_HOST: emqx
      MQTT_BROKER_PORT: 1883
      MQTT_CLIENT_ID: folotoy
      MQTT_USERNAME: folotoy
      MQTT_PASSWORD: folotoy

      SPEECH_UDP_SERVER_HOST: <real ip>
      SPEECH_UDP_SERVER_PORT: 8085
channingbreeze commented 1 month ago

镜像都起来了

命令:docker ps -a 返回:

CONTAINER ID   IMAGE                             COMMAND                   CREATED      STATUS      PORTS                                                                                                                                                       NAMES
d11aae8df851   nginx:latest                      "/docker-entrypoint.…"   5 days ago   Up 5 days   0.0.0.0:8082->80/tcp                                                                                                                                        folotoy-server-nginx-1
593748a0c632   lewangdev/folotoy-server:latest   "python3 folotoy/mai…"   5 days ago   Up 5 days   0.0.0.0:8085->8085/udp                                                                                                                                      folotoy-server-folotoy-1
372cb7c66f6d   emqx/emqx:latest                  "/usr/bin/docker-ent…"   5 days ago   Up 5 days   4369-4370/tcp, 5369/tcp, 6369-6370/tcp, 0.0.0.0:1883->1883/tcp, 8081/tcp, 8084/tcp, 8883/tcp, 0.0.0.0:8083->8083/tcp, 0.0.0.0:18083->18083/tcp, 11883/tcp   folotoy-server-emqx-1

各个镜像的日志: 命令:docker logs d11aae8df851

返回:

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/07/15 01:23:40 [notice] 1#1: using the "epoll" event method
2024/07/15 01:23:40 [notice] 1#1: nginx/1.21.5
2024/07/15 01:23:40 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2024/07/15 01:23:40 [notice] 1#1: OS: Linux 3.10.0-123.9.3.el7.x86_64
2024/07/15 01:23:40 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/07/15 01:23:40 [notice] 1#1: start worker processes
2024/07/15 01:23:40 [notice] 1#1: start worker process 30

命令:docker logs 593748a0c632

2024-07-15 09:23:46,491 - INFO - FoloToy Server Version: v24.25.6.1-beta
2024-07-15 09:23:46,582 - ERROR - Run error: [Errno 111] Connection refused
Traceback (most recent call last):
  File "core/folotoy_app.py", line 141, in core.folotoy_app.FolotoyApp.start
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 1429, in connect
    return self.reconnect()
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 1592, in reconnect
    self._sock = self._create_socket()
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 4598, in _create_socket
    sock = self._create_socket_connection()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 4623, in _create_socket_connection
    return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/socket.py", line 851, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.11/socket.py", line 836, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
2024-07-15 09:23:46,596 - INFO - Sleep 2s to reconnect to emqx:1883
2024-07-15 09:23:48,597 - ERROR - Run error: [Errno 111] Connection refused
Traceback (most recent call last):
  File "core/folotoy_app.py", line 141, in core.folotoy_app.FolotoyApp.start
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 1429, in connect
    return self.reconnect()
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 1592, in reconnect
    self._sock = self._create_socket()
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 4598, in _create_socket
    sock = self._create_socket_connection()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/paho/mqtt/client.py", line 4623, in _create_socket_connection
    return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/socket.py", line 851, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.11/socket.py", line 836, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
2024-07-15 09:23:48,598 - INFO - Sleep 2s to reconnect to emqx:1883
2024-07-15 09:23:50,600 - INFO - Speech server started(0.0.0.0:8085/udp)
2024-07-15 09:23:50,602 - INFO - Connected to MQTT Broker(emqx:1883)!

命令:docker logs 372cb7c66f6d

listener.ssl.external.acceptors = "32"
listener.ssl.external.max_connections = "102400"
listener.tcp.external.acceptors = "64"
listener.tcp.external.max_connections = "1024000"
listener.ws.external.acceptors = "16"
listener.ws.external.max_connections = "102400"
listener.wss.external.acceptors = "16"
listener.wss.external.max_connections = "102400"
log.to = "console"
node.max_ets_tables = "2097152"
node.max_ports = "1048576"
node.name = "emqx@node1.emqx.io"
node.process_limit = "2097152"
rpc.port_discovery = "manual"
Starting emqx on node emqx@node1.emqx.io
Start mqtt:tcp:internal listener on 127.0.0.1:11883 successfully.
Start mqtt:tcp:external listener on 0.0.0.0:1883 successfully.
Start mqtt:ws:external listener on 0.0.0.0:8083 successfully.
Start mqtt:ssl:external listener on 0.0.0.0:8883 successfully.
Start mqtt:wss:external listener on 0.0.0.0:8084 successfully.
Start http:management listener on 8081 successfully.
Start http:dashboard listener on 18083 successfully.
EMQ X Broker 4.3.11 is running now!

现象:

用官方提供的服务器都没问题,连接自己的服务器,输入ip,过一会儿出现“蹬蹬”声,后面没有反应,按住说话也没反应,日志和audio文件夹里也没有任何东西

同时浏览器输入ip:18083,网站打不开,出现无法访问此网站

不知道如何排查,求助官方

lewangdev commented 1 month ago

使用1panel的吗,把帐号发我一下 lewang.dev@gmail.com,我登录看一下

channingbreeze commented 1 month ago

不是的,用的阿里云的ecs

SHLcy commented 1 month ago

搭建的方式是用的1 panel还是docker?