Loading... ## 简介 VoceChat `VoceChat` 是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上,部署简单,很少需要维护。前端可以内嵌到自己的网站下,数据完全由用户自己掌握,传输过程加密。VoceChat 从 `Slack`, `Discord`, `RocketChat`, `Solid`, `Matrix` 等产品和规范中博采众长,适用于团队内部交流,个人聊天服务,网站客服,网站内嵌社区的场景。 我们认为 Web 3.0 去中心化的第一步是基于个人云的去平台化,通过个性化的计算与个性化的存储,让个人和组织拥有自己的平台,所以 VoceChat 的定位是能轻易部署在私有云上的社交协作程序。 团队国际化,远程合作,贡献者来自中、美、巴西等地区, VoceChat 是一个开放的、赋能用户的产品,欢迎大家点 star 关注,提 issues,或者以其他形式参与贡献。 ### 项目组成: | 名称 | 技术 | 项目 | License | 说明 | | ---------- | --------- | --------------------------------------------------------------- | ------------ | ----------------------------------------------------------------------- | | 服务端: | Rust | vocechat-server(暂未开源) | 待定 | 聊天服务端,支持主流平台: Linux x86\_64, Windows 32/64, Arm32, Arch64 | | 客户端: | Flutter | [vocechat-client](https://github.com/privoce/vocechat-client) | Apache-2.0 | 聊天客户端,支持 Android, iOS 平台的客户端 | | Web: | React | [vocechat-web](https://github.com/privoce/vocechat-web) | GPL-3.0 | 聊天功能的浏览器版本,整合了管理 | | Web-SDK: | React | vocechat-web-sdk(暂未开源) | GPL-3.0 | 可以整合到其他 Web 产品中,使其赋能聊天功能 | ### 功能列表 & 计划 - 群聊、私聊 / 2021-Q4 - 引用, at / 2021-Q4 - 图片、大文件传输 / 2021-Q4 - 置顶 / 2022-Q1 - 转发 / 2022-Q1 - 收藏 / 2022-Q1 - 阅后即焚(高级功能) / 2022-Q1 - 语音(高级功能)/ 2022-Q4 - 视频(高级功能)/ 2022-Q4 ## Docker 安装 VoceChat 重要提示 请确认你的系统架构:默认安装 `linux/amd64`,如果是 `linux/arm64`,请拉取`privoce/vocechat-server:latest-arm64` ## 本地快速体验 提示 假如没有服务器,但是在本地电脑装有 Docker,可以执行以下命令行,快速体验 VoceChat ``` docker run -d --restart=always \ -p 3009:3000 \ --name vocechat-server \ privoce/vocechat-server:latest ``` 浏览器访问: `http://localhost:3009/` ## 服务器部署 提示 请提前准备好一个域名,以下用`vocechat.yourdomain.com`举例 ### Docker + Nginx #### 运行 VoceChat ``` docker run -d --restart=always \ -p 3009:3000 \ --name vocechat-server \ -v ~/.vocechat-server/data:/home/vocechat-server/data \ privoce/vocechat-server:latest \ --network.frontend_url "https://vocechat.yourdomain.com" ``` 提示 - `-v ~/.vocechat-server/data:/home/vocechat-server/data`目的是将docker内的数据映射出来,作用是后续vocechat-server升级同时保留已有数据,`~/.vocechat-server/data`只是举例,可自行定义。 - `network.frontend_url`用于生成邀请链接,发送邀请邮件等场景,为可选参数,是个带网络协议的域名,所以不要忘了根据实际情况加协议`http(s)`。如果部署时未指定,也可在初始化Server流程时设置。 #### 配置 Nginx http 反向代理 在 Nginx 配置文件目录(一般在`/etc/nginx/conf.d`)新建 Nginx 配置文件`vocechat.yourdomain.com.conf`,并配置好 http 请求: ``` server{ server_name vocechat.yourdomain.com; location / { proxy_pass http://127.0.0.1:3009; # 此处端口号取决于docker运行的对外端口号 proxy_redirect off; 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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; # 关掉硬盘缓存,增加写速度 # SSE 相关配置 proxy_http_version 1.1; proxy_set_header Connection ''; } } ``` 检查配置文件的语法:`nginx -t`,没问题后,启用新增配置:`nginx -s reload`。此时,浏览器访问`http://vocechat.yourdomain.com`,能够进入初始化页面,即为配置成功。 #### 配置 基本原理:让 Nginx 监听 443 端口,证书配置在 Nginx,通过 host 转发给 `vocechat-server:3009`,此时 vocechat-server 接受的依旧是 http。 ``` ┌─────────┐ ┌─────────┐ ┌─────────┐│ │ │ Nginx │ │ ││ Client ├─────────────────►│ CA ├──────► │ vocechat││ │ │ 443 │ │ 3000 │└─────────┘ └─────────┘ └─────────┘ ``` 启用 https 有多种方式,此处我们推荐使用[certbot](https://certbot.eff.org/instructions),借助 certbot 可以自动生成证书并自动添加到对应域名的 Nginx 配置文件,完成 https 的启用。 ##### Certbot 的使用 访问 [https://certbot.eff.org/instructions](https://certbot.eff.org/instructions) ,请自行选择服务器环境,完成安装:  使用以下命令,certbot 会列出已有的 Nginx 配置,选择对应的域名,获取证书,并让 certbot 自动编辑该 Nginx 配置文件,一键开启 https 访问: ``` # 如果非root用户,把sudo加上 sudo certbot certonly --nginx ``` 此时,配置文件`vocechat.yourdomain.com.conf`已变为: ``` server{ server_name vocechat.yourdomain.com; location / { proxy_pass http://127.0.0.1:3009; # 此处端口号取决于docker运行的对外端口号 proxy_redirect off; 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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; # 关掉硬盘缓存,增加写速度 # SSE 相关配置 proxy_http_version 1.1; proxy_set_header Connection ''; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/vocechat.yourdomain.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/vocechat.yourdomain.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server{ if ($host = vocechat.yourdomain.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name vocechat.yourdomain.com; return 404; # managed by Certbot } ``` 重载 Nginx 配置(`nginx -s reload`)之后,此时,浏览器访问`http://vocechat.yourdomain.com`会自动切换为 https,即`https://vocechat.yourdomain.com` ### Docker vocechat-server 支持自动申请 https 证书(借助[CertBot](https://certbot.eff.org/pages/about)),使用该部署方式有两个前提: - 服务器 443 端口没有被占用 - 准备一个域名,并已解析到该服务器 IP。 ``` mkdir -p ~/.vocechat-server/data docker run -d --restart=always \ -p 443:443 \ --name vocechat-server \ -v ~/.vocechat-server/data:/home/vocechat-server/data \ privoce/vocechat-server:latest \ --network.bind "0.0.0.0:443" \ --network.domain "vocechat.yourdomain.com" \ --network.tls.type "acme_tls_alpn_01" \ --network.tls.acme.cache_path "/home/vocechat-server/data/cert" ``` 参数说明: - `network.bind:` 服务端绑定的 IP 和端口,`0.0.0.0` 为所有 IP - `network.domain:` 域名 - `network.type:` TLS 验证方式,这里为 `acme_tls_alpn_01`,更多请参考代码目录 `config/config.toml` 。 - `network.tls.acme.cache_path:` 证书存放位置。 - `network.tls.acme.directory_url:` 默认的验证机构,可选,默认 `https://acme-v02.api.letsencrypt.org/directory`。 访问:`https://vocechat.yourdomain.com/`,完成初始化 。 如果 80/443 端口被 Nginx 占用, 请参考 [Docker + Nginx](https://doc.voce.chat/zh-cn/install/install-by-docker#docker--nginx) ## 其他相关命令 ### 停止服务docker stop vocechat-server docker stop vocechat-server ### 查看日志 ``` docker logs -f vocechat-server ``` ### 备份数据 ``` cp -rf ~/.vocechat-server/data ~/.vocechat-server/backup ``` ### 升级server版本(更新docker镜像) ``` docker stop vocechat-serverdocker rm vocechat-serverdocker pull privoce/vocechat-server:latest# 这里改为自己之前部署执行过的docker命令行docker run -d --restart=always \ -p 3009:3000 \ --name vocechat-server \ -v ~/.vocechat-server/data:/home/vocechat-server/data \ privoce/vocechat-server:latest \ --network.frontend_url "https://vocechat.yourdomain.com" ``` ### 进入 Docker 内部 ``` docker exec -it vocechat-server /bin/shcd /home/vocechat-server/data ``` ## 移动 APP 与挂件 部署成功 vocechat,并且已完成初始化工作,可以继续安装使用我们的移动 APP,具体使用请移步:[使用 VoceChat APP](https://doc.voce.chat/zh-cn/mobile-app);还可以很方便地借助挂件,把聊天场景拓展到任意网站。具体请参看 [使用挂件](https://doc.voce.chat/zh-cn/widget) 最后修改:2023 年 05 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝 赞 0 如果觉得我的文章对你有用,请随意赞赏
1 条评论
打赏似乎点不出来