Get Qubes SDP running in 5 minutes.
✅ Running Qubes OS 4.1 or later ✅ At least 8GB RAM (16GB recommended) ✅ 50GB free disk space ✅ Internet connection (for template downloads)
Choose one method:
Option A: Git Clone
# In a qube (e.g., work or personal):
cd ~/Downloads
git clone https://github.com/yourusername/qubes-sdp.gitOption B: Download ZIP
# Download and extract
cd ~/Downloads
wget https://github.com/yourusername/qubes-sdp/archive/main.zip
unzip main.zip
mv qubes-sdp-main qubes-sdp# In dom0 terminal:
cd /tmp
qvm-run --pass-io <qube-name> 'tar -C /home/user/Downloads/qubes-sdp -c .' | tar -xReplace <qube-name> with the qube where you downloaded (e.g., work).
# Still in dom0:
cd /tmp/qubes-sdp
# Option 1: Simple setup (recommended for first time)
./qubes-setup.sh
# Option 2: Test first with dry-run
./qubes-setup.sh --dry-run
# Then run for real:
./qubes-setup.shThat's it! Setup creates 4 qubes:
- work - Your daily driver (2GB RAM, restricted network)
- vault - Air-gapped sensitive storage (1GB RAM, NO network)
- anon - Anonymous Tor qube (1GB RAM)
- untrusted - Disposable risky content handler (1GB RAM)
Check everything was created:
# List SDP qubes
qvm-ls | grep -E "(work|vault|anon|untrusted)"
# Check vault has no network (should be empty)
qvm-prefs vault netvm
# Check work firewall rules
qvm-firewall work list
# Run status check
./qubes-status.shqvm-start workOr click "work" in Qubes menu.
From work qube:
- Right-click file
- Select "Copy to other AppVM"
- Choose "vault"
Or command line:
qvm-copy-to-vm vault /path/to/file# Open file in disposable
qvm-open-in-dvm suspicious-file.pdf
# Run browser in disposable
qvm-run --dispvm untrusted firefox- Copy example config:
cp examples/journalist-config.conf qubes-config.conf- Edit as needed:
vi qubes-config.conf- Run advanced setup:
./qubes-setup-advanced.shSplit-GPG (for encrypted email):
# Edit config
ENABLE_SPLIT_GPG="true"
# Re-run setup
./qubes-setup-advanced.shSplit-SSH (for development):
ENABLE_SPLIT_SSH="true"
./qubes-setup-advanced.shAutomated Backups:
AUTO_BACKUP="true"
BACKUP_SCHEDULE="0 2 * * *" # Daily at 2 AM
./qubes-setup-advanced.sh# Journalist workflow
make -f Makefile.qubes setup-preset-journalist
# Developer workflow
make -f Makefile.qubes setup-preset-developer
# Minimal (low RAM)
TOPOLOGY_PRESET="custom"
# Edit config for minimal resources
./qubes-setup-advanced.sh# Quick status
./tools/qubes-status.sh
# Interactive dashboard
./tools/qubes-dashboard.sh
# Firewall analysis
./tools/qubes-firewall-analyzer.sh# Update all templates
./tools/qubes-template-manager.sh update
# Clean package cache
./tools/qubes-template-manager.sh clean# Create backup
make -f Makefile.qubes backup
# Verify backup
./tools/qubes-backup-validator.sh
# Restore from backup
./tools/qubes-restore.sh /var/backups/qubes-sdp/backup-20240101# Install missing template
qubes-dom0-update --enablerepo=qubes-templates-itl fedora-40-minimal
# Or enable auto-install
# Edit qubes-config.conf:
AUTO_INSTALL_TEMPLATES="true"# Reduce memory allocations
# Edit qubes-config.conf:
WORK_MEMORY="1024"
VAULT_MEMORY="512"
ANON_MEMORY="512"# Anon qube automatically falls back to sys-firewall
# To install Whonix:
qubes-dom0-update --enablerepo=qubes-templates-community whonix-gateway-17 whonix-workstation-17# Start it
qvm-start work
# Check if it exists
qvm-ls work
# Check logs
journalctl -u qubes-vm@work-
Always test with dry-run first
./qubes-setup-advanced.sh --dry-run
-
Backup vault regularly
make -f Makefile.qubes backup
-
Keep templates updated
make -f Makefile.qubes template-update
-
Never connect vault to network
# Verify it's air-gapped: qvm-prefs vault netvm # Should be empty
-
Use untrusted for risky files
qvm-open-in-dvm suspicious.pdf
Alt+F3- Qubes menuCtrl+Alt+Del- Lock screen- Drag window border to move between qubes
If you have limited RAM:
# Close unused qubes
qvm-shutdown work
# Reduce allocations
# In config: set all memory to 512 or 1024
# Disable auto-start
WORK_AUTOSTART="false"- Full docs: README.md
- Wiki: wiki/
- Configuration: wiki/pages/configuration.md
- Troubleshooting: wiki/pages/troubleshooting.md
- FAQ: wiki/pages/faq.md
# Setup
./qubes-setup.sh # Simple
./qubes-setup-advanced.sh # Advanced
make -f Makefile.qubes setup # Via make
# Status
./tools/qubes-status.sh # Status
./tools/qubes-dashboard.sh # Dashboard
qvm-ls # List all qubes
# Management
qvm-start work # Start qube
qvm-shutdown work # Stop qube
qvm-prefs work # Show settings
qvm-firewall work list # Firewall rules
# Backup
make -f Makefile.qubes backup # Create
./tools/qubes-backup-validator.sh # Verify
./tools/qubes-restore.sh <path> # Restore
# Templates
./tools/qubes-template-manager.sh update # Update
make -f Makefile.qubes template-update # Via make-
Read the documentation
-
Set up Split-GPG/SSH
-
Configure backups
-
Explore tools
-
Join community
- Report issues
- Share configurations
- Contribute improvements
Save this for easy reference:
# Status
./tools/qubes-status.sh
# Start qube
qvm-start <name>
# Copy to vault
qvm-copy-to-vm vault <file>
# Disposable VM
qvm-run --dispvm untrusted firefox
# Backup
make -f Makefile.qubes backup
# Update templates
make -f Makefile.qubes template-update
# Firewall rules
qvm-firewall work list
# Health check
./qubes-setup-advanced.sh --health-checkWelcome to Qubes SDP! 🎉
You now have a secure, isolated work environment. Explore the documentation to learn more about advanced features.
Need help? Check the FAQ or Troubleshooting Guide.