阅读视图

发现新文章,点击刷新页面。

私有知识库 Wiki.js 部署安装教程

1 前言

Wiki.js 是一个功能强大且现代化的开源 Wiki 平台,基于 Node.js 开发,拥有丰富的功能和简洁的界面。本教程将指导你完成 Wiki.js 的部署安装,帮助你快速搭建属于自己的知识库。

特点

  1. 现代化界面:采用直观、简洁的现代化用户界面设计,操作方便,用户可以轻松上手,快速找到所需功能,提升使用体验。
  2. 多语言支持:支持多种语言,能够满足不同地区、不同语言背景用户的需求,方便全球范围内的团队协作和知识共享。
  3. 插件系统丰富:拥有丰富的插件生态系统,用户可以根据自身需求轻松扩展功能,如添加代码高亮、数学公式支持、图表绘制等插件,增强维基的实用性。
  4. 用户管理灵活:提供灵活的用户管理和权限设置功能,可针对不同用户角色或用户组精细设置访问权限、编辑权限等,确保知识的安全性和保密性。
  5. Markdown 支持:支持 Markdown 语法,用户可以使用简洁的 Markdown 语言进行内容编辑,方便快捷地创建格式丰富的文档,提高编辑效率。
  6. 实时协作:支持实时协作编辑,团队成员可以同时对同一篇文档进行编辑,实时看到彼此的修改,提高协作效率,促进知识的快速沉淀和更新。
  7. 易于部署:安装和部署过程相对简单,可轻松部署在各种服务器环境中,无论是本地服务器还是云服务器,都能快速搭建起属于自己的维基系统。

2 准备工作

在正式安装之前,你需要准备一台至少为 2C1G 的服务器。

根据官方文档的描述,你可以在任意一台支持 Node.js 的系统上安装,推荐使用 Linux 系统,本文使用 Ubuntu 演示。

2.1 购买服务器

我们需要准备一台云服务器用于部署,如果你没有云服务器,这里推荐使用腾讯云轻量应用服务器,新用户购买低至 68 元/年,点击 https://curl.qcloud.com/wltDVjMI 立即选购。

image-20250130172932203

除了特惠产品外,特别推荐腾讯云新推出拥有高峰值带宽的锐驰型套餐,峰值带宽高达 200Mbps。

2.2 选择安装方式

Wiki.js 安装方式多样,常见的有通过宝塔面板、通过 Docker、通过 1Panel 面板及通过命令行,你可以根据个人情况任选其一。

宝塔面板图形化界面操作,适合新手快速部署,无需记忆命令,但部分高级配置需要通过手动修改文件实现;Docker 容器步骤简单,维护方便,适合环境隔离和快速迁移,但对容器相关知识有一定要求;1Panel 面板操作简单,现代化图形界面操作便捷,无需复杂配置,但可控制性较低;命令行是直接操作服务器,无需安装额外面板或服务,节省服务器资源,但问题排查更依赖人工,容易出错,门槛较高。

如果你选择面板或者 Docker 的方式安装,建议阅读下方文章完成前置条件:

3 通过宝塔面板

3.1 安装 Node.js

在宝塔面板侧边栏软件商店中搜索 nodejs,找到 Node.js版本管理器 进行安装。

image-20250130193749007

安装完成后,点击设置按钮,选择任意 LTS 版本 Node.js 进行安装。

image-20250130194208508

3.2 安装 PostgreSQL

在宝塔面板侧边栏软件商店中搜索 postgresql,找到 PostgreSQL管理器 进行安装。

image-20250130195021210

安装完成后,点击设置按钮,选择任意 postgresql 版本(建议版本号小于 15)进行安装。此安装过程较慢,等待的时间可以先去完成下一步。

image-20250130195115049

3.3 获取源代码

在宝塔面板侧边栏文件中的 /www/wwwroot 目录下新建一个文件夹,名称自定义,这里取为 wikijs

新建完成后进入该文件夹内,将光标放在上传/下载按钮上点击 URL 链接下载,URL 地址填写官方提供的最新压缩包链接。

1
2
3
4
https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

下载较慢可使用国内镜像站:
https://kkgithub.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

image-20250130200546195

下载完成后点击该压缩包后方的更多,选择解压,无误后确认解压。

image-20250130201301058

解压完成后,将示例配置文件 config.sample.yml 重命名为 config.yml。

image-20250130201809532

3.4 服务配置

前面安装的 PostgreSQL 现在应该安装完成了,点击侧边栏数据库,选择 PgSQL 添加数据库,自定义填写数据库名、用户名及密码,建议数据库名与用户名一致,并且具有标识性。

image-20250130202458663

记住用户名及密码,回到侧边栏文件中在前面源代码存放的目录中,双击打开 config.yml 配置文件,可参考下图修改。

image-20250130211415569

在侧边栏网站中选择 Node 项目中添加站点,项目目录选择前面源代码存放的目录,其它的内容将自动填充。

image-20250130212321475

创建完成后项目将自动开启,在浏览器访问 IP:3000 即可进入 Wiki.js 配置页。

问题汇总

一、项目启动失败

  1. 项目根目录下的压缩包未解压
  2. 示例配置文件未重命名为 config.yml
  3. 数据库版本大于 15

二、网页无法打开

  1. 未在云服务商处放行项目端口
  2. 未在宝塔面板防火墙处放行端口

4 通过 Docker

使用 Docker 部署是极为简单的,你的设备上只要安装有 Docker 和 Docker Compose,就可以使用简单的几行命令快速部署。

创建部署目录,新建并编写 docker-compose.yml 文件。

1
2
mkdir ~/wikijs && cd ~/wikijs
vim docker-compose.yml

在编辑模式(i)下使用以下配置内容,根据实际情况修改无误后,按 <ESC> 并输入 :wq 保存并退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
services:
db:
image: postgres:15-alpine
container_name: wikijs-db
volumes:
- wikijs-db-data:/var/lib/postgresql/data
environment:
POSTGRES_DB: wikijs # 数据库名
POSTGRES_USER: wikijs # 数据库用户名
POSTGRES_PASSWORD: your_db_password # 数据库密码
restart: unless-stopped

wiki:
image: ghcr.io/requarks/wiki:latest
container_name: wikijs
depends_on:
- db
ports:
- "3000:3000"
volumes:
- wikijs-data:/var/wiki/data
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs # 数据库用户名
DB_PASS: your_db_password # 数据库密码
DB_NAME: wikijs # 数据库名
restart: unless-stopped

volumes:
wikijs-db-data:
wikijs-data:

启动容器,命令需在 docker-compose.yml 文件同级目录下执行。

1
sudo docker-compose up -d

验证容器状态,看到 wikijswikijs-db 容器状态为 Up,则部署成功。

1
sudo docker ps -a

最后在浏览器访问 IP:3000 即可进入 Wiki.js 配置页。

问题汇总

  1. 在启动容器时出现 net/http: request canceled while waiting for connection 错误,是由于网络问题导致,需要更换国内镜像源
  2. 网页无法打开,需要检查云服务商处是否放行项目端口

5 通过 1Panel 面板

5.1 安装 PostgreSQL

在 1Panel 面板侧边栏应用商店中搜索 postgre 找到 PostgreSQL 进行安装。

image-20250131125745188

用户名及密码自定义,版本需要选择 15 版本号之前的

image-20250131140553082

5.1 安装 Wiki.js

在 1Panel 面板侧边栏应用商店中搜索 wiki 找到 Wiki.js 进行安装。

image-20250131140703208

数据库选择 PostgreSQL,数据库名、用户名、密码自定义,端口自定义,需要在云服务商处放行端口,最后在高级设置中开启端口外部访问。

image-20250131141256785

最后在浏览器访问 IP:3000 即可进入 Wiki.js 配置页。

问题汇总

  1. 网站无法打开,检查云服务商及 1Panel 面板端口外部访问是否放行开启
  2. Wiki.js 启动失败,检查 PostgreSQL 版本号是否小于 15

6 通过命令行

6.1 安装 Node.js

更新系统的软件包列表。

1
sudo apt update

快速安装 nodejsnpm

1
sudo apt install nodejs npm -y

安装完成后,通过版本检查命令验证 Node.js 和 npm 是否安装成功。

1
2
node -v
npm -v

6.2 安装 PostgreSQL

安装 postgresqlpostgresql-contrib,前者是 PostgreSQL 数据库的核心软件包,后者包含了一些额外的工具和扩展,能增强 PostgreSQL 的功能。

1
sudo apt install postgresql postgresql-contrib -y

安装完成后,PostgreSQL 服务通常会自动启动,但为减少不必要的麻烦,可以先检查服务的运行状态,当输入内容中出现 Active: active 即正常。

1
sudo systemctl status postgresql

如果服务没有启动,可以使用以下命令启动 postgresql 服务。

1
sudo systemctl start postgresql

若希望 PostgreSQL 在系统启动时自动启动,避免因重启导致的服务暂停,可以使用以下命令。

1
sudo systemctl enable postgresql

PostgreSQL 安装完成后会创建一个名为 postgres 的操作系统用户和同名的数据库用户。你可以通过切换到 postgres 用户来管理数据库。

1
sudo -u postgres psql

进入 psql 环境后,使用 SQL 命令创建一个用户名为 wikijs、密码为 P@ssw0rd 的新数据库用户。

1
CREATE USER wikijs WITH PASSWORD 'P@ssw0rd';

然后创建一个名为 wiki 的新数据库,并将其所有权赋予给新用户 wikijs,完成操作后,输入 \q 退出 psql 环境。

1
CREATE DATABASE wiki OWNER wikijs;

6.3 安装 Wiki.js

创建并进入一个用于存放 Wiki.js 文件的目录,这里命名为 wikijs

1
mkdir ~/wikijs && cd ~/wikijs

下载 Wiki.js 的最新版本压缩包,并将其解压到当前目录,此处下载地址使用 Github 国内镜像站。

1
2
wget https://kkgithub.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
tar xzf wiki-js.tar.gz

将示例配置文件 config.sample.yml 重命名为 config.yml

1
mv config.sample.yml config.yml

编辑配置文件并填写数据库和端口设置。

1
vim config.yml

根据实际情况和前面的数据库设置,在配置文件中修改部分内容,这里的端口需要在云服务商处放行。

image-20250203230219139

当无误的完成以上操作后,就可以尝试启动 Wiki.js 了。

1
node server

当控制台打印输出内容有类似 HTTP Server: [ RUNNING ] 表明启动成功,在浏览器访问 IP:3000 即可进入 Wiki.js 配置页。

6.4 进程守护

如果是使用命令行部署,服务进程将会因终端关闭而停止,所以需要进程守护来保证服务稳定运行,官方推荐使用 systemd。

首先在 /etc/systemd/system 目录下创建并编辑一个名称为 wiki.service 的新文件。

1
sudo vim /etc/systemd/system/wiki.service

将以下内容粘贴到 wikijs.service 这个新文件中,WorkingDirectory 的值需要根据实际安装位置来修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=root
Environment=NODE_ENV=production
WorkingDirectory=/home/ubuntu/wikijs

[Install]
WantedBy=multi-user.target

随后依次进行重新加载 systemd、运行服务并在系统启动时启用该服务等操作。

1
2
3
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs

还可以使用 sudo systemctl status wikijs.service 命令查看服务状态,当打印输出内容中出现 Active: active (running) 即成功,然后再次在浏览器访问 IP:3000 即可进入 Wiki.js。

问题汇总

  1. 网页无法打开,需要检查云服务商处是否放行项目端口
  2. 使用进程守护前访问正常,使用后无法访问,请仔细检查 wikijs.service 文件内容,尤其是 WorkingDirectory 设置的目录值

7 配置 Wiki.js

7.1 初始化

首次打开站点后,自动进入程序配置页,需要设置管理员电子邮箱、密码及站点地址,选择是否开启官方收集程序相关数据权限。

image-20250201115522816

配置完成后程序进入登录页,填写前面设置的管理员电子邮箱及密码进行登录。

image-20250201115831806

登录完成后进入 Wiki.js 主页,主页展示了两个按钮,CREATE HOME PAGE 用于新建主页面,CREATE HOME PAGE 用于进入管理面板。

image-20250201120559425

7.2 切换语言

在管理面板中,进入 Site 分类下的 Locale 设置页,在右侧 Download Locale 中找到 Chinese Simplified 并下载,右侧状态变为绿色对号后再左侧 Locale Settings 中将 Site Locale 配置项切换为中文,最后点击 APPLY 按钮应用设置。

image-20250201122140470

7.3 特色功能

7.3.1 多用户

在后台身份验证设置中,可以添加不同的登录方式,目前几乎集成了市面上各种常见的登录方式,选择某一种登录方式,通过给予开放注册权限,允许他人通过此种方式进行登录。

image-20250201214810860

如果选择 Local Database 方式开放注册,则需要在后台邮件设置中配置发件人信息,主机为 SMTP 服务器,端口根据邮箱厂商设置,用户名为邮箱地址,密码为登录密码或者授权密码,根据邮箱厂商设置,如有疑问可参考这篇文章:https://talen.top/posts/caffd8d6/

image-20250201220800123

Wiki.js 还拥有强大的权限系统,在后台用户组设置中添加新的用户组,并且可以设置权限和页面规则等配置。

image-20250201221438288

7.3.2 评论

Wiki.js 拥有一套内置的评论系统和多套第三方评论系统,在后台评论设置中可进行相关配置,根据喜好自行选择。

image-20250201222302715

7.3.3 搜索

在后台搜索引擎设置中,可以选择使用不同类型的搜索引擎,可以选择基于本地数据库或者其它第三方搜索引擎,推荐使用 Algolia。

image-20250201222527072

7.3.4 存储

Wiki.js 支持第三方存储库,特别适合大型的 Wiki 站点,减轻服务器负载压力。在后台存储设置中选择需要的第三方存储库,根据官方教程来进一步配置。

image-20250201223045909

7.4 主题修改

7.4.1 导航栏

在后台导航设置中,有四种导航模式可选,分别是站点地图、静态导航、自定义导航(站点地图 + 静态导航)和禁用导航栏,可根据喜欢的样式进行选择展示,标签为展示名称,图标根据在后台主题设置中选择的图标集在相应网站里查找图标名称。

image-20250201233252662

7.4.2 登录背景

登录界面背景图可更换自己想要的图片,在后台安全设置中找到登录配置板块,在登录页处填写背景图片链接或者点击右侧的按钮上传新图像。

image-20250201234734893

7.4.3 网站常规

在后台常规设置中,可对站点图标、站点名称和页脚版权说明等信息进行修改。

image-20250202000043119

7.4.4 目录位置

在后台主题设置中,找到主题设置配置板块,修改目录展示位置,建议设置右侧(Right)。

image-20250202000531566

8 创建首页

在初始化 Wiki.js 并完成登录后的主页面,点击“创建首页(CREATE HOME PAGE)”按钮,选择想要使用的编辑器。

image-20250203192623913

这里选择 Markdown 编辑器,然后编辑页面属性,这里需要重点配置页面标题及路径,完成后点击弹窗右上角“OK”按钮,编辑页面内容。

image-20250203193529576

页面内容编辑完成后,点击“创建”按钮来保存,此后 Wiki.js 站点首页成为默认页面。

image-20250203200526656

9 写在最后

通过本教程,相信你已经掌握了在不同环境下部署 Wiki.js 的核心方法。作为一款集开源、轻量、可扩展于一体的知识管理工具,Wiki.js 凭借其现代化的架构设计和丰富的功能特性,能够完美适配个人知识沉淀、团队协作共享乃至企业级文档中心等场景。无论是通过可视化面板的便捷部署,还是 Docker 容器化的一键启停,亦或是命令行操作的灵活掌控,Wiki.js 都为用户提供了多样化的选择。

在完成基础部署后,建议进一步探索其多语言内容管理、细粒度权限体系、第三方存储集成等进阶功能。通过合理配置用户组规则、评论模块、搜索引擎优化等特性,可打造出高度定制化的知识协作平台。若在部署过程中遇到问题,可参考各章节的"问题汇总"排查,或前往官方文档与社区获取支持。现在就行动起来,构建属于你的智能化知识库吧!

使用 Hexo 多种部署方法搭建个人网站

1 前言

Hexo 是一个快速、简洁且高效的静态博客生成器。它借助 Node.js 进行开发,能够将我们用 Markdown 所撰写的文章内容,在短短几秒内转化为静态 HTML 页面。这意味着我们只需专注于文章本身的创作,利用简单易懂的标记语言书写内容,而无需深入掌握复杂的网页开发知识,Hexo 就能帮我们快速生成可以展示的网页,为搭建个人网站提供了极大的便利。

前几日有一好友向我求助,想搭建一个博客网站但不想有太多的资金投入,我将之前写过的一篇使用云服务器 + 宝塔面板部署 Hexo 的教程文章发给了他,但他说也不太想购买服务器,这下就有点难到我了,后来突然回想起我开始接触个人博客时,网上很多 免费零成本 等字眼的博客搭建教程,当时我对此类文章是将信将疑的,没想到现在让我不得不翻出此类文章,而经过阅读学习后发现免费不仅是真的,有的还特别有意思,于是我协助好友使用 Hexo + GitHub + CloudFlare 成功搭建出了零成本博客,通过对此过程的总结学习,我将一些 Hexo 的部署方法归纳整理并且实操验证写下了这篇文章。

本文将使用 GitHub Pages、Cloudflare、Vercel 和 Netlify 四种方式部署 Hexo 项目,下面是对四种方式的简单比较:

  • GitHub Pages:部署流程相对简单,依赖本地构建部署,需要一个公开仓库。
  • Cloudflare:网络性能强大,每月 500 次构建使网站不得频繁更新。
  • Vercel:有快速的构建和部署速度,默认域名在国内无法直接访问需额外自定义域名。
  • Netlify:部署流程简单直观,免费账户功能限制较多。

2 准备工作

如果你的设备上已经安装过 Node.js 和 Git,并且拥有 GitHub 账户,那么你可以跳过本节。

2.1 安装 Node.js

Node.js 是 Hexo 运行的基础依赖,我们首先要进行安装。可以前往 官网 根据自己的操作系统选择合适的版本进行下载安装。这里推荐选择支持更稳定的 LTS 版本。

在选择自定义安装程序时,建议选择 Add to PATH,这样就免去了手动配置环境变量的麻烦。

image-20231213204028814

分别执行 node -vnpm -v 来检查是否被正确安装或是否可用。

image-20231213204347624

2.2 安装 Git

Git 在 Hexo 部署过程中起着重要作用,前往 官网 下载最新版本 Git 并按照指引进行安装。

使用 git -v 命令检查 Git 是否安装成功。

image-20231213203205991

2.3 注册 GitHub(部分方式需使用)

GitHub 是部分部署方式的过程所必需的,进入 官网,点击 “sign up” 来到注册页面,按照提示填写有效信息。请慎重设置用户名,因为它可能成为你的域名内容。

3 安装 Hexo

如果你已经拥有了一个 Hexo 项目,那么可以跳过本节。

在确保已经安装好 Node.js 和 npm 的前提下,在本地打开 CMD 命令提示符,输入并执行 hexo-cli 的全局安装命令。

1
npm install -g hexo-cli

初始化 Hexo 项目,在想要创建项目的目录下打开 CMD 命令提示符,使用 hexo init 命令使当前目录作为根目录创建项目,若想新建一个文件夹作为项目根目录,只需在 hexo init 命令后添加项目名称。

1
2
hexo init  # 当前目录为根目录
hexo init myblog # 新建文件夹为根目录

初始化完成后,会在该目录下生成一系列的文件夹和文件。

  • _config.yml:Hexo 项目的核心配置文件。配置网站信息、部署设置等各种参数都需要这个文件。
  • package.json:记录项目所依赖的各种模块以及项目的一些基本信息。当需要分享项目或者在其他环境重新安装依赖时使用。
  • scaffolds\:文章和页面初始结构模板。当创建文章或者页面时,会根据该文件夹下的对应模板来新建文件。
  • source\:用于存放文章文件、页面文件和图片等资源,其中文章就存放在该文件夹下的 _posts 子文件夹中。

当一切准备就绪后,在 Hexo 项目根目录下使用 hexo ghexo s 命令构建并预览该博客。

1
hexo g && hexo s

若出现疑似端口问题的报错,可以尝试重启 winnat 服务,具体方法请自行搜索。

通过预览你可能会感觉默认的主题并不好看,那么你可以通过官网主题库或者其他途径找寻感兴趣的主题,这里推荐本站同款。

1
git clone -b main https://github.com/talen8/hexo-theme-flecui.git themes/flecui

以上完成后你可以通过 Hexo 文档和相应主题文档来进行网站配置,你可以随时通过 hexo cl && hexo g && hexo s 命令预览博客。

4 部署到 GitHub Pages

目前版本的 GitHub Pages 仅支持公开仓库使用,页面文件将会被直接暴露在网络上。

4.1 创建仓库

在浏览器打开 GitHub 并登录你的账户,点击新建仓库。仓库名称为 用户名.github.io,这里用户名必须是你的 GitHub 用户名,另外需要注意,这个仓库需是公开的,不然无法使用 GitHub Pages。

image-20241219230542403

4.2 配置本地与 Github 关联

在本地博客根目录打开命令行工具安装 hexo-deployer-git 部署插件。

1
npm install hexo-deployer-git --save

在本地博客根目录使用文本编辑器打开 _config.yml 核心配置文件,找到 deploy 部分进行配置。

1
2
3
4
deploy:
type: git
repo: https://github.com/你的GitHub用户名/你的GitHub用户名.github.io.git
branch: main

这里的 repo 就是你创建的 Github 仓库的地址,可以根据上方示例填写,也可以进入仓库查看。

image-20241220211154447

确保 hexo-deployer-git 插件和 deploy 配置正确后,就可以通过一系列 Hexo 命令将生成的文章部署到 Github 上了。

1
2
3
hexo clean
hexo generate
hexo deploy

4.3 GitHub Pages 配置

部署完成后打开 GitHub 仓库可以发现 main 分支下不再为空,GitHub Pages 也默认开启,如果需要更改,点击 Settings 设置选项卡,在页面左侧找到 Pages 页面选项,在这里可以配置来源、分支、自定义域名等内容,然后点击 Save 保存按钮。

image-20241220215330536

最后就可以通过 你的GitHub用户名.github.io(仓库名)访问你的博客了。

5 部署到 CloudFlare

静态页面部署需要使用 Cloudflare Pages,他是一个用于构建和部署网站的平台。

5.1 注册 Cloudflare

前往官网注册一个 Cloudflare 账号,需要使用一个邮箱,官网为 https://cloudflare.com,注册地址为 https://dash.cloudflare.com/sign-up

image-20241220224507915

我们需要使用 Cloudflare Pages 功能,它的免费版本的功能有一些限制,但对于一个初步的个人博客网站来说绰绰有余。

  • 并发构建数为 1(同一时刻只能进行一个 pages 的构建)
  • 每月构建次数上限为 500 次
  • 一个 pages 项目最多可绑定 100 个自定义域名
  • 单个 pages 站点最多包含 20000 个文件,单个文件最大为 25MB
  • 每日限制函数请求数为 100000 次,超出后请求会失败
  • 不限制静态文件请求次数

5.2 创建 GitHub 仓库

在浏览器打开 GitHub 并登录你的账户,点击新建仓库。仓库名称自定义,可见性建议设置为私有,避免 Hexo 项目中某些可能的密钥直接暴露在网络。

image-20241221181056018

在本地博客根目录打开命令行工具将项目提交到仓库中。(注意:在提交之前请删除根目录下的 yarn.lock 文件,否则后续会出现构建失败问题)

1
2
3
4
5
6
git init
git add .
git commit -m "myblog"
git branch -M main
git remote add origin https://github.com/你的GitHub用户名/你的GitHub仓库名称.git # git remote add origin [仓库URL]
git push -u origin main

后续本地 Hexo 项目有修改只需要使用 Git 工作流程提交命令

1
2
3
git add .
git commit -m "提交信息"
git push

以上完成后你的本地 Hexo 项目就成功提交到 GitHub 仓库里了,建议使用 VSCode Git 工具或者 GitHub Desktop 简化流程。

5.3 Cloudflare Pages 配置

在控制台点击侧边栏的 Workers 和 Pages,然后点击页面上的 Pages,最后点击连接到 Git

image-20241221175423340

连接绑定你的 GitHub 账户来获取你的仓库,账号授权后你可以在应用程序集成中设置仓库访问权限。

image-20241221200427582

设置完成后自动跳转回 Cloudflare 控制台部署站点引导的选择存储库步骤,选择你将要部署站点的仓库,确认账户和数据库无误后点击开始设置。

image-20241221200726941

在设置构建和部署步骤中完成相关设置:

  • 项目名称:自定义,将作为域名内容
  • 生产分支:结合实际情况,若完全按照本教程进行就是 main
  • 框架预设:这里没有 Hexo,所以设置为无
  • 构建命令:npm run build
  • 构建输出目录:public

image-20241221201840578

在部署站点步骤中耐心等待一会,出现域名表示部署完成,访问链接能够打开页面表明部署成功,如果页面无法访问请再耐心等待一会,可能是网络问题导致。

image-20241221202624018

操作进行到这里就基本完成了,此后你的 Hexo 项目每次提交至 GitHub 都会自动再次构建部署。

6 部署到 Vercel

Vercel 提供了一个云平台,并且能够识别仓库为 Hexo 项目,简化了操作流程,降低了出错风险。

6.1 注册 Vercel

前往 Vercel 官网注册一个账户,可以直接连接你的 GitHub 账户。

image-20241221205138455

6.2 创建 GitHub 仓库

同本文 5.2 章节。

6.3 导入仓库

首先连接你的 GitHub 账户,你可以在应用程序集成中设置仓库访问权限,在构建引导页面中导入 Git 仓库,首先找到正确的 GitHub 账户和仓库,点击 Import 按钮。

image-20241221210315110

在新建项目中完成相关设置,Project Name 可自定义,Framework Preset 选择 Hexo,其它项保持默认即可,点击 Deploy 按钮部署。

image-20241221211310245

耐心等待一会出现预览页面即完成导入和部署。

image-20241221211859656

6.4 配置域名

部署完成后打开仪表盘,网站自动绑定三条默认域名,但由于在国内域名被污染,所以需要绑定其它域名。

image-20241221212750834

点击右上角 Domains 按钮进入项目域名配置页,添加一个域名,并按照要求在域名提供商处添加 CNAME 记录。

image-20241221213242642

最后通过绑定的自定义域名成功访问到个人博客。

7 部署到 Netlify

Netlify 是一个提供静态网站托管的服务,使用 Hexo+GitHub+Netlify 可以以最快的速度部署一个网站。

7.1 注册 Netlify

Netlify 官网注册一个账号,可以使用你的 GitHub 账户授权注册,然后根据提示进行账户配置。

image-20241221214801510

7.2 创建 GitHub 仓库

同本文 5.2 章节。

7.3 开始部署

在引导中选择 GitHub 来导入你的 GitHub 仓库,你可以在应用程序集成中设置仓库访问权限。

image-20241221215625407

选择正确的 GitHub 账户和仓库开始部署。

image-20241221220034766

然后耐心等待一会,平台会自动识别仓库为 Hexo 项目并按照预设开始部署,部署完成后就可以通过平台分配的默认域名访问网站了。

image-20241221220422886

8 写在最后

通过以上多种部署方法的介绍,我们可以看到利用 Hexo 搭建个人博客方法众多,不仅操作过程十分简单,还基本实现了零成本搭建,降低了技术门槛和资金门槛,选择一个适合自己的部署方式,搭建一个有趣的个人博客吧。

Nginx 可视化编辑工具 Nginx UI 安装和使用

1 前言

Nginx 是一款高性能的 HTTP 和反向代理服务器,已在众多企业和开发者中得到广泛应用。其强大的性能、灵活的配置以及出色的稳定性,使得 Nginx 成为了处理高并发网络请求的首选方案。然而,Nginx 的配置文件通常较为复杂,涉及大量的指令和参数设置,这给不少初学者和管理员带来了不小的挑战。

在这样的背景下,可视化编辑工具应运而生,它们旨在简化 Nginx 的配置过程,提高管理效率。其中,Nginx UI 作为一款革命性的可视化编辑工具,凭借其直观的操作界面和强大的功能,正逐渐改变着人们对 Nginx 管理的认知。它的出现不仅降低了 Nginx 配置的门槛,使得更多非专业人员能够轻松上手,还大大提高了配置的准确性和效率。通过直观的图形化界面,用户可以清晰地看到各项配置的效果,减少了因误操作导致的问题。同时,Nginx UI 还提供了丰富的管理功能,如服务器状态监控、SSL证书管理等,进一步提升了 Nginx 的管理体验。

2 安装

Nginx UI 拥有多种安装方式,官方推荐使用适用于 Linux 系统下的 shell 安装脚本,除此之外,还可以使用 Docker 安装或者更为便捷的 1Panel 面板一键安装。本文将使用安装脚本的方式进行演示,需要注意的是,使用 Docker 安装将难以管理主机上的 Nginx。

使用官方提供的 shell 脚本命令进行快速下载及安装。

1
bash <(curl -L -s https://mirror.ghproxy.com/https://raw.githubusercontent.com/0xJacky/nginx-ui/master/install.sh) install -r https://mirror.ghproxy.com/

使用一键安装脚本默认设置的监听端口为 9000,HTTP Challenge 端口默认为 9180。如果有端口冲突,需要手动修改 /usr/local/etc/nginx-ui/app.ini文件, 并使用 systemctl restart nginx-ui 重启 Nginx UI 服务。

使用 systemctl status nginx-ui 命令检查启动状态,出现 Active: active (running) 即为成功。

image-20241010120617401

在浏览器访问 IP:9000 进入 Nginx UI 安装页,可简单配置管理员邮箱、用户名、密码等。

image-20241010121804502

配置完成后使用设置好的用户名及密码进行登录,登录成功后进入到 Nginx UI 首页。

image-20241010125003102

Systemd 管理

  • 启动: systemctl start nginx-ui
  • 停止: systemctl stop nginx-ui
  • 重启: systemctl restart nginx-ui

3 使用

  • 多种语言支持及日夜主题切换

image-20241010130124602

  • 服务器仪表盘。支持查看内存与存储、CPU 状态、网络等基本信息。

image-20241010130240954

  • 管理站点、添加站点。使用简明的可视化页面和配置页面轻松管理和添加站点。

image-20241010130520848

  • 配置管理。将复杂的配置文件目录以清晰的结构展现,方便快速进行对 Nginx 配置文件的设置修改。

image-20241010130548175

  • 管理证书。通过配置 DNS 凭证可以快速申请及续签站点证书,降低了运维时间及成本。

image-20241010130755284

  • 管理多台服务器。在环境设置中,通过添加环境实现对多台服务器 Nginx 的配置。

image-20241010131042288

  • 多用户管理。可以添加用户来实现多人共同管理,提高了团队协作效率。

image-20241010131052624

4 写在最后

Nginx UI 作为一款强大的 Nginx 管理工具,在 Nginx 的运维领域已经取得了显著的成就,未来有望继续发展壮大,成为 Nginx 管理的标杆工具。无论是新手还是资深用户,都可以享受到 Nginx UI 在实践中为我们带来的惊喜和便利。

让Meting API解锁音乐开发新可能

1 前言

Meting API 是一个多功能的音乐播放服务接口,它能够帮助开发者轻松集成多种音乐平台的播放功能到自己的应用中。

本站音乐欣赏页使用了自建 Meting API 服务,可以前往查看相关数据获取。

引用站外链接
音乐欣赏
使用自建 Meting API 服务

注意

本教程使用的 Meting-API 由 @xizeyoupan 提供,其原作者是 @metowolf

2 安装

通过参阅官方文档及周边教程和我的个人实践,推荐使用 Docker 部署,本文将从命令行、宝塔面板和 1Panel 三处进行分别演示,但他们的本质都是 Docker 部署的方式。关于 Docker、宝塔面板和 1Panel 的安装部署可参考以下文章。

引用站外链接
安装Docker
零基础Docker入门指南
引用站外链接
部署宝塔面板和1Panel
服务器最佳搭档,宝塔和1Panel的部署与选择

2.1 命令行

最简单的一种部署方式,仅需两行命令即可实现,前提确保Docker已被安装。

下载镜像

1
docker pull intemd/meting-api:latest

运行容器

1
docker run -d --name meting -p 3000:3000 intemd/meting-api:latest
  • -name后的meting为容器名称,可自定义。
  • -p后第一个3000为端口映射,可自定义。需要放行对应防火墙。

检查

使用 docker ps 命令检查是否启动成功。

找到 meting-api 自定义容器名称所在的行,看 STATUS 列是否为 running,若是即为安装成功。

2.2 宝塔面板

打开已安装Docker的宝塔面板,点击侧边栏Docker,然后在线上镜像中搜索 intemd/meting-api 并拉取。

image-20240603224940790

最后在容器页创建容器,使用命令创建,输入下方命令并执行。

1
docker run -d --name meting -p 3000:3000 intemd/meting-api:latest
  • -name后的meting为容器名称,可自定义。
  • -p后第一个3000为端口映射,可自定义。需要放行对应防火墙。

image-20240603225224498

检查是否成功只需要查看该容器的状态是否为运行中

2.3 1Panel

由于应用商店中未上架 Meting API,常规的安装方式就是从容器页面拉取镜像并创建容器,这里建议使用第三方应用商店一键部署。

获取第三方应用商店列表

打开计划任务页,点击创建计划任务,任务类型选择 Shell 脚本,脚本内容如下填写,其它必填项自定义。

1
2
3
git clone -b localApps https://ghp.ci/https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
rm -r /opt/1panel/resource/apps/local/appstore-localApps

image-20240603232212372

然后在操作列点击执行,再前往应用商店点击更新应用列表,随后搜索 Meting-API

image-20240603232512449

最后点击安装,端口设置后需要放行对应防火墙,其它项均可自定义,如果面板开启了防火墙需要勾选端口外部访问。

image-20240603233006190

检查是否成功在已安装中找到该应用看状态是否为已启动

2.4 小结

虽然是三种不同的安装途径,但它们的本质都是 Docker 部署,尤其是宝塔面板与命令行最为相识。

完成安装后可在浏览器访问 IP:端口 验证是否成功。

3 配置HTTPS

如需要相关服务安全通过 https 访问,则需要绑定域名、安装 SSL 证书、设置反向代理(Nginx)。

  • 绑定域名请在域名服务商处将自定义二级域名解析到部署 Meting-API 的服务器上。
  • 申请免费 SSL 证书的方法很多,建议到域名服务商处查看能否申请。

3.1 命令行

将已申请 SSL 证书的证书文件(.pem)和密钥文件(.key)上传到服务器并记录路径。上传推荐使用 FinalShell

确保已安装 Nginx,打开 Nginx 配置文件,默认路径为 /usr/local/nginx/conf 目录下的 nginx.conf

1
vim /usr/local/nginx/conf/nginx.conf

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 443 ssl;
server_name meting-api;

ssl_certificate ../server.pem; # pem文件的路径
ssl_certificate_key ../server.key; # key文件的路径
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

location /meting/ {
proxy_pass http://localhost:3000/; # 设置的端口
proxy_set_header X-Forwarded-Host $scheme://$host:$server_port/meting;
}
}
  • 5行、6行:填写前面记录的证书、密钥文件路径。
  • 13行:创建容器时设置的端口映射,修改3000保持一致。

最后退出保存,并重新加载配置文件。

1
nginx -s reload

3.2 宝塔面板

在网站项目页添加站点,域名为前面解析的域名,其它项均自定义。

image-20240604003819847

在站点修改中的 SSL 里复制粘贴证书文件(.pem)和密钥文件(.key),然后在配置文件里与其它 location 项同级添加内容。

1
2
3
4
location /meting/ {
proxy_pass http://localhost:3000/; # 设置的端口
proxy_set_header X-Forwarded-Host $scheme://$host:$server_port/meting;
}
  • 2行:创建容器时设置的端口映射,修改3000保持一致。

image-20240604010050222

3.3 1Panel

在网站页创建网站,选择反向代理,主域名填写前面解析的域名,代理地址添加 127.0.0.1:端口

image-20240604005550737

创建完成后点击配置,在 HTTPS 中启用 HTTPS 并导入证书文件(.pem)和密钥文件(.key),然后在配置文件里与其它 location 项同级添加内容。

1
2
3
4
location /meting/ {
proxy_pass http://localhost:3000/; # 设置的端口
proxy_set_header X-Forwarded-Host $scheme://$host:$server_port/meting;
}
  • 2行:创建容器时设置的端口映射,修改3000保持一致。

image-20240604010237097

3.4 小结

如果出现错误请仔细比对本教程的参考图,反向代理内容很容易添加到错误的地方。

根据官方文档作出的解释,配置反向代理时请务必使用给定文本,并且访问时在域名后添加 /meting/,否则 https 依旧使用 http 连接。

4 成功截图

  • 主页:https://域名/meting/

image-20240604011556536

  • 测试页:https://域名/meting/test/

image-20240604011721278

  • API地址:https://域名/meting/api/

image-20240604011803943

5 使用

该 API 对平台的支持:

图片歌词URL单曲歌单歌手搜索
网易云音乐
QQ音乐××
YouTube Music××
Spotify××

最简单的使用办法就是导入 MetingJS

导入之前先引入 API:

1
2
3
<script>
var meting_api='https://域名/meting/api?server=:server&type=:type&id=:id&auth=:auth&r=:r';
</script>

然后依次导入 APlayer.min.cssAPlayer.min.jsMeting.min.js

1
2
3
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/aplayer/1.10.1/APlayer.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/aplayer/1.10.1/APlayer.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/meting/2.0.1/Meting.min.js"></script>

最后参考示例使用:

1
2
3
4
5
<meting-js
server="netease"
type="playlist"
id="3778678">
</meting-js>
选项描述
servernetease:网易云音乐
tencent:QQ音乐
ytmusic:YouTube Music
spotify:Spotify
音乐平台
typesong:单曲
playlist:歌单
artist:歌手
search:搜索
类型
id3778678歌曲ID、歌单ID、专辑ID

以上为必填项,如需更多项可查阅 APlayer 文档

6 写在最后

Meting-API 部署并不算复杂,有需要的可以自行部署,不想部署的也可以使用一些公益项目,这里提供我部署的,有需要的可以使用。

1
https://meting-api.talen.top/meting/

Uptime Kuma的部署与简单使用

1 前言

Uptime Kuma 是一款开源自托管的轻量级监控工具,拥有简洁美观的界面和丰富的告警方式。

注意

本文可选步骤涉及 docker 和 docker-compose 或 1Panel面板的安装。

2 安装方式

在正式安装 Uptime Kuma 前,需要根据所选安装方式安装必要环境,如选用Docker安装则需要先安装Docker,选用1Panel面板安装则需要先安装1Panel面板

2.1 Docker

Docker 是一个开源的应用容器引擎,容器是完全使用沙箱机制,它几乎没有性能开销,可以很容易地在机器和数据中心中运行,不依赖于任何语言、框架或包装系统

2.1.1 安装Docker

站内链接
安装Docker
零基础Docker入门指南

2.1.2 部署Uptime Kuma

使用下方命令下载安装并启动Uptime Kuma

1
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

使用 docker ps 命令检查容器是否创建成功

前往云服务器控制台放行相关端口

访问 IP + 端口 打开安装引导页面

2.2 Docker Compose

Docker Compose 是 Docker 编排服务的一部分,可以让用户在集群中部署分布式应用

2.1.1 安装Docker Compose

站内链接
安装Docker Compose
零基础Docker入门指南

2.1.2 部署Uptime Kuma

在自定义位置创建 docker-compose.yml 文件,并填入以下内容按需修改

1
2
3
4
5
6
7
8
9
10
version: '3.3'

services:
uptime-kuma:
image: louislam/uptime-kuma
container_name: uptime-kuma
volumes:
- ./uptime-kuma:/app/data
ports:
- 3001:3001

执行创建并后台运行容器命令

1
docker-compose up -d

使用 docker ps 命令检查容器是否创建成功

前往云服务器控制台放行相关端口

访问 IP + 端口 打开安装引导页面

2.3 1Panel 面板

1Panel 是新一代的 Linux 服务器运维管理面板,可以帮助快速建站

2.1.1 安装1Panel面板

站内链接
安装1Panel
服务器最佳搭档,宝塔和1Panel的部署与选择

2.1.2 部署Uptime Kuma

打开1Panel面板,找到Uptime Kuma,点击安装,进行相关配置后确定即可

image-20240203114955781

等待安装成功后,前往云服务器控制台放行相关端口,如果1Panel面板开启了防火墙,也需在主机>防火墙中放行相关端口

访问 IP + 端口 打开安装引导页面

3 进入Uptime Kuma

安装完成 Uptime Kuma 后,访问 IP + 端口 打开安装引导页面

注意要放行相关端口,是云服务器的前往云服务商控制台放行,是本地服务器的使用下方命令

1
2
3
4
# 放行3001端口
firewall-cmd --zone=public --add-port=3001/tcp --permanent
# 配置立即生效
sudo firewall-cmd --reload

设置用户名和密码

image-20240203122405067

自动跳转进入 Uptime Kuma 仪盘表

image-20240203122606472

4 使用Uptime Kuma

4.1 创建监控项

点击添加监控项,可以选择要监控的类型,本节将以监控站点和监控MySQL数据库为例演示

image-20240203124234609

4.1.1 监控站点

监控类型选择 HTTP(s),URL填写访问地址

image-20240203124436032

设置通知方式,如果该站点出现问题将以设置的通知方式提醒

image-20240203124804153

还可以添加描述和标签,对监控项做出解释和分类

image-20240203124953357

最后点击保存,监控项创建成功

image-20240203125105944

4.1.2 监控MySQL数据库

监控类型选择 MySQL/MariaDB,连接字符串按提示填写,密码填写数据库密码

1
mysql://用户名:密码@MySQL地址:MySQL端口/数据库名

image-20240203130154643

通知、描述、标签的设置同 4.1.1 监控站点,最后点击保存,监控项创建成功

image-20240203130815994

4.2 消息通知

设置通知可以在设置>通知中或在某一监控项中配置,点击设置通知,本节将以电子邮箱通知和Server酱为例演示

image-20240203131102857

4.2.1 电子邮箱

通知类型选择 电子邮箱(SMTP)

image-20240203132117956

其它项按如下配置:

  • 显示名称:管理列表显示的名称,自定义

  • 主机名:服务器地址

    • 网易163邮箱:smtp.163.com
    • QQ邮箱:smtp.qq.com
    • 阿里邮箱:smtp.aliyun.com
  • 端口:一般为465

  • 安全性:选用 TLS

  • 用户名:邮箱用户名,如 talen2004@163.com

  • 密码:邮箱密码,一般为邮箱授权码,在邮箱设置中获得,如网易163邮箱

    image-20240203133518869

  • 发信人:接收邮件显示的发信人,如 M.Talen<talen2004@163.com>

  • 收信人:接收邮件的人,可与发信人一致,如 talen2004@163.com

  • 抄送、密送:一种邮件转发功能,可不设置

  • 邮件主题:邮件的标题,如 {{NAME}}:{{STATUS}}

    • :服务名称
    • :主机名或URL
    • :状态
  • 默认开启:新的监控项将默认启用此通知,建议开启

  • 应用到所有现有监控项:现有的监控项启用此通知

点击测试,收到一封主题为 Test:⚠️ Test 的邮件即为成功

image-20240203134728942

最后点击保存,如果有监控项出现问题,会收到邮件提醒

image-20240203134930037

4.2.2 Server酱

Server酱,英文名为ServerChan,是一款专为程序员设计的通信软件,可以帮助与服务器之间进行通信。它允许用户在不需要安装客户端应用程序的情况下,通过网页界面的API将消息推送到服务器或智能设备。

简单来说,Server酱配置完成后可以在微信收到相应通知。

通知类型选择 ServerChan (Server酱)

image-20240203135917174

  • 显示名称:管理列表显示的名称,自定义
  • SendKey:在Server酱 SendKey中获取,需要登录关注公众号注册
  • 默认开启:新的监控项将默认启用此通知,建议开启
  • 应用到所有现有监控项:现有的监控项启用此通知

点击测试,在 方糖公众号 收到内容为一条测试消息的通知即为成功

image-20240203140611191

最后点击保存,如果有监控项出现问题,会收到邮件提醒(下图为恢复正常的通知)

image-20240203140612316

4.3 配置状态页面

首先点击状态页面,添加新的状态页面

image-20240203141203977

  • 名称为页面显示的标题,如 爱吃猫的鱼DSM
  • 路径为页面地址,如 /status/flecdsm,访问地址就为https://dsm.talen.top/status/flecdsm

在状态页面就可以进行一些页面个性化的设置

image-20240203142035938

  • 描述:页面介绍
  • 底部自定义文本
  • 主题:明暗设置、显示标签、显示 Powered By、显示证书有效期
  • 自定义CSS
  • 添加分组:将监控项分类
  • 添加监控项:添加在仪盘表已设置的监控项

4.4 其它设置

在Uptime Kuma后台设置中,还可以进行很多丰富的设置,如外观、监控历史、备份等

image-20240203142623212

5 写在最后

Uptime Kuma的使用,提高了多站点用户对各站点监控的效率,页面私有部署让站长随时可以查看站点情况,配置通知可以让站长第一时间获取站点状态,合理使用状态页面还可以让其它用户了解自己的网站。本文详细展示了多种常见的安装方式和使用技巧,可以站长帮助快速搭建Uptime Kuma服务。

Hexo博客的部署和使用

1 前言

Hexo是一款快速、简洁且高效的博客框架,其基于Node.js让页面快速完成渲染,强大的API带来无限可能,丰富的插件和主题让建站更容易,生成的静态网页托管在GitHub等平台上还可以省去大量服务器费用。

注意

本文将把Hexo博客部署在服务器而非GitHub等平台,另外由于Hexo框架的特殊性,部分操作要在本地完成,包括后期网站的维护和文章的编写也都在本地完成。

2 安装宝塔

本文使用宝塔面板,宝塔面板安装可参考下方文章,然后在宝塔面板选择安装 LNMP 套件

站内链接
安装宝塔面板
服务器最佳搭档,宝塔和1Panel的部署与选择

3 本地环境安装

3.1 安装Git

Git官网下载最新版Git并完成安装

在Windows的CMD中执行git -v检查是否安装成功

image-20231213203205991

3.2 安装Node.js

Node.js官网下载LTS版本Node.js并完成安装

在选择自定义安装程序时,建议选择Add to PATH,这样就免去了手动配置环境变量的麻烦

image-20231213204028814

分别执行node -vnpm -v来检查是否被正确安装或是否可用

image-20231213204347624

3 配置SSH密钥

在本地终端执行生成公钥密钥命令,按照提示回车或者输入y确认

1
ssh-keygen

输出类似下图信息则表明完成

image-20231213204958089

生成的文件位置在 C:\Users\(你的用户名)\.ssh 中,在这个目录下有一个 id_rsa.pub 这就是我们后面要用的SSH公钥

image-20231213205357374

4 服务器相关操作

在进行其它操作前先在服务器端安装Git

1
yum install git

4.1 创建git账户

  • 创建 git 账户
1
adduser git
  • 赋予git账户权限
1
2
3
4
5
# 给sudoers文件740权限
chmod 740 /etc/sudoers

# 编辑 /etc/sudoers 文件
vim /etc/sudoers

i键进入编辑模式,找到root ALL=(ALL) ALL,在其下方加入:

1
git ALL=(ALL) ALL

若文件仅有几行且无root ALL=(ALL) ALL,则直接文末加入:

1
2
root ALL=(ALL) ALL
git ALL=(ALL) ALL

image-20231213174655059

退出Vim,在编辑模式下点击ESC退出编辑,输入:wq保存并退出Vim

改回sudoers文件权限

1
chmod 400 /etc/sudoers
  • 设置 git 账户密码
1
sudo passwd git

密码输入是看不到的

image-20231213174722664

  • SSH连接

切换至 git 用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件

1
2
3
4
5
6
# 切换git用户
su git
# 创建.ssh文件夹
mkdir ~/.ssh
# 创建并编辑authorized_keys文件
vim ~/.ssh/authorized_keys

i进入编辑模式,把之前本地中生成的id_rsa.pub文件中的公钥复制进去,保存退出

如果复制不方便,可以将本地id_rsa.pub文件上传到.ssh文件夹并重命名为authorized_keys

更改权限

1
2
sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chmod 700 /home/git/.ssh
  • 测试连接

在本地桌面右键”Git Bash Here”或者CMD命令行,输入以下命令,执行输入yes后无报错说明配置成功了

1
ssh -v git@服务器ip地址或域名

如果连接出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic)错误,在服务器端执行sudo vim /etc/ssh/sshd_config命令打开sshd_config配置文件,将第70行左右的 PasswordAuthentication 设置为yes,保存退出,重启sshd服务sudo systemctl restart sshd

4.2 创建git仓库

切换到root账户

1
sudo su root

创建仓库目录

1
2
3
mkdir /var/repo
chown -R git:git /var/repo
chmod -R 777 /var/repo

创建网站根目录

1
2
3
mkdir /www/wwwroot/hexo
chown -R git:git /www/wwwroot/hexo
chmod -R 755 /www/wwwroot/hexo

创建一个空白的 git 仓库

1
2
cd /var/repo
git init --bare hexo.git

编辑一个 Git 钩子

1
vim /var/repo/hexo.git/hooks/post-receive

i进入编辑模式,添加下面的代码,然后保存退出

1
2
#!/bin/bash
git --work-tree=/www/wwwroot/hexo --git-dir=/var/repo/hexo.git checkout -f

更改权限

1
2
chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive

5 宝塔网站配置

在宝塔面板中点击左侧栏网站,在PHP项目中添加站点

添加的域名确保被解析,根目录要对应前面创建的网站根目录

image-20231213214756903

进入网站根目录删除所有文件,尤其是.user.ini

等最后网站搭建完成后,网站的SSL证书可以去部署一下,宝塔和腾讯云都有免费的提供

6 安装Hexo

在本地创建一个空文件夹,这个文件夹要长期保留避免移动

在该文件夹内打开CMD命令行,使用 npm 安装 Hexo

1
npm install -g hexo-cli

image-20231213220428389

初始化博客程序

1
hexo init

本地运行项目

1
hexo g && hexo s

访问http://localhost:4000/能够打开页面即为成功,CTRL+S结束进程

7 Hexo部署

在Hexo博客根目录,编辑站点配置文件 _config.yml,找到deploy,修改参考如下

1
2
3
4
deploy:
type: git
repo: git@服务器IP:/var/repo/hexo.git
branch: master

安装所需组件(插件)

1
2
npm install hexo-deployer-git --save
npm install hexo-server

传到服务器

1
hexo clean && hexo g && hexo d 

最后,访问域名就可以访问Hexo博客了

8 写在最后

如果觉着Hexo部署复杂,可以尝试Halo框架,但是,Hexo真的很好用!

完成本文后部署后,博客页面还是最初的样式,可以找个喜欢的主题来美化博客。

使用AList进行网盘挂载并配合Aria2实现离线下载

1 前言

AList 是一个支持多种存储的文件列表程序,可以方便地浏览和管理网盘资源,支持网页浏览和 WebDAV。

注意

本文除 AList 外,还将部署安装 Aria2,Aria2 将配合 Alist 实现离线下载,当然它也可以单独使用。

2 AList 部分

2.1 项目部署

2.1.1 安装

使用一键脚本快速安装

1
2
# 安装脚本
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install

成功截图:

image-20231115225651693

2.1.2 获取密码

进入 AList 所在目录

1
cd /opt/alist

设置新密码

1
2
3
4
5
# 随机生成一个密码
./alist admin random

# 手动设置一个密码,【密码】是指需要设置的密码
./alist admin set 【密码】

完成截图:

image-20231116001406597

2.1.3 开放端口

若是云服务器,则在相应服务商平台的云服务器控制台放行 5244 端口

image-20231116003732458

若是本地物理服务器,则使用 FirewallID 或者 iptables 打开端口

1
2
3
4
5
6
7
# FirewallID
sudo firewall-cmd --add-port=5244/tcp --permanent
sudo firewall-cmd --reload

# iptables
sudo iptables -A INPUT -p tcp --dport 5244 -j ACCEPT
sudo service iptables save

2.1.4 网页进入

在浏览器中访问 IP:端口号 进入 AList 登录页

初始用户名为 admin,密码为前面获取的随机密码或者设置的密码

image-20231116005015584

登入成功:

image-20231116005238152

2.2 添加存储

在 AList 主页下方点击管理进入管理后台,在左侧菜单栏点击存储,可以查看所有已添加的存储服务,点击添加可增加新的存储服务。

image-20231116205648950

2.2.1 阿里云盘

驱动选择阿里云盘Open,操作参考AList 文档 (阿里云盘 Open)

挂载路径

唯一标识,即要挂载到的位置,将在主页显示的名称

根文件夹 ID

默认为root,展示全部云盘内容,若只想展示某文件夹內内容,可以改为文件夹链接末尾字符串

image-20231118230841075

刷新令牌

前往:https://alist.nn.ci/tool/aliyundrive/request

image-20231118231200149

登录授权允许后即可获得refresh_token,将其直接复制粘贴到刷新令牌位置

image-20231118231433951

其他项

如无特殊情况保持默认即可

2.2.2 OneDrive

驱动选择Onedrive,操作参考AList 文档 (OneDrive)

挂载路径

唯一标识,即要挂载到的位置,将在主页显示的名称

根文件夹路径

默认为 /,如果需要自定义,填写路径就行,如 /text

客户端 ID&客户端密钥&刷新令牌

首先打开 Microsoft Azure,登陆后选择"注册应用程序",输入自定义"名称",选择"任何组织目录中的账户和个人",输入重定向 URI 为 https://alist.nn.ci/tool/onedrive/callback

image-20231118235842190

在概述中可获得客户端 ID

image-20231119001103761

注册好应用程序之后,选择"证书和密码",点击"新客户端密码",选择时间为最长的那个,点击"添加"

image-20231119002358839

密码值即为客户端密钥,请务必在创建时保存密码,离开该页面将无法再次查看

image-20231119002531312

选择 “API 权限”,点击 “Microsoft Graph”,在"选择权限"中输入 Files,勾选 Files.ReadWriteFiles.ReadWrite.All,点击"更新权限"

image-20231119005737855

打开 https://alist.nn.ci/tool/onedrive/request,将获取的客户端ID和客户端密钥分别填入 client_idclient_secret,点击"Get Refresh Token"获取刷新令牌即可

image-20231119023151703

image-20231119023453012

其他项

如无特殊情况保持默认即可

2.2.3 蓝奏云

驱动选择蓝奏云,操作参考AList 文档 (蓝奏云盘)

挂载路径

唯一标识,即要挂载到的位置,将在主页显示的名称

类型&账户&密码

挂载类型选择账户,可以显示网盘所有文件,只需要填写帐号密码,会自动刷新 cookie

根文件夹 ID

蓝奏云盘根目录 ID,默认为-1,若要挂载某一文件夹,请查看AList 文档(根文件夹 ID 部分)

修复文件信息

建议开启,开启后可使用 WebDav 服务

其他项

如无特殊情况保持默认即可

2.2.4 腾讯云 COS

驱动选择对象存储,操作参考AList 文档 (对象存储)

挂载路径

唯一标识,即要挂载到的位置,将在主页显示的名称

存储桶&Endpoint&地区

image-20231121192603229

访问密钥 Id&安全访问密钥

image-20231121192836709

其他项

如无特殊情况保持默认即可

2.3 其他设置

2.3.1 用户设置

进入 AList 管理后台,在左侧菜单栏点击用户,然后编辑当前的 admin 用户,设置一个复杂程度较高的用户名和密码,最后点击保存,重新登录 AList

image-20231124173841512

为了应对不同场景的使用,可以添加权限不同的用户

image-20231126150716800

image-20231126150815911

image-20231126150937488

2.3.2 站点设置

在设置>站点中进行设置:

image-20231126153256636

在设置>样式中进行设置:

image-20231126154427435

在设置>全局中进行设置:

image-20231126160338994

3 Aria2 部分

Aria2 是一款强大的全能型下载工具,支持 BT、磁力、HTTP、FTP 等下载协议,常用做离线下载的服务端。

3.1 安装

安装将使用 P3TERX 的Aria2 一键安装管理脚本 增强版进行安装,参考BT 种子、磁力链接下载工具 - Aria2 一键安装管理脚本 增强版

3.1.1 下载脚本

前往GitHub - P3TERX/aria2.sh: Aria2 一键安装管理脚本 增强版下载

image-20231122003817854

aria2.sh文件上传至服务器并赋予可执行权限

1
chmod +x aria2.sh

3.1.2 运行脚本

1
./aria2.sh

image-20231122005211490

输入1安装 Aria2,安装成功返回配置信息,包括 IP 地址、RPC 端口、RPC 密钥、下载目录等

image-20231122165232348

再次运行安装管理脚本后输入12自动更新 BT-Tracker

3.1.3 尝试下载

前往http://ariang.js.org/,在设置中填写IP地址、RPC端口、RPC密钥

image-20231122170621423

在 Aria2 状态后出现已连接说明连接成功

image-20231122170730213

点击新建,输入 URL 地址、磁力链接或选择种子文件来新建下载

image-20231122214729711

如果下载后进度条不动,则在服务器端执行 aria2 安装管理脚本,依次选择7.修改配置>5.手动打开配置文件修改进入配置文件,在配置文件末尾添加check-certificate=false

如果下载无问题,则说明 Aria2 安装成功

3.2 配合 AList 离线下载

3.2.1 基础设置

  1. 打开 AList 管理后台,依次点击设置>其他,Aria2 地址填写http://IP:6800/jsonrpc,Aria2 密钥填写RPC 密钥

  2. 打开 AList 主页,在右下角更多中点击本地设置,将 Aria2 RPC 链接(地址)和 Aria2 RPC 密钥再次填写

3.2.2 应用场景

网络资源上传至网盘,比如要将一段网络视频上传至阿里云盘,首先复制这个视频的下载链接

image-20231122223525236

打开 AList 主页,进入阿里云盘文件夹,在右下角更多中点击离线下载,粘贴下载链接后确定

image-20231122223851393

在管理后台可查看下载和上传的进度,下载速度取决于服务器,上传速度取决于服务器和网盘限速

image-20231122223948976

回到主页的阿里云盘文件夹,可以发现视频已上传到阿里云盘中,点击可正常播放

image-20231122224551488

4 写在最后

网盘种类繁多,各种限制更是五花八门,使用 AList 工具实现“ALL IN ONE”,让网盘成为真正的个人盘,配合使用 Aria2 工具还可以让下载更加便捷舒适,但是无论是 AList 还是 Aria2 在使用上一定要注意隐私安全。

EasyImage和Lsky Pro两款图床的搭建与使用

1 前言

一个好的图床,是网站或文章的图片能稳定显示的关键,可是很多图床要么不稳定,要么收费,导致网站或文章图片经常挂掉,为了能让图片稳定显示,可以选择自建一个图床网站。

注意

本文将安装宝塔面板,使用宝塔面板可简化操作难度,另外涉及 Docker、ApiPost 和 PicGo 等程序的使用安装根据个人选择而定。

2 比较

2.1 EasyImage

EasyImage 是一款免费开源且功能强大的轻量图床程序,还不强制使用数据库运行。

演示站:https://png.cm/

2.1.1 特点

  • 支持 API
  • 支持仅登录后上传
  • 支持设置图片质量
  • 支持压缩图片大小
  • 支持文字/图片水印
  • 支持设置图片指定宽/高
  • 支持上传图片转换为指定格式
  • 支持限制最低宽度/高度上传
  • 支持上传其他文件格式
  • 在线管理图片
  • 支持网站统计
  • 支持设置广告
  • 支持图片鉴黄
  • 支持自定义代码
  • 支持上传 IP 黑白名单
  • 支持上传日志 IP 定位
  • 支持限制日上传次数
  • 支持创建仅上传用户
  • 对于安装环境要求极低
  • 对于服务器性能要求极低
  • 理论上支持所有常见格式

2.1.2 界面展示

image-20231205004313244

image-20231205004342712

image-20231205004412366

image-20231205004519102

2.2 Lsky Pro

Lsky Pro 是一个用于在线上传、管理图片的图床程序,可以将它作为云上相册或者写作图床等。

演示站(付费版):https://wmimg.com/

2.2.1 特点

  • 支持本地等多种第三方云储存 AWS S3阿里云 OSS腾讯云 COS七牛云又拍云SFTPFTPWebDavMinio
  • 多种数据库驱动支持,MySQL 5.7+PostgreSQL 9.6+SQLite 3.8.8+SQL Server 2017+
  • 支持配置使用多种缓存驱动,MemcachedRedisDynamoDB、等其他关系型数据库,默认以文件的方式缓存
  • 多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接
  • 强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作
  • 自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组
  • 可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能
  • 支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等
  • 支持通过接口上传、管理图片、管理相册
  • 支持在线增量更新、跨版本更新
  • 图片广场

2.2.2 界面展示

image-20231205003908798

image-20231205004011520

image-20231205004040212

image-20231205004102792

3 准备

推荐使用宝塔面板,两款图床均需要 LNMP 环境以及某些 PHP 拓展,使用宝塔面板可以降低环境搭建的难度,宝塔面板安装可参考下方文章,然后在宝塔面板选择安装 LNMP 套件

站内链接
安装宝塔面板
服务器最佳搭档,宝塔和1Panel的部署与选择

如果选择 EasyImage 图床,还可以使用 Docker,可参考下方文章

站内链接
安装Docker
零基础Docker入门指南

4 EasyImage 部分

本部分 EasyImage 的安装将介绍两种方式,分别是宝塔软件商店和 Docker,推荐使用宝塔软件商店

4.1 安装拓展

打开宝塔后台>软件商店>已安装>选择 php(设置)>安装扩展>选择安装fileinfo iconv zip mbstring openssl(如果没有就是已经安装了),安装完成后重启 PHP

image-20231128194825519

4.2 安装图床

4.2.1 方式一:宝塔软件商城(推荐)

在宝塔面板左侧菜单栏点击软件商店,选择一键部署分类,搜索简单图床,在列表中找到对应项目点击一键部署操作

image-20231128193813757

进行部署配置,域名需要在云服务商的域名控制台进行域名解析

image-20231128204402092

提交完成后在宝塔面板左侧菜单栏点击网站,找到简单图床对应的网站行点击设置,点击网站目录关闭防跨站攻击

image-20231128205616540

创建成功站点后访问,首先会对安装环境进行检测,无问题则下一步

image-20231128210128723

第二步将进行网站基础配置,如无特殊情况则保持默认开始安装,跳转至登录页即为安装成功

image-20231128210331634

4.2.2 方式二:Docker 部署

创建配置目录和存储目录

1
2
3
4
# 配置目录
mkdir -p /root/data/docker_data/easyimage/config
# 存储目录
mkdir -p /root/data/docker_data/easyimage/i

使用 docker-cli 安装 EasyImage

1
2
3
4
5
6
7
8
9
10
docker run -itd \
--name easyimage \
-p 8080:80 \
-e TZ=Asia/Shanghai \
-e PUID=1000 \
-e PGID=1000 \
-e DEBUG=false \
-v /root/data/docker_data/easyimage/config:/app/web/config \
-v /root/data/docker_data/easyimage/i:/app/web/i \
ddsderek/easyimage:latest

通过 IP:8080 访问,如要通过域名访问需使用 Nginx 做反向代理

4.3 图床使用

4.3.1 获取 PicGo

下载最新版PicGo

image-20231129003108015

4.3.2 安装插件

安装后在插件设置中搜索 web-uploader,选择 web-uploader 1.1.1 安装

image-20231129003530480

4.3.3 配置图床

依次点击图床设置>自定义 Web 图床,然后新建一个图床配置,按照如下方式填写,然后确定并设置为默认图床

1
2
3
4
5
6
图床配置名:     // 自定义
API地址: https://png.cm/api/index.php // 网站api地址
POST参数名: image
JSON路径: url
自定义请求头: // 不填写
自定义Body: {"token":"1c17b11693cb5ec63859b091c5b9c1b2"} // 网站生成的token。将其放在{"token":"xxx"}中

image-20231129195931317

然后在图床安全中的高级设置里开启 API 上传

image-20231129203058534

4.3.4 测试上传

在 PicGo 上传一张图片,并在简单图床中查看是否有这张图片,若有则为上传成功,没有则检查以下几点

  1. 是否开启 API 上传
  2. PicGo 的配置信息是否正确,尤其是自定义 Body 中需要添加{“token”:“xxx”}
  3. 图床选择是否正确

image-20231129203416856

5 Lsky Pro 部分

5.1 环境安装

宝塔面板的 LNMP 套件的 PHP 默认版本为 7.4,而 Lsky Pro 的要求为大于等于 8.0.2,打开宝塔后台>软件商店,搜索 PHP,推荐安装 8.1 版本

image-20231129211215544

进入 php8.1 管理页,然后点击安装扩展,安装fileinfoimagemagickexif扩展

image-20231129225215865

进入 php8.1 管理页,然后点击禁用函数,找到exec、shell_exec 函数readlink、symlink 函数putenv、getenv 函数chmod、chown、fileperms 函数点击删除

image-20231129225337889

5.2 安装图床

5.2.1 创建站点

打开宝塔面板,选择左侧菜单栏的网站,点击添加站点,域名可设置 IP 或域名,数据库选择 MySQL,PHP 版本选择 PHP-81,其它项可自定义

image-20231129231001728

5.2.2 上传程序

Lsky Pro GitHub 发布页中找到最新版本的图床程序并复制下载链接

image-20231130112902254

打开刚刚创建的网站根目录,在远程下载中选择从 URL 链接下载,在 URL 中填写在 GitHub 复制的下载链接,如果无法远程下载,就在 GitHub 里下载到本地后上传

image-20231130114212307

下载好后双击文件名解压到当前目录

image-20231130114914048

5.2.3 网站配置

程序上传完后回到网站>站点设置>网站目录,将网站运行目录设置为 /public目录,修改后点击保存

image-20231130121345910

然后点击伪静态,输入以下规则后保存

1
2
3
4
5
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}

image-20231130121755251

5.2.4 图床安装

在云服务商的域名控制台将访问域名进行域名解析,在浏览器中访问站点地址自动跳转至安装页面,在第一步运行环境检测中无问题则下一步

image-20231130122630674

在前面创建站点时就创建了数据库,在宝塔面板左侧菜单栏点击数据库,找到对应数据库按提示填写

image-20231130123315808

最后点击立即安装,出现程序安装完成。即为安装成功,点击指定位置即可快速访问程序首页

image-20231130123618692

image-20231130123747116

5.3 图床使用

4.3.1 获取 PicGo

下载最新版PicGo

image-20231130130019268

4.3.2 安装插件

安装后在插件设置中搜索 lankong,选择作者为 hellodk 的安装

image-20231130130240110

4.3.3 配置图床

获取 Token:

使用 ApiPost 或者在线 POST 工具,打开 Lsky Pro 左侧菜单栏的接口项(需登录),获得接口 URL

image-20231130133705248

依次点击图床设置>lankong,然后新建一个图床配置,按照如下方式填写,然后确定并设置为默认图床

1
2
3
4
5
6
7
8
9
图床配置名:     // 自定义
Lsky Pro Version: V2 // 版本,选择V2
Server: http://lsky.talen.top // 图床地址,不要以/结尾
Auth token: Bearer x|xxxxxxxxxxxxx // Token,需用Bearer拼接
Strategy ID: // 存储策略 ID,如果是使用默认存储策略则留空;除非知道具体ID否则请留空
Album ID: // 相册ID,选填
Permission: private(default) // 图片权限,公开还是私有,默认是私有
ignore certificate error: 开关 // 保持关闭,遇到证书报错再考虑是否开启
Sync Delete: 开关 // 同步删除选项,开启后在 PicGo 相册中删除图片可同步删除图床上的文件

image-20231130160230371

4.3.4 测试上传

在 PicGo 上传一张图片,并在 Lsky Pro 图床中查看是否有这张图片,若有则为上传成功,没有则检查以下几点

  1. PicGo 的配置信息是否正确,尤其是 Auth token 中需要添加Bearer 拼接
  2. 图床选择是否正确

image-20231130161339590

6 写在最后

本文两款图床在应对日常使用没有太大的区别,在搭建上 EasyImage 图床更加快捷方便,在页面 UI 上 Lsky Pro 更加美观,操作也更舒服,要选择哪一款可以尝试一些演示站后决定,但无论哪一款,一定要注意隐私安全。

Halo博客的部署和使用

1 前言

Halo 是一款开源的博客框架工具,其强大的功能和易用性受到了许多用户的喜爱。Halo 博客的特点包括代码开源、易于部署、插件机制、模版机制、附件管理和搜索引擎支持等,这些特点使得 Halo 成为了一个灵活且可扩展的框架平台,无论是个人还是企业都可以使用它来搭建自己的博客网站。

image-20240605230803067

2 准备

本文使用宝塔面板部署,安装宝塔面板参考下方文章,进入宝塔面板后需要安装 MySQLNginxDocker

站内链接
安装宝塔面板
服务器最佳搭档,宝塔和1Panel的部署与选择

3 Halo 博客部署

3.1 建数据库

数据库使用 MySQL,数据库名、用户名和密码可自定义。

image-20230927010433190

image-20230927010919741

3.2 创建容器组

在 Docker 页添加编排模板,将创建的 MySQL 数据库名、用户名和密码在内容中对应修改,其它项谨慎修改。

image-20240605232413741

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: "3"

services:
halo:
image: halohub/halo:2.9
container_name: halo
restart: on-failure:3
network_mode: "host"
volumes:
- ./:/root/.halo2
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/数据库名
- --spring.r2dbc.username=用户名
- --spring.r2dbc.password=密码
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 端口号 默认8090
- --server.port=8090

然后创建容器,选择使用容器编排,选择刚刚创建的编排模板,名称自定义。

image-20240605233401901

如果在宝塔面板中安装失败可选择在命令行中操作
站内链接
安装Docker
零基础Docker入门指南

Halo 2.9 可用的 Docker 镜像:halohub/haloghcr.io/halo-dev/halo

Halo 文档:目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 halohub/halo:2.9 或者 halohub/halo:2.9.0

创建文件夹(Halo 数据根目录)

1
mkdir ~/halo && cd ~/halo

创建 docker-compose.yaml

1
vim docker-compose.yaml

编辑 docker-compose.yaml,将创建的 MySQL 数据库名、用户名和密码在内容中对应修改,其它项谨慎修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: "3"

services:
halo:
image: halohub/halo:2.9
container_name: halo
restart: on-failure:3
network_mode: "host"
volumes:
- ./:/root/.halo2
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/数据库名
- --spring.r2dbc.username=用户名
- --spring.r2dbc.password=密码
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 端口号 默认8090
- --server.port=8090

启动 docker-compose 创建容器

1
docker-compose up -d

检查 Halo 镜像运行状态

1
2
docker ps
# 出现halo即为成功

3.3 反向代理

配置nginx.conf文件

image-20230927164834024

nginx.conf文件中添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
# 监听80端口
listen 80;
listen [::]:80;
# 接口的域名,用来访问
server_name 域名;
# 限制请求体的大小
client_max_body_size 1024m;
location / {
# 设置服务器地址
proxy_pass http://127.0.0.1:8090;
# 设定被代理服务器接收到的header信息,重定义发往后端服务器的请求头
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

重载配置并重启 Nginx 服务

image-20230927170315444

3.4 启动

1
docker-compose up -d

在浏览器访问域名/console 或者IP:端口/console ,进入初始化页面,初始化后进入 Halo 管理页面。

image-20230927174453409

4 Halo 博客设置

效果预览(使用Dream for Halo 2.x主题,预览图仅供参考):

image-20230927183624379

4.1 基础设置

侧边栏“设置”中包含:

  • 基本设置:站点标题、副标题、logo 等
  • 文章设置:各页文章显示条数
  • SEO 设置:站点关键词、秒数等,用于提升网站在搜索引擎中的排名
  • 用户设置:是否允许注册及新注册用户的所在权限组
  • 评论设置:是否可以发布评论及评论发送的条件
  • 主题路由设置:各页的路由设置及文章详情页访问规则
  • 代码注入:自定义全局 head 标签、内容页 head 标签、页脚

4.2 插件

前往Halo 应用市场安装内置应用市场插件。

侧边栏“应用市场”安装及启用:

  • Dream for Halo 2.x(主题)
  • 搜索组件:提供统一的搜索组件
  • 评论组件:提供完整的评论系统
  • Sitemap:生成站点地图
  • RSS:生成 RSS 订阅链接
  • ByteMD:让文章支持 Markdown 编辑
  • 图库管理:图库管理模块
  • 链接管理:链接管理模块
  • 瞬间:瞬间管理模块
  • 【可选】对象存储:对象存储策略,兼容阿里云、腾讯云、七牛云等
  • 【可选】OAuth2 认证:提供多种登录方式
  • 【可选】StackEdit:另一款 Markdown 编辑器

4.3 菜单

创建菜单(侧边栏“菜单”,选择在主菜单中新建):

名称链接地址备注
首页/
归档/archives同主题路由设置中归档页路由前缀相同
分类/categories同主题路由设置中分类页路由前缀相同
标签/tags同主题路由设置中标签页路由前缀相同
动态/moments使用插件“瞬间”
相册/photos使用插件“图库管理”
友链/links使用插件“链接管理”
关于/about在侧边栏“页面”中新建页面,别名为 about

4.4 主题

侧边栏“主题(Dream for Halo 2.x)”中包含:

  • 详情:查看当前主题的基本信息
  • 基础信息:作者用户名(填写用户名而非用户昵称)、离屏文案、备案信息、站点声明信息等
  • 基础样式:加载进度条、文章侧边目录、博客背景图、横幅大图、主题色、字体、布局、首页大图轮播、侧边栏悬浮
  • 文章设置:文章缩略图、版权声明、文章分享、捐赠二维码等
  • 侧边栏配置:侧边栏展示(详情见下方表)、各模块类型的具体设置
  • 页面设置:设置友链页面、标签页面等
  • 增强功能:鼠标设置、特效显示、访客统计、自动推送等
  • 定制主题:主题样式自定义设置
侧边栏模板类型模块位置备注
信息模块左侧(1)1. 信息显示不正常检查基础信息中作者用户名是否正确;2. 彩字停顿检查当前用户详情中描述是否填写
音乐模块左侧(2)简单配置填写网易云歌单 ID 即可,获取方法:网易云音乐歌单链接中一串数字
最近文章模块左侧(3)
公告模块右侧(1)
目录模块右侧(2)目录仅在文章详情页显示
广告模块右侧(3)
文章分类模块右侧(4)
文章标签模块右侧(5)

4.5 模板

提供一份页面“关于”的通用模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 个人信息

- 昵称:
- Gitee:
- GitHub:
- Bilibili:

# 联系方式

- Email:
- WeChat:
- QQ:

# 网站信息

- 建站时间:
- 运行环境:
- 博客系统:
- 维护日志:

4.6 一些细节

  • 侧边栏“文章”页内可管理文章分类和标签
  • 添加文章页可切换编辑器,文章设置中可针对调整此篇文章的某些设置
  • 使用“对象存储”插件,可在侧边栏“附件”内改变存储策略,推荐免费的七牛云
  • 侧边栏“图库”为菜单“相册”,侧边栏“链接”为菜单“友链”,侧边栏“瞬间”为菜单“动态”
  • 侧边栏“用户”内角色管理可新建角色权限组,使用“OAuth2 认证”插件可在身份认证中设置多登录方式
  • 侧边栏“概览”中外部访问地址必须为外网 IP 或者域名,当为 localhost 或者 127.0.0.1 是将导致分享链接出现问题

5 写在最后

Halo 博客是一个功能强大、易于上手的博客建站工具,无论是新手还是有经验的用户都可以快速上手并搭建出满意的博客网站。Halo 部署难度不大,难度大的是坚持更新博客,让我们共同努力,致敬每一位还在写博客的你!

❌