mirror of
https://github.com/cupcakearmy/cryptgeon.git
synced 2024-12-22 08:16:28 +00:00
cryptgeon is a secure, open source note / file sharing service inspired by PrivNote written in rust & svelte.
.github | ||
.vscode | ||
client | ||
design | ||
examples/nginx | ||
src | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
cypress.json | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
package.json | ||
pnpm-lock.yaml | ||
proxy.mjs | ||
README.md |
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
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
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
- Clone
- run
pnpm i
in the root and and clientclient/
folders. - 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