配置文件说明
样例 config.example.yaml 下载
程序运行需要 config.yaml config.run.json 作为配置文件
config.yaml
https://gitee.com/kkbt/obcsapi-go/blob/master/server/config.example.yaml
name: obcsapi-go # 项目名称
version: v4.2.9 # 项目版本
description: by kkbt # 描述
host: 0.0.0.0
port: 8900
# server_cert_path: cert/server.pem
# server_key_path: cert/server-key.pem
# 后端地址
backend_url: localhost:8900
# 如果部署在二级目录,需求填写这个,否则 Swagger 错误,不使用无需关注
# backend_base_path: /obcsapi
# http(s):// + backend_url + backend_base_path
backend_url_full: http://localhost:8900
# 前端网站
web_url_full: https://kkbt.gitee.io/web/
# 前端登录账户密码 有效时间 720h
user: kkbt
password: password
kvdb: mykv.db
# Swagger 调试
swagger: true
# debug 模式
debug: false
# S3 -> 1 ; CouchDb -> 2 ; Local -> 3 ; WebDav -> 4
data_source: 3
# CouchDb 配置
couchdb_url: http://admin:password@localhost:5984/
couchdb_db_name: note
# S3 配置
access_key: xxxxxxxxxxxxxx
secret_key: xxxxxxxxxxxxxx
end_point: https://cos.ap-beijing.myqcloud.com
region: ap-beijing
bucket: obsidion-xxxxxxxxxxxxxx
s3_wiki_link_use_presign: true
# WeDav 配置
web_dav_url: https://dav.jianguoyun.com/dav/
web_dav_dir: note/
web_dav_username: xxxxxxx@qq.com
web_dav_password: xxxxxxxxxxxxxxxx
# 如果部署在二级目录,需求填写这个,否则 Swagger 错误,不使用无需关注
# base_path: /obcsapi
# wechat 测试号/公众号
wechat_token: xxxxxxxxxxxxxx # 微信公众平台的Token
wechat_appid: xxxxxxxxxxxxxx # 微信公众平台的AppID
wechat_secret: xxxxxxxxxxxxxx # 微信公众平台的AppSecret
wechat_openid: xxxxxxxxxxxxxx # OpenID 关注测试号后获取的
wechat_template_id: xxxxxxxxxxxxxx # 微信模板消息 ID 需要有 {{content.DATA}}
# work wechat 企业微信自建应用
work_wechat_receiverid: xxxxxxxxxxxxxx # 企业ID
work_wechat_corpid: xxxxxxxxxxxxxx #企业ID
work_wechat_agentid: 1000001 # 自建应用 AgentId
work_wechat_corpsecret: xxxxxxxxxxxxxx # 自建应用 Secret
work_wechat_token: xxxxxxxxxxxxxx # 自建应用 API接收消息 Token
work_wechat_encoding_aeskey: xxxxxxxxxxxxxx # 自建应用 API接收消息 EncodingAESKey
work_wechat_user_id: xxxxxxxxxxxxxx # 用户 ID
work_wechat_reminder: true # 是否开启提醒
# 任务提醒
cron: "1/60 * * * * ?" # 每分钟检查一次
# 安全权限设置
# 锁定配置文件 (config.yaml config.run.json ),不允许运行时更新修改
lock_config: false
# 允许 general all 接口修改全文件,并对外提供服务
allow_general_all_post: true
# 允许 general all 接口获取全文件,并对外提供服务
allow_general_all_get: false
# 允许 ![[]] 替换获取全文件,并对前端登录用户提供服务
allow_wiki_link_all: true
### Token Settings 自定义路径使用的 Token ,不知道路径可打开 debug
/ob/general: token/token2.json
# 实验特性: 前端编辑器
experimental_features: true
# OAuth 2.0
# Gitee 头像-设置-数据管理-第三方应用-创建应用 具体配置见文档
oauth2_gitee_ClientID: xxxxxxx
oauth2_gitee_ClientSecret: xxxxxxx
运行后端程序后 Swagger: http://localhost:8900/swagger/index.html
文档提供了一个在线的 API 文档 - Scalar API references,可以简单查看下都有什么 API ,以及不同程序语言的请求代码。具体请求头的验证,需要的参数,见 后端程序的 Swagger 或源代码,或http 测试文件。
Token Settings 基本可以自定义所有需要身份验证的接口验证方法和内容,如示例 token/token2.json
{
"token": "U8WLSOmTsiJ9i9BHyAi4624PVVe95mBi",
"generate_time": "2023-05-29 22:16:54",
"live_time": "30s",
"verify_mode": "Headers-Token"
}
verify_mode 有以下几种选择,
- Headers-Authorization
- Headers-Token
- Query-token
1 和 2 都是从 http 头中获取,3 为 Query 获取 (即 /xxx/?token=xxxx)
如果未配置路径,默认使用 token/token2 。默认从 Token 中获取。
接口中实际上有些例外存在,如静读天下接口,实际做了特殊适配。保证验证成功。此外/ob/general/
接口也有一些特性 , 如果想使 token3 ,配置应为
{
"token": "xxxx",
"generate_time": "2023-05-29 22:16:54",
"live_time": "876000h",
"verify_mode": "Headers-Token"
}
/ob/general/xxxx: token/token3.json
而由于根据默认配置 . U8WLSOmTsiJ9i9BHyAi4624PVVe95mBi 也是被允许的,即 /ob/general/U8WLSOmTsiJ9i9BHyAi4624PVVe95mBi
也是可以请求成功的。因为这个路径不在配置范围内,所以使用了默认配置 token/token2.json。 如果想禁用他,可以单独配置。如
/ob/general/U8WLSOmTsiJ9i9BHyAi4624PVVe95mBi: token/token3.json
如果想在不重启服务的情况下更新 config.yaml ,可以在前端 设置-Server Setting 使用 更新 config.yaml
按钮。
config.run.json
任务提醒 reminder_dictionary 可选择五个中文分词词典,即 static/ 目录下的几个文件。相应使用内存大概如下。可以调用 ChineseSegmenterTest
查看相应效果。测试代码
# full 580k lines mem 200-300Mb
# 200k lines mem 120Mb
# 100k lines mem 70Mb
# 20k lines mem 30Mb
# 10k lines mem 27Mb
# None mem < 20Mb
使用证书
使用证书,启用 https 。一般可以在 Nginx 处反向代理,加载证书。也可以使用自签名证书。由于 PWA 必须使用 HTTPS , 而在 Chrome 浏览器内,https 协议的网站内默认禁止请求 http 协议。所以服务器最后有证书。
配置文件,注意为容器内目录。
server_cert_path: /app/data/cert/server.pem
server_key_path: /app/data/cert/server-key.pem
生成并使用自签名证书,使用 golang-cfssl 生成 ,或者网上随便找一个在线生成工具即可生成。注意:这样做网站会爆红,一些命令行工具会提醒 SSL 错误,可以添加证书到信任凭证,或者 CA 中,也可以忽略。
sudo apt install golang-cfssl
mkdir cert && cd cert
# 生成 CA
cfssl print-defaults config > ca-config.json
cfssl print-defaults csr > ca-csr.json
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
# 生成服务端证书 server.csr,server.pem , server-key.pem
cfssl gencert -config ca-config.json -ca ca.pem -ca-key ca-key.pem -profile www ca-csr.json | cfssljson -bare server
OAuth2.0
Gitee 头像-设置-数据管理-第三方应用-创建应用
Client ID 和 Client Secret 值填入配置,应用主页填写后端地址,应用回调地址填后端 /auth/oauth2-callback
路径。
应用主页 : http://localhost:8900
应用回调地址: http://localhost:8900/auth/oauth2-callback
权限只给 user_info 即可