This guide walks through deploying Vaultwarden on Linux servers using multiple deployment methods. Choose the approach that best fits your infrastructure and operational requirements.
Current Stable Version:
1.35.4(February 2026)
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 1 core | 2+ cores |
| RAM | 256 MB | 512 MB - 1 GB |
| Disk | 1 GB | 5+ GB (for attachments) |
| OS | Debian 10+, Ubuntu 20.04+, RHEL 9+ | Debian 12, Ubuntu 24.04, RHEL 9.3+ |
For Docker installation, see Docker Installation Guide.
The fastest and most maintainable deployment method for most use cases.
Infrastructure-as-Code approach for repeatable, scalable deployments.
See: Vaultwarden Ansible Setup
For environments without containerization or with specific compliance requirements.
Update package repositories and install required tools:
# Debian/Ubuntu
sudo apt-get update && sudo apt-get install -y git curl
# RHEL/CentOS/Rocky Linux
sudo dnf install -y git curl
Create a dedicated directory for Vaultwarden data and configuration:
sudo mkdir -p /opt/vaultwarden
sudo chown $USER:$USER /opt/vaultwarden
cd /opt/vaultwarden
Create a docker-compose.yml file with production-ready settings:
services:
vaultwarden:
image: ghcr.io/dani-garcia/vaultwarden:1.35.4
container_name: vaultwarden
restart: unless-stopped
volumes:
- ./vw-data:/data:Z
environment:
- DOMAIN=https://vault.example.com
- DATABASE_URL=/data/db.sqlite3
- SIGNUPS_ALLOWED=false
- ADMIN_TOKEN=CHANGE_ME_TO_SECURE_TOKEN
- WEBSOCKET_ENABLED=true
networks:
- vaultwarden_net
networks:
vaultwarden_net:
driver: bridge
Create a cryptographically secure admin token:
# Generate a 32-character random token
openssl rand -base64 48
Replace CHANGE_ME_TO_SECURE_TOKEN in your configuration with the generated value.
Launch Vaultwarden using Docker Compose:
docker compose up -d
Verify the container is running:
docker compose ps
docker logs vaultwarden
Access the web interface at http://your-server-ip:80 (or your configured port).
⚠️ Important: Before exposing to the internet, configure HTTPS using a reverse proxy. See Security Hardening.
For environments requiring native service deployment without containers.
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y curl sqlite3
# RHEL/CentOS
sudo dnf install -y curl sqlite
Download the latest release from GitHub:
VAULTWARDEN_VERSION="1.35.4"
wget https://github.com/dani-garcia/vaultwarden/releases/download/${VAULTWARDEN_VERSION}/vaultwarden-${VAULTWARDEN_VERSION}-linux-x86_64.tar.gz
tar -xzf vaultwarden-${VAULTWARDEN_VERSION}-linux-x86_64.tar.gz
sudo mv vaultwarden /usr/local/bin/
sudo chmod +x /usr/local/bin/vaultwarden
sudo mkdir -p /var/lib/vaultwarden
sudo chown vaultwarden:vaultwarden /var/lib/vaultwarden
Create /etc/systemd/system/vaultwarden.service:
[Unit]
Description=Vaultwarden Password Server
Documentation=https://github.com/dani-garcia/vaultwarden
After=network.target
[Service]
Type=simple
User=vaultwarden
Group=vaultwarden
Environment="DOMAIN=https://vault.example.com"
Environment="DATA_FOLDER=/var/lib/vaultwarden"
Environment="SIGNUPS_ALLOWED=false"
ExecStart=/usr/local/bin/vaultwarden
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
# Security Hardening
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/vaultwarden
PrivateTmp=true
[Install]
WantedBy=multi-user.target
sudo useradd -r -s /usr/sbin/nologin vaultwarden
sudo systemctl daemon-reload
sudo systemctl enable vaultwarden
sudo systemctl start vaultwarden
sudo systemctl status vaultwarden
Set up Nginx, Apache, Caddy, or Traefik for HTTPS termination.
See: Configuration Guide
See: Security Hardening
Enable email notifications and account recovery:
SMTP_HOST=mail.example.com
SMTP_FROM=vault@example.com
SMTP_PORT=587
SMTP_SECURITY=starttls
Configure regular backups of the /data directory (Docker) or DATA_FOLDER (native).
| Issue | Solution |
|---|---|
| Container won’t start | Check Docker logs: docker logs vaultwarden |
| Database errors | Verify file permissions on data volume |
| WebSocket not working | Ensure reverse proxy supports WebSocket upgrades |
| Email not sending | Verify SMTP credentials and network connectivity |
# View logs
docker logs vaultwarden
journalctl -u vaultwarden -f
# Restart service
docker compose restart
sudo systemctl restart vaultwarden
# Check resource usage
docker stats vaultwarden
systemctl status vaultwarden
Any questions?
Feel free to contact us. Find all contact information on our contact page.