Compare commits

..

2 Commits

6 changed files with 171 additions and 57 deletions

View File

@@ -272,6 +272,7 @@ footer:
<a style="margin-inline:5px"target="_blank" href="https://hexo.io/zh-cn/"><img src="https://img.shields.io/badge/Frame-Hexo-blue?style=flat&logo=hexo" title="hexo 8.1"></a>
<a style="margin-inline:5px"target="_blank" href="https://butterfly.js.org"><img src="https://img.shields.io/badge/Theme-Butterfly-pink?style=flat" title="butterfly主题"></a>
<a style="margin-inline:5px"target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><img src="https://img.shields.io/badge/Copyright-BY--NC--SA-red?style=flat&logo=alchemy" title="CC BY-NC-SA 4.0"></a>
<a href="https://www.trustssl.cc/ipv6.php?domain=blog.biss.click" title="本站已支持IPv6访问" target="_blank"><img src="https://static.coolcdn.cn/images/ipv6.svg"/></a>
</p>
# --------------------------------------

View File

@@ -144,6 +144,8 @@ feed:
pretty_atom_file: /css/atom.xsl
pretty_rss2_file: /css/rss2.xsl
autodiscovery: true
custom_elements:
- cover: 'cover'
sitemap:
path:

135
package-lock.json generated
View File

@@ -8,9 +8,9 @@
"name": "hexo-site",
"version": "0.0.0",
"dependencies": {
"axios": "^1.13.4",
"axios": "^1.13.5",
"cheerio": "^1.2.0",
"hexo": "^8.1.0",
"hexo": "^8.1.1",
"hexo-abbrlink": "^2.2.1",
"hexo-ai-summary-liushen": "^1.3.1",
"hexo-butterfly-swiper-lyx": "^1.0.2",
@@ -19,13 +19,13 @@
"hexo-filter-mathjax": "^0.9.1",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
"hexo-generator-feed": "^4.0.0",
"hexo-generator-index": "^4.0.0",
"hexo-generator-search": "^2.4.3",
"hexo-generator-searchdb": "^1.5.0",
"hexo-generator-sitemap": "^3.0.1",
"hexo-generator-tag": "^2.0.0",
"hexo-indexnow": "^1.2.0",
"hexo-pretty-feed": "^1.1.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^7.0.1",
"hexo-renderer-pug": "^3.0.0",
@@ -1157,6 +1157,59 @@
"integrity": "sha512-KUwE3MizTzXwhrvTTEpWbug1ngV1zfjwzdxSkeWYGUoVGaaQoid+jxgg4zm4LB+OrtnD+X2xJFq7DCO3pc3fdQ==",
"license": "MIT"
},
"node_modules/fast-xml-builder": {
"version": "1.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz",
"integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
},
"node_modules/fast-xml-parser": {
"version": "5.4.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz",
"integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT",
"dependencies": {
"fast-xml-builder": "^1.0.0",
"strnum": "^2.1.2"
},
"bin": {
"fxparser": "src/cli/cli.js"
}
},
"node_modules/feedsmith": {
"version": "2.9.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/feedsmith/-/feedsmith-2.9.0.tgz",
"integrity": "sha512-TYucytOx4bTrD4ON0iuJG9y0Me7fiT0EZ+7MIE0xptvd8TL6nY0Z1jVPa9W39WMJUtPqV2r27TQxL/z5DCCmdA==",
"license": "MIT",
"dependencies": {
"entities": "^7.0.0",
"fast-xml-parser": "^5.3.3"
}
},
"node_modules/feedsmith/node_modules/entities": {
"version": "7.0.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/entities/-/entities-7.0.1.tgz",
"integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/fetch-blob/-/fetch-blob-3.2.0.tgz",
@@ -2318,6 +2371,19 @@
"node": ">=14"
}
},
"node_modules/hexo-generator-feed": {
"version": "4.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hexo-generator-feed/-/hexo-generator-feed-4.0.0.tgz",
"integrity": "sha512-wG0SDBwJ60B+bcMQhArjSpw/bsuP1/4o9Ar+FnxTMRq5/SEZZlj7q/r7HI60olRf0eurqEm4Dm8yHfAMKQhkoA==",
"license": "MIT",
"dependencies": {
"feedsmith": "2.9.0",
"hexo-util": "4.0.0"
},
"engines": {
"node": ">=20.19.0"
}
},
"node_modules/hexo-generator-index": {
"version": "4.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hexo-generator-index/-/hexo-generator-index-4.0.0.tgz",
@@ -2522,57 +2588,6 @@
"node": ">=14"
}
},
"node_modules/hexo-pretty-feed": {
"version": "1.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hexo-pretty-feed/-/hexo-pretty-feed-1.1.0.tgz",
"integrity": "sha512-ZSNj14FYv1inwLBz960ZIWxPTVmjXtRFR+/6U5IPhm2qBGLgj5nD3LyizeaaSoJLXhmyhPHgykxpvGBs/ATvSg==",
"license": "MIT",
"dependencies": {
"hexo-util": "^3.0.1",
"nunjucks": "^3.2.3"
},
"engines": {
"node": ">=16"
}
},
"node_modules/hexo-pretty-feed/node_modules/hexo-util": {
"version": "3.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hexo-util/-/hexo-util-3.3.0.tgz",
"integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"camel-case": "^4.1.2",
"cross-spawn": "^7.0.3",
"deepmerge": "^4.2.2",
"highlight.js": "^11.6.0",
"htmlparser2": "^9.0.0",
"prismjs": "^1.29.0",
"strip-indent": "^3.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/hexo-pretty-feed/node_modules/htmlparser2": {
"version": "9.1.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/htmlparser2/-/htmlparser2-9.1.0.tgz",
"integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
"license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
"domutils": "^3.1.0",
"entities": "^4.5.0"
}
},
"node_modules/hexo-renderer-ejs": {
"version": "2.0.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz",
@@ -4299,6 +4314,18 @@
"node": ">=8"
}
},
"node_modules/strnum": {
"version": "2.1.2",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/strnum/-/strnum-2.1.2.tgz",
"integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
},
"node_modules/stylus": {
"version": "0.62.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/stylus/-/stylus-0.62.0.tgz",

View File

@@ -12,9 +12,9 @@
"version": "8.1.1"
},
"dependencies": {
"axios": "^1.13.4",
"axios": "^1.13.5",
"cheerio": "^1.2.0",
"hexo": "^8.1.0",
"hexo": "^8.1.1",
"hexo-abbrlink": "^2.2.1",
"hexo-ai-summary-liushen": "^1.3.1",
"hexo-butterfly-swiper-lyx": "^1.0.2",
@@ -23,13 +23,13 @@
"hexo-filter-mathjax": "^0.9.1",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
"hexo-generator-feed": "^4.0.0",
"hexo-generator-index": "^4.0.0",
"hexo-generator-search": "^2.4.3",
"hexo-generator-searchdb": "^1.5.0",
"hexo-generator-sitemap": "^3.0.1",
"hexo-generator-tag": "^2.0.0",
"hexo-indexnow": "^1.2.0",
"hexo-pretty-feed": "^1.1.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^7.0.1",
"hexo-renderer-pug": "^3.0.0",

View File

@@ -0,0 +1,43 @@
---
title: 自建renovate-bot
categories:
- 技术
cover: https://pic.biss.click/image/fca16741-64fa-495b-aa5e-a2ef077461ef.webp
swiper_index: 3
tags:
- gitea
abbrlink: 56f57c0b
summary: >-
这篇文章介绍了如何自建Renovate Bot以自动更新依赖并通过Docker Compose进行部署。首先文章提供了Renovate
Bot的Docker Compose文件配置包括使用特定平台gitea、设置Git
API地址、生成Token以及启用自动发现功能。接着建议创建一个专门用于管理Renovate
Bot的账户并为其生成登录Token。最后通过在系统的crontab中设置定时任务可以自动化运行更新流程。
date: 2026-02-23 10:49:17
---
最近自建了`gitea`,所以把`renovatebot`也自建一下,毕竟`renovatebot`可以自动更新依赖,但是它不对自建`git`提供服务。
这是`docker compose`文件:
```yaml
services:
renovate:
image: renovate/renovate:latest
environment:
RENOVATE_PLATFORM: 'gitea'
RENOVATE_ENDPOINT: '你的git api地址'
RENOVATE_TOKEN: 'token'
RENOVATE_AUTODISCOVER: 'true'
RENOVATE_GIT_AUTHOR: Renovate Bot <bot@biss.click>
RENOVATE_USERNAME: renovate-bot
volumes:
- ./renovate-data:/tmp/renovate
```
可以新建一个`renovate`用户来专门管理,然后登录这个账户创建一个登录`token`。然后再需要使用这个的仓库添加这个用户为协作者就可以了。
这个`docker`容器在运行后会自动退出,这是正常的。
可以在系统crontab新建一个定时任务这样就可以自动运行更新。
```bash
cd /www/compose/renovatebot && docker compose run --rm renovate
```
{% link 官方文档,Renovatebot,https://docs.renovatebot.com/examples/self-hosting/ %}

View File

@@ -0,0 +1,41 @@
---
title: 自建bitwarden服务
categories:
- 技术
cover: https://pic.biss.click/image/deaddd0c-e808-45f3-8354-3c44b2b65167.webp
abbrlink: 7baa41fc
summary: >-
这篇文章介绍了如何自建Bitwarden服务以替代浏览器自带的密码管理器。Bitwarden是一款开源、端到端加密的密码管理器支持多种操作系统和设备具有安全存储、自动同步、一键填充、生成随机密码和检测弱密码等功能。文章详细描述了部署Bitwarden服务的步骤包括安装Vaultwarden、配置Nginx反向代理以及设置域名和数据卷等。通过这些步骤用户可以轻松搭建一个功能强大的密码管理服务器提高个人信息安全。
date: 2026-02-25 11:09:23
---
Bitwarden 是一款开源、端到端加密的密码管理器,支持 Windows、macOS、Linux、Android、iOS 以及几乎所有主流浏览器。
它可以帮你:
- 安全存储密码、银行卡、笔记、密钥等敏感信息
- 全设备自动同步
- 一键自动填充账号密码
- 生成高强度随机密码
- 检测弱密码、重复密码、泄露密码
之前一直使用浏览器自带的密码管理器跨平台不太好用所以自建一个Bitwarden服务器。
但是我们一般用Vaultwarden占用更小有一些Bitwarden的商业功能。
```yaml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vw.domain.tld" #更改成自己的域名
volumes:
- ./vw-data/:/data/
ports:
- 127.0.0.1:8000:80
```
然后使用nignx进行反向代理然后就可以尽情享用了。
{% link vaultwarden,vaultwarden,https://github.com/dani-garcia/vaultwarden %}