Linux本地部署开源AI的PDF工具—Stirling PDF并实现公网随时访问

news2024/12/25 14:06:46

文章目录

    • 1. 安装Docker
    • 2. 本地安装部署StirlingPDF
    • 3. Stirling-PDF功能介绍
    • 4. 安装cpolar内网穿透
    • 5. 固定Stirling-PDF公网地址

本篇文章我们将在Linux上使用Docker在本地部署一个开源的PDF工具——Stirling PDF,并且结合cpolar的内网穿透实现公网随时随地访问。

Stirling PDF一个强大的本地托管的基于Web的PDF操作工具,使用Docker,允许您对PDF文件执行各种操作,如分割、合并、转换、重组、添加图片、旋转、压缩等。这个本地托管的Web应用程序最初是一个100%由ChatGPT制作的应用程序,现在已经发展到包含了一系列的功能,以满足您所有的PDF需求。

1. 安装Docker

本文演示环境:CentOS7,Xshell7远程ssh

没有安装Docker的小伙伴需安装Docker,已有Docker可跳过以下步骤。

如没有安装Docker,需先安装Docker:

  • 安装软件包(提供实用程序)并设置存储库

    $ sudo yum install -y yum-utils
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    安装Docker引擎

    sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    启动Docker

    sudo systemctl start docker
    

    通过运行映像来验证 Docker 引擎安装是否成功

    sudo docker run hello-world
    

2. 本地安装部署StirlingPDF

检查Docker服务是否正常运行

systemctl status docker

检查Docker版本

docker -v

检查Docker compose版本

docker compose version

在docker hub下载Stirling-PDF镜像

docker pull   frooodle/s-pdf:latest

image-20240312222816334

使用docker-cli快速创建Stirling-PDF容器

image-20240312222947052

检查Stirling-PDF容器状态状态,确保Stirling-PDF容器正常启动

docker ps

image-20240312223151827

检查Stirling-PDF容器日志,确保Stirling-PDF服务正常运行

docker logs stirling-pdf

image-20240312223535039

本地访问地址:192.168.149.143:8380,将IP替换为自己服务器IP地址

image-20240312223813221

语言切换:点击“地球”形状小图标,点击简体中文即可

image-20240312224347941

image-20240312224451561

3. Stirling-PDF功能介绍

Stirling-PDF还有很多功能,比如:合并/拆分/旋转/移动PDF及其页面的完全交互式GUI、将多个 PDF 合并到一个生成的文件中、将 PDF 拆分为多个文件,并按指定的页码或将所有页面提取为单个文件、将PDF转换为Word/Powerpoint/Others等,接下来举两个常用功能。

将word文档转换为PDF文档

点击菜单栏中的转换模块,选择将“将文件转换为PDF文件”选项。

image-20240312224939935

image-20240312225137499

添加水印功能

安全——添加水印,填写水印内容,确认即可

image-20240312225352581

我们就成功在本地搭建了Stirling-PDF,但如果想实现出门在外,或者直接把这个功能分享给身边人,省去本地部署的步骤,并且也能随时随地使用Stirling-PDF进行异地工作就需要借助cpolar内网穿透工具来实现公网访问了!接下来介绍一下如何安装cpolar内网穿透并实现Stirling-PDF的公网访问!

4. 安装cpolar内网穿透

下面是安装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 管理界面配置即可。

接下来配置一下Stirling-PDF的公网地址,

登录后,点击左侧仪表盘的隧道管理——创建隧道,

创建一个Stirling-PDF的公网http地址隧道

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

image-20240312231347241

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

image-20240312231502581

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

image-20240312231654447

小结

如果我们需要长期异地远程访问Stirling-PDF,由于刚才创建的是随机的地址,24小时会发生变化。另外它的网址是由随机字符生成,不容易记忆。如果想把域名变成固定的二级子域名,并且不想每次都重新创建隧道来访问Stirling-PDF,我们可以选择创建一个固定的http地址来解决这个问题。

5. 固定Stirling-PDF公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,方便分享给别人长期查看你的博客,而无需每天重复修改服务器地址。

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

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

image-20240312231950575

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

image-20240312232024660

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

image-20240312232115628

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

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

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

image-20240312232230342

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

image-20240312232337457

最后,我们使用固定的公网https地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,可以随时随地进行异地访问Stirling-PDF!

image-20240312232450992

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

88. 合并两个有序数组 (Swift版本)

题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并…

Java高级编程—泛型

文章目录 1.为什么要有泛型 (Generic)1.1 泛型的概念1.2 使用泛型后的好处 2.在集合中使用泛型3.自定义泛型结构3.1 自定义泛型类、泛型接口3.2 自定义泛型方法 4.泛型在继承上的体现5.通配符的使用5.1 基本使用5.2 有限制的通配符的使用 1.为什么要有泛型 (Generic) Java中的…

为什么我接不到大单?

以前的领导创业多年,今天找我聊了一下想让我跟他一起做点事情,聊了一下我的现状,突然让我明白为何我一直都接不到大单了 说起来也不是完全没有好的机会,貌似有点像“公交车定律”,当我很忙碌的时候订单一个接一个&…

IP在网络通信中的重要作用

IP,全称Internet Protocol,即网际互连协议,是TCP/IP体系中的网络层协议。IP作为整个TCP/IP协议族的核心,是构成互联网的基础。它的作用重大且深远,下面将详细阐述IP的定义及其在网络通信中的重要作用。 首先&#xff0…

LVGL移植到ARM开发板(GEC6818开发板)

LVGL移植到ARM开发板(GEC6818开发板) 一、LVGL概述 LVGL(Light and Versatile Graphics Library)是一个开源的图形用户界面库,旨在提供轻量级、可移植、灵活和易于使用的图形用户界面解决方案。 它适用于嵌入式系统…

陈景东:集中与分布式拾音与声信号处理 | 演讲嘉宾公布

一、声音与音乐技术专题论坛 声音与音乐技术专题论坛将于3月28日同期举办! 声音的应用领域广泛而深远,从场所识别到乐器音响质量评估,从机械故障检测到心肺疾病诊断,声音都发挥着重要作用。在互联网、大数据、人工智能的时代浪潮中…

爬虫逆向实战(35)-MyToken数据(MD5加盐)

一、数据接口分析 主页地址:MyToken 1、抓包 通过抓包可以发现数据接口是/ticker/currencyranklist 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个code参数 请求头是否加密? 无 响应是否加密&#xf…

【OpenCV实战】基于OpenCV中DNN(深度神经网络)使用OpenPose模型实现手势识别详解

一、手部关键点检测 如图所示,为我们的手部关键点所在位置。第一步,我们需要检测手部21个关键点。我们使用深度神经网络DNN模块来完成这件事。通过使用DNN模块可以检测出手部21个关键点作为结果输出,具体请看源码。 二,openpose手势识别模型 OpenPose的原理基于卷积神经网…

Arcgis新建位置分配求解最佳商店位置

背景 借用Arcgis帮助文档中的说明:在本练习中,您将为连锁零售店选择可以获得最大业务量的商店位置。主要目标是要将商店定位在人口集中地区附近,因为这种区域对商店的需求量较大。设立这一目标的前提是假设人们往往更多光顾附近的商店,而对于距离较远的商店则较少光顾。您…

构建用户身份基础设施,推动新能源汽车高质量发展

随着市场进入智能电动汽车时代,车企们发现,在激烈竞争的市场中不断增长,并不是一件容易的事。《麻省理工科技评论》,前段时间写了一篇报道:中国是如何称霸电动汽车世界的?“过去两年,中国电动汽…

学点Java打小工——Day2Day3一点作业

1 猜数字(10次机会) 随机生成[1,1000]的一个数,输入你猜的数程序会给出反馈,直到猜对或次数用尽(10次)。 //猜数字 10次机会Testpublic void guessNumber() {Random random new Random();// [0, 1000) 1// [1, 1000]int num ra…

【JavaScript】JavaScript 简介 ④ ( 解释型语言 和 编译型语言 | 计算机程序本质 | 编译器 和 解释器 )

文章目录 一、 解释型语言 和 编译型语言1、计算机程序本质2、编译器 和 解释器3、编译器 分析4、解释器 分析 一、 解释型语言 和 编译型语言 1、计算机程序本质 计算机 的 程序 是在 CPU 上执行的 , CPU 上执行的只有匹配该 CPU 的机器码指令 , 不同类型的 CPU 执行的 机器码…

【django framework】ModelSerializer+GenericAPIView,如何获取HTTP请求头中的信息(远程IP、UA等)

【django framework】ModelSerializerGenericAPIView,如何获取HTTP请求头中的信息(远程IP、UA等) 某些时候,我们不得不获取调用当前接口的客户端IP、UA等信息,如果是第一次用Django Restframework,可能会有点懵逼,那么…

【分布式websocket】群聊中的各种难点以及解决推拉结合【第16期】

前言 群聊中未读消息如何设计,以及是推消息还是拉去消息如何选择是需要讨论的。推送消息是推送全量消息还是推送信号消息让客户端再去拉取。其中方案如何选型会比较纠结。 首先基本的推拉结合思路是在线用户推送消息。用户离线的话上线去拉取消息。这是简单的推拉结…

Nginx、LVS、HAProxy工作原理和负载均衡架构

当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。 在实际应用…

Camtasia Studio 编辑好的视频如何生成MP4

Camtasia Studio 是一款功能强大的屏幕录像和视频编辑软件,由 TechSmith 公司开发。它可以帮助用户轻松地录制屏幕和音频、添加注释和特效、剪辑和编辑视频,并导出高质量的视频文件。作为一款非常流行的视频制作工具,Camtasia Studio 在教育、…

论文阅读-federated unlearning via class-discriminative pruning

论文阅读-federated unlearning via class-discriminative pruning FUCP 通过类别区分性剪枝进行联邦遗忘 综述中描述:属于面向全局模型中的局部参数调整 利用卷积层的结构特定进行联邦忘却学习,wang等人提出了针对图像分类任务的联邦忘却学习算法FUCP&…

Oracle with as用法

一、简介 with…as关键字,是以‘with’关键字开头的sql语句,在实际工作中,我们经常会遇到同一个查询sql会同时查询多个相同的结果集,即sql一模一样,这时候我们可以将这些相同的sql抽取出来,使用with…as定…

ETH共识升级之路

简介 根据我们之前的介绍,了解到ETH网络的共识方式,已经从 PoW 切换到了 PoS,今天我们就回顾下升级之路,以及升级带来的影响 最早的共识机制 PoW 以太坊创建之初采用了类似比特币的工作量证明机制,即矿工通过计算哈希函…

【排序算法】-- 深入理解桶排序算法

概述 在计算机科学中,排序算法是一种对数据进行有序排列的重要技术。桶排序(Bucket Sort)是一种常见的排序算法,它通过将数据分到有限数量的桶中,并对每个桶中的数据分别排序,最后按照顺序将所有桶中的数据…