PerKeep服务器配置详解:从基础到高级
概述
PerKeep是一个分布式存储系统,其服务器配置是系统运行的核心。本文将全面解析PerKeep服务器的配置方式,包括简单模式和低层模式,帮助用户根据需求灵活配置服务器。
配置文件基础
PerKeep服务器配置文件默认位于$HOME/.config/perkeep/server-config.json
,采用JSON格式。配置文件支持两种模式:
- 简单模式:适合基础配置需求
- 低层模式:提供更细粒度的控制能力
简单模式配置详解
核心配置项
-
认证机制(auth):
none
:无认证localhost
:仅接受本地连接userpass:用户名:密码
:HTTP基本认证tailscale:ARG
:通过Tailscale网络认证
-
网络配置:
baseURL
:服务器基础URL(用于反向代理场景)listen
:监听地址和端口https
:HTTPS相关配置,包括证书路径和自动获取Let's Encrypt证书
-
身份认证:
identity
:GPG指纹identitySecretRing
:GnuPG密钥环文件路径
存储配置
PerKeep支持多种存储后端:
-
内存存储:
"memoryStorage": true
仅用于开发和调试
-
本地磁盘存储:
"blobPath": "/path/to/storage"
-
云存储:
- S3:
"s3": "credentialKey:secureKey:bucketName[/path][:hostname]"
- Backblaze B2:
"b2": "credentialKey:secureKey:bucketName[/path]:hostname"
- Google Cloud Storage:
"googlecloudstorage": "clientId:clientSecret:refreshToken:bucketName[/path]"
- S3:
-
存储优化选项:
packRelated
:自动重新打包以提高读取速度packBlobs
:使用diskpacked存储提高写入吞吐量
索引配置
-
索引后端:
- SQLite:
"sqlite": "/path/to/db"
- LevelDB:
"levelDB": "/path/to/db"
- MongoDB:
"mongo": "user:password@host"
- MySQL:
"mysql": "user@host:password"
- PostgreSQL:
"postgres": "user@host:password"
- 内存索引:
"memoryIndex": true
- SQLite:
-
数据库选项:
dbname
:数据库名称dbUnique
:区分多个PerKeep实例的唯一标识
发布配置
PerKeep支持通过模板发布内容:
"publish": {
"/pics/": {
"camliRoot": "mypics",
"cacheRoot": "/path/to/cache",
"goTemplate": "gallery.html"
}
}
导入器
PerKeep内置多种数据导入器,包括:
- RSS/Atom/RDF订阅
- Flickr
- Foursquare
- Picasa
- Pinboard
- Instapaper
通过访问/importer/
路径进行配置。
Windows特殊配置
在Windows环境下,建议使用MySQL而非SQLite作为索引后端:
- 安装MariaDB或MySQL
- 修改配置文件:
{ "dbname": "camliprod", "mysql": "user@localhost:password" }
- 使用
pk dbinit
命令初始化数据库
低层模式配置
当简单模式无法满足需求时,可以使用低层模式配置。建议通过以下步骤获取低层配置:
- 先用简单模式运行PerKeep
- 访问
/debug/config
获取当前配置的低层表示 - 基于此进行修改
高级功能示例:复制到其他实例
"/bsrepl/": {
"handler": "storage-replica",
"handlerArgs": {
"backends": [
"/bs/",
"/r1/"
]
}
}
其中/r1/
可以配置为远程存储:
"/r1/": {
"handler": "storage-remote",
"handlerArgs": {
"url": "https://remote.example.com:3179",
"auth": "userpass:foo:bar"
}
}
最佳实践
- 生产环境务必启用HTTPS
- 根据数据量选择合适的存储后端
- 定期备份索引数据库
- 在反向代理场景下正确配置
baseURL
- 测试环境可以使用内存存储,但生产环境应使用持久化存储
通过本文的详细解析,您应该能够根据实际需求灵活配置PerKeep服务器,无论是简单的个人使用场景还是复杂的企业级部署。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考