logo

discord docker pulls Docker image size badge Latest version

Cryptgeon - Securely share self-destructing notes | Product Hunt

[EN](README.md) | [简体中文](README_zh-CN.md) | ES ## Acerca de _cryptgeon_ es un servicio seguro y de código abierto para compartir notas o archivos inspirado en [_PrivNote_](https://privnote.com). Incluye un servidor, una página web y una interfaz de línea de comandos (CLI, por sus siglas en inglés). > 🌍 Si quieres traducir este proyecto no dudes en ponerte en contacto conmigo. > > Gracias a [Lokalise](https://lokalise.com/) por darnos acceso gratis a su plataforma. ## Demo ### Web Prueba la demo y experimenta por ti mismo [cryptgeon.org](https://cryptgeon.org) ### CLI ``` npx cryptgeon send text "Esto es una nota secreta" ``` Puedes revisar la documentación sobre el CLI en este [readme](./packages/cli/README.md). ## Características - enviar texto o archivos - el servidor no puede desencriptar el contenido debido a que la encriptación se hace del lado del cliente - restriccion de vistas o de tiempo - en memoria, sin persistencia - compatibilidad obligatoria con el modo oscuro ## ¿Cómo funciona? Se genera una id (256bit) y una llave 256(bit) para cada nota. La id se usa para guardar y recuperar la nota. Después la nota es encriptada con la llave y con aes en modo gcm del lado del cliente y por último se envía al servidor. La información es almacenada en memoria y nunca persiste en el disco. El servidor nunca ve la llave de encriptación por lo que no puede desencriptar el contenido de las notas aunque lo intentara. ## Capturas de pantalla ![screenshot](./design/Screens.png) ## Variables de entorno | Variable | Default | Descripción | | ------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS` | `redis://redis/` | Redis URL a la que conectarse. [Según el formato](https://docs.rs/redis/latest/redis/#connection-parameters) | | `SIZE_LIMIT` | `1 KiB` | Tamaño máximo. Valores aceptados según la [unidad byte](https://docs.rs/byte-unit/).
`512 MiB` es el máximo permitido.
El frontend mostrará ese número, incluyendo el ~35% de sobrecarga de codificación. | | `MAX_VIEWS` | `100` | Número máximo de vistas. | | `MAX_EXPIRATION` | `360` | Tiempo máximo de expiración en minutos. | | `ALLOW_ADVANCED` | `true` | Permitir configuración personalizada. Si se establece en `false` todas las notas serán de una sola vista. | | `ID_LENGTH` | `32` | Establece el tamaño en bytes de la `id` de la nota. Por defecto es de `32` bytes. Esto es util para reducir el tamaño del link. _Esta configuración no afecta el nivel de encriptación_. | | `VERBOSITY` | `warn` | Nivel de verbosidad del backend. [Posibles valores](https://docs.rs/env_logger/latest/env_logger/#enabling-logging): `error`, `warn`, `info`, `debug`, `trace` | | `THEME_IMAGE` | `""` | Imagen personalizada para reemplazar el logo. Debe ser accesible públicamente. | | `THEME_TEXT` | `""` | Texto personalizado para reemplazar la descripción bajo el logo. | | `THEME_PAGE_TITLE` | `""` | Texto personalizado para el título | | `THEME_FAVICON` | `""` | Url personalizada para el favicon. Debe ser accesible públicamente. | ## Despliegue > ℹ️ Se requiere `https` de lo contrario el navegador no soportará las funciones de encriptacón. > ℹ️ Hay un endpoint para verificar el estado, lo encontramos en `/api/health/`. Regresa un código 200 o 503. ### Docker Docker es la manera más fácil. Aquí encontramos [la imágen oficial](https://hub.docker.com/r/cupcakearmy/cryptgeon). ```yaml # docker-compose.yml version: '3.8' services: redis: image: redis:7-alpine # Set a size limit. See link below on how to customise. # https://redis.io/docs/manual/eviction/ # command: redis-server --maxmemory 1gb --maxmemory-policy allkeys-lru app: image: cupcakearmy/cryptgeon:latest depends_on: - redis environment: # Size limit for a single note. SIZE_LIMIT: 4 MiB ports: - 80:8000 # Optional health checks # healthcheck: # test: ["CMD", "curl", "--fail", "http://127.0.0.1:8000/api/live/"] # interval: 1m # timeout: 3s # retries: 2 # start_period: 5s ``` ### NGINX Proxy Ver la carpeta de [ejemplo/nginx](https://github.com/cupcakearmy/cryptgeon/tree/main/examples/nginx). Hay un ejemplo con un proxy simple y otro con https. Es necesario que especifiques el nombre del servidor y los certificados. ### Traefik 2 Ver la carpeta de [ejemplo/traefik](https://github.com/cupcakearmy/cryptgeon/tree/main/examples/traefik). ### Scratch Ver la carpeta de [ejemplo/scratch](https://github.com/cupcakearmy/cryptgeon/tree/main/examples/scratch). Ahí encontrarás una guía de cómo configurar el servidor e instalar cryptgeon desde cero. ### Synology Hay una [guía](https://mariushosting.com/how-to-install-cryptgeon-on-your-synology-nas/) (en inglés) que puedes seguir. ### Guías en Youtube - En inglés, por [Webnestify](https://www.youtube.com/watch?v=XAyD42I7wyI) - En inglés, por [DB Tech](https://www.youtube.com/watch?v=S0jx7wpOfNM) [Previous Video](https://www.youtube.com/watch?v=JhpIatD06vE) - En alemán, por [ApfelCast](https://www.youtube.com/watch?v=84ZMbE9AkHg) ## Desarrollo **Requisitos** - `pnpm`: `>=6` - `node`: `>=18` - `rust`: edition `2021` **Instalación** ```bash pnpm install # También necesitas cargo-watch, si no lo tienes instalado. # https://lib.rs/crates/cargo-watch cargo install cargo-watch ``` **Ejecutar** Asegurate de que docker se esté ejecutando. ```bash pnpm run dev ``` Ejecutando `pnpm run dev` en la carpeta raíz iniciará lo siguiente: - redis docker container - rust backend - client - cli Puedes ver la app en [localhost:1234](http://localhost:1234). > Existe una colección de Postman con algunas peticiones de ejemplo [disponible en el repo](./Cryptgeon.postman_collection.json) ### Tests Los tests son end-to-end tests escritos con Playwright. ```sh pnpm run test:prepare # Usa el script test o test:local. La versión local solo corre en el navegador para acelerar el desarrollo. pnpm run test:local ``` ## Seguridad Por favor dirigite a la sección de seguridad [aquí](./SECURITY.md). --- _Atribuciones_ - Datos del Test: - Texto para los tests [Nietzsche Ipsum](https://nietzsche-ipsum.com/) - [AES Paper](https://www.cs.miami.edu/home/burt/learning/Csc688.012/rijndael/rijndael_doc_V2.pdf) - [Unsplash Imágenes](https://unsplash.com/) - Animación de carga por [Nikhil Krishnan](https://codepen.io/nikhil8krishnan/pen/rVoXJa) - Iconos hechos por
freepik de www.flaticon.com