【好玩的开源项目】使用Docker部署briefing视频聊天系统

一、briefing介绍

1.1 briefing简介

  • briefing简介

briefing是一个开源的、安全的直接视频群聊平台。

1.2 briefing使用场景

Briefing作为一个开源且注重安全性的直接视频群聊平台,它的设计旨在满足对隐私保护和数据安全有严格要求的多种场景需求。以下是几个具体的应用场景示例:

  1. 企业内部会议:企业可以利用Briefing召开内部会议,无论是日常的工作进度汇报、项目讨论还是跨部门协作,确保敏感的企业信息在内部交流时得到保护。

  2. 远程教育课堂:教育机构可以采用Briefing建立安全的在线课堂环境,进行实时授课、小组讨论和辅导,保护学生隐私,同时支持大班教学和小范围研讨。

  3. 医疗咨询与远程诊疗:医疗机构可以利用该平台为患者提供安全的视频咨询和远程诊疗服务,确保医疗信息的机密性和合规性。

  4. 政府和军事通讯:对于政府机构和军事部门而言,Briefing提供了一个加密的沟通渠道,适用于机密会议、应急指挥和敏感信息的交换。

  5. 法律服务与客户会谈:律师和客户之间可通过Briefing进行私密的视频会议,讨论案件细节,保证律师-客户特权的完整不受侵犯。

  6. 非营利组织协调:非政府组织和慈善机构在组织活动、志愿者培训或国际项目协调时,可以依赖Briefing来确保信息交流的安全无虞。

  7. 金融科技与银行业务:在对数据安全有着极高要求的金融行业中,Briefing可应用于内部沟通、客户咨询和远程金融服务,保护交易信息和客户隐私。

  8. 创意产业协作:设计师、开发者、作家等创意工作者可以在保护知识产权的环境中,通过Briefing进行头脑风暴、作品审查和项目协作。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostnameIP地址操作系统版本Docker版本
jeven192.168.3.166centos 7.6220.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署briefing视频聊天系统。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-12-21 18:58:04 CST; 3 days ago
     Docs: https://docs.docker.com
 Main PID: 11425 (dockerd)
    Tasks: 47
   Memory: 387.3M
   CGroup: /system.slice/docker.service
           ├─11425 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载briefing镜像

从docker hub拉取briefing镜像

[root@jeven nullboard]# docker pull holtwick/briefing
Using default tag: latest
latest: Pulling from holtwick/briefing
661ff4d9561e: Pull complete
89059ca18a98: Pull complete
9bb776f8ddb0: Pull complete
ef0b6390b7f1: Pull complete
e4cdfee850fc: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:bd6afac29ce56fdcb689e03204dd00ebcfdd2690a55a817fdc00ef0799a4c99b
Status: Downloaded newer image for holtwick/briefing:latest
docker.io/holtwick/briefing:latest

五、部署briefing应用

5.1 使用docker-cli创建briefing容器(可选)

可采用docker-cli或者docker compose两种方式部署,本次实践采用docker compose方式部署应用。在个人环境玩转Docker应用时,建议采用docker compose方式部署,以便统一管理。

  • docker-cli部署briefing容器示例参考
docker run -d \  \
--name briefing \
-v /datar/briefing/data:/app/data \
-p 6802:8080 \
--restart always \
holtwick/briefing

5.2 创建挂载目录

创建挂载目录

[root@jeven ~]# mkdir -p /data/briefing
[root@jeven ~]# cd /data/briefing/

5.3 编辑docker-compose.yaml文件

本次实践部署使用docker compose方式,编辑docker-compose.yaml文件。

version: '3'

services:
  briefing:
    image: holtwick/briefing
    restart: always
    volumes:
      - /datar/briefing/data:/app/data
    ports:
      - 6802:8080

# networks:
#   default:
#     external:
#       name: proxy


5.4 运行briefing容器

使用docker-compose.yaml文件创建briefing容器

[root@jeven briefing]#  docker compose up -d
[+] Running 2/2
 ⠿ Network briefing_default       Created                                                                               0.0s
 ⠿ Container briefing-briefing-1  Started                                                                               1.2s

5.5 检查briefing容器状态

检查briefing容器状态,确保briefing容器正常启动。

[root@jeven briefing]# docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS          PORTS                                  NAMES
9c08e1730708   holtwick/briefing               "docker-entrypoint.s…"   39 seconds ago   Up 37 seconds   3478/tcp, 0.0.0.0:6802->8080/tcp, :::6802->8080/tcp   briefing-briefing-1

5.6 检查briefing容器日志

检查briefing容器运行日志,确保briefing服务正常启动。

[root@jeven briefing]# docker logs briefing-briefing-1
Zerva: Vite serving from /app/www

Zerva: *********************************************************
Zerva: Open page at http://localhost:8080
Zerva: *********************************************************

六、配置反向代理

6.1 安装nginx

由于是测试环境,本次反向代理直接部署在本地Docker宿主机同一台服务器上,直接使用yum快速安装nginx。

 yum -y install nginx

启动nginx服务

[root@jeven briefing]# systemctl enable --now nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

检查nginx服务状态

[root@jeven briefing]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-12-26 16:40:11 CST; 24s ago
  Process: 81723 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 81720 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 81718 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 81725 (nginx)
    Tasks: 3
   Memory: 2.1M
   CGroup: /system.slice/nginx.service
           ├─81725 nginx: master process /usr/sbin/nginx
           ├─81726 nginx: worker process
           └─81727 nginx: worker process

Dec 26 16:40:10 jeven systemd[1]: Starting The nginx HTTP and reverse proxy server...
Dec 26 16:40:11 jeven nginx[81720]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 26 16:40:11 jeven nginx[81720]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Dec 26 16:40:11 jeven systemd[1]: Started The nginx HTTP and reverse proxy server.

6.2 创建证书相关文件

  • 生成私钥
openssl genrsa -out nginx.key 2048
  • 生成证书
openssl req -new -key nginx.key -out nginx.csr
openssl x509 -req -in nginx.csr -signkey nginx.key -out nginx.pem
  • 检查证书相关文件
[root@jeven briefing]# ls
docker-compose.yaml  nginx.csr  nginx.key  nginx.pem

6.3 修改nginx配置文件

修改nginx配置文件/etc/nginx/nginx.conf

  • 备份nginx.conf文件
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  • 修改nginx.conf文件,修改位置如图中标注。
 vim /etc/nginx/nginx.conf


#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;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
 #   upstream web {
 #      server 192.168.3.166;
 #       }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://192.168.3.166:6802;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /data/briefing/nginx.pem;
        ssl_certificate_key  /data/briefing/nginx.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://192.168.3.166:6802;
        }
    }

}

在这里插入图片描述

在这里插入图片描述

6.4 重启nginx服务

重启nginx服务

systemctl restart nginx

七、访问briefing首页

访问地址:https://192.168.3.166/,将IP替换为自己服务器IP地址,进入到briefing首页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述

将链接地址发送给视频聊天的人员就可以了,这里由于是台式机没有摄像头显示。

在这里插入图片描述

八、总结

briefing是一个非常优秀的直接视频群聊平台。它提供了简洁直观的界面,高清的视频质量和流畅的音视频同步,方便用户进行面对面的交流。同时,它也支持多参与者的群聊,适用于不同场合的协作和讨论。如果你需要一个开源的、安全的直接视频群聊平台,briefing无疑是一个不错的选择。

备注:本文禁止转载,转载需要获得本人授权。
现本人CSDN-id:jks212454授权在微信公众号:运维江湖客,id:gh_2eaa06b92a76发表该博文

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
学之思开源考试系统是一款基于Web的在线考试系统,通过使用Docker进行部署可以提供更加灵活和高效的管理与运维。 Docker是一个轻量级的容器化平台,它可以将应用程序及其依赖性打包在一个虚拟容器中,使其可以在不同的环境中快速部署和运行。对于学之思开源考试系统来说,使用Docker进行部署具有以下几个优势: 1. 简化部署流程:使用Docker可以将学之思考试系统及其所有依赖项打包为一个镜像,只需在目标环境中安装Docker并加载该镜像即可完成部署。避免了繁琐的依赖项安装和配置过程,节省了时间和精力。 2. 灵活性与可移植性:Docker容器可以在不同的操作系统和硬件平台上运行,无需重新编译或修改代码。这意味着无论在本地开发环境还是生产服务器上都可以轻松部署学之思考试系统。 3. 高效的资源利用:Docker可以根据应用程序的需求对资源进行动态调整,有效地利用服务器的资源,提高系统的性能和稳定性。 4. 安全性:Docker使用沙箱机制隔离应用程序,每个容器都有自己的文件系统和网络空间。这种隔离性可以增加系统的安全性,防止应用程序之间的相互干扰或恶意操作。 总的来说,使用Docker部署学之思开源考试系统可以简化部署流程、提高灵活性和可移植性、高效利用资源并提升系统的安全性。这使得学之思考试系统更加易于管理和维护,为用户提供一个稳定、安全且高效的在线考试平台。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖有缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值