diff --git a/archives/2023/12/index.html b/archives/2023/12/index.html index 28f779a4..f62eb428 100644 --- a/archives/2023/12/index.html +++ b/archives/2023/12/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2023/12/index.html.br b/archives/2023/12/index.html.br index 283ee717..5765c9e4 100644 Binary files a/archives/2023/12/index.html.br and b/archives/2023/12/index.html.br differ diff --git a/archives/2023/12/index.html.gz b/archives/2023/12/index.html.gz index 485dc2e5..10664c92 100644 Binary files a/archives/2023/12/index.html.gz and b/archives/2023/12/index.html.gz differ diff --git a/archives/2023/12/page/2/index.html b/archives/2023/12/page/2/index.html index 38a58665..71b8365f 100644 --- a/archives/2023/12/page/2/index.html +++ b/archives/2023/12/page/2/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2023/12/page/2/index.html.br b/archives/2023/12/page/2/index.html.br index f92874ba..16e91144 100644 Binary files a/archives/2023/12/page/2/index.html.br and b/archives/2023/12/page/2/index.html.br differ diff --git a/archives/2023/12/page/2/index.html.gz b/archives/2023/12/page/2/index.html.gz index 9a13939b..30851d5f 100644 Binary files a/archives/2023/12/page/2/index.html.gz and b/archives/2023/12/page/2/index.html.gz differ diff --git a/archives/2023/index.html b/archives/2023/index.html index 6e5185dc..59120d6b 100644 --- a/archives/2023/index.html +++ b/archives/2023/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2023/index.html.br b/archives/2023/index.html.br index d4a4c0df..49de6b50 100644 Binary files a/archives/2023/index.html.br and b/archives/2023/index.html.br differ diff --git a/archives/2023/index.html.gz b/archives/2023/index.html.gz index 1feb6d34..44ada981 100644 Binary files a/archives/2023/index.html.gz and b/archives/2023/index.html.gz differ diff --git a/archives/2023/page/2/index.html b/archives/2023/page/2/index.html index 628863f2..81c0febb 100644 --- a/archives/2023/page/2/index.html +++ b/archives/2023/page/2/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2023/page/2/index.html.br b/archives/2023/page/2/index.html.br index 3e519c09..568f5acc 100644 Binary files a/archives/2023/page/2/index.html.br and b/archives/2023/page/2/index.html.br differ diff --git a/archives/2023/page/2/index.html.gz b/archives/2023/page/2/index.html.gz index eda10e28..734e3105 100644 Binary files a/archives/2023/page/2/index.html.gz and b/archives/2023/page/2/index.html.gz differ diff --git a/archives/2024/01/index.html b/archives/2024/01/index.html index a6f93a3c..0823751c 100644 --- a/archives/2024/01/index.html +++ b/archives/2024/01/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2024/01/index.html.br b/archives/2024/01/index.html.br index 9dd877dd..8c63f92a 100644 Binary files a/archives/2024/01/index.html.br and b/archives/2024/01/index.html.br differ diff --git a/archives/2024/01/index.html.gz b/archives/2024/01/index.html.gz index 67e06a23..1ae90c87 100644 Binary files a/archives/2024/01/index.html.gz and b/archives/2024/01/index.html.gz differ diff --git a/archives/2024/02/index.html b/archives/2024/02/index.html index 715411d8..dcc7e3f6 100644 --- a/archives/2024/02/index.html +++ b/archives/2024/02/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2024/02/index.html.br b/archives/2024/02/index.html.br index ccd35123..51891814 100644 Binary files a/archives/2024/02/index.html.br and b/archives/2024/02/index.html.br differ diff --git a/archives/2024/02/index.html.gz b/archives/2024/02/index.html.gz index c5b79114..f409dbe8 100644 Binary files a/archives/2024/02/index.html.gz and b/archives/2024/02/index.html.gz differ diff --git a/archives/2024/index.html b/archives/2024/index.html index bc091533..daeb4a46 100644 --- a/archives/2024/index.html +++ b/archives/2024/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2024/index.html.br b/archives/2024/index.html.br index b06ca1b1..958a2dea 100644 Binary files a/archives/2024/index.html.br and b/archives/2024/index.html.br differ diff --git a/archives/2024/index.html.gz b/archives/2024/index.html.gz index 76a509ff..b0747081 100644 Binary files a/archives/2024/index.html.gz and b/archives/2024/index.html.gz differ diff --git a/archives/2024/page/2/index.html b/archives/2024/page/2/index.html index 1a8836f3..9a605403 100644 --- a/archives/2024/page/2/index.html +++ b/archives/2024/page/2/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/2024/page/2/index.html.br b/archives/2024/page/2/index.html.br index c2e5043c..f00a6e25 100644 Binary files a/archives/2024/page/2/index.html.br and b/archives/2024/page/2/index.html.br differ diff --git a/archives/2024/page/2/index.html.gz b/archives/2024/page/2/index.html.gz index d1d89220..2965e2af 100644 Binary files a/archives/2024/page/2/index.html.gz and b/archives/2024/page/2/index.html.gz differ diff --git a/archives/index.html b/archives/index.html index 6bf13cb8..55b371b2 100644 --- a/archives/index.html +++ b/archives/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/index.html.br b/archives/index.html.br index 745081de..cbdb0683 100644 Binary files a/archives/index.html.br and b/archives/index.html.br differ diff --git a/archives/index.html.gz b/archives/index.html.gz index f29bc689..ca492c5a 100644 Binary files a/archives/index.html.gz and b/archives/index.html.gz differ diff --git a/archives/page/2/index.html b/archives/page/2/index.html index 9a179a73..b4fa6a9d 100644 --- a/archives/page/2/index.html +++ b/archives/page/2/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/page/2/index.html.br b/archives/page/2/index.html.br index 6ac0a767..af7bd9ed 100644 Binary files a/archives/page/2/index.html.br and b/archives/page/2/index.html.br differ diff --git a/archives/page/2/index.html.gz b/archives/page/2/index.html.gz index bad91993..3f6374f0 100644 Binary files a/archives/page/2/index.html.gz and b/archives/page/2/index.html.gz differ diff --git a/archives/page/3/index.html b/archives/page/3/index.html index 72b7730e..b30a9714 100644 --- a/archives/page/3/index.html +++ b/archives/page/3/index.html @@ -1 +1 @@ -归档 - 漠北残月的博客
\ No newline at end of file +归档 - 漠北残月的博客
\ No newline at end of file diff --git a/archives/page/3/index.html.br b/archives/page/3/index.html.br index b1edaaca..ebcad1a2 100644 Binary files a/archives/page/3/index.html.br and b/archives/page/3/index.html.br differ diff --git a/archives/page/3/index.html.gz b/archives/page/3/index.html.gz index 0ae6f783..c8005d15 100644 Binary files a/archives/page/3/index.html.gz and b/archives/page/3/index.html.gz differ diff --git a/atom.xml b/atom.xml index 5245fc91..6e142358 100644 --- a/atom.xml +++ b/atom.xml @@ -6,7 +6,7 @@ - 2024-02-25T14:03:07.000Z + 2024-02-29T11:19:43.000Z https://blog.ovvv.top/ @@ -16,12 +16,39 @@ Hexo + + 在 ArchLinux 上安装使用 PostgreSQL + + https://blog.ovvv.top/posts/d2adab3b/ + 2024-02-29T01:44:23.000Z + 2024-02-29T11:19:43.000Z + + + + + + + <blockquote> +<p>本文主要介绍如何在 ArchLinux 上安装和使用 <code>PostgreSQL</code>。</p> +<p>我之前一直使用 <code>MySQL</code>,最近才接触 <code>PostgreSQL</code>。如果你也是 + + + + + + + + + + + + 编写 Umami 的 UV, PV 访问统计显示 https://blog.ovvv.top/posts/4259ee82/ 2024-02-25T11:47:17.000Z - 2024-02-25T14:03:07.000Z + 2024-02-29T11:19:51.000Z @@ -37,7 +64,7 @@ - + @@ -121,7 +148,7 @@ https://blog.ovvv.top/posts/e6ee4a29/ 2024-02-02T06:00:09.000Z - 2024-02-03T12:58:51.000Z + 2024-02-29T11:19:51.000Z @@ -136,7 +163,7 @@ - + @@ -195,7 +222,7 @@ https://blog.ovvv.top/posts/f7a090e6/ 2024-01-24T03:55:35.000Z - 2024-01-25T07:07:19.000Z + 2024-02-29T11:19:51.000Z @@ -211,11 +238,11 @@ - + - + @@ -250,7 +277,7 @@ https://blog.ovvv.top/posts/9c18a796/ 2024-01-17T12:50:59.000Z - 2024-01-24T14:20:14.000Z + 2024-02-29T11:19:51.000Z @@ -265,11 +292,11 @@ - + - + @@ -302,7 +329,7 @@ https://blog.ovvv.top/posts/c7c2ca22/ 2024-01-04T03:56:45.000Z - 2024-01-24T14:20:14.000Z + 2024-02-29T11:19:51.000Z @@ -320,11 +347,11 @@ - + - + @@ -447,7 +474,7 @@ https://blog.ovvv.top/posts/15c02856/ 2023-12-28T07:54:04.000Z - 2024-02-04T07:25:17.000Z + 2024-02-29T11:19:51.000Z @@ -463,7 +490,7 @@ - + @@ -500,30 +527,4 @@ - - Hexo Fluid 设置页脚 - - https://blog.ovvv.top/posts/2422058f/ - 2023-12-27T18:26:14.000Z - 2023-12-29T02:20:02.000Z - - - - - - - <p>效果图:<br><img src="/posts/2422058f/set-footer.webp" alt="set-footer.webp"></p> -<h3 id="1-修改-Fluid-主题配置文件"><a href="#1-修改-Fluid-主题配置文件" - - - - - - - - - - - - diff --git a/atom.xml.br b/atom.xml.br index 898770e2..d679aaa0 100644 Binary files a/atom.xml.br and b/atom.xml.br differ diff --git a/atom.xml.gz b/atom.xml.gz index 18b57162..7235f1c8 100644 Binary files a/atom.xml.gz and b/atom.xml.gz differ diff --git a/index.html b/index.html index c379a65c..7e1cacfe 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -漠北残月的博客
\ No newline at end of file +漠北残月的博客
\ No newline at end of file diff --git a/index.html.br b/index.html.br index 35be04bc..a073cf09 100644 Binary files a/index.html.br and b/index.html.br differ diff --git a/index.html.gz b/index.html.gz index 648d2e71..e90a405a 100644 Binary files a/index.html.gz and b/index.html.gz differ diff --git a/local-search.xml b/local-search.xml index af71a2e7..ba3d2083 100644 --- a/local-search.xml +++ b/local-search.xml @@ -3,6 +3,27 @@ + + 在 ArchLinux 上安装使用 PostgreSQL + + /posts/d2adab3b/ + +

本文主要介绍如何在 ArchLinux 上安装和使用 PostgreSQL

我之前一直使用 MySQL,最近才接触 PostgreSQL。如果你也是 PostgreSQL 的新手,想必也会和我一样在安装使用的时候遇到一些问题(如安装了没有初始化数据库 启动失败等),所以我在这里记录一下我遇到的问题和解决方法。

  1. 安装 PostgreSQL

    1
    sudo pacman -S postgresql

    检查 Postgresql 版本

    1
    psql -V
  2. 初始化数据库
    PostgreSQLMySQL 不同,它需要初始化数据库。
    输入以下命令。

    1
    sudo -iu postgres

    这时候你会进入到 postgres 用户的 shell [postgres]$ 中,执行下面的命令

    1
    initdb -D /var/lib/postgres/data

    如果没有报错,可以退出 postgres shell。

    1
    exit
  3. 启动 PostgreSQL 服务

    1
    sudo systemctl start postgresql

    确认服务是否启动成功

    1
    sudo systemctl status postgresql

    如果显示 active (running) 就表示服务启动成功了。

  4. 创建用户和数据库
    PostgreSQL 还需要添加一个新的数据库用户。进入 postgres shell

    1
    sudo -iu postgres

    输入以下命令

    1
    createuser --interactive

    输入要增加的角色名称,新的角色是否是超级用户。
    提示:如果创建一个与 Linux 用户名相同的 PostgreSQL 角色/用户,就可以访问 PostgreSQL 数据库 shell,而无需指定用户登录(这非常方便)。

  5. 创建数据库
    使用 createdb 命令,创建一个上述用户可以读写的新数据库。

    1
    createdb myDatabaseName
  6. 登录数据库
    postgres shell 中,输入以下命令来登录数据库

    1
    psql

postgres shell 中,一些常用的命令:

1
2
3
4
5
6
\help # 列出所有命令
\l # 列出所有数据库
\c database # 连接到指定数据库
\du # 列出所有用户
\dt # 列出当前数据库的所有表
\q # 退出数据库

参考文章:

]]>
+ + + + + + PostgreSQL + + 数据库 + + + +
+ + + 编写 Umami 的 UV, PV 访问统计显示 @@ -14,7 +35,7 @@ - umami + Umami @@ -90,7 +111,7 @@ - 1panel + 1Panel Let's-Encrypt @@ -149,11 +170,11 @@ - 1panel + 1Panel 部署 - umami + Umami @@ -193,11 +214,11 @@ - 1panel + 1Panel 部署 - alist + Alist @@ -235,11 +256,11 @@ - 1panel + 1Panel 部署 - uptime-kuma + Uptime-kuma @@ -347,7 +368,7 @@ - 1panel + 1Panel 运维 @@ -416,9 +437,9 @@ - github-actions + Github-Actions - github-pages + Github-Pages @@ -485,11 +506,11 @@ hexo - github-actions + Github-Actions - github-pages + Github-Pages - github + Github diff --git a/local-search.xml.br b/local-search.xml.br index 282580b4..9be1a59e 100644 Binary files a/local-search.xml.br and b/local-search.xml.br differ diff --git a/local-search.xml.gz b/local-search.xml.gz index 0acbb336..fe5e3ba7 100644 Binary files a/local-search.xml.gz and b/local-search.xml.gz differ diff --git a/page/2/index.html b/page/2/index.html index 154a22fc..d6a19a6e 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -1 +1 @@ -漠北残月的博客
\ No newline at end of file +漠北残月的博客
\ No newline at end of file diff --git a/page/2/index.html.br b/page/2/index.html.br index 4c0a64f3..ea02bf63 100644 Binary files a/page/2/index.html.br and b/page/2/index.html.br differ diff --git a/page/2/index.html.gz b/page/2/index.html.gz index 47b6c730..62567a1b 100644 Binary files a/page/2/index.html.gz and b/page/2/index.html.gz differ diff --git a/page/3/index.html b/page/3/index.html index f19c98f9..436157a4 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -1 +1 @@ -漠北残月的博客
\ No newline at end of file +漠北残月的博客
\ No newline at end of file diff --git a/page/3/index.html.br b/page/3/index.html.br index cc77e506..414262a9 100644 Binary files a/page/3/index.html.br and b/page/3/index.html.br differ diff --git a/page/3/index.html.gz b/page/3/index.html.gz index 87734e41..1e9c9df6 100644 Binary files a/page/3/index.html.gz and b/page/3/index.html.gz differ diff --git a/posts/15c02856/index.html b/posts/15c02856/index.html index 9b4f4559..4dca4d8a 100644 --- a/posts/15c02856/index.html +++ b/posts/15c02856/index.html @@ -1 +1 @@ -1Panel 安装配置教程 - 漠北残月的博客

1Panel 安装配置教程

本文最后更新于 2024年2月4日 15:25

本文档为 1panel 配置教程,主要介绍 1panel 的配置及使用。更多信息请参照官网:https://1panel.cn

部署条件:一台能 ssh 登录的 Linux 服务器,一个域名

1. 什么是 1Panel,为什么要使用它?

1panel 的官网简介

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。
Github 仓库:https://github.com/1Panel-dev/1Panel


众所周知,服务器运维要求我们熟悉 Linux 系统各种命令行操作,这些是维护服务器必不可少的。但是人总会想着偷懒命令行操作起来不方便,而且很多操作都需要命令行手动编辑,比如安装软件配置 docker、docker-compose、配置反向代理等等。而服务器管理面板封装了大量的操作实现,我们在浏览器中简单地点击填写信息就可以使用,大大提高了效率。

之前我用的是宝塔面板,是个比较知名的服务器管理面板,但是它不开源,且UI 也不好看,登录时甚至还要求绑定宝塔官网账号,否则就无法继续使用面板!

如此种种便促使我寻找替代品。我的服务器在 11 月份左右过期了,新的服务器不想使用宝塔面板,但是不使用面板操作服务器还是不太方便(比如设置反向代理、申请域名 SSL 证书和管理 docker 应用,面板可视化点击几下就好了,命令行操作起来很折磨人),于是便寻找它的替代品,也就是我们今天的主角 —— 1panel

1panel 首页

你可以访问这个连接来体验一下 1panel 的功能:https://demo.1panel.cn

经过一两个月的使用,我觉得体验相当稳定,写这篇教程希望能帮助到大家。

2. 1Panel 安装、登陆

开始之前先确保你的服务器安装了 curl

  1. ssh 连接到你的服务器,执行下面的命令,安装 1panel

    1
    curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
  2. 命令行提示输入安装目录,敲回车 默认即可
    安装目录
    随后命令行会输出一大串安装日志,等待即可。

  3. 命令行提示输入端口号,你可以自定义,也可以用它给你默认的端口号。
    注意 如果你使用的是云服务器,请至云服务器提供商的安全组开放 输入的端口
    账号密码自己设置,但最好不要太简单,不然被人爆破就不好了。
    输入信息

如果没有什么报错的话,那么恭喜你,1panel 已经安装成功了。

登陆信息
现在在浏览器访问 命令行输出的 外网地址 就可以登陆 1panel 面板了。
面板用户名和密码也在命令行输出,如上图所示。

登陆界面

如果出现错误很可能是网络连接问题(服务器下载面板资源出错)或者 ssh 连接断开了,重新执行安装命令即可。具体错误信息请自行搜索解决。

输入账号密码 登陆以后我们可以看到 1panel 的界面,如下图所示。
1panel 首页

首页显示的是服务器的基本信息,我们可以看到服务器的内存、cpu、硬盘、负载、系统的发行版本、内核、主机名等信息。

我们点击应用商店,这里有 1panel 社区维护的一些应用,我们可以直接安装使用。
应用商店包括了一些很热门的应用和开源项目 如:AList MySQL Bitwarden WordPress Umami Uptime Kuma Gitea Jenkins Redis MongoDB PostgreSQL RabbitMQ 等等。都是运行在 docker 容器中的,安装和卸载都很方便。(商店安装的软件和直接 docker-compose 安装的不同,它是运行在 1panel-network 的 bridge 网络中)
应用商店

3. 安装 openresty 应用

我们选择安装 openresty安装 -> 确认 即可。这是一个 nginx 的开源衍生版本,支持 lua 脚本,我们可以用它来做反向代理。
(不知道为啥没有 nginx,但是这个 openresty 也挺好用的,没差)
安装了它才能编辑网页、配置反代。
openresty
不要改配置!直接点确定即可。

4. 设置域名解析

域名服务商设置域名解析,将 域名 解析到服务器的 IP 上。这里应该不用我多教。
域名解析

5. 配置反向代理

点击网页左侧的 网站,然后点击 创建网站,选择反向代理,填入主域名和代理地址,点击确认。

反向代理

配置好后,就可以使用域名访问 1panel 面板了。

6. 申请域名 SSL 证书

我使用 Cloudflare 的 DNS 服务,它会自动申请 SSL 证书并部署,选择流量代理模式即可使用。
但如果你的域名在其他注册商托管,或者 二级域名不使用 Cloudflare 代理,那么你可以使用 1panel 申请 SSL 证书。

参考 1Panel 申请 Let's Encrypt 域名证书


1Panel 安装配置教程
https://blog.ovvv.top/posts/15c02856/
作者
mobeicanyue
发布于
2023年12月28日 15:54
更新于
2024年2月4日 15:25
许可协议
\ No newline at end of file +1Panel 安装配置教程 - 漠北残月的博客

1Panel 安装配置教程

本文最后更新于 2024年2月29日 19:19

本文档为 1panel 配置教程,主要介绍 1panel 的配置及使用。更多信息请参照官网:https://1panel.cn

部署条件:一台能 ssh 登录的 Linux 服务器,一个域名

1. 什么是 1Panel,为什么要使用它?

1panel 的官网简介

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。
Github 仓库:https://github.com/1Panel-dev/1Panel


众所周知,服务器运维要求我们熟悉 Linux 系统各种命令行操作,这些是维护服务器必不可少的。但是人总会想着偷懒命令行操作起来不方便,而且很多操作都需要命令行手动编辑,比如安装软件配置 docker、docker-compose、配置反向代理等等。而服务器管理面板封装了大量的操作实现,我们在浏览器中简单地点击填写信息就可以使用,大大提高了效率。

之前我用的是宝塔面板,是个比较知名的服务器管理面板,但是它不开源,且UI 也不好看,登录时甚至还要求绑定宝塔官网账号,否则就无法继续使用面板!

如此种种便促使我寻找替代品。我的服务器在 11 月份左右过期了,新的服务器不想使用宝塔面板,但是不使用面板操作服务器还是不太方便(比如设置反向代理、申请域名 SSL 证书和管理 docker 应用,面板可视化点击几下就好了,命令行操作起来很折磨人),于是便寻找它的替代品,也就是我们今天的主角 —— 1panel

1panel 首页

你可以访问这个连接来体验一下 1panel 的功能:https://demo.1panel.cn

经过一两个月的使用,我觉得体验相当稳定,写这篇教程希望能帮助到大家。

2. 1Panel 安装、登陆

开始之前先确保你的服务器安装了 curl

  1. ssh 连接到你的服务器,执行下面的命令,安装 1panel

    1
    curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
  2. 命令行提示输入安装目录,敲回车 默认即可
    安装目录
    随后命令行会输出一大串安装日志,等待即可。

  3. 命令行提示输入端口号,你可以自定义,也可以用它给你默认的端口号。
    注意 如果你使用的是云服务器,请至云服务器提供商的安全组开放 输入的端口
    账号密码自己设置,但最好不要太简单,不然被人爆破就不好了。
    输入信息

如果没有什么报错的话,那么恭喜你,1panel 已经安装成功了。

登陆信息
现在在浏览器访问 命令行输出的 外网地址 就可以登陆 1panel 面板了。
面板用户名和密码也在命令行输出,如上图所示。

登陆界面

如果出现错误很可能是网络连接问题(服务器下载面板资源出错)或者 ssh 连接断开了,重新执行安装命令即可。具体错误信息请自行搜索解决。

输入账号密码 登陆以后我们可以看到 1panel 的界面,如下图所示。
1panel 首页

首页显示的是服务器的基本信息,我们可以看到服务器的内存、cpu、硬盘、负载、系统的发行版本、内核、主机名等信息。

我们点击应用商店,这里有 1panel 社区维护的一些应用,我们可以直接安装使用。
应用商店包括了一些很热门的应用和开源项目 如:AList MySQL Bitwarden WordPress Umami Uptime Kuma Gitea Jenkins Redis MongoDB PostgreSQL RabbitMQ 等等。都是运行在 docker 容器中的,安装和卸载都很方便。(商店安装的软件和直接 docker-compose 安装的不同,它是运行在 1panel-network 的 bridge 网络中)
应用商店

3. 安装 openresty 应用

我们选择安装 openresty安装 -> 确认 即可。这是一个 nginx 的开源衍生版本,支持 lua 脚本,我们可以用它来做反向代理。
(不知道为啥没有 nginx,但是这个 openresty 也挺好用的,没差)
安装了它才能编辑网页、配置反代。
openresty
不要改配置!直接点确定即可。

4. 设置域名解析

域名服务商设置域名解析,将 域名 解析到服务器的 IP 上。这里应该不用我多教。
域名解析

5. 配置反向代理

点击网页左侧的 网站,然后点击 创建网站,选择反向代理,填入主域名和代理地址,点击确认。

反向代理

配置好后,就可以使用域名访问 1panel 面板了。

6. 申请域名 SSL 证书

我使用 Cloudflare 的 DNS 服务,它会自动申请 SSL 证书并部署,选择流量代理模式即可使用。
但如果你的域名在其他注册商托管,或者 二级域名不使用 Cloudflare 代理,那么你可以使用 1panel 申请 SSL 证书。

参考 1Panel 申请 Let's Encrypt 域名证书


1Panel 安装配置教程
https://blog.ovvv.top/posts/15c02856/
作者
mobeicanyue
发布于
2023年12月28日 15:54
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/15c02856/index.html.br b/posts/15c02856/index.html.br index 5aea0229..d764c2aa 100644 Binary files a/posts/15c02856/index.html.br and b/posts/15c02856/index.html.br differ diff --git a/posts/15c02856/index.html.gz b/posts/15c02856/index.html.gz index 2372c8d0..6879723d 100644 Binary files a/posts/15c02856/index.html.gz and b/posts/15c02856/index.html.gz differ diff --git a/posts/21f09adf/index.html b/posts/21f09adf/index.html index 6e03500b..3db6e6f0 100644 --- a/posts/21f09adf/index.html +++ b/posts/21f09adf/index.html @@ -1 +1 @@ -修复 Github Pages 上的文章更新时间 - 漠北残月的博客

修复 Github Pages 上的文章更新时间

本文最后更新于 2024年1月19日 20:46

github actions 具体配置请参考前面的文章

1. 问题起因

我开启了 fluid 配置 updated: true,这样会显示文章的更新时间。
fluid-config.webp

但是在部署到 github pages 时,hexo 并不会像我们本地运行那样,显示的是文章的更新时间,它获取的是部署的时间。 换句话说,你所有文章的更新时间都全部定格在 github actions 最新的部署的那个时间(难绷)。
error-time.webp

我们可以在 front-matter 加入 updated: 更新时间 解决

1
2
3
4
5
title: article title
date: 2023-01-01 00:00:00

# 添加 updated: 更新时间
updated: 2023-01-01 00:00:00

但是很明显,updated 时间需要我们手动去维护,很麻烦。

我想要的是:文章的正常 updated 时间,就是文章的 commit 时间

2. 解决方案

修改 deploy.yml

  1. 指定拉取代码的深度

    1
    2
    3
    uses: actions/checkout@v4
    with:
    fetch-depth: 0

    fetch-depth: 0 指定了拉取代码的深度。在这里,设置为 0 表示完全拉取整个代码历史,而不是仅拉取最新的部分。这样可以获取完整的 Git 历史记录。

  2. 修复文件更新时间
    在 build site 之前添加如下代码 [1]

    1
    2
    3
    - name: Fix File Updated Date
    run: |
    git ls-files | while read filepath; do touch -d "$(git log -1 --format='@%ct' $filepath)" "$filepath" && echo "Fixed: $filepath"; done

    在这个脚本中,git ls-files 用于列出所有已跟踪的文件,然后通过 while read filepath 遍历每个文件。
    对于每个文件,git log -1 --format=‘@%ct’ $filepath 用于获取该文件的最后一次提交的时间戳(以秒为单位),并使用 touch -d 命令将文件的更新日期设置为相应的时间戳。
    echo “Fixed: $filepath” 用于输出修复过的文件路径。

这样我们就修复了 github pages 的文章更新时间。

  1. 参考竹林里有冰的 github acitons 文件 workflows/deploy.yml

修复 Github Pages 上的文章更新时间
https://blog.ovvv.top/posts/21f09adf/
作者
mobeicanyue
发布于
2023年12月27日 22:47
更新于
2024年1月19日 20:46
许可协议
\ No newline at end of file +修复 Github Pages 上的文章更新时间 - 漠北残月的博客

修复 Github Pages 上的文章更新时间

本文最后更新于 2024年2月29日 19:19

github actions 具体配置请参考前面的文章

1. 问题起因

我开启了 fluid 配置 updated: true,这样会显示文章的更新时间。
fluid-config.webp

但是在部署到 github pages 时,hexo 并不会像我们本地运行那样,显示的是文章的更新时间,它获取的是部署的时间。 换句话说,你所有文章的更新时间都全部定格在 github actions 最新的部署的那个时间(难绷)。
error-time.webp

我们可以在 front-matter 加入 updated: 更新时间 解决

1
2
3
4
5
title: article title
date: 2023-01-01 00:00:00

# 添加 updated: 更新时间
updated: 2023-01-01 00:00:00

但是很明显,updated 时间需要我们手动去维护,很麻烦。

我想要的是:文章的正常 updated 时间,就是文章的 commit 时间

2. 解决方案

修改 deploy.yml

  1. 指定拉取代码的深度

    1
    2
    3
    uses: actions/checkout@v4
    with:
    fetch-depth: 0

    fetch-depth: 0 指定了拉取代码的深度。在这里,设置为 0 表示完全拉取整个代码历史,而不是仅拉取最新的部分。这样可以获取完整的 Git 历史记录。

  2. 修复文件更新时间
    在 build site 之前添加如下代码 [1]

    1
    2
    3
    - name: Fix File Updated Date
    run: |
    git ls-files | while read filepath; do touch -d "$(git log -1 --format='@%ct' $filepath)" "$filepath" && echo "Fixed: $filepath"; done

    在这个脚本中,git ls-files 用于列出所有已跟踪的文件,然后通过 while read filepath 遍历每个文件。
    对于每个文件,git log -1 --format=‘@%ct’ $filepath 用于获取该文件的最后一次提交的时间戳(以秒为单位),并使用 touch -d 命令将文件的更新日期设置为相应的时间戳。
    echo “Fixed: $filepath” 用于输出修复过的文件路径。

这样我们就修复了 github pages 的文章更新时间。

  1. 参考竹林里有冰的 github acitons 文件 workflows/deploy.yml

修复 Github Pages 上的文章更新时间
https://blog.ovvv.top/posts/21f09adf/
作者
mobeicanyue
发布于
2023年12月27日 22:47
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/21f09adf/index.html.br b/posts/21f09adf/index.html.br index d93bd4ac..1870c5f0 100644 Binary files a/posts/21f09adf/index.html.br and b/posts/21f09adf/index.html.br differ diff --git a/posts/21f09adf/index.html.gz b/posts/21f09adf/index.html.gz index 18a26c84..64754e0a 100644 Binary files a/posts/21f09adf/index.html.gz and b/posts/21f09adf/index.html.gz differ diff --git a/posts/4259ee82/index.html b/posts/4259ee82/index.html index 0e2a1f2c..3ca83321 100644 --- a/posts/4259ee82/index.html +++ b/posts/4259ee82/index.html @@ -1 +1 @@ -编写 Umami 的 UV, PV 访问统计显示 - 漠北残月的博客

编写 Umami 的 UV, PV 访问统计显示

本文最后更新于 2024年2月25日 22:03

Umami is a simple, fast, privacy-focused alternative to Google Analytics.

Umami 是一个简单、快速、注重隐私的 Google Analytics 替代品。

本站的 Umami 访问统计页面,显示了每日的访问量和访问人数,链接:https://umami.ovvv.top/share/SYu8qUKmty52PW9w/blog

浏览量展示

我们在前文介绍过如何安装 Umami,本文将介绍编写一个简单的页面,通过 Umami 的 API 调用显示 Umami 的 UV, PV 访问情况。

本文 默认你已经安装了 Umami 并且添加了一个网站,如果没有安装 Umami,请参考:Umami 安装使用教程

1. 新建 View only 权限的用户

Settings -> Users -> Create user -> 填写账号密码,Role 选择 View only -> Save

新建用户

肯定有读者很疑惑,为什么不直接调用 Umami 的 API 获取数据,而是要额外创建一个账户。因为我的博客是 静态开源无服务器 的,往往需要将生成的代码展示在前端,包括 API 调用。而 Umami 的 API 权限太大了[1],如果使用 admin 权限的 API Token,那么这个 token 可以获取、修改、删除所有网站的数据,会有严重的安全隐患。所以我们需要创建一个 View only 权限的用户,然后使用这个用户的 API Token

2. 新建 Team 并添加用户和网站

Settings -> Teams -> Create team -> 填写名称 -> Save -> 找到刚刚创建的 Team -> Edit -> 复制 Access code,点击 Websites 中点击 Add website 选中你想共享的网站

换一个浏览器登录 Umami(使用View only 权限的用户) -> Settings -> Teams -> Join team -> 输入 Access code -> Join -> 如果没有出错的话,点击 Dashboard 就可以看到你刚刚添加的网站了

3. 获取 View only 用户的 API Token

根据 Umami 的文档[2],我们可以通过以下方式获取 API Token:

1
POST /api/auth/login

例如 你的网站地址为 example.com,那么你需要使用 View only 的账户密码向 https://example.com/api/auth/login 发送一个 POST 请求,请求体为:

1
2
3
4
{
"username": "your-username",
"password": "your-password"
}

如果成功,你应该会得到以下的结果:

1
2
3
4
5
6
7
8
{
"token": "eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A",
"user": {
"id": "cd33a605-d785-42a1-9365-d6cad3b7befd",
"username": "your-username",
"createdAt": "2020-04-20 01:00:00"
}
}

保存 token 值,并在所有请求中发送带 Bearer <token> 值的 Authorization 标头。请求标头应该如下所示:

1
Authorization: Bearer eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A

4. 发送请求获取数据

这里要用到类似于 postman 的 API 测试工具,我使用的是开源的 hoppscotch,你也可以使用 curl 或者其他工具。

先分析一下官方文档的 API 接口[3]
GET /api/websites/{websiteId}/stats
API

有两个必填的 查询参数:startAtendAt,都是 Unix 毫秒时间戳,表示开始时间和结束时间

websiteIdstartAt 需要我们自己获取

websiteId 可以在 Dashboard -> View details -> 看浏览器栏的地址 https://example.com/websites/{websiteId} 中找到

startAt 可发送 GET 请求到 https://example.com/api/websites/{websiteId},请求头为

1
Authorization: Bearer eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A

在返回结果中找到 createdAt 字段,这个字段就是 startAt 的值,也就是你的网站创建时间,数据的开始时间
createdAt

5. 编写页面

页面展示

代码是看到木木的博客[4]而有灵感,而评论区下面的 Nick[5] 提供了相对正确的思路,我在他代码的基础上进行了改进,如删除无用的参数和优化步骤等。代码如下,修改你对应的参数即可运行:

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<div style="text-align:center;">
<h1>Umami 网站统计</h1>
<span>总访问量 <span id="umami-site-pv"></span></span>

<span>总访客数 <span id="umami-site-uv"></span></span>
</div>

<script>
// 从配置文件中获取 umami 的配置
const website_id = 'xxx';

// 拼接请求地址
const request_url = 'https://xxx.com' + '/api/websites/' + website_id + '/stats';

const start_time = new Date('2024-01-01').getTime();
const end_time = new Date().getTime();

const token = 'xxxxxx';

// 检查配置是否为空
if (!website_id) {
throw new Error("Umami website_id is empty");
}
if (!request_url) {
throw new Error("Umami request_url is empty");
}
if (!start_time) {
throw new Error("Umami start_time is empty");
}
if (!token) {
throw new Error("Umami token is empty");
}

const params = new URLSearchParams({
startAt: start_time,
endAt: end_time,
});

const request_header = {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + token,
},
};

async function allStats() {
try {
const response = await fetch(`${request_url}?${params}`, request_header);
const data = await response.json();
const uniqueVisitors = data.uniques.value; // 获取独立访客数
const pageViews = data.pageviews.value; // 获取页面浏览量

let ele1 = document.querySelector("#umami-site-pv")
if (ele1) {
ele1.textContent = pageViews; // 设置页面浏览量
}

let ele2 = document.querySelector("#umami-site-uv")
if (ele2) {
ele2.textContent = uniqueVisitors;
}

console.log(uniqueVisitors, pageViews);
console.log(data);
return data;
} catch (error) {
console.error(error);
return "-1";
}
}
allStats();
</script>
</body>

</html>

参考


编写 Umami 的 UV, PV 访问统计显示
https://blog.ovvv.top/posts/4259ee82/
作者
mobeicanyue
发布于
2024年2月25日 19:47
更新于
2024年2月25日 22:03
许可协议
\ No newline at end of file +编写 Umami 的 UV, PV 访问统计显示 - 漠北残月的博客

编写 Umami 的 UV, PV 访问统计显示

本文最后更新于 2024年2月29日 19:19

Umami is a simple, fast, privacy-focused alternative to Google Analytics.

Umami 是一个简单、快速、注重隐私的 Google Analytics 替代品。

本站的 Umami 访问统计页面,显示了每日的访问量和访问人数,链接:https://umami.ovvv.top/share/SYu8qUKmty52PW9w/blog

浏览量展示

我们在前文介绍过如何安装 Umami,本文将介绍编写一个简单的页面,通过 Umami 的 API 调用显示 Umami 的 UV, PV 访问情况。

本文 默认你已经安装了 Umami 并且添加了一个网站,如果没有安装 Umami,请参考:Umami 安装使用教程

1. 新建 View only 权限的用户

Settings -> Users -> Create user -> 填写账号密码,Role 选择 View only -> Save

新建用户

肯定有读者很疑惑,为什么不直接调用 Umami 的 API 获取数据,而是要额外创建一个账户。因为我的博客是 静态开源无服务器 的,往往需要将生成的代码展示在前端,包括 API 调用。而 Umami 的 API 权限太大了[1],如果使用 admin 权限的 API Token,那么这个 token 可以获取、修改、删除所有网站的数据,会有严重的安全隐患。所以我们需要创建一个 View only 权限的用户,然后使用这个用户的 API Token

2. 新建 Team 并添加用户和网站

Settings -> Teams -> Create team -> 填写名称 -> Save -> 找到刚刚创建的 Team -> Edit -> 复制 Access code,点击 Websites 中点击 Add website 选中你想共享的网站

换一个浏览器登录 Umami(使用View only 权限的用户) -> Settings -> Teams -> Join team -> 输入 Access code -> Join -> 如果没有出错的话,点击 Dashboard 就可以看到你刚刚添加的网站了

3. 获取 View only 用户的 API Token

根据 Umami 的文档[2],我们可以通过以下方式获取 API Token:

1
POST /api/auth/login

例如 你的网站地址为 example.com,那么你需要使用 View only 的账户密码向 https://example.com/api/auth/login 发送一个 POST 请求,请求体为:

1
2
3
4
{
"username": "your-username",
"password": "your-password"
}

如果成功,你应该会得到以下的结果:

1
2
3
4
5
6
7
8
{
"token": "eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A",
"user": {
"id": "cd33a605-d785-42a1-9365-d6cad3b7befd",
"username": "your-username",
"createdAt": "2020-04-20 01:00:00"
}
}

保存 token 值,并在所有请求中发送带 Bearer <token> 值的 Authorization 标头。请求标头应该如下所示:

1
Authorization: Bearer eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A

4. 发送请求获取数据

这里要用到类似于 postman 的 API 测试工具,我使用的是开源的 hoppscotch,你也可以使用 curl 或者其他工具。

先分析一下官方文档的 API 接口[3]
GET /api/websites/{websiteId}/stats
API

有两个必填的 查询参数:startAtendAt,都是 Unix 毫秒时间戳,表示开始时间和结束时间

websiteIdstartAt 需要我们自己获取

websiteId 可以在 Dashboard -> View details -> 看浏览器栏的地址 https://example.com/websites/{websiteId} 中找到

startAt 可发送 GET 请求到 https://example.com/api/websites/{websiteId},请求头为

1
Authorization: Bearer eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A

在返回结果中找到 createdAt 字段,这个字段就是 startAt 的值,也就是你的网站创建时间,数据的开始时间
createdAt

5. 编写页面

页面展示

代码是看到木木的博客[4]而有灵感,而评论区下面的 Nick[5] 提供了相对正确的思路,我在他代码的基础上进行了改进,如删除无用的参数和优化步骤等。代码如下,修改你对应的参数即可运行:

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<div style="text-align:center;">
<h1>Umami 网站统计</h1>
<span>总访问量 <span id="umami-site-pv"></span></span>

<span>总访客数 <span id="umami-site-uv"></span></span>
</div>

<script>
// 从配置文件中获取 umami 的配置
const website_id = 'xxx';

// 拼接请求地址
const request_url = 'https://xxx.com' + '/api/websites/' + website_id + '/stats';

const start_time = new Date('2024-01-01').getTime();
const end_time = new Date().getTime();

const token = 'xxxxxx';

// 检查配置是否为空
if (!website_id) {
throw new Error("Umami website_id is empty");
}
if (!request_url) {
throw new Error("Umami request_url is empty");
}
if (!start_time) {
throw new Error("Umami start_time is empty");
}
if (!token) {
throw new Error("Umami token is empty");
}

const params = new URLSearchParams({
startAt: start_time,
endAt: end_time,
});

const request_header = {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + token,
},
};

async function allStats() {
try {
const response = await fetch(`${request_url}?${params}`, request_header);
const data = await response.json();
const uniqueVisitors = data.uniques.value; // 获取独立访客数
const pageViews = data.pageviews.value; // 获取页面浏览量

let ele1 = document.querySelector("#umami-site-pv")
if (ele1) {
ele1.textContent = pageViews; // 设置页面浏览量
}

let ele2 = document.querySelector("#umami-site-uv")
if (ele2) {
ele2.textContent = uniqueVisitors;
}

console.log(uniqueVisitors, pageViews);
console.log(data);
return data;
} catch (error) {
console.error(error);
return "-1";
}
}
allStats();
</script>
</body>

</html>

参考


编写 Umami 的 UV, PV 访问统计显示
https://blog.ovvv.top/posts/4259ee82/
作者
mobeicanyue
发布于
2024年2月25日 19:47
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/4259ee82/index.html.br b/posts/4259ee82/index.html.br index 5bc2b5e7..90c8f837 100644 Binary files a/posts/4259ee82/index.html.br and b/posts/4259ee82/index.html.br differ diff --git a/posts/4259ee82/index.html.gz b/posts/4259ee82/index.html.gz index 652c1111..2f062592 100644 Binary files a/posts/4259ee82/index.html.gz and b/posts/4259ee82/index.html.gz differ diff --git a/posts/7a862802/index.html b/posts/7a862802/index.html index 34508daa..5bcfe788 100644 --- a/posts/7a862802/index.html +++ b/posts/7a862802/index.html @@ -1 +1 @@ -Hexo 博客部署教程 - 漠北残月的博客

Hexo 博客部署教程

本文最后更新于 2024年1月25日 15:07

Hexo 部署 Github Pages, Github Actions 自动部署

激动的心 颤抖的手,这是本站真正意义上的第一篇博客。第零篇是 hexo 生成的 Hello World。

部署 hexo 的过程中遇到了很多问题,最终还是解决了,这里记录一下。

最终实现的效果,一个项目仓库,main 分支存放源代码,gh-pages 存放生成后的网页代码,github pages 加载 gh-pages 的网页代码。
这样,每当我们 push 代码到 main 分支的时候,github action 会自动构建并将代码发布到 gh-pages 分支,github pages 会自动加载 gh-pages 分支的代码,这样就实现了自动部署。

环境:

linux plasma manjaro
nodejs 20
git 2.43
github 账号配置好 ssh(可以参考我前面教程)
vscode

你需要熟知的技能:git 相关操作

1. 新建 用户名.github.io 仓库

gh-create-repo1.webp

记住这串 仓库的ssh地址 后面要用到
ssh-link.webp

创建的仓库名 建议为 用户名.github.io
gh-create-repo2.webp

2. 部署你的 ssh 私钥 到仓库变量中

deploy-key1.webp

填入你的私钥 取名为 KEY,后面要用到
deploy-key2.webp

3. 初始化 hexo 博客目录

找一个空目录 然后执行下面代码,
把 mobeicanyue.github.io 换成你仓库的名字

1
hexo init mobeicanyue.github.io && cd mobeicanyue.github.io

执行结果如下
init-hexo.webp

4. 初始化 git 仓库并提交到 github

1
2
3
git init
git add .
git commit -m "Initial commit"

执行结果如下
init-git.webp

把下面 git@xxx 地址换成你仓库的ssh地址

1
2
git remote add origin git@github.com:mobeicanyue/mobeicanyue.github.io.git
git push -u origin master

执行结果如下
git-push.webp

此时我们刷新一下 github 仓库,就可以看到我们的代码已经提交上去了
但是网页第一次构建肯定是失败的(打叉),因为还没配置 github action

github-code.webp

5. 新建 gh-pages 分支并将其设置为 pages 的默认部署分支

点击分支
new-branch1.webp
创建 gh-pages 分支
new-branch2.webp
设置 gh-pages 为 pages 的默认部署分支
set-branch.webp

6. 编写 github actions 代码

  1. 修改 _config.yml 文件的 repo 改成你仓库的 ssh 地址
    config.webp

  2. 在 hexo 博客文件夹的 .github 目录创建 deploy.yml 文件

new-file.webp

下面的代码需要修改你的用户名和邮箱
还有你对应的 nodejs 版本

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
name: Deploy Hexo

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Out
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Setup Git
run: |
git config --global user.name "用户名"
git config --global user.email "邮箱"

- name: Setup SSH Key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519

- name: Install Dependencies
run: |
npm install -g hexo-cli
npm install hexo-deployer-git --save
npm install

- name: Deploy Hexo
run: |
hexo clean
hexo generate
hexo deploy

上面的${{ secrets.KEY }} 就是我们前面设置的私钥


  1. 最后提交代码并推送
    commit-push.webp

7. 访问站点,部署成功!

地址为 https://用户名.github.io

success.webp



后记

hexo 部署 github pages 的教程特别多,但是质量鱼龙混杂或者写得不清晰,也没有我想要的部署到 github 源代码双分支管理。踩了很多坑,终于是写完了这篇教程,希望能帮到你。


Hexo 博客部署教程
https://blog.ovvv.top/posts/7a862802/
作者
mobeicanyue
发布于
2023年12月26日 23:18
更新于
2024年1月25日 15:07
许可协议
\ No newline at end of file +Hexo 博客部署教程 - 漠北残月的博客

Hexo 博客部署教程

本文最后更新于 2024年2月29日 19:19

Hexo 部署 Github Pages, Github Actions 自动部署

激动的心 颤抖的手,这是本站真正意义上的第一篇博客。第零篇是 hexo 生成的 Hello World。

部署 hexo 的过程中遇到了很多问题,最终还是解决了,这里记录一下。

最终实现的效果,一个项目仓库,main 分支存放源代码,gh-pages 存放生成后的网页代码,github pages 加载 gh-pages 的网页代码。
这样,每当我们 push 代码到 main 分支的时候,github action 会自动构建并将代码发布到 gh-pages 分支,github pages 会自动加载 gh-pages 分支的代码,这样就实现了自动部署。

环境:

linux plasma manjaro
nodejs 20
git 2.43
github 账号配置好 ssh(可以参考我前面教程)
vscode

你需要熟知的技能:git 相关操作

1. 新建 用户名.github.io 仓库

gh-create-repo1.webp

记住这串 仓库的ssh地址 后面要用到
ssh-link.webp

创建的仓库名 建议为 用户名.github.io
gh-create-repo2.webp

2. 部署你的 ssh 私钥 到仓库变量中

deploy-key1.webp

填入你的私钥 取名为 KEY,后面要用到
deploy-key2.webp

3. 初始化 hexo 博客目录

找一个空目录 然后执行下面代码,
把 mobeicanyue.github.io 换成你仓库的名字

1
hexo init mobeicanyue.github.io && cd mobeicanyue.github.io

执行结果如下
init-hexo.webp

4. 初始化 git 仓库并提交到 github

1
2
3
git init
git add .
git commit -m "Initial commit"

执行结果如下
init-git.webp

把下面 git@xxx 地址换成你仓库的ssh地址

1
2
git remote add origin git@github.com:mobeicanyue/mobeicanyue.github.io.git
git push -u origin master

执行结果如下
git-push.webp

此时我们刷新一下 github 仓库,就可以看到我们的代码已经提交上去了
但是网页第一次构建肯定是失败的(打叉),因为还没配置 github action

github-code.webp

5. 新建 gh-pages 分支并将其设置为 pages 的默认部署分支

点击分支
new-branch1.webp
创建 gh-pages 分支
new-branch2.webp
设置 gh-pages 为 pages 的默认部署分支
set-branch.webp

6. 编写 github actions 代码

  1. 修改 _config.yml 文件的 repo 改成你仓库的 ssh 地址
    config.webp

  2. 在 hexo 博客文件夹的 .github 目录创建 deploy.yml 文件

new-file.webp

下面的代码需要修改你的用户名和邮箱
还有你对应的 nodejs 版本

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
name: Deploy Hexo

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Out
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Setup Git
run: |
git config --global user.name "用户名"
git config --global user.email "邮箱"

- name: Setup SSH Key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519

- name: Install Dependencies
run: |
npm install -g hexo-cli
npm install hexo-deployer-git --save
npm install

- name: Deploy Hexo
run: |
hexo clean
hexo generate
hexo deploy

上面的${{ secrets.KEY }} 就是我们前面设置的私钥


  1. 最后提交代码并推送
    commit-push.webp

7. 访问站点,部署成功!

地址为 https://用户名.github.io

success.webp



后记

hexo 部署 github pages 的教程特别多,但是质量鱼龙混杂或者写得不清晰,也没有我想要的部署到 github 源代码双分支管理。踩了很多坑,终于是写完了这篇教程,希望能帮到你。


Hexo 博客部署教程
https://blog.ovvv.top/posts/7a862802/
作者
mobeicanyue
发布于
2023年12月26日 23:18
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/7a862802/index.html.br b/posts/7a862802/index.html.br index 65bc3d23..5de9fecc 100644 Binary files a/posts/7a862802/index.html.br and b/posts/7a862802/index.html.br differ diff --git a/posts/7a862802/index.html.gz b/posts/7a862802/index.html.gz index a444738a..f81dc29e 100644 Binary files a/posts/7a862802/index.html.gz and b/posts/7a862802/index.html.gz differ diff --git a/posts/9c18a796/index.html b/posts/9c18a796/index.html index 03bb8f58..5a532b6b 100644 --- a/posts/9c18a796/index.html +++ b/posts/9c18a796/index.html @@ -1 +1 @@ -部署自己的网盘 — Alist 安装配置教程 - 漠北残月的博客

部署自己的网盘 — Alist 安装配置教程

本文最后更新于 2024年1月24日 22:20

本文档为 Alist 部署教程,主要介绍 Alist 的配置及使用,参考了官网的教程来编写。更多信息请参照官网 https://alist.nn.ci/zh/guide

1. 安装 Alist

打开 1Panel 面板,点击 应用商店,搜索 Alist,点击 安装 即可。

1Panel 安装配置教程

仅适用于 Linux amd64/arm64 平台
打开命令行输入

1
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install

alist 默认安装在 /opt/alist 中

启动: systemctl start alist
关闭: systemctl stop alist
状态: systemctl status alist
重启: systemctl restart alist

创建一个目录

1
mkdir /etc/alist

进入该目录

1
cd /etc/alist

下载 docker-compose.yml 文件

1
wget https://alist.nn.ci/docker-compose.yml

运行容器

1
docker-compose up -d

打开 AList Release 下载待部署系统对应的文件。下载后解压,赋予文件执行权限后运行即可。Windows 推荐使用该方式安装。
参照 https://alist.nn.ci/zh/guide/install/manual.html

2. 获取 Alist 密码

在安装路径下(能访问到 alist 可执行文件)执行如下命令

(如果是 1panel 安装,就点击 容器 列表,点击 alist 容器终端 按钮,在容器终端下再执行如下命令。)

随机生成一个密码

1
./alist admin random

手动设置一个密码,NEW_PASSWORD是指你需要设置的密码

1
./alist admin set NEW_PASSWORD

如果是 doekcer compose 安装,可执行如下命令
1
docker exec -it alist ./alist admin random
1
docker exec -it alist ./alist admin set NEW_PASSWORD

3. 配置 Alist

默认情况下,应用程序将在 http://localhost:5244 上启动。你可能需要代理 Web 服务器的请求,或更改端口来直接为应用程序提供服务。

浏览器访问 Alist 登陆页面
输入用户名 admin 和上一步获取的 密码
点击登陆

3.1 添加本地存储

  1. 在你安装 alist 的路径创建一个目录 files 用来存储文件,便于持久化存储。一键脚本路径为 /opt/alist/files;docker-compose 路径为 etc/alist/files

  2. 然后开始添加存储
    左边栏点击 存储,然后点击添加,驱动选择 本机存储,点击添加

  3. 挂载路径填写 /,意味着此存储为 网盘根目录。往下滑,找到 根文件夹路径
    如果你是一键脚本安装的,就填写 /opt/alist/files;如果你是 docker-compose 安装的,就填 /opt/alist/data/files。(注意,这个是容器内的映射路径,不是宿主机的路径)

也就是 根文件夹路径(/opt/alist/files) –> 挂载路径(/),这样就可以把 /opt/alist/files 映射到 /,也就是网盘根目录。

最下面点击 保存

3.2 启用游客访问

左边栏点击 用户
编辑 guest 用户,将 停用 取消勾选,然后点击保存

3.3 启用索引

按照以下步骤开启搜索:

  1. 转到索引页,选择一个搜索索引,并单击保存;
  2. 保存索引后,单击构建索引来构建索引;
  3. 现在你可以通过点击页面右上角的搜索块或使用快捷键 Ctrl + K 来搜索文件。

部署自己的网盘 — Alist 安装配置教程
https://blog.ovvv.top/posts/9c18a796/
作者
mobeicanyue
发布于
2024年1月17日 20:50
更新于
2024年1月24日 22:20
许可协议
\ No newline at end of file +部署自己的网盘 — Alist 安装配置教程 - 漠北残月的博客

部署自己的网盘 — Alist 安装配置教程

本文最后更新于 2024年2月29日 19:19

本文档为 Alist 部署教程,主要介绍 Alist 的配置及使用,参考了官网的教程来编写。更多信息请参照官网 https://alist.nn.ci/zh/guide

1. 安装 Alist

打开 1Panel 面板,点击 应用商店,搜索 Alist,点击 安装 即可。

1Panel 安装配置教程

仅适用于 Linux amd64/arm64 平台
打开命令行输入

1
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install

alist 默认安装在 /opt/alist 中

启动: systemctl start alist
关闭: systemctl stop alist
状态: systemctl status alist
重启: systemctl restart alist

创建一个目录

1
mkdir /etc/alist

进入该目录

1
cd /etc/alist

下载 docker-compose.yml 文件

1
wget https://alist.nn.ci/docker-compose.yml

运行容器

1
docker-compose up -d

打开 AList Release 下载待部署系统对应的文件。下载后解压,赋予文件执行权限后运行即可。Windows 推荐使用该方式安装。
参照 https://alist.nn.ci/zh/guide/install/manual.html

2. 获取 Alist 密码

在安装路径下(能访问到 alist 可执行文件)执行如下命令

(如果是 1panel 安装,就点击 容器 列表,点击 alist 容器终端 按钮,在容器终端下再执行如下命令。)

随机生成一个密码

1
./alist admin random

手动设置一个密码,NEW_PASSWORD是指你需要设置的密码

1
./alist admin set NEW_PASSWORD

如果是 doekcer compose 安装,可执行如下命令
1
docker exec -it alist ./alist admin random
1
docker exec -it alist ./alist admin set NEW_PASSWORD

3. 配置 Alist

默认情况下,应用程序将在 http://localhost:5244 上启动。你可能需要代理 Web 服务器的请求,或更改端口来直接为应用程序提供服务。

浏览器访问 Alist 登陆页面
输入用户名 admin 和上一步获取的 密码
点击登陆

3.1 添加本地存储

  1. 在你安装 alist 的路径创建一个目录 files 用来存储文件,便于持久化存储。一键脚本路径为 /opt/alist/files;docker-compose 路径为 etc/alist/files

  2. 然后开始添加存储
    左边栏点击 存储,然后点击添加,驱动选择 本机存储,点击添加

  3. 挂载路径填写 /,意味着此存储为 网盘根目录。往下滑,找到 根文件夹路径
    如果你是一键脚本安装的,就填写 /opt/alist/files;如果你是 docker-compose 安装的,就填 /opt/alist/data/files。(注意,这个是容器内的映射路径,不是宿主机的路径)

也就是 根文件夹路径(/opt/alist/files) –> 挂载路径(/),这样就可以把 /opt/alist/files 映射到 /,也就是网盘根目录。

最下面点击 保存

3.2 启用游客访问

左边栏点击 用户
编辑 guest 用户,将 停用 取消勾选,然后点击保存

3.3 启用索引

按照以下步骤开启搜索:

  1. 转到索引页,选择一个搜索索引,并单击保存;
  2. 保存索引后,单击构建索引来构建索引;
  3. 现在你可以通过点击页面右上角的搜索块或使用快捷键 Ctrl + K 来搜索文件。

部署自己的网盘 — Alist 安装配置教程
https://blog.ovvv.top/posts/9c18a796/
作者
mobeicanyue
发布于
2024年1月17日 20:50
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/9c18a796/index.html.br b/posts/9c18a796/index.html.br index e5f4f05c..98a1ccc2 100644 Binary files a/posts/9c18a796/index.html.br and b/posts/9c18a796/index.html.br differ diff --git a/posts/9c18a796/index.html.gz b/posts/9c18a796/index.html.gz index 9a891f0a..ebb8ca3e 100644 Binary files a/posts/9c18a796/index.html.gz and b/posts/9c18a796/index.html.gz differ diff --git a/posts/c7c2ca22/index.html b/posts/c7c2ca22/index.html index fda55ecb..aa3e6b29 100644 --- a/posts/c7c2ca22/index.html +++ b/posts/c7c2ca22/index.html @@ -1 +1 @@ -使用 uptime-kuma 作为 Status Page - 漠北残月的博客

使用 uptime-kuma 作为 Status Page

本文最后更新于 2024年1月24日 22:20

A fancy self-hosted monitoring tool

一个精致的自托管监控工具

1. 什么是 uptime-kuma,为什么要使用它?

uptime-kuma 是一个开源的 Status Page,它可以帮助你监控你的网站、服务器、API 等,当你的网站、服务器、API 等出现故障时,它会在网页上显示,同时它还可以作为一个 Status Page,展示你的网站、服务器、API 等的状态。
支持多种监测方式如 HTTP(S), TCP Port, Ping, DNS, Docker 等等

在线体验:https://demo.uptime.kuma.pet

官网安装教程:louislam/uptime-kuma

2. 安装 uptime-kuma

打开 1Panel 面板,点击 应用商店,搜索 uptime kuma,点击 安装 即可。

1Panel 安装配置教程

在安装之前,先确保你的服务器已经安装了 dockerdocker-compose

在准备好的安装目录下,新建一个 docker-compose.yml
内容如下:

1
2
3
4
5
6
7
8
9
services:
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- ./data:/app/data
ports:
# <Host Port>:<Container Port>
- 3001:3001
restart: unless-stopped

编辑好以后在 docker-compose.yml 所在目录下执行 docker-compose up -d 启动服务。

现在访问 http://<ip>:3001 即可看到 uptime-kuma 的首页。

配置反向代理(过程略),二级域名 status 映射 3001 端口,即 status.example.com,用域名而不是 ip 访问。

3. 配置 uptime-kuma

访问 status.example.com,进入配置页面。
配置页面
设置账号密码,然后点击 创建

4. 添加监控项

我们尝试添加一个监控项,监控 Github.
添加监控项
填写相关信息 如 监控类型 名称 URL 心跳间隔(监控频率) 等,然后
点击保存
(如果你想监控 chatgpt 可能要使用 ping 的方式,https 由于官方限制会 403,不知道加什么请求头才行,有懂的朋友可以评论区说一下)

这个时候我们可以看到,我们的监控项已经添加成功了。显示了 Github 的响应状态等信息。但是这个时候我们还不能直接访问,因为我们还没有添加对外展示的 Status Page
监控项

5. 添加 Status Page

点击 状态页面,然后点击 新的状态页

添加状态页面

填写 名称路径,然后点击 创建

路径 就是你的状态页面的访问路径,比如我填写的是 show,那么我的状态页面的访问路径就是 http://<ip>:3001/status/show。如果你不想这样,而是想直接访问 status.example.com 就能得到 Status Page。可以先填写一个值 等进去再配置。
添加状态页面

6. 配置 Status Page

点击 添加分组,再点击 添加监控项(就是前面配置的)。
配置状态页面

点击左边的 域名,填写你的域名,然后点击 保存。这样就可以使用域名 status.example.com 访问 而不是 status.example.com/status/show
填写域名

换个浏览器访问域名验证一下,我们的状态页面已经添加成功了。显示了 Github 的响应状态信息。
状态页面


使用 uptime-kuma 作为 Status Page
https://blog.ovvv.top/posts/c7c2ca22/
作者
mobeicanyue
发布于
2024年1月4日 11:56
更新于
2024年1月24日 22:20
许可协议
\ No newline at end of file +使用 uptime-kuma 作为 Status Page - 漠北残月的博客

使用 uptime-kuma 作为 Status Page

本文最后更新于 2024年2月29日 19:19

A fancy self-hosted monitoring tool

一个精致的自托管监控工具

1. 什么是 uptime-kuma,为什么要使用它?

uptime-kuma 是一个开源的 Status Page,它可以帮助你监控你的网站、服务器、API 等,当你的网站、服务器、API 等出现故障时,它会在网页上显示,同时它还可以作为一个 Status Page,展示你的网站、服务器、API 等的状态。
支持多种监测方式如 HTTP(S), TCP Port, Ping, DNS, Docker 等等

在线体验:https://demo.uptime.kuma.pet

官网安装教程:louislam/uptime-kuma

2. 安装 uptime-kuma

打开 1Panel 面板,点击 应用商店,搜索 uptime kuma,点击 安装 即可。

1Panel 安装配置教程

在安装之前,先确保你的服务器已经安装了 dockerdocker-compose

在准备好的安装目录下,新建一个 docker-compose.yml
内容如下:

1
2
3
4
5
6
7
8
9
services:
uptime-kuma:
image: louislam/uptime-kuma:1
volumes:
- ./data:/app/data
ports:
# <Host Port>:<Container Port>
- 3001:3001
restart: unless-stopped

编辑好以后在 docker-compose.yml 所在目录下执行 docker-compose up -d 启动服务。

现在访问 http://<ip>:3001 即可看到 uptime-kuma 的首页。

配置反向代理(过程略),二级域名 status 映射 3001 端口,即 status.example.com,用域名而不是 ip 访问。

3. 配置 uptime-kuma

访问 status.example.com,进入配置页面。
配置页面
设置账号密码,然后点击 创建

4. 添加监控项

我们尝试添加一个监控项,监控 Github.
添加监控项
填写相关信息 如 监控类型 名称 URL 心跳间隔(监控频率) 等,然后
点击保存
(如果你想监控 chatgpt 可能要使用 ping 的方式,https 由于官方限制会 403,不知道加什么请求头才行,有懂的朋友可以评论区说一下)

这个时候我们可以看到,我们的监控项已经添加成功了。显示了 Github 的响应状态等信息。但是这个时候我们还不能直接访问,因为我们还没有添加对外展示的 Status Page
监控项

5. 添加 Status Page

点击 状态页面,然后点击 新的状态页

添加状态页面

填写 名称路径,然后点击 创建

路径 就是你的状态页面的访问路径,比如我填写的是 show,那么我的状态页面的访问路径就是 http://<ip>:3001/status/show。如果你不想这样,而是想直接访问 status.example.com 就能得到 Status Page。可以先填写一个值 等进去再配置。
添加状态页面

6. 配置 Status Page

点击 添加分组,再点击 添加监控项(就是前面配置的)。
配置状态页面

点击左边的 域名,填写你的域名,然后点击 保存。这样就可以使用域名 status.example.com 访问 而不是 status.example.com/status/show
填写域名

换个浏览器访问域名验证一下,我们的状态页面已经添加成功了。显示了 Github 的响应状态信息。
状态页面


使用 uptime-kuma 作为 Status Page
https://blog.ovvv.top/posts/c7c2ca22/
作者
mobeicanyue
发布于
2024年1月4日 11:56
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/c7c2ca22/index.html.br b/posts/c7c2ca22/index.html.br index 0dd2cad1..eb1e8549 100644 Binary files a/posts/c7c2ca22/index.html.br and b/posts/c7c2ca22/index.html.br differ diff --git a/posts/c7c2ca22/index.html.gz b/posts/c7c2ca22/index.html.gz index 4b66e39f..77c7528d 100644 Binary files a/posts/c7c2ca22/index.html.gz and b/posts/c7c2ca22/index.html.gz differ diff --git a/posts/d2adab3b/index.html b/posts/d2adab3b/index.html new file mode 100644 index 00000000..f291296b --- /dev/null +++ b/posts/d2adab3b/index.html @@ -0,0 +1 @@ +在 ArchLinux 上安装使用 PostgreSQL - 漠北残月的博客

在 ArchLinux 上安装使用 PostgreSQL

本文最后更新于 2024年2月29日 19:19

本文主要介绍如何在 ArchLinux 上安装和使用 PostgreSQL

我之前一直使用 MySQL,最近才接触 PostgreSQL。如果你也是 PostgreSQL 的新手,想必也会和我一样在安装使用的时候遇到一些问题(如安装了没有初始化数据库 启动失败等),所以我在这里记录一下我遇到的问题和解决方法。

  1. 安装 PostgreSQL

    1
    sudo pacman -S postgresql

    检查 Postgresql 版本

    1
    psql -V
  2. 初始化数据库
    PostgreSQLMySQL 不同,它需要初始化数据库。
    输入以下命令。

    1
    sudo -iu postgres

    这时候你会进入到 postgres 用户的 shell [postgres]$ 中,执行下面的命令

    1
    initdb -D /var/lib/postgres/data

    如果没有报错,可以退出 postgres shell。

    1
    exit
  3. 启动 PostgreSQL 服务

    1
    sudo systemctl start postgresql

    确认服务是否启动成功

    1
    sudo systemctl status postgresql

    如果显示 active (running) 就表示服务启动成功了。

  4. 创建用户和数据库
    PostgreSQL 还需要添加一个新的数据库用户。进入 postgres shell

    1
    sudo -iu postgres

    输入以下命令

    1
    createuser --interactive

    输入要增加的角色名称,新的角色是否是超级用户。
    提示:如果创建一个与 Linux 用户名相同的 PostgreSQL 角色/用户,就可以访问 PostgreSQL 数据库 shell,而无需指定用户登录(这非常方便)。

  5. 创建数据库
    使用 createdb 命令,创建一个上述用户可以读写的新数据库。

    1
    createdb myDatabaseName
  6. 登录数据库
    postgres shell 中,输入以下命令来登录数据库

    1
    psql

postgres shell 中,一些常用的命令:

1
2
3
4
5
6
\help # 列出所有命令
\l # 列出所有数据库
\c database # 连接到指定数据库
\du # 列出所有用户
\dt # 列出当前数据库的所有表
\q # 退出数据库

参考文章:


在 ArchLinux 上安装使用 PostgreSQL
https://blog.ovvv.top/posts/d2adab3b/
作者
mobeicanyue
发布于
2024年2月29日 09:44
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/d2adab3b/index.html.br b/posts/d2adab3b/index.html.br new file mode 100644 index 00000000..5b0d0f8d Binary files /dev/null and b/posts/d2adab3b/index.html.br differ diff --git a/posts/d2adab3b/index.html.gz b/posts/d2adab3b/index.html.gz new file mode 100644 index 00000000..cbd08ecb Binary files /dev/null and b/posts/d2adab3b/index.html.gz differ diff --git a/posts/e6ee4a29/index.html b/posts/e6ee4a29/index.html index ae45c60f..9f606061 100644 --- a/posts/e6ee4a29/index.html +++ b/posts/e6ee4a29/index.html @@ -1 +1 @@ -1Panel 申请 Let's Encrypt 域名证书 - 漠北残月的博客

1Panel 申请 Let's Encrypt 域名证书

本文最后更新于 2024年2月3日 20:58

域名证书是网站安全的基础,它可以保护网站的数据传输安全,防止中间人攻击。而 Let’s Encrypt 是一个免费的证书颁发机构,它提供了免费的域名证书,可以让我们的网站免费使用 HTTPS 协议。

相对于传统的手动申请证书,1Panel 提供了 一键申请证书自动续签 的功能,下面我们来看看如何使用 1Panel 申请 Let’s Encrypt 域名证书。

如果没有安装 1Panel,请参考 1Panel 安装配置教程

证书申请

1. 创建 Acme 账户

创建账户

填入邮箱(随意填一个即可),点击创建
创建账户

2. 创建 DNS 账户

申请泛域名证书,如 *.example.com 需要创建 DNS 账户。如果只是申请单域名则可以跳过这一步。

点击 DNS 账户,选择你的 DNS 服务商,填入你的账户信息,点击创建
账户信息
不同的 DNS 服务商有不同的要求,这里以 Cloudflare 为例。

API Key 的获取方法:

登录 Cloudflare 后,点击右上角头像,选择My Profile(我的个人资料),然后点击API Tokens,点击Create Token (创建令牌)

选择 Edit zone DNS 令牌模板,选择你的域名,点击Continue to summary(继续以显示摘要),再点击Create Token(创建令牌),最后复制生成的 API Key。
选择域名

注意:API Key 只会显示一次,所以请务必保存好。

最后回到 1Panel,填入你的 Cloudflare 邮箱和 API Key,点击创建 即可

3. 申请证书

填写主域名,勾选下面的 自动续签,验证方式可以选择 DNS 账号 或者 HTTP(不需要 DNS 账户),点击创建
申请证书

申请成功
申请成功


1Panel 申请 Let's Encrypt 域名证书
https://blog.ovvv.top/posts/e6ee4a29/
作者
mobeicanyue
发布于
2024年2月2日 14:00
更新于
2024年2月3日 20:58
许可协议
\ No newline at end of file +1Panel 申请 Let's Encrypt 域名证书 - 漠北残月的博客

1Panel 申请 Let's Encrypt 域名证书

本文最后更新于 2024年2月29日 19:19

域名证书是网站安全的基础,它可以保护网站的数据传输安全,防止中间人攻击。而 Let’s Encrypt 是一个免费的证书颁发机构,它提供了免费的域名证书,可以让我们的网站免费使用 HTTPS 协议。

相对于传统的手动申请证书,1Panel 提供了 一键申请证书自动续签 的功能,下面我们来看看如何使用 1Panel 申请 Let’s Encrypt 域名证书。

如果没有安装 1Panel,请参考 1Panel 安装配置教程

证书申请

1. 创建 Acme 账户

创建账户

填入邮箱(随意填一个即可),点击创建
创建账户

2. 创建 DNS 账户

申请泛域名证书,如 *.example.com 需要创建 DNS 账户。如果只是申请单域名则可以跳过这一步。

点击 DNS 账户,选择你的 DNS 服务商,填入你的账户信息,点击创建
账户信息
不同的 DNS 服务商有不同的要求,这里以 Cloudflare 为例。

API Key 的获取方法:

登录 Cloudflare 后,点击右上角头像,选择My Profile(我的个人资料),然后点击API Tokens,点击Create Token (创建令牌)

选择 Edit zone DNS 令牌模板,选择你的域名,点击Continue to summary(继续以显示摘要),再点击Create Token(创建令牌),最后复制生成的 API Key。
选择域名

注意:API Key 只会显示一次,所以请务必保存好。

最后回到 1Panel,填入你的 Cloudflare 邮箱和 API Key,点击创建 即可

3. 申请证书

填写主域名,勾选下面的 自动续签,验证方式可以选择 DNS 账号 或者 HTTP(不需要 DNS 账户),点击创建
申请证书

申请成功
申请成功


1Panel 申请 Let's Encrypt 域名证书
https://blog.ovvv.top/posts/e6ee4a29/
作者
mobeicanyue
发布于
2024年2月2日 14:00
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/e6ee4a29/index.html.br b/posts/e6ee4a29/index.html.br index ccd1faea..2a1a5ba8 100644 Binary files a/posts/e6ee4a29/index.html.br and b/posts/e6ee4a29/index.html.br differ diff --git a/posts/e6ee4a29/index.html.gz b/posts/e6ee4a29/index.html.gz index 22744688..dbd17e0e 100644 Binary files a/posts/e6ee4a29/index.html.gz and b/posts/e6ee4a29/index.html.gz differ diff --git a/posts/f7a090e6/index.html b/posts/f7a090e6/index.html index 7d8da179..e62652fc 100644 --- a/posts/f7a090e6/index.html +++ b/posts/f7a090e6/index.html @@ -1 +1 @@ -Umami 安装使用教程 - 漠北残月的博客

Umami 安装使用教程

本文最后更新于 2024年1月25日 15:07

Umami is a simple, fast, privacy-focused alternative to Google Analytics.

Umami 是一个简单、快速、注重隐私的 Google Analytics 替代品。

Umami 官网图

1. 什么是 Umami,为什么要使用它?

Umami 是一个简单、快速、注重隐私的开源分析解决方案,是 Google Analytics 的替代品。可轻松收集、分析和了解您的网络数据,同时维护访客隐私和数据所有权。不收集个人身份信息,不使用 Cookie,所有数据都经过匿名处理,符合 GDPR。

它是一个网站统计工具,可以帮助你分析网站的访问情况,比如访问量、访问来源、访问时间等等。这对于静态网站来说是非常有用的,因为静态网站无法像动态网站一样通过后端代码来统计访问情况。

2. 安装 Umami

打开 1Panel 面板,点击 应用商店,搜索 umami,点击 安装 即可。

1Panel 安装配置教程

要求:
Node.js >= 16.13
MySQL or Postgresql

  • 安装 Yarn

    1
    npm install -g yarn
  • 获取源码并安装依赖

    1
    2
    3
    git clone https://github.com/umami-software/umami.git
    cd umami
    yarn install
  • 配置 Umami
    创建一个 .env 文件,内容如下:

    1
    DATABASE_URL=connection-url

    其中 connection-url 为数据库连接地址,如

    1
    postgresql://username:mypassword@localhost:5432/mydb
    1
    mysql://username:mypassword@localhost:3306/mydb
  • 构建 Umami

    1
    yarn build
  • 启动 Umami

    1
    yarn start

下载官方的 docker-compose.yml 文件:
https://github.com/umami-software/umami/blob/master/docker-compose.yml

配置里默认是 Postgresql 数据库,如果你想使用 MySQL 数据库,可以修改 docker-compose.yml 文件,将 DATABASE_URLpostgres 替换为 mysql,并修改 DATABASE_URL 为 MySQL 对应的链接。

然后运行:

1
docker-compose up -d

默认情况下,应用程序将在 http://localhost:3000 上启动。你可能需要代理 Web 服务器的请求,或更改端口来直接为应用程序提供服务。

3. 修改 Umami 密码

Umami 启动后,默认用户名为 admin,默认密码为 umami

第一件事是修改密码,选择 Setting -> Profile,然后设置你的新密码。
修改密码

点击右上角的地球图标,修改语言为 中文

4. 添加网站

点击 设置 -> 网站 -> 添加网站,输入你的网站地址,点击 添加 即可。
添加网站

填写信息后,点击 编辑
编辑

再点击 跟踪代码,复制代码到你的网站中即可。
跟踪代码

1
<script async src="https://example.com/script.js" data-website-id="xxxxxxxxxxxxxxxxxxxx"></script>

如果你在本地写博客,你会发现 localhost 也被统计了,可以添加 data-domains 属性,只统计你的域名:

1
<script async src="https://example.com/script.js" data-website-id="xxxxxxxxxxxxxxxxxxxx" data-domains="example.com"></script>

如果你想遵循访客的 Do Not Track 设置,可以添加 data-do-not-track 属性:

1
<script async src="https://example.com/script.js" data-website-id="xxxxxxxxxxxxxxxxxxxx" data-do-not-track="true"></script>

更多使用方法请参考官方文档:https://umami.is/docs/tracker-configuration


Umami 安装使用教程
https://blog.ovvv.top/posts/f7a090e6/
作者
mobeicanyue
发布于
2024年1月24日 11:55
更新于
2024年1月25日 15:07
许可协议
\ No newline at end of file +Umami 安装使用教程 - 漠北残月的博客

Umami 安装使用教程

本文最后更新于 2024年2月29日 19:19

Umami is a simple, fast, privacy-focused alternative to Google Analytics.

Umami 是一个简单、快速、注重隐私的 Google Analytics 替代品。

Umami 官网图

1. 什么是 Umami,为什么要使用它?

Umami 是一个简单、快速、注重隐私的开源分析解决方案,是 Google Analytics 的替代品。可轻松收集、分析和了解您的网络数据,同时维护访客隐私和数据所有权。不收集个人身份信息,不使用 Cookie,所有数据都经过匿名处理,符合 GDPR。

它是一个网站统计工具,可以帮助你分析网站的访问情况,比如访问量、访问来源、访问时间等等。这对于静态网站来说是非常有用的,因为静态网站无法像动态网站一样通过后端代码来统计访问情况。

2. 安装 Umami

打开 1Panel 面板,点击 应用商店,搜索 umami,点击 安装 即可。

1Panel 安装配置教程

要求:
Node.js >= 16.13
MySQL or Postgresql

  • 安装 Yarn

    1
    npm install -g yarn
  • 获取源码并安装依赖

    1
    2
    3
    git clone https://github.com/umami-software/umami.git
    cd umami
    yarn install
  • 配置 Umami
    创建一个 .env 文件,内容如下:

    1
    DATABASE_URL=connection-url

    其中 connection-url 为数据库连接地址,如

    1
    postgresql://username:mypassword@localhost:5432/mydb
    1
    mysql://username:mypassword@localhost:3306/mydb
  • 构建 Umami

    1
    yarn build
  • 启动 Umami

    1
    yarn start

下载官方的 docker-compose.yml 文件:
https://github.com/umami-software/umami/blob/master/docker-compose.yml

配置里默认是 Postgresql 数据库,如果你想使用 MySQL 数据库,可以修改 docker-compose.yml 文件,将 DATABASE_URLpostgres 替换为 mysql,并修改 DATABASE_URL 为 MySQL 对应的链接。

然后运行:

1
docker-compose up -d

默认情况下,应用程序将在 http://localhost:3000 上启动。你可能需要代理 Web 服务器的请求,或更改端口来直接为应用程序提供服务。

3. 修改 Umami 密码

Umami 启动后,默认用户名为 admin,默认密码为 umami

第一件事是修改密码,选择 Setting -> Profile,然后设置你的新密码。
修改密码

点击右上角的地球图标,修改语言为 中文

4. 添加网站

点击 设置 -> 网站 -> 添加网站,输入你的网站地址,点击 添加 即可。
添加网站

填写信息后,点击 编辑
编辑

再点击 跟踪代码,复制代码到你的网站中即可。
跟踪代码

1
<script async src="https://example.com/script.js" data-website-id="xxxxxxxxxxxxxxxxxxxx"></script>

如果你在本地写博客,你会发现 localhost 也被统计了,可以添加 data-domains 属性,只统计你的域名:

1
<script async src="https://example.com/script.js" data-website-id="xxxxxxxxxxxxxxxxxxxx" data-domains="example.com"></script>

如果你想遵循访客的 Do Not Track 设置,可以添加 data-do-not-track 属性:

1
<script async src="https://example.com/script.js" data-website-id="xxxxxxxxxxxxxxxxxxxx" data-do-not-track="true"></script>

更多使用方法请参考官方文档:https://umami.is/docs/tracker-configuration


Umami 安装使用教程
https://blog.ovvv.top/posts/f7a090e6/
作者
mobeicanyue
发布于
2024年1月24日 11:55
更新于
2024年2月29日 19:19
许可协议
\ No newline at end of file diff --git a/posts/f7a090e6/index.html.br b/posts/f7a090e6/index.html.br index a2ff3026..d79048c9 100644 Binary files a/posts/f7a090e6/index.html.br and b/posts/f7a090e6/index.html.br differ diff --git a/posts/f7a090e6/index.html.gz b/posts/f7a090e6/index.html.gz index 85468c7a..02f9b3bc 100644 Binary files a/posts/f7a090e6/index.html.gz and b/posts/f7a090e6/index.html.gz differ diff --git a/sitemap.txt b/sitemap.txt index 3e2e96fe..168ab8fa 100644 --- a/sitemap.txt +++ b/sitemap.txt @@ -1,3 +1,12 @@ +https://blog.ovvv.top/posts/e6ee4a29/ +https://blog.ovvv.top/posts/15c02856/ +https://blog.ovvv.top/posts/9c18a796/ +https://blog.ovvv.top/posts/21f09adf/ +https://blog.ovvv.top/posts/7a862802/ +https://blog.ovvv.top/posts/f7a090e6/ +https://blog.ovvv.top/posts/c7c2ca22/ +https://blog.ovvv.top/posts/4259ee82/ +https://blog.ovvv.top/posts/d2adab3b/ https://blog.ovvv.top/posts/6db78a27/ https://blog.ovvv.top/posts/d6d74ca/ https://blog.ovvv.top/posts/7671c28e/ @@ -5,22 +14,14 @@ https://blog.ovvv.top/posts/1acd162e/ https://blog.ovvv.top/posts/6a24c2b/ https://blog.ovvv.top/posts/f297b285/ https://blog.ovvv.top/posts/4a17b156/ -https://blog.ovvv.top/posts/4259ee82/ https://blog.ovvv.top/posts/af028bbd/ https://blog.ovvv.top/posts/f24b41b1/ https://blog.ovvv.top/posts/dfba1590/ https://blog.ovvv.top/about/ -https://blog.ovvv.top/posts/15c02856/ -https://blog.ovvv.top/posts/e6ee4a29/ https://blog.ovvv.top/posts/dc0bbd22/ https://blog.ovvv.top/posts/5eba38dc/ -https://blog.ovvv.top/posts/7a862802/ -https://blog.ovvv.top/posts/f7a090e6/ -https://blog.ovvv.top/posts/9c18a796/ -https://blog.ovvv.top/posts/c7c2ca22/ https://blog.ovvv.top/posts/f7c262de/ https://blog.ovvv.top/posts/767e8929/ -https://blog.ovvv.top/posts/21f09adf/ https://blog.ovvv.top/posts/1c0214de/ https://blog.ovvv.top/posts/a89b8953/ https://blog.ovvv.top/posts/2422058f/ diff --git a/sitemap.txt.br b/sitemap.txt.br index 1fa17cf3..3bdd59ca 100644 Binary files a/sitemap.txt.br and b/sitemap.txt.br differ diff --git a/sitemap.txt.gz b/sitemap.txt.gz index b2f7848f..e7649cf1 100644 Binary files a/sitemap.txt.gz and b/sitemap.txt.gz differ diff --git a/sitemap.xml b/sitemap.xml index 904193f7..78419189 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,63 +2,63 @@ - https://blog.ovvv.top/posts/6db78a27/ + https://blog.ovvv.top/posts/e6ee4a29/ - 2024-02-28 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/d6d74ca/ + https://blog.ovvv.top/posts/15c02856/ - 2024-02-25 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/7671c28e/ + https://blog.ovvv.top/posts/9c18a796/ - 2024-02-25 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/1acd162e/ + https://blog.ovvv.top/posts/21f09adf/ - 2024-02-25 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/6a24c2b/ + https://blog.ovvv.top/posts/7a862802/ - 2024-02-25 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/f297b285/ + https://blog.ovvv.top/posts/f7a090e6/ - 2024-02-25 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/4a17b156/ + https://blog.ovvv.top/posts/c7c2ca22/ - 2024-02-25 + 2024-02-29 monthly 0.6 @@ -67,140 +67,149 @@ https://blog.ovvv.top/posts/4259ee82/ - 2024-02-25 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/af028bbd/ + https://blog.ovvv.top/posts/d2adab3b/ - 2024-02-24 + 2024-02-29 monthly 0.6 - https://blog.ovvv.top/posts/f24b41b1/ + https://blog.ovvv.top/posts/6db78a27/ - 2024-02-24 + 2024-02-28 monthly 0.6 - https://blog.ovvv.top/posts/dfba1590/ + https://blog.ovvv.top/posts/d6d74ca/ - 2024-02-19 + 2024-02-25 monthly 0.6 - https://blog.ovvv.top/about/ + https://blog.ovvv.top/posts/7671c28e/ - 2024-02-17 + 2024-02-25 monthly 0.6 - https://blog.ovvv.top/posts/15c02856/ + https://blog.ovvv.top/posts/1acd162e/ - 2024-02-04 + 2024-02-25 monthly 0.6 - https://blog.ovvv.top/posts/e6ee4a29/ + https://blog.ovvv.top/posts/6a24c2b/ + + 2024-02-25 - 2024-02-03 + monthly + 0.6 + + + + https://blog.ovvv.top/posts/f297b285/ + + 2024-02-25 monthly 0.6 - https://blog.ovvv.top/posts/dc0bbd22/ + https://blog.ovvv.top/posts/4a17b156/ - 2024-01-31 + 2024-02-25 monthly 0.6 - https://blog.ovvv.top/posts/5eba38dc/ + https://blog.ovvv.top/posts/af028bbd/ - 2024-01-31 + 2024-02-24 monthly 0.6 - https://blog.ovvv.top/posts/7a862802/ + https://blog.ovvv.top/posts/f24b41b1/ - 2024-01-25 + 2024-02-24 monthly 0.6 - https://blog.ovvv.top/posts/f7a090e6/ + https://blog.ovvv.top/posts/dfba1590/ - 2024-01-25 + 2024-02-19 monthly 0.6 - https://blog.ovvv.top/posts/9c18a796/ + https://blog.ovvv.top/about/ - 2024-01-24 + 2024-02-17 monthly 0.6 - https://blog.ovvv.top/posts/c7c2ca22/ + https://blog.ovvv.top/posts/dc0bbd22/ - 2024-01-24 + 2024-01-31 monthly 0.6 - https://blog.ovvv.top/posts/f7c262de/ + https://blog.ovvv.top/posts/5eba38dc/ - 2024-01-24 + 2024-01-31 monthly 0.6 - https://blog.ovvv.top/posts/767e8929/ + https://blog.ovvv.top/posts/f7c262de/ - 2024-01-19 + 2024-01-24 monthly 0.6 - https://blog.ovvv.top/posts/21f09adf/ + https://blog.ovvv.top/posts/767e8929/ 2024-01-19 @@ -238,7 +247,7 @@ https://blog.ovvv.top/ - 2024-02-28 + 2024-02-29 daily 1.0 diff --git a/sitemap.xml.br b/sitemap.xml.br index 2f346460..609ee36c 100644 Binary files a/sitemap.xml.br and b/sitemap.xml.br differ diff --git a/sitemap.xml.gz b/sitemap.xml.gz index aec249fe..f50e5482 100644 Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ diff --git a/tags/1panel/index.html b/tags/1Panel/index.html similarity index 97% rename from tags/1panel/index.html rename to tags/1Panel/index.html index 3b58c4b5..215b2381 100644 --- a/tags/1panel/index.html +++ b/tags/1Panel/index.html @@ -1 +1 @@ -标签 - 1panel - 漠北残月的博客
\ No newline at end of file +标签 - 1Panel - 漠北残月的博客
\ No newline at end of file diff --git a/tags/1Panel/index.html.br b/tags/1Panel/index.html.br new file mode 100644 index 00000000..816e17b2 Binary files /dev/null and b/tags/1Panel/index.html.br differ diff --git a/tags/1Panel/index.html.gz b/tags/1Panel/index.html.gz new file mode 100644 index 00000000..11d1ac0f Binary files /dev/null and b/tags/1Panel/index.html.gz differ diff --git a/tags/1panel/index.html.br b/tags/1panel/index.html.br deleted file mode 100644 index a3c467e5..00000000 Binary files a/tags/1panel/index.html.br and /dev/null differ diff --git a/tags/1panel/index.html.gz b/tags/1panel/index.html.gz deleted file mode 100644 index f84df5b9..00000000 Binary files a/tags/1panel/index.html.gz and /dev/null differ diff --git a/tags/alist/index.html b/tags/Alist/index.html similarity index 97% rename from tags/alist/index.html rename to tags/Alist/index.html index 557110db..732302ab 100644 --- a/tags/alist/index.html +++ b/tags/Alist/index.html @@ -1 +1 @@ -标签 - alist - 漠北残月的博客
\ No newline at end of file +标签 - Alist - 漠北残月的博客
\ No newline at end of file diff --git a/tags/Alist/index.html.br b/tags/Alist/index.html.br new file mode 100644 index 00000000..34c66e20 Binary files /dev/null and b/tags/Alist/index.html.br differ diff --git a/tags/Alist/index.html.gz b/tags/Alist/index.html.gz new file mode 100644 index 00000000..371b54ab Binary files /dev/null and b/tags/Alist/index.html.gz differ diff --git a/tags/github-actions/index.html b/tags/Github-Actions/index.html similarity index 96% rename from tags/github-actions/index.html rename to tags/Github-Actions/index.html index 75473440..d544a972 100644 --- a/tags/github-actions/index.html +++ b/tags/Github-Actions/index.html @@ -1 +1 @@ -标签 - github-actions - 漠北残月的博客
\ No newline at end of file +标签 - Github-Actions - 漠北残月的博客
\ No newline at end of file diff --git a/tags/Github-Actions/index.html.br b/tags/Github-Actions/index.html.br new file mode 100644 index 00000000..78693725 Binary files /dev/null and b/tags/Github-Actions/index.html.br differ diff --git a/tags/Github-Actions/index.html.gz b/tags/Github-Actions/index.html.gz new file mode 100644 index 00000000..e635ec8a Binary files /dev/null and b/tags/Github-Actions/index.html.gz differ diff --git a/tags/github-pages/index.html b/tags/Github-Pages/index.html similarity index 96% rename from tags/github-pages/index.html rename to tags/Github-Pages/index.html index 7142b03e..80c8f4df 100644 --- a/tags/github-pages/index.html +++ b/tags/Github-Pages/index.html @@ -1 +1 @@ -标签 - github-pages - 漠北残月的博客
\ No newline at end of file +标签 - Github-Pages - 漠北残月的博客
\ No newline at end of file diff --git a/tags/Github-Pages/index.html.br b/tags/Github-Pages/index.html.br new file mode 100644 index 00000000..fe51abcd Binary files /dev/null and b/tags/Github-Pages/index.html.br differ diff --git a/tags/Github-Pages/index.html.gz b/tags/Github-Pages/index.html.gz new file mode 100644 index 00000000..cefc9000 Binary files /dev/null and b/tags/Github-Pages/index.html.gz differ diff --git a/tags/github/index.html b/tags/Github/index.html similarity index 97% rename from tags/github/index.html rename to tags/Github/index.html index 67859822..7386507f 100644 --- a/tags/github/index.html +++ b/tags/Github/index.html @@ -1 +1 @@ -标签 - github - 漠北残月的博客

共计 1 篇文章


2023

Hexo 博客部署教程
\ No newline at end of file +标签 - Github - 漠北残月的博客

共计 1 篇文章


2023

Hexo 博客部署教程
\ No newline at end of file diff --git a/tags/Github/index.html.br b/tags/Github/index.html.br new file mode 100644 index 00000000..de6c904b Binary files /dev/null and b/tags/Github/index.html.br differ diff --git a/tags/Github/index.html.gz b/tags/Github/index.html.gz new file mode 100644 index 00000000..fb81ea33 Binary files /dev/null and b/tags/Github/index.html.gz differ diff --git a/tags/PostgreSQL/index.html b/tags/PostgreSQL/index.html new file mode 100644 index 00000000..bb289eb5 --- /dev/null +++ b/tags/PostgreSQL/index.html @@ -0,0 +1 @@ +标签 - PostgreSQL - 漠北残月的博客
\ No newline at end of file diff --git a/tags/PostgreSQL/index.html.br b/tags/PostgreSQL/index.html.br new file mode 100644 index 00000000..9e717096 Binary files /dev/null and b/tags/PostgreSQL/index.html.br differ diff --git a/tags/PostgreSQL/index.html.gz b/tags/PostgreSQL/index.html.gz new file mode 100644 index 00000000..7524e1c5 Binary files /dev/null and b/tags/PostgreSQL/index.html.gz differ diff --git a/tags/umami/index.html b/tags/Umami/index.html similarity index 97% rename from tags/umami/index.html rename to tags/Umami/index.html index 4abf9199..57081a31 100644 --- a/tags/umami/index.html +++ b/tags/Umami/index.html @@ -1 +1 @@ -标签 - umami - 漠北残月的博客
\ No newline at end of file +标签 - Umami - 漠北残月的博客
\ No newline at end of file diff --git a/tags/Umami/index.html.br b/tags/Umami/index.html.br new file mode 100644 index 00000000..731f43a2 Binary files /dev/null and b/tags/Umami/index.html.br differ diff --git a/tags/Umami/index.html.gz b/tags/Umami/index.html.gz new file mode 100644 index 00000000..0edb2ffb Binary files /dev/null and b/tags/Umami/index.html.gz differ diff --git a/tags/uptime-kuma/index.html b/tags/Uptime-kuma/index.html similarity index 97% rename from tags/uptime-kuma/index.html rename to tags/Uptime-kuma/index.html index deb62c3b..c81c3fe3 100644 --- a/tags/uptime-kuma/index.html +++ b/tags/Uptime-kuma/index.html @@ -1 +1 @@ -标签 - uptime-kuma - 漠北残月的博客
\ No newline at end of file +标签 - Uptime-kuma - 漠北残月的博客
\ No newline at end of file diff --git a/tags/Uptime-kuma/index.html.br b/tags/Uptime-kuma/index.html.br new file mode 100644 index 00000000..cdaf683a Binary files /dev/null and b/tags/Uptime-kuma/index.html.br differ diff --git a/tags/Uptime-kuma/index.html.gz b/tags/Uptime-kuma/index.html.gz new file mode 100644 index 00000000..06118db6 Binary files /dev/null and b/tags/Uptime-kuma/index.html.gz differ diff --git a/tags/alist/index.html.br b/tags/alist/index.html.br deleted file mode 100644 index 0b2fbc42..00000000 Binary files a/tags/alist/index.html.br and /dev/null differ diff --git a/tags/alist/index.html.gz b/tags/alist/index.html.gz deleted file mode 100644 index 9f797f46..00000000 Binary files a/tags/alist/index.html.gz and /dev/null differ diff --git a/tags/github-actions/index.html.br b/tags/github-actions/index.html.br deleted file mode 100644 index 82513ac7..00000000 Binary files a/tags/github-actions/index.html.br and /dev/null differ diff --git a/tags/github-actions/index.html.gz b/tags/github-actions/index.html.gz deleted file mode 100644 index 93771f73..00000000 Binary files a/tags/github-actions/index.html.gz and /dev/null differ diff --git a/tags/github-pages/index.html.br b/tags/github-pages/index.html.br deleted file mode 100644 index 55614e68..00000000 Binary files a/tags/github-pages/index.html.br and /dev/null differ diff --git a/tags/github-pages/index.html.gz b/tags/github-pages/index.html.gz deleted file mode 100644 index 80fa45cb..00000000 Binary files a/tags/github-pages/index.html.gz and /dev/null differ diff --git a/tags/github/index.html.br b/tags/github/index.html.br deleted file mode 100644 index c46f27c7..00000000 Binary files a/tags/github/index.html.br and /dev/null differ diff --git a/tags/github/index.html.gz b/tags/github/index.html.gz deleted file mode 100644 index b429630e..00000000 Binary files a/tags/github/index.html.gz and /dev/null differ diff --git a/tags/index.html b/tags/index.html index 351345c5..02093262 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1 +1 @@ -标签 - 漠北残月的博客
\ No newline at end of file +标签 - 漠北残月的博客
\ No newline at end of file diff --git a/tags/index.html.br b/tags/index.html.br index 8b2f5e15..cae8cc44 100644 Binary files a/tags/index.html.br and b/tags/index.html.br differ diff --git a/tags/index.html.gz b/tags/index.html.gz index 49fb2d9a..9c387f29 100644 Binary files a/tags/index.html.gz and b/tags/index.html.gz differ diff --git a/tags/umami/index.html.br b/tags/umami/index.html.br deleted file mode 100644 index 97393f6f..00000000 Binary files a/tags/umami/index.html.br and /dev/null differ diff --git a/tags/umami/index.html.gz b/tags/umami/index.html.gz deleted file mode 100644 index a3141585..00000000 Binary files a/tags/umami/index.html.gz and /dev/null differ diff --git a/tags/uptime-kuma/index.html.br b/tags/uptime-kuma/index.html.br deleted file mode 100644 index 2f843c23..00000000 Binary files a/tags/uptime-kuma/index.html.br and /dev/null differ diff --git a/tags/uptime-kuma/index.html.gz b/tags/uptime-kuma/index.html.gz deleted file mode 100644 index ce9a4748..00000000 Binary files a/tags/uptime-kuma/index.html.gz and /dev/null differ diff --git "a/tags/\346\225\260\346\215\256\345\272\223/index.html" "b/tags/\346\225\260\346\215\256\345\272\223/index.html" new file mode 100644 index 00000000..ce2f78a3 --- /dev/null +++ "b/tags/\346\225\260\346\215\256\345\272\223/index.html" @@ -0,0 +1 @@ +标签 - 数据库 - 漠北残月的博客
\ No newline at end of file diff --git "a/tags/\346\225\260\346\215\256\345\272\223/index.html.br" "b/tags/\346\225\260\346\215\256\345\272\223/index.html.br" new file mode 100644 index 00000000..75955fac Binary files /dev/null and "b/tags/\346\225\260\346\215\256\345\272\223/index.html.br" differ diff --git "a/tags/\346\225\260\346\215\256\345\272\223/index.html.gz" "b/tags/\346\225\260\346\215\256\345\272\223/index.html.gz" new file mode 100644 index 00000000..952ae42e Binary files /dev/null and "b/tags/\346\225\260\346\215\256\345\272\223/index.html.gz" differ