cryptgeon/README_zh-CN.md
Nicco cacb808117
restructuring (#56)
* restructuring

* pin svelte kit version & parallel execution

* update svelte kit

* correct test result assets

* add timeout

* correct locale path

* simplify crypto

* fix for #58

* add verbosity flag

* disable flaky test
2022-10-07 21:28:25 +02:00

6.3 KiB
Raw Blame History

logo

discord docker pulls Docker image size badge Latest version
Cryptgeon - Securely share self-destructing notes | Product Hunt

EN | 简体中文

关于本项目

加密鸽 是一个受 PrivNote项目启发的安全、开源共享密信和文件共享服务器

🌍 如果你想翻译此项目请随时与我联系.

感谢 Lokalise 提供免费的平台服务支持

演示示例

查看加密鸽的在线演示 demo cryptgeon.org

功能

  • 服务端无法解密和查看客户端加密的内容
  • 查看次数或时间限制,阅后即焚
  • 您发送的数据将存放于内存中,不会写入到磁盘中
  • 黑暗模式支持

加密鸽是如何工作的?

加密鸽会为每条笔记都生成一个独立的 id (256bit)key 256(bit)

其中id用于保存和提取密信, 在这之后这封密信将会被客户端使用 AES 算法的 GCM 模式和key进行加密然后发送至服务器,数据将会保存在服务器的内存中且永远不会被持久化到硬盘上,服务端永远不会得到密钥并且无法解读密信的内容。

屏幕截图

screenshot

环境变量

变量名称 默认值 描述
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:5000

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: edition 2021

安装

pnpm install
pnpm --prefix frontend install

# 你还需要安装CargoWatch.
# https://lib.rs/crates/cargo-watch
cargo install cargo-watch

运行

确保你的 Docker 正在运行

如果你用的是 macOS 的话你可能需要关闭 AirPlay 接收功能因为该功能需要占用 5000 端口...) https://developer.apple.com/forums/thread/682332

pnpm run dev

在根目录执行 pnpm run dev 会开启下列服务:

  • 一个 redis docker 容器
  • 无热重载的 rust 后端
  • 可热重载的客户端

你可以通过 1234 端口进入该应用,即 localhost:1234.

测试

这些测试是用 Playwright 实现的一些端到端测试用例。

pnpm run test:prepare
docker compose up redis -d
pnpm run test:server

# 在另一个终端中:
# 使用test或者test:local script。为了更快的开发本地版本只会在一个浏览器中运行。
pnpm run test:local
Attributions