BookStack在线文档管理系统本地Docker部署与远程访问详细教程

news2024/9/20 0:30:37

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 前言
    • 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://do.nark.eu.org",
    "https://dc.j8.work",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn"
  ]
}

保存退出

重启 Docker:

sudo systemctl restart docker

3. 创建并启动 BookStack 容器

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

mkdir bookstack
nano docker-compose.yml

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

services:
  bookstack:
    image: ghcr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=http://localhost:8282
      - DB_HOST=db
      - DB_USER=bookstack
      - DB_PASS=secret
      - DB_DATABASE=bookstack
    volumes:
      - ./bookstack-data:/config
    ports:
      - 8282:80
    depends_on:
      - db
  db:
    image: mysql:5.7
    container_name: bookstack_db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: bookstack
      MYSQL_USER: bookstack
      MYSQL_PASSWORD: secret
    volumes:
      - ./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 体验一下!

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

LEAN类型系统属性之规范性(Regularity)注解

在 《小结》 中,列出LEAN类型系统所定义的全部规律,下面 关于 LEAN 属性 的一些推论(Lemma)进行注解。主要是其规范性(Regularity),以说明LEAN类型系统是完备构建的(well founded&am…

Java+selenium+chrome+linux/windows实现数据获取

背景:在进行业务数据获取或者自动化测试时,通常会使用模拟chrome方式启动页面,然后获取页面的数据。在本地可以使用windows的chromedriver.exe进行打开chrome页面、点击等操作。在linux 下通常使用无界面无弹窗的方式进行操作。接下来是实现方…

【AI绘画】Midjourney之Lighting详解

博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯为什么要学习光影控制光影控制的作用 💯强化主题hard lighting(硬光 )soft lighting(软光/柔光)测试 &…

宠物浮毛怎么办,用专业工具——希喂、小米、美的宠物空气净化器

前段时间被医生科普,原来猫咪的毛发也分好几种的,我不是最后一个知道的吧...事情的起因是这样的,上次我去朋友家和她的猫咪玩,实在太可爱了所以自己也养了一只猫。一人一猫的幸福生活没过多久,我就发现自己的鼻炎好像复…

如何用AI先行者2.0轻松画出美图?我的亲身体验分享给你看!

越来越多的AI绘画工具开始出现在市场上。AI先行者2.0是一款备受关注的AI绘画软件。本文将为大家详细介绍这款软件的功能特点,并分享一些使用心得。 AI先行者2.0拥有强大的图像处理能力。 它支持多种AI模型,包括Midjourney、Niji、DallE3和Stable Diffu…

【C++】——string类的使用

目录 一.为什么学习string类&#xff1f; 1.1 C语言的字符串 二. 标准库中的string类 2.1 string类(了解) 2.2 string类成员函数 ● string类对象的常见构造 ● string类析构函数 ● 赋值重载 2.3 string的迭代器 <1>正向迭代器 Iterator <2> 反向迭代器…

接口测试工具:Postman详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、前言 在前后端分离开发时&#xff0c;后端工作人员完成系统接口开发后&#xff0c;需要与前端人员对接&#xff0c;测试调试接口&#xff0c;验证接口的正确性…

面试笔试 场景题(部分总结)

文章目录 题目--找出一堆随机数中的前 k 大数字PriorityQueue 类PriorityQueue 常用方法 题目--数组中的第 K 个最大元素 题目–找出一堆随机数中的前 k 大数字 找出一堆随机数中的前 k 大数字&#xff0c;找出一堆随机数中的前 k 小数字。都一样 方法&#xff1a;快速排序。…

【springsecurity】使用PasswordEncoder加密用户密码

目录 1. 导入依赖2. 配置 PasswordEncoder3. 使用 PasswordEncoder 加密用户密码4. 使用 PasswordEncoder 验证用户密码 1. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifac…

docker部署NginxProxyManager

1.效果展示 有啥用&#xff1f;&#xff0c; 能把域名代理到 117.xx.xx.xx:3000 服务器上 而不用写一堆的location / { proxy… } 2.步骤 2.1往期docker安装 docker和docker-compose安装脚本-CSDN博客 2.2创建目录 mkdir ~/npm #创建一个目录用来安装此服务 cd ~/npm #…

兴业周报|“一套房子不留”的马斯克 在北京买房了?

稀有房源&#xff1a;标的物位于北京五环内&#xff0c;真正的城市别墅。中间建筑三区“全网无二手”&#xff0c;二手房市场无在售房源。 高性价比&#xff1a;标的物市场价2800万&#xff0c;起拍价1124万&#xff0c;四折上拍&#xff0c;四室两厅南北通透&#xff0c;建面…

基于SpringBoot的口腔管理平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 会员管理 病例就诊…

RuoYi-Vue若依框架-系统监控内定时任务的使用

定时任务 之前定时任务是在后端代码内使用cron表达式对对应的接口方法按照表达式执行&#xff0c;现在可以在框架内自行添加任务&#xff0c;包括自定义任务名&#xff0c;在调用方法内写对应实体类.接口方法名&#xff0c;cron表达式&#xff0c;添加好后即可执行 调用方法…

业余考什么证书比较实用?

在业余时间里&#xff0c;获得一些有用的证书不仅能提升你的专业素养&#xff0c;还能增强你在职场上的竞争力。 特别是职业技能证书和行业认证证书&#xff0c;这两者受到了广大职场人士的高度关注。 一、业余时间考取的实用证书 行业认证证书主要针对特定行业或职业&#…

16 训练自己语言模型

在很多场景下下&#xff0c;可能微调模型并不能带来一个较好的效果。因为特定领域场景下&#xff0c;通用话模型过于通用&#xff0c;出现多而不精。样样通样样松&#xff1b;本章主要介绍如何在特定的数据上对模型进行预训练&#xff1b; 训练自己的语言模型&#xff08;从头开…

AT3340-6T杭州中科微BDS定位授时板卡应用领域

AT3340-6T是一款高性能多系统卫星定位安全授时板卡&#xff0c;具有高灵敏度、高精度、抗干扰、低功耗等优势&#xff0c;可以满足电力授时、通信授时和金融授时等领域的应用。 电文完好性检测与告警 AT3340-6T 板卡支持电力授时标准要求的 UTC 信息异常告警&#xff0c;和卫…

基于Spring Boot的高校选课平台的设计与实现81917

目 录 1 绪论 1.1研究背景与意义 1.2研究内容 1.3论文结构与章节安排 2 高校选课平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 高校选课…

【OpenCV-图像梯度】Scharr算子和laplacian算子

1 图像梯度-Sobel算子 import cv2 # 导入 OpenCV 库# 读取灰度图像 img cv2.imread(./img/pie.png, cv2.IMREAD_GRAYSCALE) # 使用 imread 函数读取图像文件&#xff0c;路径为 ./img/pie.png # cv2.IMREAD_GRAYSCALE 表示以灰度模式读取图像# 显示图像 cv2.imshow("im…

Muduo库介绍及使用

文章目录 MuduoMuduo库是什么Moduo 库的原理Muduo 库常见接口TcpServer类EventLoop类TcpConnection类TcpClient类Buffer类 Muduo库实现一个简单英译汉服务器和客⼾端 Muduo Muduo库是什么 Muduo由陈硕⼤佬开发&#xff0c;是⼀个基于⾮阻塞IO和事件驱动的C⾼并发TCP⽹络编程库…

SpringSecurity原理解析(三):请求流转过程

1、当web系统启动的时候SpringSecurity做了哪些事情&#xff1f; 当web系统启动的时候会加载WEB-INF下的web.xml文件&#xff0c;在web.xml主要配置了下边几块的 内容&#xff0c;分别是&#xff1a; 1&#xff09;加载classpath路径下的配置文件&#xff08;包括SpringSecurit…