config | ||
routes | ||
static | ||
storage | ||
build.sh | ||
Dockerfile | ||
go.mod | ||
LICENSE.md | ||
main.go | ||
README.md |
PassED
EMail, but for passwords.
Did you ever run into the issue of needing to share a password with someone securely?
You want to share it using EMail, but there it will surely get logged along the way.
You want to share it using WhatsApp, but there it will show up in the notifications for everyone to read.
You want to share it on paper, but everyone can read that too.
PassED solves this issue by allowing you to generate single-use URLs with your password.
How it works
When you generate a URL...
- The browser generates an AES key.
- The password you entered gets encrypted using this key.
- The encrypted password is uploaded to the server, which responds with an ID to uniquely identify the password.
- A URL is generated that contains the ID and AES key.
When you view a password...
- The browser imports the AES key from the URL.
- The browser asks the server for the password using the ID in the URL.
- The browser decrypts the password from the server using the AES key from the URL.
Setup
Setting up PassED can be done with docker compose or from source. As the website relies on the Web Crypto API it requires a secure context. In other words you must setup a reverse proxy for HTTPS, or access the site via localhost
.
Docker compose
services:
"passed":
image: "git.1e99.eu/1e99/passed:latest"
volumes:
- "./passed:/etc/passed"
environment:
- "PASSED_ADDRESS=:3000"
- "PASSED_STORE_TYPE=dir"
- "PASSED_STORE_DIR_PATH=/etc/passed"
ports:
- "3000:3000"
From Source
- Clonse the source code
git clone https://git.1e99.eu/1e99/passed.git --depth 1
- Ensure that you have go installed, if not follow this guide.
- Build the project.
go build -o passed .
- Run the binary.
PASSED_STORE_TYPE=dir ./passed
Configuration
Configuration is done using environment variables.
PASSED_ADDRESS
: The address that PassED should listen on, defaults to:3000
.PASSED_LOG_REQUESTS
: Should requests be logged, defaults totrue
.PASSED_MAX_LENGTH
: Maximum password length in KiB, defaults to12288
.PASSED_STORE_TYPE
: Store type to pick, defaults toram
.ram
: Passwords are stored in RAM.dir
: Passwords are stored in a directory. The directory is specified usingPASSED_STORE_DIR_PATH
, which defaults topasswords
. PassED will not create the directory for you.
PASSED_STORE_CLEAR_INTERVAL
: Time that should pass between clearing expired passwords in seconds, defaults to30
.