mirror of
https://github.com/cupcakearmy/cryptgeon.git
synced 2024-12-22 08:16:28 +00:00
6.2 KiB
6.2 KiB
关于本项目
加密鸽 是一个受 PrivNote项目启发的安全、开源共享密信和文件共享服务器
🌍 如果你想翻译此项目请随时与我联系.
感谢 Lokalise 提供免费的平台服务支持
演示示例
查看加密鸽的在线演示 demo: cryptgeon.org
功能
- 服务端无法解密和查看客户端加密的内容
- 查看次数或时间限制,阅后即焚
- 您发送的数据将存放于内存中,不会写入到磁盘中
- 黑暗模式支持
加密鸽是如何工作的?
加密鸽会为每条笔记都生成一个独立的 id (256bit)
和 key 256(bit)
。
其中id
用于保存和提取密信, 在这之后这封密信将会被客户端使用 AES 算法的 GCM 模式和key
进行加密然后发送至服务器,数据将会保存在服务器的内存中且永远不会被持久化到硬盘上,服务端永远不会得到密钥并且无法解读密信的内容。
屏幕截图
环境变量
变量名称 | 默认值 | 描述 |
---|---|---|
REDIS |
redis://redis/ |
Redis 连接 URL。 |
SIZE_LIMIT |
1 KiB |
最大请求体(body)限制。有关支持的数值请查看 字节单位 |
MAX_VIEWS |
100 |
密信最多查看次数限制 |
MAX_EXPIRATION |
360 |
密信最长过期时间限制(分钟) |
ALLOW_ADVANCED |
true |
是否允许自定义设置,该项如果设为false ,则不会显示自定义设置模块 |
THEME_IMAGE |
"" |
自定义 Logo 图片,你在这里填写的的图片链接必须是可以公开访问的。 |
THEME_TEXT |
"" |
自定义在 Logo 下方的文本。 |
部署
ℹ️ 加密鸽必须使用https
,否则浏览器可能将不会支援加密鸽的加密算法。
Docker
Docker 是最简单的部署方式。这里是官方镜像的地址。
附:译者的部署笔记
# docker-compose.yml
version: '3.8'
services:
redis:
image: redis:7-alpine
app:
image: cupcakearmy/cryptgeon:latest
depends_on:
- redis
environment:
SIZE_LIMIT: 4 MiB
ports:
- 80:8000
NGINX 反向代理
查看 examples/nginx 目录。那里有几个示例反代配置文件模板,其中一个是带 https 配置的反代配置模板,你需要指定服务器的名称和证书才能生效。
Traefik 2
假设:
- 外部 Docker 代理网络
proxy
- 证书解析器
le
- 一个 https 入站点
secure
- 域名
example.org
version: '3.8'
networks:
proxy:
external: true
services:
redis:
image: redis:7-alpine
restart: unless-stopped
app:
image: cupcakearmy/cryptgeon:latest
restart: unless-stopped
depends_on:
- redis
networks:
- default
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.cryptgeon.rule=Host(`example.org`)
- traefik.http.routers.cryptgeon.entrypoints=secure
- traefik.http.routers.cryptgeon.tls.certresolver=le
开发
环境要求
pnpm
:>=6
node
:>=14
rust
: edition2021
安装
pnpm install
pnpm --prefix frontend install
# 你还需要安装CargoWatch.
# https://lib.rs/crates/cargo-watch
cargo install cargo-watch
运行
确保你的 Docker 正在运行
pnpm run dev
在根目录执行 pnpm run dev
会开启下列服务:
- 一个 redis docker 容器
- 无热重载的 rust 后端
- 可热重载的客户端
你可以通过 3000 端口进入该应用,即 localhost:3000.
测试
这些测试是用 Playwright 实现的一些端到端测试用例。
pnpm run test:prepare
docker compose up redis -d
pnpm run test:server
# 在另一个终端中:
# 使用test或者test:local script。为了更快的开发,本地版本只会在一个浏览器中运行。
pnpm run test:local
Attributions
- 测试数据:
- 加载动画由 Nikhil Krishnan 提供
- 图标由来自 www.flaticon.com 的 freepik 提供