宝塔安装盒子im

最近突然发现一款开源im系统,界面简单,仿微信页面及功能,感觉挺好玩,但是官方的文档有点不便于像我这样的小白操作,于是便想使用宝塔来代替一大堆命令

盒子作者的自述

今天是2024.08.04,盒子IM3.0版本今天正式上线,过来更新一波文档。
自从去年2.0版本上线以来,盒子IM的关注度有了明显的增长,star数量仅今年就已经增长了1k+,甚至有几位抖音和公众号博主自发地对盒子进行了介绍和推广,让我收获了满满的成就感。
截止到今年3月份之前,本着为爱发电的精神,盒子IM一直都是纯开源且免费的。但是如果一直“发电”,终有被耗干的一天。所以今年3月份开始推出了第一个付费功能-单人音视频通话,6月底又推出了多人音音视频通话,未来还会推出更为完善的商业版。
不过尽管盒子IM未来会一定程度走商业化的路线,但是开源版本的功能也是会一直更新的,并且已经开源的功能也会一直开源下去。

这一年以来,盒子IM一直保持了高强度的更新,同时也几乎耗尽了我几乎所有的业余时间。很多小伙伴的私信和群里的消息,可能没有办法一一回复,还请见谅。

盒子im介绍

  1. 特点
    盒子IM是一个仿微信实现的开源聊天软件,支持内网部署,不依赖任何收费SDK或组件
    支持web端和移动端同时在线以及消息同步
    后端服务支持集群化部署,具有良好的横向扩展能力
    消息推送功能已进行SDK封装,可快速接入企业项目
  2. 合适人群
    如果您是以下人群之一,那么盒子IM将会非常适合您:
    企业中的项目需要开发IM模块,希望快速整合盒子IM的部分功能
    对IM系统比较感兴趣,想学习如何独立编写一个优雅且高性能的IM系统
  3. 前置技能
    尽管作者已经十分努力的降低盒子IM的使用门槛,但是在学习盒子IM前,还是需要您已经掌握以下技能:
    后端:Springboot、Mybatis-plus、Netty、Mysql、Redis
    前端:Vue、Uniapp
  4. 功能展示
    特点
    盒子IM是一个仿微信实现的开源聊天软件,支持内网部署,不依赖任何收费SDK或组件
    支持web端和移动端同时在线以及消息同步
    后端服务支持集群化部署,具有良好的横向扩展能力
    消息推送功能已进行SDK封装,可快速接入企业项目
  5. 合适人群
    如果您是以下人群之一,那么盒子IM将会非常适合您:
    企业中的项目需要开发IM模块,希望快速整合盒子IM的部分功能
    对IM系统比较感兴趣,想学习如何独立编写一个优雅且高性能的IM系统
  6. 前置技能
    尽管作者已经十分努力的降低盒子IM的使用门槛,但是在学习盒子IM前,还是需要您已经掌握以下技能:
    后端:Springboot、Mybatis-plus、Netty、Mysql、Redis
    前端:Vue、Uniapp
  7. 功能展示
20250315115328804-image

那么,废话不多说开始我的踩坑之路

准备工作

本文档使用单一一台服务器进行部署,相关环境如下:

系统centos7.6
内网IP192.168.43.10
外网IP42.194.187.243
域名www.boxim.online

文档中所涉及的IP和域名,请自行替换

1. 准备工作

1. 服务器

购买(云)服务器,并开放以下端口:

端口协议端口占用组件
80tcpnginx
443tcpnginx
3306tcpmysql
6379tcpredis
9001tcpminio
9002tcpminio
3478tcp/udpcoturn
5349tcpcoturn
40000-65535udpcoturn

注意:腾讯云服务器开放范围端口是用”,”分隔,所以最后一条开放端口应配置:40000,65535

ssl证书

注:非必须,如果需要使用语音和视频功能,则必须要有ssl证书,可以选购买或自签的方式获取证书

购买证书

可以直接选择向云厂商购买ssl证书,然后将证书放置/opt/ssl目录下,将私钥命名为server.key,证书命名为server.crt

自签证书(浏览器会有警告)

# 进入/opt/ssl目录
mkdir /opt/ssl
cd /opt/ssl
# 安装依赖包
yum install -y openssl openssl-devel
# 生成私钥,需要输入两遍相同的密码
openssl genrsa -des3 -out server.key 2048
# 生成CSR,需输入相关信息,乱填也行
openssl req -new -key server.key -out server.csr
# 取消私钥当中的密码,需输入刚才的密码
openssl rsa -in server.key -out server.key
# 生成SSL证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

域名

注:非必须,但如果要上线微信小程序,则必须要有域名

域名可向云厂商购买,大陆的服务器需要进行域名备案才可正常使用。

环境安装

宝塔面板安装(宝塔面板通用安装命令

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

安装nginx,minio,redis6.2,mysql8.0,java、安装jdk17

mkdir /usr/local/data
cd /usr/local/data
wget 这里可以自己找一下,我是传到自己服务器的/OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz
tar -xvf /usr/local/data/OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz -C /opt/
mv /opt/jdk-17.0.14+7/ /opt/jdk17

配置环境变量
在/etc/profile最下方添加

export JAVA_HOME=/opt/jdk17
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

刷新环境变量

source /etc/profile
java -version

下载并安装minio

cd /usr/local/data

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/archive/minio.RELEASE.2024-07-26T20-48-21Z
mv minio.RELEASE.2024-07-26T20-48-21Z  minio

chmod +x minio

mkdir /opt/minio

cp minio /opt/minio/
创建配置文件

在/opt/minio下创建minio.conf

#数据存放目录
MINIO_VOLUMES="/data/minio"
#端口号设置
MINIO_OPTS="--console-address :9002 --address :9001"
#用户名
MINIO_ROOT_USER="admin"
#密码
MINIO_ROOT_PASSWORD="3fBSt****uD77D6"
安装服务

在/etc/systemd/system下创建minio.service

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.targetmsts
After=network-online.target
#minio文件具体位置
AssertFileIsExecutable=/opt/minio/minio
[Service]
# User and group 用户 组
User=root
Group=root
#创建的配置文件 minio.conf
EnvironmentFile=/opt/minio/minio.conf
ExecStart=/opt/minio/minio server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target

启动服务

# 启动
systemctl start minio.service
# 开机启动
systemctl enable minio.service

安装redis

宝塔安装盒子im

安装好后,点击配置

宝塔安装盒子im

设置密码并保存

点击配置文件,进行以下修改(Ctrl+F进行快捷搜索),修改后点击保存

# 以守护进程的方式运行
daemonize yes
# 支持远程访问
bind 0.0.0.0
# 关闭保护模式
protected-mode no
宝塔安装盒子im

安装mysql8.0

20250315121722215-image

安装成功后,点击侧边栏数据库,点击添加数据库,按照如下填写配置,点击确定

20250315123427102-image

添加好后,点击导入,将box-im-master\db中的数据库文件(im-platform.sql,敏感词库初始化.sql)导入

【如果你是企业版/个人版,还需要新建一个名为im_admin的数据库,导入im-admin.sql文件导入到im_admin数据库中】

注意:这里要给你创建的数据库用户名权限(当然你也可以直接使用root用户和密码)

#调出数据库命令,输入root密码(宝塔里可以查看)
mysql -u root -p
#授予权限(im是我创建的数据库用户名)
SHOW GRANTS FOR 'im'@'localhost';

安装nginx

上传ssl证书到根目录 /opt/ssl/文件夹中(没有就创建),将私钥命名为server.key,证书命名为server.crt

下载1.22.1版本,下载后点击设置

20250315121752207-image

点击配置文件

20250315123012522-image

复制下面直接覆盖到原配置文件,修改后点击保存

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
  worker_connections  1024;
}

http {
  include       mime.types;
  default_type  application/octet-stream;
  client_max_body_size  50M;
  sendfile        on;
  keepalive_timeout  65;
  server {
    listen 443 ssl;
    server_name 192.168.43.10;
    root html;
    index index.html index.htm;
    ssl_certificate /opt/ssl/server.crt;
    ssl_certificate_key /opt/ssl/server.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;   

    location / {
      root   im-web;
      index  index.html index.htm;
    }

    location /h5 {
      alias   im-h5;
      index  index.html index.htm;
    }

    location /api/ {
      proxy_pass http://127.0.0.1:8888;
      rewrite "^/api/(.*)$" /$1 break;
    }
    
    location /admin {
      alias   im-admin;
      index  index.html index.htm;
      try_files $uri $uri/ /admin/index.html;
    }
      location /adm/api/ {
      proxy_pass http://127.0.0.1:8889;
      rewrite "^/adm/api/(.*)$" /$1 break;
    }

    location /download {
      alias   download;
    }

    location /protocol {
      alias   protocol;
    }

    location /file/ {
      proxy_pass http://127.0.0.1:9001;
      rewrite "^/file/(.*)$" /$1 break;
    }

    location = /im {
      proxy_pass        http://127.0.0.1:8878;
      proxy_set_header  Host $host;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto   $scheme;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }        
  }

  server {
    listen       80;
    server_name  192.168.43.10;
    rewrite ^(.*)$ https://$host$1 permanent;
  }
}

安装coturn(视频聊天)

下载coturn-4.5.1.1.tar.gz

上传到服务器的/usr/local/data目录

cd /usr/local/data

tar -zxvf coturn-4.5.1.1.tar.gz

cd coturn-4.5.1.1

./configure  --prefix=/opt/coturn

make

make install

创建用户

cd /opt/coturn/bin

./turnadmin -k -u admin -r www.boxim.online -p UrHH****nFvBTMV

生成证书

mkdir /opt/coturn/ssl

openssl dhparam -out /opt/coturn/ssl/dhparams.pem 2048

openssl req -x509 -newkey rsa:2048 -keyout /opt/coturn/ssl/turn_server_pkey.pem -out /opt/coturn/ssl/turn_server_cert.pem -days 99999 -nodes

修改配置(/opt/coturn/etc/turnserver.conf)

# 网卡名(ip addr命令查看自己的网卡名)
relay-device=eth0
# 密码
cli-password=UrHH****nFvBTMV
# 内网IP
listening-ip=192.168.43.10
listening-port=3478
tls-listening-port=5349
# 内网IP
relay-ip=192.168.43.10
relay-threads=500
# 外网IP
external-ip=42.194.187.243
# 设置用户名和密码,跟上面创建的用户的账号密码一致
user=admin:UrHH****nFvBTMV
# udp端口范围
min-port=40000
max-port=65535
# 外网IP绑定的域名
realm=www.boxim.online
# 打开密码验证
lt-cred-mech
# 证书
cert=/opt/coturn/ssl/turn_server_cert.pem
pkey=/opt/coturn/ssl/turn_server_pkey.pem
dh-file=/opt/coturn/ssl/dhparams.pem

启动

/opt/coturn/bin/turnserver -v -r www.boxim.online:3478 -a -o -c /opt/coturn/etc/turnserver.conf
  1. 检测生效网站:点这里,出现done提示表示成功20250315132035576-image
  2. 后端接口修改路径box-im-main\im-platform\src\main\resources\application-prod.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/im_platform?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
    username: im
    password: naQR****Gv2j7PX_
  data:
    redis:
      host: localhost
      port: 6379
      password: PmEpfRj****N6CgW

minio:
  endpoint: http://127.0.0.1:9001 #内网地址
  domain: https://www.boxim.online/file  #外网访问地址
  accessKey: admin
  secretKey: 3fBSt****uD77D6
  bucketName: box-im
  imagePath: image
  filePath: file
  videoPath: video

webrtc:
  max-channel: 9 # 多人通话最大通道数量,最大不能超过16,建议值:4,9,16
  iceServers:   #coturn配置
    - urls: stun:www.boxim.online:3478
      username: admin
      credential: UrHH****nFvBTMV
    - urls: turn:www.boxim.online:3478
      username: admin
      credential: UrHH****nFvBTMV

box-im-main\im-server\src\main\resources\application-prod.yml

spring:
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      password: PmEpfRj****N6CgW
编译

进入盒子IM代码根目录,执行

mvn clean package -Dmaven.test.skip=true

如果报错,试试

mvn clean package "-Dmaven.test.skip=true"

将生成的box-im-main\im-platform\target\im-platform.jar和box-im-main\im-server\target\im-server.jar拷贝到生产机器的/data/boxim目录(也可以是你自定义目录,怎么方便怎么来。我这边是放在宝塔的网站目录)

启动

在jar包所在目录执行终端命令(宝塔内含)

# 启动im-platform
nohup java -jar im-platform.jar  --spring.profiles.active=prod &
# 启动im-server
nohup java -jar im-server.jar  --spring.profiles.active=prod &
  1. 部署web端,APP,H5端请前往官方文档,没什么太复杂的点这里进入盒子官方文档不过要注意一点,在hbuilder里,要执行安装一下quill-image-resize-mp,我这边打包回报错没这个依赖npm install quill-image-resize-mpweb和h5要上传到宝塔内Nginx目录下,一般为/www/server/nginx(因为没整明白直接创建网站怎么访问,可能需要配置伪静态,不太懂,有懂的可以交流交流)
  2. 打包后台服务
    安装node:v18.19.0,安装jdk:17,安装maven:3.9.6(具体安装步骤请百度,这里不做详细安装教程)
    后端需要创建im-admin数据库,并进行导入,步骤与上面im-platform相似,请往上翻
    你还需要修改\box-im-admin-main\im-admin\ruoyi-admin\src\main\resources\application-prod.yml中的相应配置(mysql,redis,minio)
    这题提醒一下,可能redis要把localhost改成127.0.0.1(我这里用localhost报错)进入 im-admin目录,打开控制台mvn clean package快速构建项目而不运行测试,可以使用以下命令跳过测试:mvn clean install -DskipTests将jar包上传到服务器目录,然后执行启动命令
  3. nohup java -jar im-admin.jar –spring.profiles.active=prod &
  4. 打包后台ui
    进入 im-admin-ui目录,打开控制台npm installnpm run build将build出来的目录传到服务器如果想使用原域名+后缀进行访问
    请把build出来的目录传到/www/server/nginx目录下,并修改目录名为im-admin,在nginx的配置文件中增加
location /admin { alias im-admin; index index.html index.htm; } location /adm/api/ { proxy_pass http://127.0.0.1:8889; rewrite "^/adm/api/(.*)$" /$1 break; }

宝塔安装盒子im - 来源:道谕轩

作者:道 谕轩

转载请注明:https://xinzt.ren/?p=4587

(0)
上一篇 2024年4月4日 下午11:28
下一篇 2023年7月19日 下午1:22

相关推荐

发表回复

登录后才能评论