当前位置: 首页 > news >正文

CentOS 部署 WBO 在线协作白板

1)WBO 白板工具介绍

1.1)WBO 白板简介

WBO 是一个自由和开源的在线协作白板。它允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用户实时更新,并且状态始终保持。它可以用于许多不同的目的,包括艺术、娱乐、设计和教学。

1.2)WBO 白板特点

  • 要与某人实时协作绘制图形,只需向他们发送白板的 URL。
  • 每个人都可以使用公共白板。
  • 创建一个带有随机名称的私有白板,该白板只能通过其链接访问。
  • 创建一个可命名的私有白板,并自定义其 URL,所有知道它名字的人都可以访问它。

2)本地环境介绍

2.1)本地环境规划

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

hostname本地P地址操作系统版本内核版本node版本
blog10.0.59.114CentOS 7.63.10.0-957.el7.x86_64v16.17.0

2.2)本次实践介绍

  1. 本次实践部署环境为个人测试环境
  2. 在 CentOS 7.6 环境下 WBO 在线协作白板。

3)检查本地环境

3.1)检查本地操作系统版本

检查本地操作系统版本

cat /etc/redhat-release

3.2)检查系统内核版本

检查系统内核版本

uname -r

4)部署 Node.js 环境

4.1)下载 Node.js 安装包

在 /root 目录下,下载 Node.js 安装包,下载版本为 v16.17.0。

cd /root && wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz

4.2)解压 Node.js 安装包

在 /root 目录下,解压 Node.js 安装包

tar -xvJf node-v16.17.0-linux-x64.tar.xz

4.3)链接二进制文件

将 /root/node-v16.17.0-linux-x64/bin/ 下的二进制文件链接到 /usr/local/bin 下

ln -s  /root/node-v16.17.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v16.17.0-linux-x64/bin/npm /usr/local/bin/npm

4.4)配置环境变量

在 /etc/profile 文件中,尾行新增以下两行:

vim /etc/profile
export NODE_HOME=/root/node-v16.17.0-linux-x64/bin/
export PATH=$PATH:$NODE_HOME:/usr/local/bin/

使变量生效

source /etc/profile

4.5)查看 node 版本

查看 node 版本

npm -v
node -v

image.png

5)下载 WBO 源码包

5.1)下载 WBO 源码包

GitHub 下载 WBO 源码包

yum install git -ygit clone https://github.com/lovasoa/whitebophir.git

5.2)查看源码目录

查看 WBO 白板工具源码目录

ls ~/whitebophir/
tree -L 2 ~/whitebophir/

6)部署 WBO 在线协作白板

6.1)进入 WBO 源码目录

进入 WBO 源码目录

cd whitebophir/

6.2)设置 npm 镜像源

npm 设置国内淘宝镜像源

npm config set registry https://registry.npmmirror.com

6.3)安装依赖

安装 WBO 项目的依赖

npm install --production

6.4)启动 WBO 服务

启动 WBO 服务

PORT=5001 HOST=0.0.0.0 npm start

后台启动 WBO 服务

PORT=5001 HOST=0.0.0.0 npm start &

6.5)设置 service 服务

设置 WBO 为 service 服务,使用 systemctl 管理。

vim /etc/systemd/system/wbo.service
[Unit]
Description=wbo
After=network.target[Service]
Type=simple
Environment="PORT=5001" "HOST=0.0.0.0"
ExecStart=/root/node-v16.17.0-linux-x64/bin/npm start
ExecReload=/root/node-v16.17.0-linux-x64/bin/npm restart
ExecStop=/root/node-v16.17.0-linux-x64/bin/npm  stop
WorkingDirectory=/root/whitebophir/
Restart=always
User=root
Group=root
Environment=NODE_ENV=production[Install]
WantedBy=multi-user.target

启动 wbo 服务

systemctl daemon-reload
systemctl start wbo && systemctl enable wbo

重启服务器后,查看 wbo 服务状态。

systemctl restart wbo
systemctl status wbo

image.png

6.6)本地测试 WBO 服务

在本地访问 http://10.0.59.114:5001/,有 wbo 网页返回则部署成功。

image.png

6.7)防火墙和 SELinux 设置

设置 SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
cat /etc/selinux/config | grep disabled
setenforce 0

关闭防火墙,如果想要开启防火墙,需放行 5001 端口。

systemctl stop firewalld && systemctl disable firewalld

7)访问 WBO 在线协作白板

7.1)访问 WBO 首页

访问地址:http://10.0.59.114:5001/,将IP替换为自己服务器IP地址。

image.png

7.2)创建私人白板

创建可命名的私人白板,可以愉快的使用 WBO 白板了。

image.png
image.png

7.3)在线协作

进入公共白板,进行绘图操作。

image.png
image.png

在另外一台电脑或浏览器打开,可以进行协作绘图。

image.png
image.png

8)WBO 在线协作白板使用总结

wbo 白板工具目前仅支持基本的绘画、文字和标注工具,暂不支持高级功能如形状、图表等。此外,在进行协作时,需要确保网络连接稳定,否则可能会发生卡顿或数据丢失等问题。总体而言,wbo 是一款简单易用的在线白板协作工具,广泛应用于团队合作、教学、头脑风暴等场景,具有较高的应用价值。

相关文章:

CentOS 部署 WBO 在线协作白板

1)WBO 白板工具介绍 1.1)WBO 白板简介 WBO 是一个自由和开源的在线协作白板。它允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用户实时更新,并且状态始终保持。它可以用于许多不同的目的,包括艺术、娱乐、设计和…...

qt-C++笔记之QStringList

qt-C笔记之QStringList —— 杭州 2023-12-03 文章目录 qt-C笔记之QStringList1.1.《Qt官方文档》第一部分翻译&#xff1a;继承自QList\<QString\>-初始化-添加字符串1.2.迭代字符串1.3.join()和split()1.4.filter()1.5.lastIndexOf()1.6.indexOf()1.7.replaceInString…...

ply前端

ply 是 eBPF 的 front-end 前端工具之一&#xff0c;专为 embedded Linux systems 开发&#xff0c;采用 C 语言编写&#xff0c;只需 libc 和内核支持 BPF 就可以运行&#xff0c;不需要外部 kernel 模块&#xff0c;不需要 LLVM&#xff0c;不需要 python。 ply 由瑞典工程师…...

U盘不仅能在电脑上使用,在手机上也可使用,包括安卓和苹果手机,但苹果的较特殊

许多最好的安卓手机都使用USB-C端口在电脑上充电和来回传输文件,但如果你需要给老板发电子邮件的文件放在闪存驱动器或全尺寸SD卡上呢? 幸运的是,使用廉价的适配器电缆,你可以将USB加密狗或读卡器直接连接到手机上。你甚至可以直接使用USB-C闪存驱动器,以实现更轻松的过程…...

面试数据库八股文十问十答第二期

面试数据库八股文十问十答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.MySQL的主从复制 MySQL的主从复制是什么&#xff1f;MySQL主从复制是一种常见的…...

【LeetCode】每日一题 2023_12_2 拼车(模拟/差分)

文章目录 刷题前唠嗑题目&#xff1a;拼车题目描述代码与解题思路学习大佬题解 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 题目&#xff1a;拼车 题目链接&#xff1a;1094. 拼车 题目描述 代码与解题思路 func carPooling(trips [][]int…...

网络和Linux网络_7(传输层)UDP和TCP协议(端口号+确认应答+超时重传+三次握手四次挥手)

目录 1. 重看端口号 1.1 端口号的概念 1.2 端口号的划分 2. 重看UDP协议 2.1 UDP协议格式 2.2 UDP的特点 3. 重看TCP协议 3.1 TCP协议格式 3.2 TCP的解包分用 3.3 TCP的可靠性及机制 3.3.1 确认应答ACK机制 3.3.2 超时重传机制 3.3.3 连接管理机制&#xff08;三次…...

KALI LINUX安全审核

预计更新 第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …...

2023-12-03-解决libxkbcommon库编译完后图像界面不能使用键盘

layout: post # 使用的布局&#xff08;不需要改&#xff09; title: Ubuntu修复 # 标题 subtitle: 解决libxkbcommon库编译完图形界面不能使用键盘 #副标题 date: 2023-12-03 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背景图片 c…...

vue el-table表格中每行上传文件(上传简历)操作

1、HTML中 <el-table :data"formInfo.userListDto" border stripe max-height"400"><el-table-column type"index" label"序号" width"50"> </el-table-column><el-table-column prop"realName&q…...

Python批量图像处理--图片重命名、图片旋转

图像批量重命名&#xff1a; 使用batch_rename_images函数实现对多个文件夹下面的图片进行重命名操作 先检查文件名的后缀&#xff0c;使用了.endswith()方法来判断文件名是否以.jpg、.png或.JPG结尾&#xff0c;判断是否为图片文件 然后构造新的文件路径new_filepath&#…...

第五天 用Python批量处理Excel文件,实现自动化办公

用Python批量处理Excel文件&#xff0c;实现自动化办公 一、具体需求 有以下N个表&#xff0c;每个表的结构一样&#xff0c;如下&#xff1a; 需要把所有表数据汇总&#xff0c;把每个人的得分、积分分别加起来&#xff0c;然后按总积分排名&#xff0c;总积分一致时&#xff…...

mybatis整合(手动添加jar包方式)

操作步骤 创建数据库 建立user表 放入数据 1、创建javaweb工程并添加Jar包 用到的jar包 junit 用于测试 mybatis框架&#xff1a;mybatis-3.5.9.jar mysql数据库&#xff1a;mysql-connector-java-8.0.28.jar 2、添加MyBatis核心配置文件 <?xml version"1.0"…...

leetcode - 矩阵区域和

1314. 矩阵区域和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c …...

头歌JUnit单元测试相关实验进阶

JUnit是一个由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架&#xff08;regression testing framework&#xff09;&#xff0c;主要供 Java 开发人员编写单元测试。Junit在极限编程和重构中被极力推荐使用&#xff0c;因为它可以大大地提高开发的效率。 Junit的特性&…...

【kafka实践】11|消费位移提交

消费者位移 消费者位移这一节介绍了消费者位移的基本概念和消息格式&#xff0c;本节我们来聊聊消费位移的提交。 Consumer 需要向 Kafka 汇报自己的位移数据&#xff0c;这个汇报过程被称为提交位移&#xff08;Committing Offsets&#xff09;。因为 Consumer 能够同时消费…...

Mac卸载、安装Python

卸载 说明 对于删除 Python&#xff0c;我们首先要知道其具体都安装了什么&#xff0c;实际上&#xff0c;在安装 Python 时&#xff0c;其自动生成&#xff1a; Python framework&#xff0c;即 Python 框架&#xff1b;Python 应用目录&#xff1b;指向 Python 的连接。 …...

算法——滑动窗口

滑动窗口大致分为两类&#xff1a;一类是窗口长度固定的&#xff0c;即left和right可以一起移动&#xff1b;另一种是窗口的长度变化&#xff08;例如前五道题&#xff09;&#xff0c;即right疯狂移动&#xff0c;left没怎么动&#xff0c;这类题需要观察单调性(即指针)等各方…...

带头双向循环链表:一种高效的数据结构

&#x1f493; 博客主页&#xff1a;江池俊的博客⏩ 收录专栏&#xff1a;数据结构探索&#x1f449;专栏推荐&#xff1a;✅cpolar ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f525;编译环境&#xff1a;Visual Studio 2022&#x1f389;欢迎大…...

C++基础 -34- 输入输出运算符重载

输出运算符重载格式 ostream & operator<<(ostream &out,person a) {cout << a.a << endl;return out; }举例输出运算符重载 #include "iostream"using namespace std;class person {public:person(int a):a(a){}int a; };ostream &…...

Belullama:本地大模型部署的瑞士军刀,兼容Ollama API

1. 项目概述&#xff1a;一个为本地大模型量身定制的“瑞士军刀”如果你和我一样&#xff0c;热衷于在本地部署和折腾各种开源大语言模型&#xff0c;那你一定遇到过这样的场景&#xff1a;好不容易从Hugging Face或者ModelScope上拖下来一个几十GB的模型文件&#xff0c;兴冲冲…...

DIY蓝牙光桌:基于CircuitPython与NeoPixel的智能照明方案

1. 项目概述几年前&#xff0c;当我重新拾起钢笔书写的爱好时&#xff0c;一个看似简单却令人困扰的问题出现了&#xff1a;如何在优质但往往偏厚的信纸上写出整齐、笔直的行列&#xff1f;传统的纸质衬线格在纸下常常模糊不清。作为一名习惯了用技术解决问题的硬件爱好者&…...

OpenResearcher:AI驱动的模块化科研工作流框架实践指南

1. 项目概述&#xff1a;一个为研究者量身打造的AI驱动开源工具箱最近在折腾一些研究项目&#xff0c;发现从文献调研、数据处理到论文写作&#xff0c;整个流程里重复性劳动实在太多了。每次开一个新坑&#xff0c;光是搭建基础环境、找合适的工具链就得花上半天&#xff0c;更…...

AI计算工作量化模型:跨硬件效能评估与能效优化

1. AI工作量化模型的核心价值与应用场景在当今AI技术快速渗透到各行各业的背景下&#xff0c;如何准确衡量AI系统的计算效率和工作量成为一个关键问题。传统上&#xff0c;我们使用FLOPs&#xff08;每秒浮点运算次数&#xff09;等指标来评估计算性能&#xff0c;但这些指标存…...

基于MCP协议构建AI驱动的加密货币数据智能查询系统

1. 项目概述&#xff1a;当加密货币数据需要“智能”起来如果你正在开发一个需要实时加密货币数据的应用&#xff0c;或者你是一个数据分析师&#xff0c;每天需要手动从几十个交易所网站和API里抓取价格、市值、交易量&#xff0c;那么你大概率已经对数据源的分散、格式的不统…...

你的群晖NAS性能过剩了吗?试试用它跑个万兆测速服务,榨干内网带宽

如何用群晖NAS搭建专业级内网测速平台&#xff1a;从硬件压榨到性能调优全指南 当你为家庭或工作室部署了万兆网络环境后&#xff0c;最令人抓狂的莫过于花了大价钱升级设备&#xff0c;却无法确认实际带宽是否达标。那些标榜"万兆兼容"的交换机、网卡和NAS&#xff…...

Python项目交付倒计时?用Gemini自动补全+单元测试+异常修复(实测缩短交付周期68%)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python项目交付倒计时&#xff1f;用Gemini自动补全单元测试异常修复&#xff08;实测缩短交付周期68%&#xff09; 在紧迫的项目截止日前&#xff0c;Python 开发者常陷入“写完即上线、出错再救火”的…...

基于STM32G474高精度定时器HRTIM的高频开关电源移相控制实现

1. STM32G474的HRTIM为何是高频电源设计的利器 第一次接触STM32G474的高精度定时器HRTIM时&#xff0c;我正被DSP28335的分辨率问题困扰。当时做的1MHz开关电源项目&#xff0c;150MHz主频的DSP每个时钟周期只能提供150个计数点&#xff0c;调节精度捉襟见肘。直到发现HRTIM的5…...

别再只堆叠4层了!用DenseGCN构建超深图网络,点云分割mIoU提升实战

突破GCN深度瓶颈&#xff1a;DenseGCN在点云分割中的实战优化指南 传统图卷积网络&#xff08;GCN&#xff09;通常被限制在3-4层的浅层架构中&#xff0c;这种深度限制严重制约了其在点云分割等复杂任务中的表现。本文将揭示如何通过密集连接&#xff08;Dense Connections&am…...

基于Google Workspace API与LLM的办公自动化技能框架设计与实现

1. 项目概述&#xff1a;当Google Workspace遇上AI技能 如果你和我一样&#xff0c;日常重度依赖Google Workspace&#xff08;以前叫G Suite&#xff09;来处理邮件、文档、表格和日历&#xff0c;那你肯定也想过&#xff1a;要是这些工具能更“聪明”一点就好了。比如&#…...