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

搭建自己的Wiki知识库——Ubuntu与Wiki.js

前言

前段时间,笔者因工作需要,尝试搭建了一个Wiki.js,将笔者的学习经历以及踩坑过程通过这篇文章分享给各位读者。

Wiki是一种允许多人共同编辑和管理内容的平台,可以让被授权过的用户在上面创建,修改和更新页面,实现协作和信息共享,广泛应用于教育,公司文档管理,项目合作等多个领域。

笔者选择采用Wiki.js,一个开源且美观的Wiki程序,在网上照猫画虎地用了docker技术下载安装在Ubuntu22.04系统中,如果你采用的配置和我一样,那么可能会遇到我遇到的这些坑。

参考文档:

Wiki.js

【实用的开源项目】使用服务器部署Wiki.js,一个美观且强大的开源Wiki程序-腾讯云开发者社区-腾讯云

华为开源镜像站_软件开发服务_华为云

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))-CSDN博客

docker pull 报错Get “https://registry-1.docker.io/v2/“: net/http: request canceled while waiting for c-CSDN博客

首先,笔者在本地虚拟机以及阿里云服务器(免费试用的)都尝试过部署Wiki.js。本地部署于云服务器部署都相同

请注意,接下来的内容中,如果是笔者强调注意的地方(笔者踩过坑的地方),都会以下方式呈现,注意:

这里是笔者踩过的坑:…

安装Docker

如果你需要在云服务器上部署,那么第一步是选择并购买服务器,现在在市面上的服务器有很多,笔者不做推荐。笔者使用的是阿里云的服务器,2核4G,Ubuntu22.04系统,预装LNMP应用。但是笔者看的看的笔记是腾讯云的,【实用的开源项目】使用服务器部署Wiki.js,一个美观且强大的开源Wiki程序-腾讯云开发者社区-腾讯云,但感觉大部分内容大差不差,在阿里云上业跑起来了,只不过没有做反向代理的那一步,因为自己使用,直接用IP:端口访问。

1.更新apt-get

因为笔者采用的是阿里云的云服务器,系统没有预装docker,所以我们要自己下载并安装docker。

首先更新一下包管理器,并安装必要的软件包curl

apt-get -y update
apt-get -y install curl

2.下载安装Docker-ce

接下来注意了:

笔者曾在这里踩过坑:根据上面腾讯云的内容,笔者是无法直接安装并docker的,笔者怀疑是镜像源的问题,现在许多国内镜像源在pull的时候都会出现报错,因此,笔者做了以下修改:华为开源镜像站_软件开发服务_华为云

笔者按照这篇文章下载的docker-ce

但是!!!!!!!!!!!

注意,笔者在服务器上下载完了几天后,开始写文章时重复操作,发现无法下载了!

请添加图片描述

发现没有,在华为云的文章中,使用了apt-key命令来添加GPG密钥,但现在,apt-key命令被弃用了!!

无法通过该命令来添加GPG密钥,因此笔者又上网冲浪了许久,在茫茫多的文章中终于找到了可以解决困境的办法

Docker:如何解决安装 docker 时 ubuntu 中的公钥错误 - Stack Overflow

【docker安装】由于没有公钥,无法验证下列签名: NO_PUBKEY 7EA0A9C3F273FCD8-CSDN博客

以上文章笔者实测,是可以解决添加GPG密钥时出现的apt-key is deprecated的问题。

具体命令是:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo chmod a+r /usr/share/keyrings/docker-archive-keyring.gpg
apt-get update
apt-get install docker-ce

3.启动Docker

执行以下命令启动docker

systemctl start docker

检查docker的运行状态

systemctl status docker

设置为开机自启动docker

systemctl enable docker

新版的docker自带了compose命令,即,你无需下载docker-compose,即可使用docker compose命令(注意中间是空格)

部署Wiki.js

1.新建目录

新建Wiki.js的存放目录,且移动到目录下

mkdir -p /opt/docker/wikijs && cd /opt/docker/wikijs && mkdir -p /opt/docker/docker_data/postgresql/data

这里新建了两个目录,一个是docker目录下的wikijs,一个是数据库的目录,数据库采用postgresql,具体数据库的差异笔者也需要去学习一下。

2.新建docker-compose.yaml文件

docker-compose.yaml文件是用来等会自动化下载的,按照这个文件中的配置下载Wiki.js并配好数据库。我们这使用nano命令来配置,因为在新安装的系统中,没有vim命令,如果想使用vim命令需要apt-get install vim先下载。

创建并编辑docker-compose.yaml文件

nano docker-compose.yaml

输入以下配置内容

---
version: "3"
services:
  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: YourDatabaseName
      #设置一个自定义的数据库名以替换 smalljunwikijs 需与下方的 DB_NAME 一致!
      POSTGRES_PASSWORD: YourDatabasePassword
      #设置一个自定义的数据库密码以替换 wikijssmalljunpw 需与下方的 DB_PASS 一致!
      POSTGRES_USER: YourDatabaseUserName
      #设置一个自定义的数据库用户名以替换 smalljunwiki 需与下方的 DB_USER 一致!
    logging:
      driver: none
    restart: unless-stopped
    volumes:
      - /opt/docker/docker_data/postgresql/data:/var/lib/postgresql/data
  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: YourDatabaseUserName
      DB_PASS: YourDatabasePassword
      DB_NAME: YourDatabaseName
    restart: unless-stopped
    ports:
      - 2078:3000

可以看到,这里我们需要下载两个东西,一个是db即database,一个是wiki即Wiki.js,端口开放为2078,即如果你想访问Wiki.js,则需要通过IP地址:端口号(2078)的形式访问,如果不做方向代理的话

编写完成后,按Ctrl + x退出,按y确认保存,按enter回车键退出

3.更改镜像源

原本到这里,按照文章的内容应该是开始运行命令下载

docker compose up -d

但是,因为没有使用国内镜像源,因此在下载的时候会:

笔者踩过的坑:

如果没有镜像源下载,那么将会出现:Get “https://registry-1.docker.io/v2/“: net/http: request canceled while waiting for c

网上大多数的镜像源都无法解决这个问题,以下两篇文章是笔者实践过可以的

彻底解决docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled 报错-CSDN博客

docker pull 报错Get “https://registry-1.docker.io/v2/“: net/http: request canceled while waiting for c-CSDN博客

笔者综合了一下他们的镜像源,以下是笔者采用的镜像源,实践可以下载:

{
	"registry-mirrors": [
         "https://docker.1panel.live",
		"https://0dj0t5fb.mirror.aliyuncs.com",
		"https://docker.mirrors.ustc.edu.cn",
		"https://6kx4zyno.mirror.aliyuncs.com",
		"https://registry.docker-cn.com"
	]
}

https://docker.1panel.live是第二篇文章博主提供的,这个镜像源可以让我成功地下载yaml配置中的db,即下载数据库,后面的镜像源采用的是第一篇博主的。它无法正常下载db,会报出上面的错误,但是可以下载wiki

下载时间较长,根据笔者多次失败经历以及更换镜像源的经历,在下载过程中60s内没有爆出上述错误,且dbwiki的下载项都出现,即开始正常下载

什么叫“dbwiki的下载项都出现呢”,当你运行docker compose up -d命令后,会先出现 dbwiki两项在转圈圈,但是这两项下有许多文件需要下载,需要全部文件都展示出并显示等待下载,才算是开始正常下载。

访问Wiki.js

通过浏览器访问IP地址:2078即可访问你自己的Wiki.js。

在访问过程中,笔者也遇到了一些坑,首先介绍一下笔者的环境:

一台台式机,开着虚拟机运行Ubuntu环境下载了Wiki.js,想通过另一台计算机(笔记本)访问这个Wiki.js

笔者在网上查阅了大量文章,发现很多文章都是用的是NAT模式,然后通过与虚拟机与宿主机协同暴露指定端口供外接访问,因为虚拟机与宿主机是同一IP地址,因此必须要两者配合,但是宿主机又是Windows系统,因此协调起来比较麻烦,所以笔者采用了桥接模式,虚拟机拥有自己的IP地址,虚拟机可以直接访问外部网络。

获取IP地址

首先使用以下命令查看虚拟机的IP地址

ip addr show

或者使用

ifconfig

查看防火墙状态

使用以下命令查看防火墙状态,确保防火墙关闭

如果使用的是ufw

查看防火墙状态:

ufw status

关闭防火墙

ufw disable

小结

值得注意的是:

笔者踩过的坑:

通过这样的方式访问,需要虚拟机与访问虚拟机的机器在同一局域网下,否则的话是无法访问的,因为虚拟机并没有暴露在公网中

总结

在本次搭建的过程中,笔者也学到了很多东西:

  • 安装Docker时出现大大小小各种错误,包括镜像源不行,下载过慢,GPG无法使用,apt-key命令被弃用等
  • 在部署Wiki.js时,遇到的最重要的问题就是镜像源问题,虽然在最后笔者采用的镜像源帮助了笔者完整下载,但是在这之前,笔者浏览了许多文章(大多数都相似,使用阿里云的镜像源),都无法正常下载,真的很崩溃。
  • 在最后写这篇文章时,笔者打算重新找回那些资料,发现自己浏览记录过多,许多资料和网站已经找不到了!这也是缺失之一,以后在解决某项问题的时候,希望保持良好习惯,点赞收藏,并及时开始写博客。

http://www.kler.cn/a/450846.html

相关文章:

  • 16_HTML5 语义元素 --[HTML5 API 学习之旅]
  • 自动控制系统综合与LabVIEW实现
  • 安装openGauss数据库一主一备
  • 62.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目+论文)
  • 重温设计模式--享元模式
  • 工厂防静电监控系统设备静电监控仪的关键作用
  • mongodb给不同的库设置不同的密码进行连接
  • 【SteamVR】当VR眼镜进入到SteamVR星空里面后,会自动弹出Steam商店界面的解决办法
  • 刘培超掌舵的越疆科技IPO下限定价:毛利率损伤下滑,持续亏损
  • Vulhub靶场Apache解析漏洞
  • 芯科科技蓝牙、Wi-Fi、Wi-SUN产品广获业界认可,技术创新引领行业潮流
  • 首批|云轴科技ZStack成为开放智算产业联盟首批会员单位
  • 操作系统(23)外存的存储空间的管理
  • 用Python开启人工智能之旅(三)常用的机器学习算法与实现
  • 网络安全攻防演练中的常见计策
  • 青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”
  • 数据冷热分离详解
  • MySql---进阶篇(1)---存储引擎的介绍与选择
  • html固定头和第一列简单例子
  • MySQL purged gtid是如何生成和维护的
  • Websocket客户端从Openai Realtime api Sever只收到部分数据问题分析
  • [OpenGL]使用TransformFeedback实现粒子效果
  • web-view在指定区域打开,不自动全屏
  • 天水月亮圈圈:舌尖上的历史与传承
  • 深度学习中,用损失的均值或者总和反向传播的区别
  • C# Main方法 和顶级语句详解