{"id":13491536,"url":"https://github.com/algolia/sup3rS3cretMes5age","last_synced_at":"2025-03-28T08:33:19.242Z","repository":{"id":39458845,"uuid":"101872180","full_name":"algolia/sup3rS3cretMes5age","owner":"algolia","description":"Simple to use, simple to deploy, one time self destruct messaging service, with hashicorp vault as a backend","archived":false,"fork":false,"pushed_at":"2024-12-30T10:35:59.000Z","size":1140,"stargazers_count":523,"open_issues_count":8,"forks_count":81,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-12-30T11:30:23.118Z","etag":null,"topics":["golang","hashicorp-vault","secrets","security","vault"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/algolia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-30T11:13:09.000Z","updated_at":"2024-12-30T10:35:56.000Z","dependencies_parsed_at":"2024-01-03T06:05:02.333Z","dependency_job_id":"7396ff37-5128-418f-a0a0-13053732b01f","html_url":"https://github.com/algolia/sup3rS3cretMes5age","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fsup3rS3cretMes5age","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fsup3rS3cretMes5age/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fsup3rS3cretMes5age/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fsup3rS3cretMes5age/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/algolia","download_url":"https://codeload.github.com/algolia/sup3rS3cretMes5age/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245996804,"owners_count":20707329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","hashicorp-vault","secrets","security","vault"],"created_at":"2024-07-31T19:00:57.969Z","updated_at":"2025-03-28T08:33:18.847Z","avatar_url":"https://github.com/algolia.png","language":"Go","funding_links":[],"categories":["Go","Install from Source","Software","Secrets","Pastebins"],"sub_categories":["Pastebins","Self-Desctructing Secrets Services","Video Streaming"],"readme":"# sup3rS3cretMes5age\n\nA simple, secure self-destructing message service, using HashiCorp Vault product as a backend.\n\n![self-destruct](https://media.giphy.com/media/LBlyAAFJ71eMw/giphy.gif)\n\nRead more about the reasoning behind this project in the [relevant blog post](https://blog.algolia.com/secure-tool-for-one-time-self-destructing-messages/).\n\nNow using [Let's Encrypt](https://letsencrypt.org/) for simple and free SSL certs!\n\n## Deployment\n\n### Testing it locally\n\nYou can just run `docker-compose up -f deploy/docker-compose.yml --build` or run `make build`: it will build the Docker image and then run it alongside a standalone Vault server.\n\nBy default, the `deploy/docker-compose.yml` is configured to run the webapp on port 8082 in cleartext HTTP (so you can access it on [http://localhost:8082](http://localhost:8082)).\n\nOptionally, you can modify the `deploy/docker-compose.yml` and tweak the options (enable HTTPS, disable HTTP or enable redirection to HTTPS, etc.). See [Configuration options](#configuration-options).\n\n### Production Deployment\n\nWe recommend deploying the project via **Docker** and a **container orchestration tool**:\n\n* Build the Docker image using the provided `Dockerfile` or run `make image`\n* Host it in a Docker registry ([Docker Hub](https://hub.docker.com/), [AWS ECR](https://aws.amazon.com/ecr/), etc.)\n* Deploy the image (alongside with a standalone Vault server) using a container orchestration tool ([Kubernetes](https://kubernetes.io/), [Docker Swarm](https://docs.docker.com/engine/swarm/), [AWS ECS](https://aws.amazon.com/ecs/), etc.)\n\nYou can read the [configuration examples](#configuration-examples) below.\n\n### Security notice\n\nWhatever deployment method you choose, **you should always run this behind SSL/TLS**, otherwise secrets will be sent _unencrypted_!\n\nDepending on your infrastructure/deployment, you can have **TLS termination** either _inside the container_ (see [Configuration examples - TLS](#tls)), or _before_ e.g. at a load balancer/reverse proxy in front of the service.\nIt is interesting to have TLS termination before the container so you don't have to manage the certificate/key there, but **make sure the network** between your TLS termination point and your container **is secure**.\n\n## Helm\n\nFor full documentation for this chart, please see the [README](https://github.com/algolia/sup3rS3cretMes5age/blob/master/deployments/charts/README.md)\n\n## Configuration options\n\n* `VAULT_ADDR`: address of the Vault server used for storing the temporary secrets.\n* `VAULT_TOKEN`: Vault token used to authenticate to the Vault server.\n* `SUPERSECRETMESSAGE_HTTP_BINDING_ADDRESS`: HTTP binding address (e.g. `:80`).\n* `SUPERSECRETMESSAGE_HTTPS_BINDING_ADDRESS`: HTTPS binding address (e.g. `:443`).\n* `SUPERSECRETMESSAGE_HTTPS_REDIRECT_ENABLED`: whether to enable HTTPS redirection or not (e.g. `true`).\n* `SUPERSECRETMESSAGE_TLS_AUTO_DOMAIN`: domain to use for \"Auto\" TLS, i.e. automatic generation of certificate with Let's Encrypt. See [Configuration examples - TLS - Auto TLS](#auto-tls).\n* `SUPERSECRETMESSAGE_TLS_CERT_FILEPATH`: certificate filepath to use for \"manual\" TLS.\n* `SUPERSECRETMESSAGE_TLS_CERT_KEY_FILEPATH`: certificate key filepath to use for \"manual\" TLS.\n* `SUPERSECRETMESSAGE_VAULT_PREFIX`: vault prefix for secrets (default `cubbyhole/`)\n\n## Configuration examples\n\nHere is an example of a functionnal docker-compose.yml file\n```yaml\nversion: '3.2'\n\nservices:\n  vault:\n    image: vault:latest\n    container_name: vault\n    environment:\n      VAULT_DEV_ROOT_TOKEN_ID: root\n    cap_add:\n      - IPC_LOCK\n    expose:\n      - 8200\n\n  supersecret:\n    build: ./\n    image: algolia/supersecretmessage:latest\n    container_name: supersecret\n    environment:\n      VAULT_ADDR: http://vault:8200\n      VAULT_TOKEN: root\n      SUPERSECRETMESSAGE_HTTP_BINDING_ADDRESS: \":80\"\n      SUPERSECRETMESSAGE_HTTPS_BINDING_ADDRESS: \":443\"\n      SUPERSECRETMESSAGE_HTTPS_REDIRECT_ENABLED: \"true\"\n      SUPERSECRETMESSAGE_TLS_AUTO_DOMAIN: secrets.example.com\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    depends_on:\n      - vault\n```\n\n### Configuration types\n\n#### Plain HTTP\n\n```bash\nVAULT_ADDR=http://vault:8200\nVAULT_TOKEN=root\n\nSUPERSECRETMESSAGE_HTTP_BINDING_ADDRESS=:80\n```\n\n#### TLS\n\n##### Auto TLS\n\n```bash\nVAULT_ADDR=http://vault:8200\nVAULT_TOKEN=root\n\nSUPERSECRETMESSAGE_HTTPS_BINDING_ADDRESS=:443\nSUPERSECRETMESSAGE_TLS_AUTO_DOMAIN=secrets.example.com\n```\n\n##### Auto TLS with HTTP \u003e HTTPS redirection\n\n```bash\nVAULT_ADDR=http://vault:8200\nVAULT_TOKEN=root\n\nSUPERSECRETMESSAGE_HTTP_BINDING_ADDRESS=:80\nSUPERSECRETMESSAGE_HTTPS_BINDING_ADDRESS=:443\nSUPERSECRETMESSAGE_HTTPS_REDIRECT_ENABLED=true\nSUPERSECRETMESSAGE_TLS_AUTO_DOMAIN=secrets.example.com\n```\n\n##### Manual TLS\n\n```bash\nVAULT_ADDR=http://vault:8200\nVAULT_TOKEN=root\n\nSUPERSECRETMESSAGE_HTTPS_BINDING_ADDRESS=:443\nSUPERSECRETMESSAGE_TLS_CERT_FILEPATH=/mnt/ssl/cert_secrets.example.com.pem\nSUPERSECRETMESSAGE_TLS_CERT_KEY_FILEPATH=/mnt/ssl/key_secrets.example.com.pem\n```\n\n## Screenshot\n\n![supersecretmsg](https://user-images.githubusercontent.com/357094/29357449-e9268adc-8277-11e7-8fef-b1eabfe62444.png)\n\n## Contributing\n\nPull requests are very welcome!\nPlease consider that they will be reviewed by our team at Algolia.\n\n\n## Thanks\n\nThis project is heavaily depandent on the amazing work of the [Echo Go Web Framework](https://github.com/labstack/echo) and Hashicorp Vault. \n\n[![This project is certified Awesome F/OSS](https://awsmfoss.com/content/images/2024/02/awsm-foss-badge.600x128.rounded.png)](https://awsmfoss.com/sup3rs3cretmes5age)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgolia%2Fsup3rS3cretMes5age","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falgolia%2Fsup3rS3cretMes5age","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgolia%2Fsup3rS3cretMes5age/lists"}