背景

记录一下本人VPS上搭建的几个专门为个人博客使用的一些工具软件,为了方便, 都是使用docker进行部署,并且为了便于保存,使用docker-compose方式启动,方便后续修改。

因为vps的规格较低,所以在挑选工具时,会尽量偏向于内存占用小的。

下面介绍一下用到的一些工具, 都采用docker自建服务。

公用数据库搭建

为了尽量减小资源,专门部署了一个mysql实例(docker方式),各个需要数据库的服务都会建立一个自己的库,然后都连接到这个实例上。

mysql实例的docker-compose.yml文件如下, 在这之前,需要创建一个docker网络,然后将所有需要连接到该数据库的docker服务都连接到该网络上即可,具体连接方法可参考下面的umami或waline中的配置。

此处创建的docker网络名为db-net,创建命令:docker network create db-net

mysql的docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
version: "3"
networks:
db-net:
external: true
services:
mariadb:
image: mariadb:10.5.9
container_name: mariadb
restart: always
environment:
- MYSQL_ROOT_PASSWORD=******
- MYSQL_USER=root
- MYSQL_PASSWORD=******
ports:
- 3306:3306
networks:
db-net:
aliases:
- mariadb
volumes:
- ${PWD}/data:/var/lib/mysql
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro

数据统计umami搭建

一个个人站点数据统计工具, 界面看上去比较清新简洁。

需要先连接到mysql上先创建一个数据库 umami,登录到数据库, 然后执行如下命令:

create database umami default character set utf8mb4 collate utf8mb4_unicode_ci;

docker-compose.yml文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: '3'
networks:
db-net:
external: true
services:
umami:
image: ghcr.io/mikecao/umami:mysql-latest
container_name: umami
ports:
- "12000:3000"
networks:
db-net:
aliases:
- umami
environment:
DATABASE_URL: mysql://root:*****@mariadb:3306/umami
DATABASE_TYPE: mysql
HASH_SALT: ******
restart: always

在hexo博客根目录下的scripts目录,找到一个index.js文件(如果没有就自己创建一个),在里面加上如下一行:

1
hexo.extend.injector.register('head_end','<script async defer data-website-id="****" src="*******"></script>','default');

其中 script 内容是从umami上获取的跟踪代码

评论系统waline搭建

一个博客的评论系统。可以自己部署。

需要先连接到mysql上先创建一个数据库 waline,登录到数据库, 然后执行如下命令:

create database waline default character set utf8mb4 collate utf8mb4_unicode_ci;

docker-compose.yml文件如下:

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
version: '3'
networks:
db-net:
external: true
services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 8360:8360
volumes:
- ${PWD}/data:/app/data
networks:
db-net:
aliases:
- waline
environment:
TZ: 'Asia/Shanghai'
MYSQL_HOST: mariadb
MYSQL_PORT: 3306
MYSQL_DB: waline
MYSQL_USER: root
MYSQL_PASSWORD: ******
JWT_TOKEN: '******'
SITE_NAME: '******'
SITE_URL: '*******'
SECURE_DOMAINS: '*********'
AUTHOR_EMAIL: '**********'
IPQPS: 10 #基于 IP 的评论发布频率限制,单位s

这上面的一些配置可以自己查看文档, 传送门 https://waline.js.org/

上面的关键配置是SECURE_DOMAINS, 需要加上自己博客的域名, 否则你的博客将无法访问。