Cómo instalar PasswordPusher en Docker - Compartidor seguro de contraseñas autohospedado en Docker

PasswordPusher | Secure Sharing | Docker

PasswordPusher: Compartidor seguro de contraseñas y secretos autohospedado en Docker con auto-expiración

Comparte contraseñas, URLs, archivos de forma segura. Links que se auto-destruyen. Expira por vistas o tiempo. Encriptado. Auditoría completa. CLI + API. 31 idiomas. Apache 2.0 open source. Self-hosted.

¿Qué es PasswordPusher?


PasswordPusher es una herramienta minimalista para compartir secretos de forma segura sin dejarlos en canales públicos como Slack, email, o chat inseguro. En lugar de enviar contraseña por Slack (¡terrible idea!), generas un link que se auto-destruye después de X vistas o tiempo.

Ventaja crucial: El secreto nunca toca email o chat. Generas un link seguro. Recipient lo accede. Después de la expiración, se borra permanentemente. Auditoría completa: quién vio, cuándo, desde dónde. Encriptado en reposo. Ruby on Rails + PostgreSQL/MySQL/SQLite backend.

Características principales: Compartidor de contraseñas/notas/URLs/archivos con expiración por vistas o tiempo. Encriptación AES-256 en reposo. Links de una sola vista (OVTP). Passphrase opcional adicional. Audit logging: quién vió, cuándo, IP address. Dashboard web moderno. Multi-usuario con login. Admin panel. JSON API + CLI oficial (pwpush-cli). Webhooks. 31 idiomas. Tema customizable (white-label). Soporte ephemeral (sin DB) o persistente (Postgres/MySQL). HTTPS automático vía Let's Encrypt. Docker one-liner deployment. Ruby on Rails confiable. Apache 2.0 open source.

Para equipos seguros: Stop sending secrets por Slack. Use PasswordPusher. Secretos encriptados, audibles, self-destructing. Sin intermediarios.

Características principales

Compartidor de secretos

Contraseñas, notas, URLs, archivos. Todo encriptado y auto-expira.

Expiración flexible

Por vistas (ej: 1 view) o por tiempo (ej: 24 horas). O ambos.

Encriptación AES-256

En reposo. HTTPS en tránsito. Datos nunca en texto plano.

Passphrase adicional

Capa extra: link + passphrase para acceder.

Audit logging completo

Quién vio, cuándo, IP, navegador. Tracking exhaustivo.

Multi-usuario + login

Equipos con cuentas. Cada usuario ve sus pushes.

JSON API

Integra con curl, scripts, tools. Automatización.

CLI oficial (pwpush-cli)

Comparte secrets desde terminal. Pipe-friendly.

Webhooks

Notificaciones cuando se accede. Integra con Slack, Teams, etc.

HTTPS automático

Let's Encrypt. TLS_DOMAIN env var. Setup en segundos.

31 idiomas

UI multilingüe. Translation.io powered.

Open source Apache 2.0

Sin telemetría. Sin black box. Auditable.

Requisitos del sistema

  • Docker & Docker Compose
  • 512 MB - 1 GB RAM (Ruby on Rails es ligero)
  • 1-2 GB espacio disco (depende volumen de pushes)
  • Puerto 443 (HTTPS, recomendado) o 80
  • Opción 1 (ephemeral): Sin DB, datos en memoria (no persiste)
  • Opción 2 (production): PostgreSQL o MySQL
  • TLS_DOMAIN: Domain para Let's Encrypt (ej: secrets.tudominio.com)
  • PWPUSH_MASTER_KEY (recomendado): Key encriptación custom
Setup ultra-rápido: One-liner Docker para ephemeral, Docker Compose con Postgres para producción.

Instalación con Docker

Opción 1: Ephemeral (sin DB, rápido pero sin persistencia)

docker run -d \ --name passwordpusher \ --restart unless-stopped \ -p 5100:5100 \ pglombardo/pwpush-ephemeral:release

http://localhost:5100 - Dashboard. Datos NO persisten entre restarts.

Opción 2: Production con PostgreSQL (recomendado)

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

Opción 3: Docker Compose custom con HTTPS

cat > docker-compose.yml << 'EOF' version: '3.8' services: pwpush: image: pglombardo/pwpush:latest container_name: passwordpusher restart: unless-stopped ports: - "443:443" - "80:80" volumes: - pwpush-storage:/opt/PasswordPusher/storage environment: # Domain para Let's Encrypt (IMPORTANTE) - TLS_DOMAIN=secrets.tudominio.com # Encryption key (generar: openssl rand -hex 32) - PWPUSH_MASTER_KEY=your-random-32-char-hex-key-here # Email (para notificaciones) - PWPUSH_ENABLE_USER_ACCOUNT_EMAILS=false # Logging - PWP__LOG_LEVEL=info volumes: pwpush-storage: EOF docker compose up -d

Generar PWPUSH_MASTER_KEY

openssl rand -hex 32 # Copia resultado y reemplaza en docker-compose.yml

Acceder

https://secrets.tudominio.com - Dashboard PasswordPusher (HTTPS automático)

Primer uso

  1. Abre https://secrets.tudominio.com
  2. Click "Create a Push"
  3. Pega secreto (password, URL, nota)
  4. Set expiry: vistas + tiempo
  5. Opcional: agregar passphrase
  6. Click "Push It"
  7. Comparte link con recipient

Primeros pasos

1. Crear primer push (desde web)

  1. Dashboard → "Create a Push"
  2. Secreto: pega contraseña, URL, nota, o contenido archivo
  3. Expiry: número de vistas (ej: 1)
  4. Expiry: duración (ej: 1 hour, 1 day)
  5. Passphrase (opcional): add layer de seguridad
  6. Click "Push It"
  7. Copia link seguro generado
  8. Comparte link con recipient (sin compartir passphrase por ese canal)

2. Recipient accede

  1. Recipient abre link
  2. Si hay passphrase, tiene que introducirla
  3. Ve el secreto
  4. Link se auto-destruye (1 view usado)
  5. Futuro acceso: "This push has expired"

3. Ver audit log

  1. Dashboard → tu push
  2. Verás: quién vio, cuándo, IP address, navegador
  3. Track completo

4. Usar CLI (pwpush-cli)

# Instalar CLI pip install pwpush # Compartir secreto desde terminal pwpush push --secret "my-password" --days 1 --views 3 # Resultado: https://secrets.tudominio.com/p/abc123xyz

5. Usar API (curl)

curl -X POST https://secrets.tudominio.com/api/v1/pushes \ -H "Content-Type: application/json" \ -d '{ "push": { "payload": "my-secret-password", "expire_after_views": 1, "expire_after_days": 1 } }'

6. Agregar multi-usuario

  1. Settings → Users (si estás en admin)
  2. Crea usuarios para equipo
  3. Cada usuario: su view de pushes
  4. Auditoría: quién creó qué

Casos de uso

  • DevOps/SRE: Compartir credenciales temporary, API keys, database passwords de forma segura.
  • Equipos remotos: Onboarding securo. Distribute credentials sin WhatsApp/email.
  • Soporte IT: Share passwords con clientes sin historial permanente.
  • Compliance-heavy: Auditoría: quién vio qué, cuándo, desde dónde.
  • Terceros/Contractors: Temporary access credentials que auto-expiran.

Caddy como reverse proxy (alternativa)

Si usas Caddy instead de Let's Encrypt en PasswordPusher

secrets.tudominio.com { reverse_proxy localhost:5100 }

Nota: PasswordPusher puede manejar HTTPS nativo

Mejor: dejalo que maneje su propio TLS vía TLS_DOMAIN env var. Caddy es backup si prefieres manage certs externamente.

Gestión y mantenimiento

Ver logs

docker compose logs -f pwpush

Backup de datos (si usas Postgres)

docker compose exec postgres pg_dump -U passwordpusher_user passwordpusher_db > pwpush-$(date +%Y%m%d).sql

Reiniciar

docker compose restart

Actualizar a versión más reciente

docker compose pull docker compose up -d

Monitorear consumo

docker stats passwordpusher

Purgar pushes expirados manualmente

# Configurar en env: PWP__PURGE_AFTER=disabled (o set a schedule) PWP__PURGE_AFTER="2 weeks"

Comparativa con alternativas

vs Slack/Email para secretos

PasswordPusher gana: Encriptado, audible, auto-expira, no histórico permanente. Slack gana: Immediato pero inseguro.

vs 1Password/LastPass (team plans)

PasswordPusher gana: Para sharing temporal, simpler, open source. 1Password gana: Enterprise, más features, managed.

vs BitWarden organization

PasswordPusher gana: Simpler para one-time shares. BitWarden gana: Permanent vault, más robusto.

Mejor para: Compartir secretos temporales de forma segura sin dejar historial. Equipos que necesitan auditoría. DevOps/SRE workflows.

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.