Introduction to CLI-based Cloud Storage on Qubes OS
Qubes OS is a security-focused distribution that isolates tasks into lightweight virtual machines (qubes). When you need to interact with cloud storage, a Command-Line Interface (CLI) tool offers both flexibility and scriptability, fitting neatly into Qubes’ compartmentalized workflow. In this article we compare and recommend the best CLI-enabled cloud storage services for Qubes OS, outline how to install and use each from the CLI, and highlight common pitfalls and troubleshooting tips.
Why Choose CLI Tools on Qubes OS?
- Automation: Easily script uploads, downloads, and sync tasks.
- Minimal Dependencies: Many CLI clients are standalone binaries or Python scripts—ideal for lean TemplateVMs.
- Isolation: Run each tool in its own qube, reducing cross-service exposure.
- Flexibility: Combine with cron, systemd timers, or custom shell scripts.
Top Recommended Services
- pCloud – Zero-knowledge encryption, dedicated Linux CLI
pcloudcmd. - MEGA – End-to-end encryption, official
mega-cmd. - Proton Drive – Privacy-focused, WebDAV interface for CLI clients.
- Filen – Zero-knowledge, official
filen-cli. - Tresorit – Enterprise-grade encryption, accessible via
rclone. - Icedrive – Zero-knowledge, official
icedriveCLI FUSE. - Storj DCS – Decentralized, official
uplinkCLI. - Backblaze B2 – Affordable object storage, official
b2CLI.
Comparison Table
| Service | CLI Client | Encryption | Free Tier | Price (from) | Qubes OS Ready |
|---|---|---|---|---|---|
| pCloud | pcloudcmd | Client-side (optional) | 10 GB | €4.99/mo (500 GB) | Yes |
| MEGA | mega-cmd | End-to-end | 20 GB | €4.99/mo (400 GB) | Yes |
| Proton Drive | WebDAV / rclone | End-to-end | 1 GB | €4.99/mo (200 GB) | Experimental |
| Filen | filen-cli | End-to-end | 10 GB | 4.99/mo (250 GB) | Yes |
| Tresorit | rclone | End-to-end | 3 GB | 10.42/mo (200 GB) | Yes |
| Icedrive | icedrive | Client-side | 10 GB | €1.67/mo (150 GB) | Yes |
| Storj DCS | uplink | Client-side | — | 4.00/TiB-mo | Yes |
| Backblaze B2 | b2 | Server-side | 10 GB | 0.005/GB-mo | Yes |
Detailed CLI Usage and Setup
1. pCloud with pcloudcmd
- Install from TemplateVM:
sudo dnf install pcloudcmdor download from pCloud. - Authenticate:
pcloudcmd --auth
- Sync a local folder to pCloud:
pcloudcmd --upload /home/user/Documents /pCloud/Documents
- Common issues:
sslerrors—installca-certificates. Watch out for outdated TLS ciphers in older templates.
2. MEGA with mega-cmd
- Install:
sudo dnf install megacmd
- Login:
mega-login your@email.com
- Upload file:
mega-put ~/Downloads/secret.txt /Root/Secure
- Problems: mega-cmd daemon conflicts—use
mega-stopbefore config changes.
3. Proton Drive via WebDAV / rclone
- Configure rclone with Proton Drive (WebDAV):
rclone config # new remote: proton # storage: webdav # url: https://webdav.proton.me/drive # vendor: other # user: your@proton.me # pass:
- Mount or sync:
rclone mount proton: ~/ProtonDrive # or rclone sync ~/Backup proton:Backups
- Limitations: WebDAV can be slow no official CLI support is experimental.
4. Filen with filen-cli
- Download
filen-clifrom filen.io/cli and make executable. - Authenticate:
filen-cli login # enter e-mail, password, two-factor code
- Upload folder:
filen-cli upload ~/Documents /Documents
- Watch out: Node.js dependency—ensure you have matching libstdc .
5. Tresorit via rclone
- rclone configuration:
rclone config # new remote: tresorit # type: https://tresorit.com/rclone # client_id, client_secret from Tresorit App console
- List vaults:
rclone lsd tresorit:
- Common issues: API permission errors—ensure scopes include file.read and file.write.
6. Icedrive with icedrive CLI
- Download
icedrivebinary from icedrive.net/cli and place in/usr/local/bin. - Login:
icedrive login # follow interactive prompt
- Mount encrypted drive:
icedrive mount ~/IceDrive
- Problems: FUSE versions—use matching
fuse-libsin TemplateVM.
7. Storj DCS with uplink
- Install:
sudo dnf install uplink
- Configure
uplink:
uplink setup # enter API key, satellite address, encryption passphrase
- Upload:
uplink cp ~/wallet.pdf sj://mybucket/wallet.pdf
- Note: Watch for clock skew ensure VM clock is synced (e.g.,
chronyd).
8. Backblaze B2 with b2
- Install Python CLI:
pip3 install --user b2
- Authorize:
b2 authorize-account
- Create bucket and upload:
b2 create-bucket mybucket allPrivate b2 upload-file mybucket ~/video.mp4 video.mp4
- Note: Network timeouts—use
--max-download-speedor--max-upload-speedflags.
Which Service to Choose?
- If you need maximum privacy with official Linux support: pCloud or Icedrive.
- For end-to-end encryption and generous free storage: MEGA.
- For enterprise-grade sync via trusted APIs: Tresorit with
rclone. - If you prefer decentralized object storage: Storj DCS.
- On a tight budget for archival: Backblaze B2.
Troubleshooting Common Issues
- SSL/TLS errors: Install
ca-certificatesand update OpenSSL in your TemplateVM. - FUSE mounting fails: Match FUSE library versions between TemplateVM and AppVM.
- Rate limits or 401 unauthorized: Refresh tokens or re-authenticate in each qube.
- Clock skew: Ensure NTP is running (
sudo systemctl enable chronyd). - Dependency conflicts: Use minimal TemplateVMs and install only the CLI tool its libs.
Conclusion
Choosing the right CLI-enabled cloud storage for Qubes OS depends on your threat model, budget, and workflow. Whether you opt for a zero-knowledge service like pCloud or a decentralized platform like Storj, the CLI approach integrates seamlessly into Qubes’ isolated qubes, giving you both security and scriptable power. Follow the setup steps above in dedicated qubes, and refer to each provider’s documentation for advanced features and updates.
Be the first to leave a comment