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

Linux系统Docker部署StackEdit Markdown并实现公网访问本地编辑器

文章目录

      • 前言
      • 1. ubuntu安装VNC
      • 2. 设置vnc开机启动
      • 3. windows 安装VNC viewer连接工具
      • 4. 内网穿透
        • 4.1 安装cpolar【支持使用一键脚本命令安装】
        • 4.2 创建隧道映射
        • 4.3 测试公网远程访问
      • 5. 配置固定TCP地址
        • 5.1 保留一个固定的公网TCP端口地址
        • 5.2 配置固定公网TCP端口地址
        • 5.3 测试使用固定公网地址远程
      • 总结


前言

实现ubuntu 系统桌面级别的远程连接,需要在ubuntu 系统中安装vnc,既然是桌面,前提是需要ubuntu 带有图形化界面,如果没有,可以执行以下命令安装图形化界面

sudo apt install ubuntu-desktop sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal sudo reboot #重启即可看到图形界面

1. ubuntu安装VNC

在ubuntu中安装vnc

sudo apt-get install x11vnc

Image

安装LightDM【LightDM从设计上就是支持本地图形界面以获得最好的兼容性】

sudo apt-get install lightdm

安装过程中会出现以下选项,选择lightdm然后回车即可

在这里插入图片描述

设置密码,设置密码后,会问你是否需要将密码保存在:/home/root1/.vnc/passwd,输入y确认即可

x11vnc -storepasswd

在这里插入图片描述

2. 设置vnc开机启动

创建一个x11vnc.service文件

sudo vim /lib/systemd/system/x11vnc.service

i键进入编辑模式,添加如下信息,!!注意: <USERNAME>替换为您ubuntu用户名,添加完成后按Esc键退出编辑,然后输入冒号:wq保存

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/<USERNAME>/.vnc/passwd -rfbport 5900 -shared[Install]
WantedBy=multi-user.target

在这里插入图片描述

设置开机启动

sudo systemctl enable x11vnc.service

启动服务

sudo systemctl start x11vnc.service

3. windows 安装VNC viewer连接工具

进入vnc官网,下载windows版vnc连接工具

https://www.realvnc.com/en/connect/download/viewer/

在这里插入图片描述

下载好后打开使用局域网ip进行连接,端口是5900

在这里插入图片描述

出现密码界面,输入上面设置的密码即可
在这里插入图片描述

出现ubuntu桌面表示成功
在这里插入图片描述

4. 内网穿透

本地测试远程连接没问题后,接下来我们实现在公网环境下的远程桌面,这里我们可以使用cpolar内网穿透工具实现程访问。支持http/https/tcp协议,不限制流量,无需公网ip,也无需设置路由器。

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

4.1 安装cpolar【支持使用一键脚本命令安装】
  • cpolar 安装(国内使用)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

或 cpolar短链接安装方式:(国外使用)

curl -sL https://git.io/cpolar | sudo bash
  • 查看版本号,有正常显示版本号即为安装成功
cpolar version
  • token认证

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里

cpolar authtoken xxxxxxx

20230227141344

  • 简单穿透测试,有正常生成相应的公网地址即为穿透成功
cpolar http 8080

按ctrl+c退出

  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar
  • 查看服务状态
sudo systemctl status cpolar
4.2 创建隧道映射

cpolar安装成功后,在浏览器上访问本地9200端口,【127.0.0.1:9200],使用cpolar邮箱账号登录 web UI管理界面。

在这里插入图片描述

登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个tcp协议的隧道指向本地5900端口:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:5900
  • 域名类型:免费选择随机域名
  • 地区:默认China top即可

点击创建

在这里插入图片描述

隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到,刚刚创建的隧道已经有生成了相应的公网地址+公网端口号,将其复制下来

在这里插入图片描述

4.3 测试公网远程访问

打开windows vnc viewer,使用刚刚所获取的公网地址+公网端口号进行连接。本例为2.tcp.vip.cpolar.cn:13001
在这里插入图片描述

输入密码
在这里插入图片描述

公网远程连接成功
在这里插入图片描述

5. 配置固定TCP地址

由于以上创建的隧道是随机地址隧道,该地址会在24小时内变化,为了使连接更加稳定,我们需要为其配置固定的TCP地址。

需要注意,配置固定TCP端口地址需要将cpolar升级到专业版套餐或以上。

5.1 保留一个固定的公网TCP端口地址

登录cpolar官网后台,点击左侧的预留,选择保留的TCP地址。

  • 地区:选择China VIP
  • 描述:即备注,可自定义填写

点击保留

在这里插入图片描述

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

在这里插入图片描述

5.2 配置固定公网TCP端口地址

在浏览器上登录cpolar web UI管理界面,http://127.0.0.1:9200/,点击左侧仪表盘的隧道管理——隧道列表,找到我们前面创建的vnc远程隧道,点击右侧的编辑

在这里插入图片描述

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写保留成功的地址

点击更新

在这里插入图片描述

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到vnc远程桌面隧道,可以看到公网地址已经更新成为了固定tcp地址。

在这里插入图片描述

5.3 测试使用固定公网地址远程

接下来测试使用固定TCP端口地址远程ubuntu桌面,我们再次在windows上打开VNC viewer,使用固定tcp地址连接,出现密码界面,同样输入密码

在这里插入图片描述

远程连接成功

在这里插入图片描述

总结

至此,我们成功实现了使用VNC远程桌面ubuntu:通过cpolar穿透vnc服务5900端口,使用所生成的公网地址,实现在外随时随地远程桌面控制内网的Ubuntu,不需要公网IP,也不需要配置路由器。并且,这个公网地址还是固定的,不会随机变化,连接稳定。

除了穿透vnc之外,cpolar也可以应用在其他众多场景下,比如公网ssh远程、远程群晖NAS、我的世界联机、微信公众号支付宝调试、公开一个本地web…【PS:cpolar目前还支持21天退款保证】

相关文章:

Linux系统Docker部署StackEdit Markdown并实现公网访问本地编辑器

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…...

从Spring Boot应用上下文获取Bean定义及理解其来源

前言 在Spring框架中&#xff0c;Bean是组成应用程序的核心单元。特别是在Spring Boot项目中&#xff0c;通过使用SpringApplication.run()方法启动应用后&#xff0c;我们可以获得一个ConfigurableApplicationContext实例&#xff0c;这个实例代表了整个应用程序的运行时环境…...

如何处理网络攻击对系统造成的损害?

网络攻击对系统造成的损害是当今企业面临的一大挑战。随着互联网的普及和数字化转型的加速&#xff0c;企业的运营越来越依赖于网络&#xff0c;但同时也面临着越来越多的网络安全威胁。一旦企业遭受网络攻击&#xff0c;其系统可能会遭受不同程度的损害&#xff0c;导致数据泄…...

数字IC后端设计利器 - 《Innovus的基本使用流程和命令》(附下载)

Innovus作为数字后端工具的后起之秀&#xff0c;在先进工艺下已经取得了令人瞩目的成就。其在Run time上的优势令人刮目&#xff0c;在timing、DRC、IR-drop上的结果更是让人竖起大拇指。 数字IC后端工程师学习Cadence公司的Innovus工具非常重要&#xff0c;因为Innovus是一款…...

Blender中四种不同的几何体类型(网格、曲线、体积和实例 )

网格、曲线、体积和实例是Blender中四种不同的几何体类型。它们各有特点&#xff0c;适用于不同的建模场景。 网格是由顶点、边和面组成的三维对象。它是Blender中最常用的几何体类型&#xff0c;可以用来创建各种模型&#xff0c;例如角色、场景、道具等。 曲线是一维对象&a…...

Vue3 学习笔记(Day5)

「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. Vue3 学习笔记&#xff08;Day1&#xff09; 2. Vue3 学习笔记&#xff08;Day2&…...

【网络编程】实现服务器端和客户端的通讯的简单程序

套接字是什么&#xff1f; 服务端接受连接请求的套接字创建过程可分为以下4步&#xff1a; 1、调用socket创建套接字 2、调用bind函数分配IP地址和端口号 3、调用listen函数转换为可接受请求状态 4、调用accept函数受理连接请求 1、调用socket创建套接字 serv_sock soc…...

如何在Portainer中部署Nginx容器并制作一个本地站点结合cpolar发布至公网可访问

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…...

Mysql的储存引擎

储存引擎介绍 1. 文件系统 操作系统存取数据的一种机制 2. 文件系统类型 不管使用什么文件系统&#xff0c;数据内容不会变化 不同的是&#xff0c;存储空间、大小、速度 3. MySQL存储引擎 可以理解为&#xff0c;MySQL的“文件系统”&#xff0c;只不过功能更加强大 4. MySQL…...

【查漏补缺你的Vue基础】Vue数据监听深度解析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

大语言模型LLM发展历程中的里程碑项目:国内外技术革新重塑自然语言处理(LLM系列02)

文章目录 标题&#xff1a;大语言模型LLM发展历程中的里程碑项目&#xff1a;国内外技术革新重塑自然语言处理&#xff08;LLM系列02&#xff09; 引言早期奠基阶段Transformer架构引领变革GPT系列的重大进展国内外标志性LLM项目LLM在中国的应用实践LLM研究面临的挑战与应对策略…...

JS二进制文件转换:File、Blob、Base64、ArrayBuffer

类型转换 1. Blob、File → Base64 function fileToDataURL(file) {let reader new FileReader();reader.readAsDataURL(file);reader.onload function (e) {return reader.result;}; }2. Base64 → Blob、File // Base64 转为 Blob function dataURLToBlob(fileDataURL) …...

编译opencv gpu版的条件

一、具备以下条件即可编译opencv gpu&#xff1a; 1、 终端设备必须有独立显卡。cmd窗口&#xff1a;nvidia-smi查看显卡信息 2、下载并安装CUDA Toolkit&#xff08;根据显卡下载对应的CUDA Toolkit软件&#xff09;、cuDNN&#xff08;根据CUDA版本下载对应的cuDNN&#xff0…...

List集合的Stream流式操作实现数据类型转换

问题现象&#xff1a; 最近在项目中&#xff0c;有一些逻辑想用List集合的Stream流式操作来快速实现&#xff0c;但由于之前没做好学习笔记和总结&#xff0c;导致一时间想不起来&#xff0c;只能用本方法来解决&#xff0c;如下&#xff1a; 可以看出来代码量是比较冗长的&…...

Ubuntu 20.04.6 LTS下edge浏览器点击图标没反应

1.网上的解决方案 解决Ubuntu系统下启动root账户后Linux版本edge浏览器无法启动等 2.采用的解决方案 之前我一直是在官网下载 Microsoft Edge下载&#xff0c;安装&#xff0c;卸载&#xff0c;重装的stable版本&#xff0c;然后安装,始终没有效果。 最后利用Linux&#xf…...

php基础学习之错误处理(其一)

一&#xff0c;错误处理的概念 错误处理指的是系统(或者用户)在执行某些代码的时候&#xff0c;发现有错误&#xff0c;就会通过错误处理的形式告知程序员&#xff0c;俗称报错 二&#xff0c;错误分类 语法错误&#xff1a;书写的代码不符合 PHP 的语法规范&#xff0c;语法错…...

Nginx 解析漏洞复现

环境搭建 下载之后上传到虚拟机并解压 进入这个路径 (root?kali)-[~/vulhub-master/nginx/nginx_parsing_vulnerability]就能看到有docker-compose.yml 启动环境 正常显示 增加/.php后缀&#xff0c;被解析成PHP文件&#xff1a; 漏洞原因&#xff1a;开启了cgi.fix_pathin…...

JQMobile Loader Widget 遮罩层改造

最近在用jqmobile 做一个混合APP项目时候用到 jqmobile1.4.3提供的Loader Widget控件,但是这个控件本身是一个loading弹出层,这个弹出层弹出之后,用户还是可以去点击按钮,重复发送请求,为了防止重复提交,我想了两种办法, 1,在loading弹出层弹出之后,让按钮不可用.但是form表单…...

练习 2 Web [ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 Web常规题目 首先尝试查找常见的前端页面index.php之类的&#xff0c;没找到 题目有个“BackupFile”——备份文件 尝试用工具遍历查找相关的文件 御剑没扫出来&#xff0c;搜索搭建好dirsearch后&#xff0c;扫出来的index.php.bak 扫描工…...

【python】subprocess用法示例

当然&#xff0c;下面是一些使用 Python subprocess 模块的示例&#xff1a; 1. 运行命令并捕获输出 import subprocess # 运行 ls 命令并捕获输出 result subprocess.run([ls, -l], stdoutsubprocess.PIPE, stderrsubprocess.PIPE, textTrue) # 获取命令的输出和错误信息 o…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...