惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News - Newest:
Hacker News - Newest: "LLM"
Project Zero
Project Zero
The Hacker News
The Hacker News
博客园 - Franky
博客园_首页
云风的 BLOG
云风的 BLOG
T
Tenable Blog
腾讯CDC
量子位
大猫的无限游戏
大猫的无限游戏
Cyberwarzone
Cyberwarzone
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
宝玉的分享
宝玉的分享
T
The Blog of Author Tim Ferriss
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
The Cloudflare Blog
G
Google Developers Blog
Security Latest
Security Latest
I
Intezer
C
Cyber Attacks, Cyber Crime and Cyber Security
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
Microsoft Security Blog
Microsoft Security Blog
O
OpenAI News
AWS News Blog
AWS News Blog
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
C
Cisco Blogs
T
Tor Project blog
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
J
Java Code Geeks
D
Docker
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
Help Net Security
Help Net Security

CAYZLH

MacBook上备忘录APP的快捷键和手势 让Google屏蔽某些搜索结果 WSL自定义安装Ubuntu typora自动上传图片配置 Windows下结束指定端口的进程 批量修改maven多模块版本号 使用winsw部署SpringBoot项目 Gson简易指南 docker搭建Consul集群 使用Docker部署SpringBoot项目 Docker使用redis镜像 Docker使用rabbitmq Docker使用zookeeper Docker使用MySQL Dockerfile常用指令 Docker免sudo操作 雷鸟电视去广告 使用ADB卸载MIUI系统应用 利用GitHub做图床 将网站变成灰色 Github上传大文件 Android远程调试命令adb vscode快捷键的使用 SpringBoot文件上传异常处理 SpringBoot封装JedisUtils工具类 SpringBoot自动部署脚本 使用Spring读取文件的几种方式 Spring统一异常返回 利用Github做Maven私服 Redis常用指令 Maven常用指令 使用mysqldump导出数据 SpringBoot动态切换多数据源 Java8的日期处理实践 lambda表达式语法 Stream表达式语法 使用Optional优雅地判空 Android Support vs AndroidX 「Vue」Runtime-Complier和Runtime-only的区别 RecyclerView使用记录 动态设置布局之LayoutInflater Redis分布式锁的几种方案 打造一个舒服的写作环境(Hexo) 深入了解与使用ThreadLocal Maven中dependencyManagement的作用 Redis配置认证密码 nginx简单配置示例 Linux(macOS)换源 Linux搭建Git服务器 Linux配置ssh使用公钥登录远程服务器 Linux下find与exec的使用 Linux排查Java问题工具单 Linux常用命令 MySql数据库优化细节 API签名验证方案 Java集合框架 Redis基础知识总结 Spring事务管理 Redis为什么这么快 SpringBoot实现Jwt单点登录 SpringBoot实现Redis分布式锁 Spring面向切面编程(知识梳理) SpringBoot异步请求和异步调用 Mybatis中用到的几种设计模式 Docker Swarm RocketMQ相关流程图/原理图 SonarQube的安装与使用 宝塔面板部署vue项目 Tomcat的三种接收请求处理方式 Docker知识扫盲 安装Jenkins并用于部署SpringBoot项目 Tomcat单机多实例部署 Maven中Scope的分类 Springboot集成Shiro(前后端分离) Linux搭建frp服务(内网穿透) Redis高逼格指令 Docker私有仓库的搭建与使用 Dockerfile使用介绍 Redis的使用场景 Docker的网络模式
自建giscus服务
Ant丶 · 2024-04-11 · via CAYZLH

今天查看Stellar文档,发现Giscus可以自建服务,想着也好久没有水文章了,便顺便记录一下折腾过程。

创建一个GitHub App

前往这个页面创建一个Github App

注册一个新的 GitHub App

image-20240411162146774

填入回调函数地址

image-20240411162400664

  • 使用 https://[YOUR-DOMAIN-HERE]/api/oauth/authorized 这样的格式作为回调地址,将中括号里的内容替换成你的域名。

    例如: https://giscus.app/api/oauth/authorized

  • 将“Expire user authorization tokens”取消勾选。

编辑权限

Discussions开启读写权限:

image-20240411162855808

用户权限

选当前用户就行了:

image-20240411162935813

其他设置

  • Webhook,不需要使用取消勾选Active
  • Post installation,不需要使用

创建GitHub App

image

点击这个按钮

生成并下载Private keys

image-20240411163318459

生成并记录Client secrets

image-20240411163342018

记录app id 和 client id 备用

image-20240411163426135

安装APP

image-20240411163507793

配置 Supabase 以缓存访问令牌(可选)

GitHub 应用程序安装访问令牌的 TTL 为 60 分钟。您可以配置 giscus 将令牌缓存在 Supabase 表中。这减少了对 GitHub 的令牌请求数量,有助于防止应用程序达到速率限制。

  • 登录Supabase

  • 创建一个新项目。

  • 在项目中创建一个新表。表名可以是任意的,但giscus使用installation_access_tokens作为默认值。

  • 按以下字段创建一个表:

    installation_id: int8, no default value, primary key, uncheck Is Identity
    token: varchar, no default value
    expires_at: timestamptz, no default value
    created_at: timestamptz, default value NOW()
    updated_at: timestamptz, default value NOW()

    None of the columns are nullable (uncheck Is Nullable via the gear icon).
    Only installation_id is the primary key.

    image-20240411163929694

  • 记下您的 Supabase 项目的 URL (https://xxxxx.supabase.co) 和您的 API 密钥。

  • 确保:

    • 禁用表上的行级安全性 (RLS)
    • 使用秘密 service_role API 密钥。

在Vercel部署Giscus

fork giscus项目

首先将giscus项目fork到自己仓库。

image-20240411164133004

在vercel部署

登录vercel,选择刚forkgiscus仓库,直接使用默认的参数部署。

配置域名

将前面预设好的域名映射一下。

image-20240411165053003

添加配置

在Setting页面,增加相关配置参数。

image-20240411164448843

这些参数全部来自前面步骤记录下来的内容,字段参考如下:

NEXT_PUBLIC_GISCUS_APP_HOST=https://yourdomain.com
NEXT_PUBLIC_REVALIDATE_FIRST_PAGE=true
GITHUB_APP_ID=APP ID
GITHUB_CLIENT_ID=APP CLIENT ID
GITHUB_CLIENT_SECRET=GITHUB CLIENT SECRET
GITHUB_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nENTER-KEY-HERE-WITHOUT-LINE-BREAKS\n-----END RSA PRIVATE KEY-----" # vercel可以直接将复制下来的值拷贝进去
ENCRYPTION_PASSWORD= # 这个好像可以随便写
SUPABASE_KEY= # SUPABSE的KEY
SUPABASE_URL= # SUPABSE的项目URL
SUPABASE_INSTALLATION_ACCESS_TOKENS_TABLE=installation_access_tokens


ORIGINS=["https://yourdomain.com", "https://yourdomain.com", "https://www.yourdomain.com"]
ORIGINS_REGEX=["http://localhost:[0-9]+"]

在Stellar中应用

修改主题配置文件,将Giscus的src属性改成自己的域名就可以了。


comments:
service: giscus


giscus:
src: https://yourdomain.com/client.js

修改Giscus字体

stellar应用之后发现评论区字体与博客正文的字体不一样,所以需要进一步搞一搞。

创建@font-face样式

本博客使用ZFont字体。

cayzlh-zfont-style.css
@font-face {
font-family: “ZFont”;
src: url("https://cdn-cf.cayzlh.com/font/zfont/ZFonts.woff2") format("woff2");
}

创建字体使用样式

cayzlh-zfont.css
@import url("//giscus.cayzlh.com/themes/preferred_color_scheme.css");

@import url("//cdn-cf.cayzlh.com/css/cayzlh-zfont-style.css");

body {
font-family: “ZFont”;
}

以上俩文件都存储在我的GitHub仓库中:cayzlh/psychic-potato

将字体应用到Giscus中

修改Stellar主题配置文件:

comments:
service: giscus
giscus:
data-repo:
data-category:
data-theme: "https://cdn-cf.cayzlh.com/css/cayzlh-zfont.css"

请注意,您需要将 [在此输入仓库][在此输入分类名] 的占位符替换为您的存储库和分类的正确值。