如何使用Docker搭建WBO在线协作工具并实现无公网IP远程编辑本地白板

文章目录

    • 前言
    • 1. 部署WBO白板
    • 2. 本地访问WBO白板
    • 3. Linux 安装cpolar
    • 4. 配置WBO公网访问地址
    • 5. 公网远程访问WBO白板
    • 6. 固定WBO白板公网地址

前言

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

下面结合cpolar内网穿透工具,实现远程访问我们本地的WBO白板,远程访问的好处包括:

  1. 可以让多个用户在不同的地点同时协作,提高工作效率和沟通效果。
  2. 可以随时随地访问和编辑白板,方便灵活。
  3. 可以节省时间和成本,避免因为地理位置限制而无法进行协作。
  4. 可以实时更新和保存白板状态,方便后续查看和修改。

1. 部署WBO白板

官方提供了docker 一键部署启动,本例采用docker 方式部署,如需使用其他安装方式请参考官方文档,首先创建一个包含白板的目录:

mkdir /usr/local/wbo-boards

然后给该目录设置权限

chown -R 1000:1000 /usr/local/wbo-boards

执行docker 命令,一键运行WBO白板,访问端口为5001:

docker run -it --publish 5001:80 --volume "/usr/local/wbo-boards:/opt/app/server-data" lovasoa/wbo:latest

2. 本地访问WBO白板

docker部署成功后,打开浏览器,访问5001端口,即可访问WBO主页

image-20231019134931663

进入白板,即可愉快的进行创作了,本地访问成功了,下面进行远程设置,安装cpolar内网穿透软件

image-20231019135145843

3. Linux 安装cpolar

上面在本地Linux中成功部署了WBO创作白板,并局域网访问成功,下面我们在Linux安装cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问Linux 的9200端口即:【http://局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可

image-20231016143741228

4. 配置WBO公网访问地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个WBO 创作白板的cpolar 公网地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:5001(本地访问时的端口)
  • 域名类型:免费选择随机域名
  • 地区:选择China

点击创建

image-20231019140421429

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https

5. 公网远程访问WBO白板

使用上面的cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们WBO白板主界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问!

image-20231019140858850

6. 固定WBO白板公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20231019141350496

保留成功后复制保留成功的二级子域名的名称

image-20231019141412305

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20231019141446005

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20231019141519306

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名

image-20231019141545532

最后,我们使用固定的公网地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以远程访问WBO白板界面!!

image-20231019141640415

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/290644.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015年认证杯SPSSPRO杯数学建模B题(第二阶段)替换式密码全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 B题 替换式密码 原题再现: 历史上有许多密码的编制方法。较为简单的是替换式密码,也就是将文中出现的字符一对一地替换成其它的符号。对拼音文字而言,最简单的形式是单字母替换加密,也就是以每个…

Verilog语法之assign语句学习

assign语法主要是对组合逻辑的变量进行赋值的,就是把一个变量赋值给另一个变量,被复制的变量必须是wire类型的参数。 从仿真结果可以看出,data_in变量的值赋值给了data_out,assign语法就是赋值没有任何延迟,data_in是什么值&#…

C++ —— C++11新增语法

目录 一,列表初始化 1.1 这是什么? 1.2 initializer_list 1.3 在容器的运用 1.4 STL中的变化 二,右值引用和左值引用 2.1 是什么? 2.2 这两个东西有啥关系? 2.3 有啥用? 三,*移动构…

【数据结构】顺序表习题之移除元素和合并两个有效数组

👑个人主页:啊Q闻 🎇收录专栏:《数据结构》 🎉道阻且长,行则将至 前言 嗨呀,今天的博客是关于顺序表的两道题目,是力扣的移除元素和合并有序数组的题目。 一.移除…

sheng的学习笔记-AI-人脸识别

目录:sheng的学习笔记-AI目录-CSDN博客 需要学习卷机神经网络等知识,见ai目录 目录 基础知识: 人脸验证(face verification) 人脸识别(face recognition) One-Shot学习(One-shot learning&…

HarmonyOS 应用开发之UIAbility组件基本用法

UIAbility组件的基本用法包括:指定UIAbility的启动页面以及获取UIAbility的上下文 UIAbilityContext。 指定UIAbility的启动页面 应用中的UIAbility在启动过程中,需要指定启动页面,否则应用启动后会因为没有默认加载页面而导致白屏。可以在…

新开发的客户对自己不够信任不敢下单怎么办?

重要通知: 4月7日起,顶易海关数据一年一度重磅众筹活动马上来袭!*00元即可获得海关数据系统,蹲住啦! 记得添加业务经理137--3194--9879提前锁定名额哦! 近期,某品牌开咨询会,客户谈到了一个问题&#xf…

istio 设置 istio-proxy sidecar 的 resource 的 limit 和 request

方式一 修改 configmap 查看当前 sidecar 的 cpu 和 memory 的配额 在 istio-sidecar-injector 中查找,修改后重启 pod 可以生效(下面那个 proxy_init 配置不管,不知道是干嘛的) 方式二 如果是通过 iop 安装的 istio&#xf…

Java毕业设计-基于springboot开发的游戏分享网站平台-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、后台登录2.1管理员功能模块2.2用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的…

同城外卖多商户点餐系统平台开发JAVA版源码跑腿小程序APP

项目背景 在快节奏的现代生活中,人们对于时间的需求愈发敏感。如何在忙碌中兼顾生活与工作,如何在繁杂琐事中找到一丝便利,这已然成为众多都市人共同关心的议题。在这样的背景下,同城外卖跑腿系统软件应运而生,以其高…

Challenging BIG-Bench tasks and whether chain-of-thought can solve them阅读笔记

不是新文章哈,就是最近要看下思维链(chain of thought,CoT)这块,然后做点review。 文章链接(2022年):https://arxiv.org/pdf/2210.09261.pdf GitHub链接:GitHub - suzg…

基于Arduino IDE 野火ESP8266模块 定时器 的开发

一、delay函数实现定时 如果不需要精确到微秒级别的控制,可以使用Arduino的内置函数 millis()和delay() 来创建简单的定时器。millis()函数返回Arduino板启动后的毫秒数,而delay()函数会暂停程序的执行一段时间。 示例代码如下: delay()函数…

docker中配置交互式的JupyterLab环境的问题

【报错1】 Could not determine jupyter lab build status without nodejs 【解决措施】安装nodejs(利用conda进行安装/从官网下载进行安装) 1、conda安装 conda install -c anaconda nodejs 安装后出现其他报错:Please install nodejs 5 and npm bef…

Go语言学习Day2:注释与变量

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、注释①为什么要写注释?②单行注释…

Unity颗粒血条的实现(原创,参考用)

1.创建3个静态物体摆好位置,并将其图层设为UI 2.编写一个脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class xt : MonoBehaviour {public GameObject xt1;public GameObject xt2;public GameObject xt3;int x 1;…

Unity | 工具类-UV滚动

一、内置渲染管线Shader Shader"Custom/ImageRoll" {Properties {_MainTex ("Main Tex", 2D) "white" {}_Width ("Width", float) 0.5_Distance ("Distance", float) 0}SubShader {Tags {"Queue""Trans…

JavaEE企业开发新技术4

2.16 模拟Spring IOC容器功能-1 2.17 模拟Spring IOC容器功能-2 什么是IOC? 控制反转,把对象创建和对象之间的调用过程交给Spring框架进行管理使用IOC的目的:为了耦合度降低 解释: 模仿 IOC容器的功能,我们利用 Map…

多线程的学习1

多线程 线程是操作系统能够进入运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程:是程序的基本执行实体。 并发:在同一个时刻,有多个指令在单个CPU上交替执行。 并行:在同一时刻&#xff0c…

排序---数组和集合

1、数组排序 Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序,并且是按照从小到大的排序。 public static void main(String[] args) {Integer []arr {1,2,3,4,5,6};//升序Arrays.sort(arr);for (int x:arr){System.out.print(x " ");}Sys…

Redis桌面客户端

3.4.Redis桌面客户端 安装完成Redis,我们就可以操作Redis,实现数据的CRUD了。这需要用到Redis客户端,包括: 命令行客户端图形化桌面客户端编程客户端 3.4.1.Redis命令行客户端 Redis安装完成后就自带了命令行客户端&#xff1…