Docker新手必看:快速安装和配置BookStack在线文档系统

文章目录

    • 前言
    • 1. 安装Docker
    • 2. Docker镜像源添加方法
    • 3. 创建并启动BookStack容器
    • 4. 登录与简单使用
    • 5. 公网远程访问本地BookStack
      • 5.1 内网穿透工具安装
      • 5.2 创建远程连接公网地址
      • 5.3 使用固定公网地址远程访问

前言

本文主要介绍如何在Linux系统使用Docker本地部署在线文档管理系统BookStack,并结合cpolar内网穿透工具轻松实现异地远程访问本地搭建的BookStack管理书籍文档。无需公网IP,也不用设置路由器那么麻烦。

BookStack是一个开源的、基于 Laravel + Vue.js 构建的知识管理和服务平台。具有简单但功能强大的所见即所得编辑器,也支持Markdown编辑器,允许个人或团队通过分类轻松创建与管理文档。管理员可以一键导入Markdown文档,完美处理文档间的链接和图片链接。而通过集成calibre工具,用户可以将书籍生成并导出为PDF、ePub、Mobi等格式的离线文档。

BookStack支持多种部署方式,包括手动安装和Docker部署等。本例以Docker Compose形式进行本地快速部署,并结合内网穿透技术将本地服务发布到公网,实现远程访问。

1725609753645

1. 安装Docker

本教程操作环境为Linux Ubuntu系统,在开始之前,我们需要先安装Docker。

在终端中执行下方命令安装docker:

sudo curl -fsSL https://github.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun

如果上边命令中访问不了Github,可以使用Gitee的链接安装:

sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun

然后启动Docker即可

sudo systemctl start docker

PS:执行此命令安装Docker后,无需再次安装docker-compose

2. Docker镜像源添加方法

目前docker镜像拉取已恢复正常,如仍因网络问题拉取不到镜像,可尝试在终端执行

sudo nano /etc/docker/daemon.json

输入:

{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}

保存退出

重启Docker:

sudo systemctl restart docker

3. 创建并启动BookStack容器

接下来创建BookStack项目文件夹并编辑docker-compose.yml,内容如下:

mkdir bookstack
nano docker-compose.yml

在编辑器中输入下方代码保存退出:

services:bookstack:image: ghcr.io/linuxserver/bookstack:latestcontainer_name: bookstackenvironment:- PUID=1000- PGID=1000- APP_URL=http://localhost:8282- DB_HOST=db- DB_USER=bookstack- DB_PASS=secret- DB_DATABASE=bookstackvolumes:- ./bookstack-data:/configports:- 8282:80depends_on:- dbdb:image: mysql:5.7container_name: bookstack_dbenvironment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: bookstackMYSQL_USER: bookstackMYSQL_PASSWORD: secretvolumes:- ./mysql-data:/var/lib/mysql
volumes:bookstack-data:mysql-data:

然后执行下方命令启动容器运行:

sudo docker compose up -d

如需停止可以执行:

sudo docker-compose down

OK,经过以上过程,Docker部署 BookStack 相册 就完成了,现在我们可以通过任意浏览器进行访问测试。

在浏览器输入 http://localhost:8282 即可,显示下图即为访问成功!

image-20240906165151775

4. 登录与简单使用

在登录界面,默认Email地址为 admin@admin.com,密码为 password

成功登录后的主界面如下图所示:

image-20240906170043895

点击右上角用户名admin,在下拉框里面点击编辑用户资料链接,进入编辑页面对用户信息进行修改,比如用户名、密码、头像、首选语言等。

image-20240906170315200

修改完中文显示后点击LOGO返回首页

image-20240906170506935

点击右上角图书按钮,即可创建图书:

1725613530317

添加相关书籍信息后,点击保存图书

1725613818105

然后可以点击创建页面或添加章节进入编辑界面:

image-20240906171217980

image-20240906172802001

image-20240906172553749

以此类推,可以添加更多的书籍到你的书架中:

image-20240906172857628

5. 公网远程访问本地BookStack

不过我们目前只能在本地访问刚刚使用docker部署的BookStack书库,如果身在异地,想要远程访问在家中部署的BookStack并上传与管理书籍,应该怎么办呢?我们可以使用cpolar内网穿透工具来实现无公网ip环境下的远程访问需求。

5.1 内网穿透工具安装

下面是安装cpolar步骤:

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

使用一键脚本安装命令

curl https://get.cpolar.sh | sudo sh

image-20240801132238671

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

image-20240801132301959

Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

image-20240801133735424

5.2 创建远程连接公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:BookStack 注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8282
  • 域名类型:随机域名
  • 地区:选择China VIP

1725615250077

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址:

1725615283044

接下来,需要将书库的docker-compose文件中的地址 http://localhost:8282 替换为这个http协议的公网地址:

nano docker-compose.yml

image-20240906180835742

然后保存退出,先停止容器在启动容器

sudo docker compose down
sudo docker compose up -d

image-20240906181208479

然后就可以在其他电脑或手机平板(异地)上,使用这个http公网地址在浏览器中访问即可。

如下图所示,成功实现使用公网地址异地远程访问本地部署的 BookStack 书库!

image-20240906181238766

image-20240906181301314

小结

为了方便演示,我们在上边的操作过程中使用了cpolar生成的HTTP公网地址隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

如果有长期远程访问本地 BookStack 书库或者其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来远程访问。

5.3 使用固定公网地址远程访问

登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择China VIP,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是mybooksk,大家也可以自定义喜欢的名称。

image-20240906181725712

保留成功后复制保留成功的二级子域名的名称:mybooksk,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 BookStack,点击右侧的编辑:

image-20240906181833207

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

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

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

image-20240906181928617

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

image-20240906182037855

接下来,再次回到终端中将书库的docker-compose文件中的随机公网地址替换为这个固定不变的公网地址并重启docker容器即可:

image-20240906182236134

然后使用这个固定公网地址在浏览器访问,可以看到访问成功,这样即使出门在外也可以随时随地使用这个网址来远程访问本地部署的 BookStack 书库来管理本地图书了!

image-20240906182444743

以上就是如何在Linux Ubuntu系统使用Docker部署BookStack 书库,并结合cpolar内网穿透工具配置固定公网地址,实现随时随地远程访问本地搭建的书库站点的全部流程,感谢您的观看,如果你也有远程访问本地部署服务的需求,不妨下载cpolar体验一下!

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

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

相关文章

嵌入式-交叉编译链

一、Buildroot Official website: https://buildroot.org/downloads/manual/manual.html Buildroot是Linux平台上一个用于构建嵌入式Linux系统的框架,它简化了系统构建过程并实现了工作的自动化。以下是对Buildroot的详细介绍: 一、概述 …

pdf删除几个页面怎么操作?PDF页面删除的快捷方法

pdf删除几个页面怎么操作?在日常办公与学习中,PDF文件因其跨平台兼容性和良好的格式保持性而广受欢迎。然而,随着文件内容的累积,PDF文档往往会变得庞大而臃肿,不仅占用存储空间,还可能在传输时造成不便。因…

【优选算法篇】双指针的华丽探戈:深入C++算法殿堂的优雅追寻

文章目录 C 双指针详解:进阶题解与思维分析前言第一章:有效三角形的个数1.1 有效三角形的个数示例 1:示例 2:解法一(暴力求解)解法二(排序 双指针)易错点提示代码解读 第二章&#…

在线文字转语音哪个好?教你7个ai文字转语音配音的方法,别错过!

随着人工智能技术的飞速发展,ai文字转语音配音软件已经开始广泛应用,能够生成或修改出逼真的人声。这些文字转语音在线版不仅易于使用,连没有专业音频处理技术的用户也能轻松上手。通过这些软件,您只需简单输入文本或上传音频文件…

【随时随地学算法】本地部署hello-algo结合内网穿透远程学习新体验

文章目录 前言1.关于hello-algo2.安装Docker和Docker compose3.本地部署hello-algo4. hello-algo本地访问5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 本篇文章主要介绍如何在本地部署hello-algo算法学习必备项目,并结合cpolar…

PostgreSQL 17重磅登场——世界上最成功的数据库

朋友们,万众期待的 PostgreSQL 大版本发布又来了!这一次,PostgreSQL 17 带着全新的性能优化和开发者必备的新功能强势登场。与其说这是一场普通的更新,不如说它是一场专为高并发工作负载和海量数据量身打造的技术嘉年华&#xff0…

【优选算法篇】编织算法的流动诗篇:滑动窗口的轻盈之美

文章目录 C 滑动窗口详解:基础题解与思维分析前言第一章:热身练习1.1 长度最小的子数组解法一(暴力求解)解法二(滑动窗口)滑动窗口的核心思想图解分析滑动窗口的有效性时间复杂度分析易错点提示 1.2 无重复…

基于webrtc实现音视频通信

与传统通信方式不同,p2p通信的实现过程不依赖于中间服务器的信息收发,直接通过信令等完成通信过程的建立; 通过websocket实现信令服务器的建立,而通过信令来确定通信双方; webrtc通过 sdp协议来完善通信双方间协议的…

塞班和诺基亚(中古手机图,你见过哪个?)

诺基亚的塞班系统,是比较早和强大的移动操作系统了。当时还有Palm,微软的平台,但市占率都很低。 安卓从被谷歌收购那天,每个特性都预示着,未来一定会超越塞班。而塞班后来取消了生态,自己来使用&#xff0c…

mac上docker desktop 服务指南

容器化技术是指将软件代码与运行此代码所需的操作系统 (OS) 库和依赖项进行集体打包,以便创建可在任意基础设施上一致运行的单个轻量级可执行文件(称为容器),比物理机部署具备更好的可移植性和维护性,比虚拟机具有更高…

基于Spring Boot+Vue的医疗健康的便民服务平台系统的设计与实现(协同过滤算法、实时聊天)

🎈系统亮点:协同过滤算法、实时聊天; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框架…

atcoder abc375

A seats 代码&#xff1a; #include <bits/stdc.h> using namespace std;int main() {int n;cin >> n;vector<char> a(n 1);for(int i 1; i < n; i ) cin >> a[i];int cnt 0;for(int i 1; i < n - 2; i ) {if(a[i] # && a[i 1…

【spring ai】java 实现RAG检索增强,超快速入门

rag 需求产生的背景介绍&#xff1a; 在使用大模型时&#xff0c;一个常见的问题是模型会产生幻觉&#xff08;即生成的内容与事实不符&#xff09;&#xff0c;同时由于缺乏企业内部数据的支持&#xff0c;导致其回答往往不够精准和具体&#xff0c;偏向于泛泛而谈。这些问题…

STM32 实现 TCP 服务器与多个设备通信

目录 一、引言 二、硬件准备 三、软件准备 四、LWIP 协议栈的配置与初始化 五、创建 TCP 服务器 1.创建 TCP 控制块 2.绑定端口 3. 进入监听状态 4.设置接收回调函数 六、处理多个客户端连接 七、数据处理与通信管理 八、错误处理与资源管理 九、总结 一、引…

【C++】:工厂模式

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 简单工厂模什么是简单工厂模式&#xff1f;如何实现简单工厂模式&#xff1f; 工厂方法抽象工厂模式总结简单工厂模式工厂方法抽象工厂「Abstract Factory」 简单工厂模 什么是简单工厂模式&#xf…

ps提示不能使用移动工具,因为目标通道被隐藏的解决办法

解决&#xff1a;按F7&#xff0c;或者从窗口把图层打开 按图示找到快速蒙版图层。它可能被隐藏或以特殊图标显示。右键删除或者拖到右下角垃圾桶里

小猿口算炸鱼脚本

目录 写在前面&#xff1a; 一、关于小猿口算&#xff1a; 二、代码逻辑 1.数字识别 2.答题部分 三、代码分享&#xff1a; 补充&#xff1a;软件包下载 写在前面&#xff1a; 最近小猿口算已经被不少大学生攻占&#xff0c;小学生直呼有挂。原本是以为大学生都打着本…

从融资烧钱到商业落地:中国AI大模型步入「实战期」

在AI还尚且未达到生产力工具的时候&#xff0c;没人能知道怎样的基础模型会是尽头&#xff0c;以及对付费客户而言&#xff0c;他们如何才能将这笔投入转化为真实营收。 而对于大模型究竟什么能盈利&#xff0c;目前国内的任何一家都未表过态。或者说&#xff0c;这不是一个当…

从0开始深度学习(11)——多层感知机

前面介绍了线性神经网络&#xff0c;但是线性模型是有可能出错的&#xff0c;因为线性模型意味着是单调假设&#xff0c;但是现实中往往很复杂。例如&#xff0c;我们想要根据体温预测死亡率。 对体温高于37摄氏度的人来说&#xff0c;温度越高风险越大。 然而&#xff0c;对体…

MySQL插入优化-性能对比

插入优化主要包括&#xff1a; 批量插入条数据&#xff0c;而不是单个记录逐条插入。手动提交事务&#xff0c;避免自动提交事务带来的额外开销。使用load命令从本地文件导入。 性能对比 创建数据库表 CREATE TABLE if not exists tb_sku ( id int(20) …