Obsidian写hugo博客,github自动部署

注意
本文最后更新于 2023-12-27,文中内容可能已过时。

本人原来使用的博客是vuepress + vdoing,后来在使用的过程中发现这个博客非常的笨重,没有多少的文章编译下来就需要一会时间。

以前使用过wordpress,这个用来建站是很不错的选择用来做博客的话需要有自己的服务器,并且对于Markdown文档的支持不是很好,现在的博客基本上是使用markdown来写,所以不考虑wordpress。

然后了解到Hugo的出现,看了他的优势,打包速度快,几乎不受文件多少的影响。为了更好专注在写文章,同时可以不用每次繁琐的命令行操作和发布,本教程实现了快捷键操作的一键发布。

文章内容所见即所得。写完文章后快捷键 Crtl + U快速发布文章,然后等待GitHub Action部署完成,刷新页面就可以看到新文章,如下为展示的效果:

快速开始

现在已经把整套流程打通了,直接参考下面的步骤,可以实现Obsidian写博客+自动发布和部署。

1
git clone --recursive [email protected]:SivanLaai/blog.git
  • 进入blog目录,修改git远程仓库为你的github静态博客项目地址
1
git remote set-url origin [email protected]:SivanLaai/SivanLaai.github.io.git
  • (可选) - 添加Github项目环境变量WEB_SITE为你自己的域名如```www.sivanlaai.laais.cn
  • 利用obsidian打开blog文件夹,开始写博客
  • 快捷键 Crtl + U快速发布文章(利用Obsidian Shell Command插件实现快速发布)
  • 打开你的网址,如sivanlaai.github.io

其他玩法

评论功能(可选)

**建议新手根据自己的时间来衡量是否加入,不然折腾起来也挺费劲,容易遇到这种问题。确实有时间的可以尝试

本教程中使用的hugo主题是Loveit,同时加入了评论功能,使用的是Waline评论系统,比较推荐使用这个评论系统,支持自建后端也可以使用免费的后端云服务,有评论管理功能,安全,支持登录和匿名模式,爆吹。

对于Waline的详细使用请看官方教程,根据官方教程配置好Waline后端好,在config.yml里面如下:

1
2
waline:
    serverUrl: "WALINE_SERVER_URL"

WALINE_SERVER_URL替换成你的Waline服务地址就可以。

站点统计

针对原版的不算子的统计功能,感觉有点鸡肋,可以尝试加入了其他的站点统计功能

自有主机,docker安装Umami网站统计和Waline评论系统

1.创建文件夹

1
mkdir website && cd website
  1. 创建如下文件运行docker-compose up -d
 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
34
35
36
37
38
39
40
41
42
43
44
version: "3"
services:
  db:
    image: mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=PASSWORD
      - MYSQL_PASSWORD=PASSWORD
      - MYSQL_DATABASE=umami
      - MYSQL_USER=user
    command: --default-authentication-plugin=mysql_native_password --transaction-isolation=READ-COMMITTED --binlog-format=ROW #解决外部无法访问
    volumes:
      - ./conf:/etc/mysql/conf.d
      - ./data:/var/lib/mysql
    network_mode: "host"
  unami:
    image: ghcr.io/umami-software/umami:mysql-latest
    network_mode: "host"
    environment:
      DATABASE_URL: mysql://user:PASSWORD@localhost:3306/umami
      DATABASE_TYPE: mysql
      HASH_SALT: replace-me-with-a-random-string
    restart: always

  waline:
    container_name: waline
    image: lizheming/waline:latest
    restart: always
    network_mode: "host"
    volumes:
      - ${PWD}/data:/app/data
    environment:
      TZ: 'Asia/Shanghai'
      MYSQL_HOST: localhost
      MYSQL_DB: waline
      MYSQL_USER: user
      MYSQL_PASSWORD: PASSWORD
      SITE_NAME: "SivanLaai's Blog"
      SITE_URL: 'http://blog.laais.cn'
      SECURE_DOMAINS: 'blog.laais.cn'
      AUTHOR_EMAIL: '[email protected]'
      SMTP_PASS: SMTP_PASSWORD
      SMTP_USER: [email protected]
      SMTP_SERVICE: QQ

3 初始化waline数据库

 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
SET NAMES utf8mb4;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


# Dump of table wl_Comment
# ------------------------------------------------------------

CREATE TABLE `wl_Comment` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `comment` text,
  `insertedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` varchar(100) DEFAULT '',
  `link` varchar(255) DEFAULT NULL,
  `mail` varchar(255) DEFAULT NULL,
  `nick` varchar(255) DEFAULT NULL,
  `pid` int(11) DEFAULT NULL,
  `rid` int(11) DEFAULT NULL,
  `sticky` boolean DEFAULT NULL,
  `status` varchar(50) NOT NULL DEFAULT '',
  `like` int(11) DEFAULT NULL,
  `ua` text,
  `url` varchar(255) DEFAULT NULL,
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;



# Dump of table wl_Counter
# ------------------------------------------------------------

CREATE TABLE `wl_Counter` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `time` int(11) DEFAULT NULL,
  `reaction0` int(11) DEFAULT NULL,
  `reaction1` int(11) DEFAULT NULL,
  `reaction2` int(11) DEFAULT NULL,
  `reaction3` int(11) DEFAULT NULL,
  `reaction4` int(11) DEFAULT NULL,
  `reaction5` int(11) DEFAULT NULL,
  `reaction6` int(11) DEFAULT NULL,
  `reaction7` int(11) DEFAULT NULL,
  `reaction8` int(11) DEFAULT NULL,
  `url` varchar(255) NOT NULL DEFAULT '',
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;



# Dump of table wl_Users
# ------------------------------------------------------------

CREATE TABLE `wl_Users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `display_name` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `type` varchar(50) NOT NULL DEFAULT '',
  `label` varchar(255) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  `avatar` varchar(255) DEFAULT NULL,
  `github` varchar(255) DEFAULT NULL,
  `twitter` varchar(255) DEFAULT NULL,
  `facebook` varchar(255) DEFAULT NULL,
  `google` varchar(255) DEFAULT NULL,
  `weibo` varchar(255) DEFAULT NULL,
  `qq` varchar(255) DEFAULT NULL,
  `2fa` varchar(32) DEFAULT NULL,
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  1. 验证后台

参考文章

  1. Obsidian + Hugo 最佳配置推荐 | 胡说 (zhangyingwei.com)
  2. Hugo 博客写作最佳实践 | 胡说 (zhangyingwei.com)
  3. 使用Github Actions对Hexo博客自动部署 - zu1k
0%