diff --git a/README.md b/README.md index 4912ed6..0f1604a 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@
+EN | [简体中文](README_zh-CN.md) + ## About? _cryptgeon_ is a secure, open source sharing note or file service inspired by [_PrivNote_](https://privnote.com) diff --git a/README_zh-CN.md b/README_zh-CN.md new file mode 100644 index 0000000..d03f966 --- /dev/null +++ b/README_zh-CN.md @@ -0,0 +1,169 @@ +

+ logo +

+ +
+ discord + docker pulls + Docker image size badge + Latest version + + +
+Cryptgeon - Securely share self-destructing notes | Product Hunt + +
+ +[EN](README.md) | 简体中文 + +## 关于本项目 + +_加密鸽_ 是一个受 [_PrivNote_](https://privnote.com)项目启发的安全、开源共享密信和文件共享服务器 + +> 🌍 如果你想翻译此项目请随时与我联系. +> +> 感谢 [Lokalise](https://lokalise.com/) 提供免费的平台服务支持 + +## 演示示例 + +查看加密鸽的在线演示demo: https://cryptgeon.nicco.io. + +## 功能 + +- 服务端无法解密和查看客户端加密的内容 +- 查看次数或时间限制,阅后即焚 +- 您发送的数据将存放于内存中,不会写入到磁盘中 +- 黑暗模式支持 + +## 加密鸽是如何工作的? + +加密鸽会为每条笔记都生成一个独立的 id (256bit)key 256(bit)。 + +其中id用于保存和提取密信, 在这之后这封密信将会被客户端使用AES算法的GCM模式和`key`进行加密然后发送至服务器,数据将会保存在服务器的内存中且永远不会被持久化到硬盘上,服务端永远不会得到密钥并且无法解读密信的内容。 + +## 屏幕截图 + +![screenshot](./design/Screens.png) + +## 环境变量 + +| 变量名称 | 默认值 | 描述 | +| ------------------ | ----------------- | ------------------------------------------------------------ | +| `MEMCACHE` | `memcached:11211` | Memcached 连接 URL | +| `SIZE_LIMIT` | `1 KiB` | 最大请求体(body)限制。有关支持的数值请查看 [字节单位](https://docs.rs/byte-unit/) | +| `MAX_VIEWS` | `100` | 密信最多查看次数限制 | +| ` MAX_EXPIRATION` | `360` | 密信最长过期时间限制(分钟) | +| `ALLOW_ADVANCED` | `true` | 是否允许自定义设置,该项如果设为`false`,则不会显示自定义设置模块 | + +## 部署 + +ℹ️ 加密鸽必须使用`https`,否则浏览器可能将不会支援加密鸽的加密算法。 + +### Docker + +Docker是最简单的部署方式。这里是[官方镜像的地址](https://hub.docker.com/r/cupcakearmy/cryptgeon)。 + +附:译者的[部署笔记](https://www.hash070.top/archives/cryptgeon-docker-deploy.html) + +```yaml +# docker-compose.yml +version: '3.7' + +services: + memcached: + image: memcached:1-alpine + entrypoint: memcached -m 128M -I 4M # 限制到最大 128 MB 内存占用,每个密信最大 4Mb 占用, 请根据自己的服务器内存的实际情况设置。 + + app: + image: cupcakearmy/cryptgeon:latest + depends_on: + - memcached + environment: + SIZE_LIMIT: 4M + ports: + - 80:5000 +``` + +### NGINX 反向代理 + +查看 [examples/nginx](https://github.com/cupcakearmy/cryptgeon/tree/main/examples/nginx) 目录。那里有几个示例反代配置文件模板,其中一个是带https配置的反代配置模板,你需要指定服务器的名称和证书才能生效。 + +### Traefik 2 + +假设: + +- 外部Docker代理网络 `proxy` +- 证书解析器 `le` +- 一个https入站点 `secure` +- 域名 `example.org` + +```yaml +version: '3.8' + +networks: + proxy: + external: true + +services: + memcached: + image: memcached:1-alpine + restart: unless-stopped + entrypoint: memcached -m 128M -I 4M # Limit to 128 MB Ram, 4M per entry, customize at free will. + + app: + image: cupcakearmy/cryptgeon:latest + restart: unless-stopped + depends_on: + - memcached + 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` + +**安装** + +```bash +pnpm install +pnpm --prefix frontend install + +# Also you need cargo watch if you don't already have it installed. +# https://lib.rs/crates/cargo-watch +cargo install cargo-watch +``` + +**运行** + +确保你的Docker正在运行 + +> If you are on `macOS` you might need to disable AirPlay Receiver as it uses port 5000 (So stupid...) +> https://developer.apple.com/forums/thread/682332 + +```bash +pnpm run dev +``` + +在根目录执行 `pnpm run dev` 会开启下列服务: + +- 一个 memcache docker 容器 +- 无热重载的 rust 后端 +- 可热重载的客户端 + +你可以通过1234端口进入该应用,即 [localhost:1234](http://localhost:1234). + +###### Attributions + +本项目所使用的图标由
www.flaticon.com的freepik制作 + diff --git a/design/Github_zh-CN.png b/design/Github_zh-CN.png new file mode 100644 index 0000000..20c121c Binary files /dev/null and b/design/Github_zh-CN.png differ