Dropbox as a service?

I have been wrenching on my Qubes 4.2.0rc5 system and I am pleased with the overall progress. Yesterday I had a conversation in Discord, took a screen shot of a bit of it, then figured out how to get it out of dom0 so I could forward it via Signal. A red letter day - that’s the first “work” I’ve done using the system.

I built a template that has my usual stuff in it:

  • Authy
  • Chrome
  • Hunchly
  • Maltego
  • Signal

As I dislike and distrust Discord, I put it in a qube all by itself where it can’t cause any trouble. After a short time I realized Authy should have the same isolation treatment. Overall this is going good.

But now I come to Dropbox. I use this over all the other cloud file sharing things because it runs on every platform, behaves on headless Linux, and the only trouble it gives is the extraordinarily chatty local sync. Normally any major effort of mine gets a dedicated email protected with Authy, a Dropbox, and previously I’d make a VirtualBox VM for the job.

Dropbox on Debian distros as a service is very easy - you just need a service file for systemd, looks like this.

[Unit]
Description=Dropbox Service
After=network.target

[Service]
Type=simple
User=whatever
ExecStart=/home/whatever/.dropbox-dist/dropboxd

[Install]
WantedBy=default.target

All the binaries go in ~/.dropbox-dist, so this fits into an AppVM, but I’m not seeing how to make it persistent with the start of the qube. Right now it’s running from command line under tmux, which isn’t the worst thing, but I want this setup to be as slick as my existing desktop.

Any hints on how to accomplish this the Qubes way?

You mean how to make systemd service file persistent or what are you talking about?

The binaries for Dropbox live in the user’s home directory, not some system folder. So yes, a systemd service is what I do now, but I’m not seeing how to do that with an AppVM - persistent home, but the system stuff is tied to the parent template.

I guess maybe I can make a “blind” service in the Debian template - it’ll try to start no matter what, but will only succeed when the shell account for the AppVM has installed Dropbox.

You can use user systemd service:
https://wiki.archlinux.org/title/Systemd/User
The systemd user service files are stored in user home directory.

There is also a Qubes way - use bind-dirs:

Or you can also copy the systemd service file and start it in /rw/config/rc.local script.

3 Likes