Skip to content

kek-Sec/GopherDrop

Repository files navigation

πŸ› οΈ GopherDrop – Secure One-Time Secret Sharing 🏁

Docker Image Version Docker Pulls GitHub branch check runs Coveralls GitHub go.mod Go version

GopherDrop is a secure, self-hostable REST API and UI for sharing encrypted one-time secrets and files, inspired by Bitwarden's Send feature. Built with Go, Vue.js, and Vuetify, GopherDrop is designed for simplicity, security, and ease of deployment.

GopherDrop Banner


πŸ“‹ Table of Contents

  1. Features
  2. Installation
  3. Build and Run
  4. Configuration
  5. Endpoints
  6. Docker Deployment
  7. Contributing
  8. License
  9. Community and Support

🌟 Features

  • Send Text or Files: Share sensitive information securely.
  • Password Protection: Encrypt your secrets with a password.
  • One-Time Retrieval: Automatically delete secrets after a single access.
  • Expiration Settings: Define how long a secret remains available.
  • Responsive UI: Built with Vue.js and Vuetify for a modern user experience.
  • Dockerized Deployment: Simple setup with Docker and Docker Compose.
  • Production and Debug Modes: Easily switch between production and debug builds.

🐳 Docker Deployment

Production docker-compose.yml

docker-compose.prod.sample.yaml


πŸ“₯ Installation

Prerequisites

Clone the Repository

git clone https://github.com/kek-Sec/gopherdrop.git
cd gopherdrop

πŸ› οΈ Build and Run

Local Setup

To build and run GopherDrop in production mode:

make build      # Build the Docker images
make up         # Start the backend, frontend, and database services

Debug Setup

To build and run GopherDrop in debug mode:

make build-debug   # Build the Docker images with debug mode enabled
make up            # Start the backend, frontend, and database services in debug mode

Stopping Services

make down

Running Tests

make test

βš™οΈ Configuration

Using .env File

Create a .env file in the project root to securely store your secrets:

DB_HOST=db
DB_USER=user
DB_PASSWORD=pass
DB_NAME=gopherdropdb
DB_SSLMODE=disable
SECRET_KEY=supersecretkeysupersecretkey32
LISTEN_ADDR=:8080
STORAGE_PATH=/app/storage
MAX_FILE_SIZE=10485760

Environment Variables

Variable Description Default Value
DB_HOST Database host db
DB_USER Database username user
DB_PASSWORD Database password pass
DB_NAME Database name gopherdropdb
SECRET_KEY Secret key for encryption supersecretkeysupersecretkey32
LISTEN_ADDR API listen address :8080
STORAGE_PATH Path for storing uploaded files /app/storage
MAX_FILE_SIZE Maximum file size in bytes 10485760 (10 MB)

πŸ–₯️ Endpoints

API Endpoints

Method Endpoint Description
POST /send Create a new send (text or file)
GET /send/:id Retrieve a send by its hash
GET /send/:id/check Check if a send requires a password

🀝 Contributing

  1. Fork the repository.
  2. Create a new branch: git checkout -b my-feature-branch
  3. Make your changes and add tests.
  4. Submit a pull request.

πŸ“ License

GopherDrop is licensed under the MIT License.


πŸ’¬ Community and Support