Hemmelig.app
Hemmelig.app copied to clipboard
Keep your sensitive information out of chat logs, emails, and more with encrypted secrets.
Free encrypted secret sharing for everyone!
SaaS
Hemmelig is available at https://hemmelig.app

How it works
You enter https://hemmelig.app, write your sensitive information, expire time, optional password, and click create a secret link. You share the secret link. The receiver of the link opens it, writes the optional password, and retrieves the sensitive information.
When a secret link is created, it gets its unique encryption key that is not saved to the database and only will be part of the URL. This means NO ONE can decrypt your secret without the encrypt(SECRET_MASTER_KEY + YOUR_UNIQUE_ENCRYPTION_KEY), and access to the Redis instance.
Features
- Encrypted sensitive information sharing.
- Encrypted attachment for signed in users.
- Optional title
- Secret lifetime
- Set max views per secret
- Optional password protection.
- Optional IP address restriction.
- Optional
- Encrypted key is part of the URL, and not saved to the database for an extra layer of security.
- It will detect if the secret is base64 encoded, and add a button to convert it to plain text on read.
- Self-hosted version. Keywords: Regulatory compliance.
- ~~Available as PWA, which means you can download it as an app for your device.~~
Docker image
- hemmeligapp/hemmelig:bleeding-edge (pushed on every commit to main)
- hemmeligapp/hemmelig:weekly (pushed every week on Friday)
- hemmeligapp/hemmelig:v3.4.0 (see the github tags)
- hemmeligapp/hemmelig:latest (pushed on releases)
Self-hosting
If you have to follow some sort of compliance, and have to self-host, https://hemmelig.app is available as a docker image. The following is the bare minimum to run the docker image.
# To use this image you need a redis database enabled.
# Example:
#
# $ docker run -p 6379:6379 --name some-redis -d redis
#
docker run -p 3000:3000 -d --name=hemmelig \
-e SECRET_MASTER_KEY=11111222223333344444555556666677 \ # has to be a secret key of 32 characters
-e SECRET_REDIS_HOST=127.0.0.1 \
-v /var/tmp/hemmelig:/var/tmp/hemmelig/upload/files # this is how you mount a local directory if you choose to use disk upload, and not do/s3
hemmeligapp/hemmelig:latest
Have a look at the Dockerfile for a full example of how to run this application.
Environment variables
SECRET_LOCAL_HOSTNAMEDefault: 0.0.0.0. - The local hostname for the fastify instanceSECRET_PORTDefault: 3000. - The port number for the fastify instanceSECRET_HOSTDefault: "". - Used for i.e. set cors to your domain nameSECRET_MASTER_KEYDefault: 11111222223333344444555556666677 - Override this with your SECRET master key for encryption of your secretsSECRET_REDIS_HOSTDefault: 0.0.0.0 - Override this for your redis host adressSECRET_REDIS_PORTDefault: 6379 - The redis port numberSECRET_REDIS_TLSDefault: false - If the redis instance is using tlsSECRET_REDIS_USERDefault: "" - You redis user nameSECRET_REDIS_PASSWORDDefault: "" - Your redis passwordSECRET_JWT_SECRETDefault: good_luck_have_fun - Override this for the secret signin JWT tokens for log inSECRET_FILE_SIZEDefault: 4 - Set the allowed upload file size in mb.SECRET_FILE_LIMITDefault: 3 - Set the amount of files allowed to be uploadedSECRET_ENABLE_FILE_UPLOADDefault: true - Enable or disable file uploadSECRET_DO_SPACES_ENDPOINTDefault: "" - The Spaces/s3 endpointSECRET_DO_SPACES_KEYDefault: "" - The Spaces/s3 keySECRET_DO_SPACES_SECRETDefault: "" - The Spaces/s3 secretSECRET_DO_SPACES_BUCKETDefault: "" - The Spaces/s3 bucket nameSECRET_DO_SPACES_FOLDERDefault: "" - The Spaces/s3 folder for uploadingSECRET_MAX_TEXT_SIZEDefault: "256" - The max text size for the secret. Is set in kb. i.e. 256 for 256kb.
Run locally
$ npm install
# Start the frontend
$ npm run client-dev
# http://0.0.0.0:8080
# Start the backend
$ npm run server-dev
# http://0.0.0.0:3000
Contribution
Feel free to contribute to this repository. Have a look at CONTRIBUTION.md for guidelines.