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.
- Features
- Installation
- Build and Run
- Configuration
- Endpoints
- Docker Deployment
- Contributing
- License
- Community and Support
- 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-compose.prod.sample.yaml
- Docker: Install Docker
- Docker Compose: Install Docker Compose
git clone https://github.com/kek-Sec/gopherdrop.git
cd gopherdrop
To build and run GopherDrop in production mode:
make build # Build the Docker images
make up # Start the backend, frontend, and database services
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
make down
make test
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
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) |
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 |
- Fork the repository.
- Create a new branch:
git checkout -b my-feature-branch
- Make your changes and add tests.
- Submit a pull request.
GopherDrop is licensed under the MIT License.
- Issues: GitHub Issues
- Discussions: GitHub Discussions