cryptgeon/README.md

4.1 KiB
Raw Blame History

logo

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

About?

cryptgeon is a secure, open source sharing note or file service inspired by PrivNote

Demo

Check out the demo and see for yourself https://cryptgeon.nicco.io.

Features

  • server cannot decrypt contents due to client side encryption
  • view or time constraints
  • in memory, no persistence
  • obligatory dark mode support

How does it work?

each note has a 512bit generated id that is used to retrieve the note. data is stored in memory and never persisted to disk.

Screenshot

screenshot

Environment Variables

Variable Default Description
MEMCACHE memcached:11211 Memcached URL to connect to.
SIZE_LIMIT 1 KiB Max size for body. Accepted values according to byte-unit

Deployment

https is required otherwise browsers will not support the cryptographic functions.

Docker

Docker is the easiest way. There is the official image here.

# docker-compose.yml

version: '3.7'

services:
  memcached:
    image: memcached:1-alpine
    entrypoint: memcached -m 128M -I 4M # Limit to 128 MB Ram, 4M per entry, customize at free will.

  app:
    image: cupcakearmy/cryptgeon:latest
    depends_on:
      - memcached
    environment:
      SIZE_LIMIT: 4M
    ports:
      - 80:5000

NGINX Proxy

See the examples/nginx folder. There an example with a simple proxy, and one with https. You need to specify the server names and certificates.

Traefik 2

Assumptions:

  • External proxy docker network proxy
  • A certificate resolver le
  • A https entrypoint secure
  • Domain name example.org
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

Development

  1. Clone
  2. run pnpm i in the root and and client client/ folders.
  3. Run pnpm run dev to start development.

Running npm run dev in the root folder will start the following things

  • a memcache docker container
  • rust backend with hot reload
  • client with hot reload

You can see the app under localhost:1234.

Attributions

Icons made by freepik from www.flaticon.com