All Projects → Scribblerockerz → cryptletter

Scribblerockerz / cryptletter

Licence: MIT License
Self-hosted micro-service for encrypted self-destructing messages

Programming Languages

go
31211 projects - #10 most used programming language
Vue
7211 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
shell
77523 projects
HTML
75241 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to cryptletter

Quickperf
QuickPerf is a testing library for Java to quickly evaluate and improve some performance-related properties
Stars: ✭ 231 (+1000%)
Mutual labels:  microservice
Microservices Demo
Deployment scripts & config for Sock Shop
Stars: ✭ 2,939 (+13895.24%)
Mutual labels:  microservice
Preference-Rhythm
Android library makes using Shared Preference easier.
Stars: ✭ 16 (-23.81%)
Mutual labels:  encrypted-data
Docsbox
Self-hosted document converting service with HTTP API
Stars: ✭ 235 (+1019.05%)
Mutual labels:  microservice
Clean Architecture Manga
🌀 Clean Architecture with .NET6, C#10 and React+Redux. Use cases as central organizing structure, completely testable, decoupled from frameworks
Stars: ✭ 3,104 (+14680.95%)
Mutual labels:  microservice
Krakend Ce
KrakenD Community Edition. Make your binary of KrakenD API Gateway
Stars: ✭ 245 (+1066.67%)
Mutual labels:  microservice
Cashier Btc
💰 Self-hosted Bitcoin payment gateway (฿)
Stars: ✭ 223 (+961.9%)
Mutual labels:  microservice
granitic
Web/micro-services and IoC framework for Golang developers
Stars: ✭ 32 (+52.38%)
Mutual labels:  microservice
Istio By Example Java
A collection of examples of using Istio with Java applications.
Stars: ✭ 242 (+1052.38%)
Mutual labels:  microservice
cryptorious
CLI Password Manager
Stars: ✭ 15 (-28.57%)
Mutual labels:  encrypted-data
Loc Framework
本项目是完全基于Spring Boot2和Springcloud Finchley所进行了开发的,目的是简化和统一公司内部使用微服务框架的使用方法
Stars: ✭ 238 (+1033.33%)
Mutual labels:  microservice
Jina
Cloud-native neural search framework for 𝙖𝙣𝙮 kind of data
Stars: ✭ 12,618 (+59985.71%)
Mutual labels:  microservice
Go Grpc Http Rest Microservice Tutorial
Source code for tutorial "How to develop Go gRPC microservice with HTTP/REST endpoint, middleware, Kubernetes deployment, etc."
Stars: ✭ 250 (+1090.48%)
Mutual labels:  microservice
Spring Cloud Rest Tcc
以Spring Cloud Netflix作为服务治理基础, 展示基于tcc思想所实现的分布式事务解决方案
Stars: ✭ 2,562 (+12100%)
Mutual labels:  microservice
rainstash
Resilio Sync hosted securely on Amazon Web Services
Stars: ✭ 27 (+28.57%)
Mutual labels:  encrypted-data
Notadd
A microservice development architecture based on nest.js. —— 基于 Nest.js 的微服务开发架构。
Stars: ✭ 2,556 (+12071.43%)
Mutual labels:  microservice
Insight
Repository for Project Insight: NLP as a Service
Stars: ✭ 246 (+1071.43%)
Mutual labels:  microservice
cdk-microservices-labs
Hugo Style Documents
Stars: ✭ 12 (-42.86%)
Mutual labels:  microservice
Fuzzy-keyword-search-over-encrypted-data-in-cloud-computing
Fuzzy keyword search over encrypted data in cloud computing | PHP project
Stars: ✭ 19 (-9.52%)
Mutual labels:  encrypted-data
pg themis
Postgres Themis plugin
Stars: ✭ 29 (+38.1%)
Mutual labels:  encrypted-data


Introduction

Sending plaintext passwords unencrypted through the internet highway isn't just risky, it's ridiculous. This project aims to make this process a bit more secure.

Usually an email inbox of a regular user contains more plaintext passwords than emails from rich african princes.

Retain control over the data which is send out, and prevent living-security-issues laying around in the users inbox.

Demo

Screen capture of the application

Features

  • Self-hosted
    Grab it. Use it.

  • Client side AES-256 encryption
    Messages are encrypted on the client side with the amazing crypto-js library.

    The key is appended as a hash, so it never hits the server. (In case of a hack on the micro-service, only encrypted garbage is captured.)

  • Messages with a TTL
    Decide how long this message can survive after the client opens it.

  • Restricted message access
    Messages are restricted to the client's IP address at the first opening. Messages posted through facebook or other link checking tools prevent opening of the message.


Quick usage

Create a docker-compose.yml with the following contents and run docker-compose up.

# docker-compose.yml
version: '3'

services:
    redis:
        image: 'redis:alpine'
        ports:
            - '6379:6379'
    app:
        image: 'scribblerockerz/cryptletter:latest'
        ports:
            - '8080:8080'
        links:
            - redis
        environment:
            - 'REDIS__ADDRESS=redis:6379'
            - 'APP__LOG_LEVEL=4'

Requirements

This microservice requires redis to work and can be run via docker or standalone executable.

Configuration

Configuration can be provided via configuration yaml or env variables.

You can run cryptletter config:init to generate a fresh cryptletter.yml in your working directory. You can also specify the config file by providing it as an argument to the executable:

$ cryptletter --config ../your/own/path/you-name-it.yml
# cryptletter.yml
app:
  # How long should the message survive, without getting opened? (minutes)
  default_message_ttl: 43830
  # LOUDER > quieter
  log_level: 4
  # Current env, use "dev" to disable cors for local development
  env: prod
  
  # Serving config
  server:
    port: 8080

  # Restrict creation of new letters with a password (good enough to lockout the public)
  creation_protection_password: ""
    
  # Inject custom css and custom js configuration
  additional:
    css: './web/example/additional.css'
    js: './web/example/custom.js'
    
  attachments:
    # Files must be removed if the message reached it's TTL and is no longer reachable 
    cleanup_schedule: * * * * *
    # Supported driver: s3, local or "" to disable attachment support
    driver: local
    # Directory for uploaded attachments
    storage_path: cryptletter-uploads

# Redis config
redis:
  address: 127.0.0.1:6379
  database: 0
  password: ""

# S3 configuration for attachment.driver: s3
s3:
  access_id: minioadmin
  access_secret: minioadmin
  bucket_name: cryptletter-attachments
  bucket_region: eu-central-1
  endpoint: http://127.0.0.1:9000
  secure: true

Environment variables can be used with __ as the replacement for dot notation.

$ APP__LOG_LEVEL=0 cryptletter

Customization

This microservice is designed to work as it is. It comes with an embedded version of the frontend app (thanks to go:embed).

It's possible to insert some css to adjust the appearance of the app, and override/translate the wording via a js configuration.

# cryptletter.yml
app:
  additional:
    css: './your/own/additional.css'
    js: './your/own/custom.js'

Further customization require a full build, since the assets are embedded into the executable for ease of use.

Build

Run ./build.sh and get your executable (you may adjust the docker build push destination).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].