pglombardo / PasswordPusher

🔐 Securely communicate sensitive information with automatic deletion after a certain number of views and/or time has passed. Track who, what and when with full audit logs.
https://pwpush.com
Apache License 2.0
1.78k stars 329 forks source link
communicate-passwords docker-container encryption hacktoberfest information-technology netsec netsec-tools openshift-templates password password-expiration password-pusher password-safety ruby secret security security-tools self-hosted
[![Password Pusher Front Page](https://pwpush.fra1.cdn.digitaloceanspaces.com/branding/logos/horizontal-logo-small.png)](https://pwpush.com/) __Simple & Secure Password Sharing with Auto-Expiration of Shared Items__ [![](https://badgen.net/twitter/follow/pwpush)](https://twitter.com/pwpush) ![](https://badgen.net/github/stars/pglombardo/PasswordPusher) [![](https://badgen.net/uptime-robot/month/m789048867-17b5770ccd78208645662f1f)](https://stats.uptimerobot.com/6xJjNtPr93) [![](https://badgen.net/docker/pulls/pglombardo/pwpush-ephemeral)](https://hub.docker.com/repositories) [![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/pglombardo/PasswordPusher/ruby-tests.yml)](https://github.com/pglombardo/PasswordPusher/actions/workflows/ruby-tests.yml) [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/pglombardo/pwpush-cli/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) [![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/pglombardo/pwpush-cli/releases) [![License](https://img.shields.io/github/license/pglombardo/PasswordPusher)](https://github.com/pglombardo/PasswordPusher/blob/master/LICENSE)

Give your users the tools to be secure by default.

Password Pusher is an open source application to communicate passwords over the web. Links to passwords expire after a certain number of views and/or time has passed.

Hosted at pwpush.com but you can also easily run your own private instance with just a few steps.

💌 --> Sign up for the newsletter to get updates on big releases, security issues, new features, integrations, tips and more.

Password Pusher is also on Twitter, Gettr and on Facebook


⚡️ Quick Start

→ Go to pwpush.com and try it out.

or

→ Run your own instance with docker run -d -p "5100:5100" pglombardo/pwpush:latest or a production ready setup with a database & SSL/TLS.

or

→ Use one of the 3rd party tools that interface with Password Pusher.

💾 Run Your Own Instance

🎉 🎉 🎉

We've recently introduced a single universal container. Migration for existing users is easy - please refer to the documentation here.

🎉 🎉 🎉

Note: Password Pusher can be largely configured by a config file or environment variables so after you pick your deployment method below, make sure to read the configuration page. Take particular attention in setting your own custom encryption key which isn't required but provides the best security for your instance.

On Docker

Docker images of Password Pusher are available on Docker hub.

➜ ephemeral Temporary database that is wiped on container restart.

docker run -d -p "5100:5100" pglombardo/pwpush:latest

Learn more

➜ using an External Postgres Database Postgres database backed instance.

docker run -d -p "5100:5100" pglombardo/pwpush:latest -e DATABASE_URL=postgres://pwpush_user:pwpush_passwd@postgres:5432/pwpush_db

Learn more

➜ using an External MariaDB (MySQL) Database Mariadb database backed instance.

docker run -d -p "5100:5100" pglombardo/pwpush:latest -e DATABASE_URL=mysql2://pwpush_user:pwpush_passwd@mysql:3306/pwpush_db

Learn more

Note: Putting passwords in a command line is bad practice. See the related Database pages for alternative options.

See Also: Guide to DATABASE_URL

Docker Tags Reference

Tag Purpose
vX.X.X Versioned tags
stable The most stable tag for proven releases
latest The latest (most recent) released vX.X.X
nightly The nightly development build

If in doubt, use latest or the stable tag.

The previously used release tag is no longer used and won't be updated again. Instead use the stable tag.

With Docker Compose

➜ One-liner Password Pusher with a Postgres Database

curl -s -o docker-compose.yml https://raw.githubusercontent.com/pglombardo/PasswordPusher/master/containers/docker/docker-compose-postgres.yml && docker compose up -d

➜ One-liner Password Pusher with a MariaDB (MySQL) Database

curl -s -o docker-compose.yml https://raw.githubusercontent.com/pglombardo/PasswordPusher/master/containers/docker/docker-compose-mariadb.yml && docker compose up -d

On Kubernetes

Instructions and explanation of a Kubernetes setup can be found here.

On Kubernetes with Helm

A basic helm chart with instructions can be found here.

On Microsoft Azure

There used to be a 3rd party blog post with instructions but it's been deleted. If anyone has instructions they would like to contribute, it would be greatly appreciated.

See issue #277

On Heroku

One click deploy to Heroku Cloud without having to set up servers.

Deploy

This option will deploy a production Password Pusher instance backed by a postgres database to Heroku. Heroku used to offer free dynos but that is no longer the case from November 28, 2022. Hosting charges will be incurred.

On PikaPods

One click deploy to PikaPods from $1/month. Start free with $5 welcome credit.

Run on PikaPods

With Nginx

See the prebuilt Docker Compose example here.

From Source

I generally don't suggest building this application from source code for casual use. The is due to the complexities in the tool set across platforms. Running from source code is best when you plan to develop the application.

For quick and easy, use the Docker containers instead.

But if you're resolute & brave, continue on!

Dependencies

SQLite3 backend

git clone git@github.com:pglombardo/PasswordPusher.git
cd PasswordPusher
gem install bundler

bundle config set --local deployment 'true'
bundle install --without development production test
./bin/rails assets:precompile
./bin/rails db:setup
./bin/rails server

Then view the site @ http://localhost:5100/.

Postgres, MySQL or Mariadb backend

git clone git@github.com:pglombardo/PasswordPusher.git
cd PasswordPusher
gem install bundler

export RAILS_ENV=production

# Update the following line to point to your Postgres (or MySQL/Mariadb) instance
DATABASE_URL=postgresql://passwordpusher_user:passwordpusher_passwd@postgres:5432/passwordpusher_db

bundle install --without development test
./bin/rails assets:precompile
./bin/rails db:setup
./bin/rails server --environment=production

Then view the site @ http://localhost:5100/.

🔨 3rd Party Tools

Command Line Utilities

GUIs

Libraries & APIs

Android Apps

Application Integrations

See also the Tools Page on pwpush.com.

📡 The Password Pusher API

🇮🇹 Internationalization

Password Pusher is currently available in 29 languages with more languages being added often as volunteers apply.

From within the application, the language is selectable from a language menu. Out of the box and before any language menu selection is done, the default language for the application is English.

Changing the Default Language

The default language can be changed by setting an environment variable with the appropriate language code:

PWP__DEFAULT_LOCALE=es

For more details, a list of supported language codes and further explanation, see the bottom of this configuration file.

🛟 Help Out

pwpush.com is hosted on Digital Ocean and is happily paid out of pocket by myself for more than 10 years.

But you could help out greatly by signing up to Digital Ocean with this link (and get $200 credit). In return, Password Pusher gets a helpful hosting credit.

tldr; Sign up to Digital Ocean with this link, get a $200 credit for free and help Password Pusher out.

DigitalOcean Referral Badge

📼 Credits

Translators

Thanks to our great translators!

If you would like to volunteer and assist in translating, see this page.

Name Language
Oyale Catalan
Finn Skaaning Danish
Mihail Tchetchelnitski Finnish
Thibaut French
Thomas Wölk German Github, Twitter
Martin Otto German
Robin Jørgensen Norwegian
Łukasz Polish
Jair Henrique Portuguese
Fabrício Rodrigues Portuguese
Ivan Freitas Portuguese
Sara Faria Portuguese
Oyale Spanish
johan323 Swedish
Fredrik Arvas Swedish
Pedro Marques European Portuguese

Also thanks to translation.io for their great service in managing translations. It's also generously free for open source projects.

Containers

Thanks to:

Other

Thanks to:

...and many more. See the Contributors page for more details.

🛡 License

License

This project is licensed under the terms of the Apache License 2.0 license. See LICENSE for more details.

📃 Citation

@misc{PasswordPusher,
  author = {Peter Giacomo Lombardo},
  title = {An application to securely communicate passwords over the web. Passwords automatically expire after a certain number of views and/or time has passed.},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/pglombardo/PasswordPusher}}
}