This post is roughly 10 years old; last updated on August 22, 2016! The information presented here may be out of date and inaccurate.
This how-to was updated for Open Media Vault 2.x and 3.x on 22nd August 2016.
I’ve installed Open Media Vault on a HP ProLiant MicroServer G7 N54L and use it as media server for the house. OpenMediaVault (OMV) is a network attached storage (NAS) solution based on Debian Linux.
I use a free Dropbox account to sync photos from mine and my wife’s Android phones and wanted to automate to import of these photo upload into Plex, which is also running on Open Media Vault.
I looked for a Dropbox Plugin for Open Media Vault and found this:
Sadly, at the time of writing, it is unfinished and I didn’t have the time to go and learn the Open Media Vault plugin API.
The Open Media Vault forum does include a Dropbox HOW-TO which is very similar to how I’ve run Dropbox on headless Linux servers in the past. So, I decided to adapt my existing notes to Open Media Vault.
Create a Dropbox share via the OMV WebUI.
Access Right Management -> Shared Folders
I gave my the name “Dropbox”. I know, very original.
Download and extract the latest Dropbox stable release.
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
chown -Rv ${USER}: ~/.dropbox-dist
sudo ln -s ~/.dropbox-dist/dropboxd /usr/local/bin/
Run dropboxd
.
~/.dropbox-dist/dropboxd
You should see output like this:
This client is not linked to any account... Please visit https://www.dropbox.com/cli_link?host_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx to link this machine.
Visit the URL, login with your Dropbox account and link the account. You should see the following.
Client successfully linked, Welcome Web!
dropboxd
will now create a ~/Dropbox
folder and start synchronizing. Stop
dropboxd
with CTRL+C.
Login to the OMV server as root
and sym-link the Dropbox share you created
earlier to the Dropbox directory in the root home directory.
mv ~/Dropbox ~/Dropbox-old
ln -s /media/<UUID>/Dropbox ~/Dropbox
rsync -a -W --progress ~/Dropbox-old/ ~/Dropbox/
If you are using Open Media Vault 2.x (based on Debian wheezy) the you’ll need to create an init script.
To run Dropbox as daemon with init.d. Create /etc/init.d/dropbox
with the
following content.
#!/bin/sh
### BEGIN INIT INFO
# Provides: dropbox
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: false
# Short-Description: dropbox service
### END INIT INFO
DROPBOX_USERS="user_a"
DAEMON=.dropbox-dist/dropboxd
start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
Enable the init.d script.
sudo chmod +x /etc/init.d/dropbox
sudo update-rc.d dropbox defaults
Use /etc/init.d/dropbox start
to start and /etc/init.d/dropbox stop
to stop.
If you are using Open Media Vault 3.x (based on Debian jessie) then you’ll need to create a systemd unit. Create the systemd service file.
sudo nano /lib/systemd/system/dropbox.service
Add this:
[Unit]
Description=Dropbox
After=local-fs.target network.target
[Service]
Type=simple
WorkingDirectory=%h/.dropbox-dist
ExecStart=/usr/local/bin/dropboxd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
User=%I
[Install]
WantedBy=multi-user.target
Enable the dropbox service for a given user.
sudo systemctl enable dropbox@user_a
Start the service.
sudo systemctl start dropbox@user_a
It is recommended to download the official Dropbox client to configure Dropbox and get its status.
wget "http://www.dropbox.com/download?dl=packages/dropbox.py" -O dropbox
sudo chmod 755 dropbox
sudo mv dropbox /usr/local/bin/
You can check on Dropbox status by running the following.
dropbox status
For usage instructions run dropbox help
.
So, the reason for doing all this is that I now have a Dropbox instance running on my home file server and everyday it runs a script, that I wrote, to automatically import new photos into a directory that Plex monitors. I’ll post details about my photo sorting script, Phort, at a later date.