Skip to content

Latest commit

 

History

History
200 lines (138 loc) · 9.32 KB

README_ES.md

File metadata and controls

200 lines (138 loc) · 9.32 KB

logo

discord docker pulls Docker image size badge Latest version



Cryptgeon - Securely share self-destructing notes | Product Hunt

EN | 简体中文 | ES

Acerca de

cryptgeon es un servicio seguro y de código abierto para compartir notas o archivos inspirado en PrivNote. 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 por darnos acceso gratis a su plataforma.

Demo

Web

Prueba la demo y experimenta por ti mismo cryptgeon.org

CLI

npx cryptgeon send text "Esto es una nota secreta"

Puedes revisar la documentación sobre el CLI en este readme.

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

Variables de entorno

Variable Default Descripción
REDIS redis://redis/ Redis URL a la que conectarse. Según el formato
SIZE_LIMIT 1 KiB Tamaño máximo. Valores aceptados según la unidad byte.
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: 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.

# 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. 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.

Scratch

Ver la carpeta de ejemplo/scratch. Ahí encontrarás una guía de cómo configurar el servidor e instalar cryptgeon desde cero.

Synology

Hay una guía (en inglés) que puedes seguir.

Guías en Youtube

Desarrollo

Requisitos

  • pnpm: >=6
  • node: >=18
  • rust: edition 2021

Instalación

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.

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.

Existe una colección de Postman con algunas peticiones de ejemplo disponible en el repo

Tests

Los tests son end-to-end tests escritos con Playwright.

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í.


Atribuciones