Password Pusher Documentation

repository·master·Indexed 25 days ago

https://github.com/pglombardo/passwordpusher

An open-source web application for securely sharing sensitive information like passwords, files, and URLs using self-deleting links. It features a JSON API v2, support for MFA, and flexible deployment options including Docker Compose, Helm, Kubernetes (ephemeral and persistent modes), and various cloud platforms such as Heroku, DigitalOcean, Render, Fly.io, and Railway.

Tokens
4.5K
Snippets
8
Records
32
Agent score
85%

What's inside Password Pusher

  1. Install Password Pusher (Persistent Mode)

    master

    Persistent mode includes a postgres pod for database storage.

    Important: This deployment expects the host path /nfs/k8s/services/pwpush/data to be mounted on your nodes. You should modify this path in containers/kubernetes/pv.yaml to match your environment before applying the manifests.

    To update the host path:

    sed -i 's|/nfs/k8s/services/pwpush/data|/your/path/here|g' containers/kubernetes/pv.yaml

    To deploy:

    kubectl apply -f containers/kubernetes/namespace.yaml
    kubectl apply -f containers/kubernetes/pv.yaml
    kubectl apply -f containers/kubernetes/pvc.yaml
    kubectl apply -f containers/kubernetes/persistent_deploy.yaml
    kubectl apply -f containers/kubernetes/service.yaml
    kubectl apply -f containers/kubernetes/ingress.yaml
    sed -i 's|/nfs/k8s/services/pwpush/data|/your/path/here|g' containers/kubernetes/pv.yaml
    
    kubectl apply -f containers/kubernetes/namespace.yaml
    kubectl apply -f containers/kubernetes/pv.yaml
    kubectl apply -f containers/kubernetes/pvc.yaml
    kubectl apply -f containers/kubernetes/persistent_deploy.yaml
    kubectl apply -f containers/kubernetes/service.yaml
    kubectl apply -f containers/kubernetes/ingress.yaml
  2. Deploy Password Pusher to Cloud Platforms

    master

    The repository includes configuration files for several cloud deployment workflows:

    • Heroku: Use app.json for environment variables, process types, and postdeploy / db:prepare tasks.
    • DigitalOcean App Platform: Use .do/deploy.template.yaml (includes web + job specs).
    • Render: Use render.yaml (includes web + Postgres blueprint).
    • Fly.io: Use fly.toml (run fly launch to start; uses containers/docker/Dockerfile).
    • Railway: Use railway.toml (set secrets in the Railway dashboard).
    • Local Development: Use the .devcontainer/ directory for VS Code or GitHub Codespaces (includes Ruby + Postgres setup via bin/setup).
  3. Configure the Ingress Domain

    master

    The bundled manifests use pwpush.domain.tld as the default ingress URL. You must replace this with your actual domain to allow cert-manager to generate Let's Encrypt certificates automatically. Use sed to update the containers/kubernetes/ingress.yaml file.

    sed -i 's|pwpush.domain.tld|pwpush.your.domain.here|g' containers/kubernetes/ingress.yaml
  4. Run Password Pusher with Docker Compose

    master

    To deploy your own instance of Password Pusher with persistent storage and automatic SSL/TLS, use Docker Compose.

    1. Point a DNS record to your server (e.g., pwpush.example.com).
    2. Clone this repository or download the docker-compose.yml file.
    3. Edit docker-compose.yml to:
      • Uncomment and set TLS_DOMAIN: 'pwpush.example.com' (enables automatic Let's Encrypt TLS).
      • Optionally set PWPUSH_MASTER_KEY (generate a key at us.pwpush.com/generate_key).
    4. Run the deployment command.

    If you did not set a TLS_DOMAIN, you must uncomment port 5100 in the compose file and access the application via http://your-ip:5100.

    docker compose up -d
  5. Deploy Password Pusher using Helm

    master

    To perform a basic deployment of Password Pusher using Helm 3+, run the helm install command from within the helm directory of this repository. This will create a namespace named pwpush and deploy the necessary services.

    helm install \
      --create-namespace \
      --namespace pwpush \
      my-passwordpusher \
      .
  6. Upgrade from Password Pusher 1.x to 2.0

    master

    When upgrading from version 1.x to 2.0, follow these steps to ensure compatibility with new defaults:

    1. Backup: Always backup your database and any custom configuration or secrets.
    2. Update Login Configuration: Remove PWP__ENABLE_LOGINS or enable_logins. Replace them with PWP__ALLOW_ANONYMOUS, PWP__DISABLE_SIGNUPS, and PWP__DISABLE_LOGINS to match your desired policy.
    3. Configure Email: If you rely on Devise mail flows (signup confirmation, forgot password, unlock), you must explicitly set PWP__ENABLE_USER_ACCOUNT_EMAILS=true and ensure SMTP is configured. In 2.0, this is opt-in and defaults to false.
    4. Adjust Feature Defaults: 2.0 enables several features by default that were off in 1.x. If you want to maintain 1.x behavior, explicitly set the following to false:
      • PWP__ENABLE_URL_PUSHES
      • PWP__ENABLE_FILE_PUSHES
      • PWP__ENABLE_QR_PUSHES
      • PWP__RETRIEVAL_STEP_DEFAULT (for pw, url, and files)
    5. Smoke-test: Verify login, push creation, and API token authentication after deployment.
  7. Install Password Pusher (Ephemeral Mode)

    master

    Ephemeral mode is used for installations that do not require a persistent database. This deployment provisions a namespace pwpush, a deployment pwpush, a service pwpush-http, and an ingress pwpush-ingress.

    kubectl apply -f containers/kubernetes/namespace.yaml
    kubectl apply -f containers/kubernetes/ephemeral_deploy.yaml
    kubectl apply -f containers/kubernetes/service.yaml
    kubectl apply -f containers/kubernetes/ingress.yaml
  8. Access Password Pusher via Port Forwarding

    master

    After deploying with Helm, you can access the Password Pusher service on your local machine by forwarding the service port to your local port 5555. Once the port forward is active, open your browser to http://localhost:5555.

    kubectl port-forward --namespace pwpush svc/my-passwordpusher-helm 5555:5100
  9. Configure Email and GDPR Settings

    master

    Use the following environment variables to manage email flows and legal compliance:

    • PWP__ENABLE_USER_ACCOUNT_EMAILS: Set to true to enable Devise-based email flows (e.g., signup confirmation, password resets). Requires a working SMTP configuration. Defaults to false.
    • PWP__SHOW_GDPR_CONSENT_BANNER: Set to true to display the GDPR consent banner. Defaults to false in 2.0.
  10. Customize Password Pusher Appearance

    master
    You can white-label your Password Pusher instance using environment variables to set a custom theme, logo, and site name. The application supports 26 Bootswatch themes and allows for custom CSS. The UI automatically follows system preferences for light/dark modes.