Deploying Passbolt
Introduction
Passbolt is a self-hosted, open-source password manager designed specifically for team collaboration. Unlike consumer password managers, Passbolt focuses on secure credential sharing within organizations, using end-to-end encryption with OpenPGP (GPG) keys to ensure that only authorized users can access shared passwords.
Built with security as the primary concern, Passbolt has undergone multiple third-party security audits and is trusted by organizations worldwide for managing sensitive credentials.
Key highlights of Passbolt:
- End-to-End Encryption: All passwords are encrypted using OpenPGP, ensuring only authorized users can decrypt them
- GPG Key Authentication: Users authenticate with their GPG private keys, not just passwords
- Team Sharing: Share passwords with individuals, groups, or the entire organization
- Fine-Grained Permissions: Control who can view, edit, or manage each credential
- Browser Extensions: Available for Chrome, Firefox, Edge, and Brave
- Mobile Apps: Native apps for iOS and Android
- LDAP/AD Integration: Sync users from your directory service (Pro/Cloud)
- MFA Support: Additional security with multi-factor authentication
- Audit Logs: Track who accessed what and when
- Self-Hosted: Complete control over your password data
- Open Source: Community Edition is AGPLv3 licensed
This guide walks through deploying Passbolt on Klutch.sh using Docker, configuring the application for secure credential management, and setting up your team for collaborative password sharing.
Why Deploy Passbolt on Klutch.sh
Deploying Passbolt on Klutch.sh provides several advantages for team password management:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Passbolt without complex orchestration. Push to GitHub, and your password manager deploys automatically.
Data Sovereignty: Host your passwords on your own infrastructure with complete control over data location and access.
HTTPS by Default: Klutch.sh provides automatic SSL certificates, essential for secure password transmission.
Persistent Storage: Attach persistent volumes for your database and GPG keyring. Your passwords survive container restarts and redeployments.
Environment Variable Management: Securely store database credentials and security keys through Klutch.sh’s environment variable system.
Custom Domains: Use your organization’s domain for a professional, branded password management portal.
Prerequisites
Before deploying Passbolt on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Passbolt configuration
- Basic familiarity with Docker and containerization concepts
- A MySQL or MariaDB database
- SMTP server credentials for email functionality
- Understanding of GPG/OpenPGP concepts (helpful but not required)
Understanding Passbolt Architecture
Passbolt consists of several components:
Web Application: PHP-based CakePHP application serving the web interface and API.
Database: MySQL/MariaDB storing encrypted passwords, user accounts, and metadata.
GPG Keyring: Server GPG keys for cryptographic operations.
Email System: Sends account recovery, sharing notifications, and security alerts.
Browser Extensions: Client-side extensions handling local encryption/decryption with user’s GPG keys.
Preparing Your Repository
Create a GitHub repository containing your Dockerfile for Passbolt deployment.
Repository Structure
passbolt-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM passbolt/passbolt:latest-ce
# Set environment variablesENV APP_FULL_BASE_URL=${APP_FULL_BASE_URL}ENV DATASOURCES_DEFAULT_HOST=${DATABASE_HOST}ENV DATASOURCES_DEFAULT_USERNAME=${DATABASE_USER}ENV DATASOURCES_DEFAULT_PASSWORD=${DATABASE_PASSWORD}ENV DATASOURCES_DEFAULT_DATABASE=${DATABASE_NAME}
# Email configurationENV EMAIL_DEFAULT_FROM=${EMAIL_FROM}ENV EMAIL_TRANSPORT_DEFAULT_HOST=${SMTP_HOST}ENV EMAIL_TRANSPORT_DEFAULT_PORT=${SMTP_PORT}ENV EMAIL_TRANSPORT_DEFAULT_USERNAME=${SMTP_USER}ENV EMAIL_TRANSPORT_DEFAULT_PASSWORD=${SMTP_PASSWORD}ENV EMAIL_TRANSPORT_DEFAULT_TLS=${SMTP_TLS}
# GPG configurationENV PASSBOLT_GPG_SERVER_KEY_FINGERPRINT=${GPG_FINGERPRINT}
# Expose the web interface portEXPOSE 80 443
# Use the default entrypoint from the base imageCreating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdLICENSE.gitignore*.log.DS_Store.env.env.localEnvironment Variables Reference
| Variable | Required | Description |
|---|---|---|
APP_FULL_BASE_URL | Yes | Full URL of your Passbolt instance (https://…) |
DATASOURCES_DEFAULT_HOST | Yes | Database hostname |
DATASOURCES_DEFAULT_USERNAME | Yes | Database username |
DATASOURCES_DEFAULT_PASSWORD | Yes | Database password |
DATASOURCES_DEFAULT_DATABASE | Yes | Database name |
EMAIL_DEFAULT_FROM | Yes | Email sender address |
EMAIL_TRANSPORT_DEFAULT_HOST | Yes | SMTP server hostname |
EMAIL_TRANSPORT_DEFAULT_PORT | Yes | SMTP port (587, 465, 25) |
EMAIL_TRANSPORT_DEFAULT_USERNAME | No | SMTP username |
EMAIL_TRANSPORT_DEFAULT_PASSWORD | No | SMTP password |
EMAIL_TRANSPORT_DEFAULT_TLS | No | Enable TLS (true/false) |
PASSBOLT_GPG_SERVER_KEY_FINGERPRINT | No | Server GPG key fingerprint |
Deploying Passbolt on Klutch.sh
- Your organization’s mail server
- Amazon SES
- Mailgun
- SendGrid
- Select HTTP as the traffic type
- Set the internal port to 80
- Detect your Dockerfile automatically
- Build the container image
- Attach the persistent volumes
- Start the Passbolt container
- Provision an HTTPS certificate
Set Up MySQL/MariaDB Database
Deploy a MySQL or MariaDB database on Klutch.sh or use an external database service. Create a database named passbolt and note the connection credentials.
Configure SMTP
Set up an SMTP service for sending emails. You can use services like:
Push Your Repository to GitHub
Initialize your repository and push to GitHub with your Dockerfile.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “passbolt” or “password-manager”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Passbolt Dockerfile.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
APP_FULL_BASE_URL | https://your-app-name.klutch.sh |
DATASOURCES_DEFAULT_HOST | Your database host |
DATASOURCES_DEFAULT_USERNAME | Database username |
DATASOURCES_DEFAULT_PASSWORD | Database password |
DATASOURCES_DEFAULT_DATABASE | passbolt |
EMAIL_DEFAULT_FROM | passbolt@yourdomain.com |
EMAIL_TRANSPORT_DEFAULT_HOST | SMTP hostname |
EMAIL_TRANSPORT_DEFAULT_PORT | SMTP port |
EMAIL_TRANSPORT_DEFAULT_USERNAME | SMTP username |
EMAIL_TRANSPORT_DEFAULT_PASSWORD | SMTP password |
Attach Persistent Volumes
Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/etc/passbolt/gpg | 1 GB | Server GPG keys |
/usr/share/php/passbolt/webroot/img/public | 1 GB | User avatars |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Create Admin User
After deployment, create your first admin user by running the registration command through the Klutch.sh console or accessing the setup URL.
Access Passbolt
Once deployment completes, access your Passbolt instance at https://your-app-name.klutch.sh and complete the setup wizard.
Initial Setup
First Admin Setup
- Navigate to your Passbolt URL
- Follow the first-time setup wizard
- Create your admin account
- Download and install the browser extension
- Generate or import your GPG key
- Complete the account setup
Browser Extension Setup
- Install the Passbolt extension for your browser
- Visit your Passbolt instance
- Follow the extension setup wizard
- Generate or import your GPG private key
- Set a passphrase for your key
Inviting Team Members
- Log in to Passbolt
- Navigate to Users
- Click + Create
- Enter the user’s email address
- They’ll receive an invitation to set up their account
Using Passbolt
Creating Passwords
- Click + Create in the password list
- Enter the name, URL, username, and password
- Set the description if needed
- Save the password
Sharing Passwords
- Select a password or folder
- Click the Share button
- Search for users or groups
- Set permission level (read, update, owner)
- Save the sharing settings
Organizing with Folders
- Create folders for logical organization
- Move passwords into folders
- Share entire folders with teams
- Nest folders for hierarchical structure
Groups
- Create groups for teams or departments
- Add users to groups
- Share passwords with groups instead of individuals
- Manage group membership centrally
Security Best Practices
Key Management
- Use strong passphrases for GPG keys
- Store key backups securely
- Rotate keys periodically
- Revoke keys for departing users
Access Control
- Use the principle of least privilege
- Regularly review sharing permissions
- Remove access for departing employees immediately
- Use groups for scalable permission management
Audit and Monitoring
- Review audit logs regularly
- Monitor for unusual access patterns
- Set up alerts for sensitive credential access
Additional Resources
- Passbolt Official Website
- Passbolt Documentation
- Passbolt GitHub Organization
- Passbolt Community Forum
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Passbolt on Klutch.sh gives you a secure, self-hosted password manager designed for team collaboration. The combination of end-to-end encryption, GPG-based authentication, and granular sharing controls makes Passbolt ideal for organizations that need to share credentials securely.
With complete data sovereignty, audit logging, and browser extensions for seamless access, Passbolt provides enterprise-grade password management while keeping your sensitive data under your control.