2021-12-20 18:14:59 +01:00
2021-11-11 13:37:21 +01:00
2021-05-02 03:08:43 +02:00
2021-12-20 18:14:59 +01:00
2021-05-07 12:14:07 +02:00
2021-12-16 13:54:15 +01:00
2021-12-20 17:54:09 +01:00
bug
2021-05-08 10:16:05 +02:00
2021-05-02 16:24:31 +02:00
2021-05-02 15:44:42 +02:00
2021-12-20 17:42:30 +01:00
2021-12-20 17:42:30 +01:00
2021-12-20 17:54:17 +01:00
2021-05-10 10:04:19 +02:00
2021-05-10 09:58:21 +02:00
2021-11-11 13:37:21 +01:00
2021-05-02 12:13:13 +02:00
2021-12-20 18:14:59 +01:00
2021-12-20 18:14:59 +01:00
2021-12-20 18:14:59 +01:00
2021-12-20 18:14:59 +01:00

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 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 and 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 128 # Limit to 128 MB Ram, customize at free will.

  app:
    image: cupcakearmy/cryptgeon:latest
    depends_on:
      - memcached
    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 128 # Limit to 128 MB Ram, 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

Description
cryptgeon is a secure, open source note / file sharing service inspired by PrivNote written in rust & svelte.
Readme MIT 21 MiB
Languages
Svelte 44.5%
TypeScript 30.6%
Rust 14.8%
JavaScript 7%
CSS 2.2%
Other 0.9%