Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Rclone systemd user service

rclone systemd service

Preparation

This service will use the same remote name you specified when using rclone config create. If you haven't done that yet, do so now.

Next, create the mountpoint for your remote. The service uses the location ~/mnt/<remote> by default.

mkdir ~/mnt/dropbox

The --allow-other option is required in order to work in many desktop environments. This flag must be enabled by adding user_allow_other to /etc/fuse.conf.

Adding the service

Save the rclone@.service file in ~/.config/systemd/user/ Make sure you include the @. This is required to work.

As your normal user, run:

systemctl --user daemon-reload

Using the service

You can now start/enable each remote by using rclone@<remote>

systemctl --user enable rclone@dropbox
systemctl --user start rclone@dropbox
# User service for Rclone mounting
#
# Place in ~/.config/systemd/user/
# File must include the '@' (ex rclone@.service)
# As your normal user, run
# systemctl --user daemon-reload
# You can now start/enable each remote by using rclone@<remote>
# systemctl --user enable rclone@dropbox
# systemctl --user start rclone@dropbox
[Unit]
Description=rclone: Remote FUSE filesystem for cloud storage config %i
Documentation=man:rclone(1)
After=network-online.target
Wants=network-online.target
AssertPathIsDirectory=%h/mnt/%i
[Service]
Type=notify
ExecStart= \
/usr/bin/rclone mount \
--config=%h/.config/rclone/rclone.conf \
--vfs-cache-mode writes \
--vfs-cache-max-size 100M \
--log-level INFO \
--log-file /tmp/rclone-%i.log \
--umask 022 \
--allow-other \
%i: %h/mnt/%i
ExecStop=/bin/fusermount -u %h/mnt/%i
[Install]
WantedBy=default.target
@kabili207
Copy link
Author

kabili207 commented Mar 7, 2022

Removing MemoryDenyWriteExecute=true solved my problem.

I've removed this since it seems many people are having this issue

@stuie1952
Copy link

stuie1952 commented Mar 7, 2022

here is my script. it works for me.
cheers

[Unit]

Description=rclone: Remote FUSE filesystem for cloud storage config %i

Documentation=man:rclone(1)

After=network-online.target

Wants=network-online.target

AssertPathIsDirectory=%h/cloud/

[Service]

Type=notify

ExecStartPre=/bin/mkdir -p %h/cloud/%i

ExecStart= \

/usr/bin/rclone mount \

--config=%h/.config/rclone/rclone.conf \

--allow-non-empty \

--vfs-cache-mode writes \

--vfs-cache-max-size 100M \

--dir-cache-time 72h \

--vfs-read-chunk-size-limit 128M \

--vfs-read-chunk-size-limit off \

--log-level DEBUG \

--log-file /tmp/rclone-%i.log \

--umask 022 \

--allow-other \

%i: %h/cloud/%i

ExecStop=/bin/fusermount -uz %h/cloud/%i

ExecStop=/bin/rmdir %h/cloud/%i

[Install]

WantedBy=default.target

@lilws
Copy link

lilws commented Mar 7, 2022

Thanks, since last time too busy at work so I can't return here. On that date, I moved the service to different install target and it works. I do this on xpenology DSM 7.0.1. And the install location is multi-user.target, I've just moved it into syno-high-priority... and it works. But then I must figured how to run this service after synology mounted all HDDs, if not, rclone will complain it can't find the location to mount.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment