Skip to content

Instantly share code, notes, and snippets.

@Gyarbij
Last active November 24, 2024 21:31
Show Gist options
  • Save Gyarbij/4dc1fe668b6e7d804b490bebddd3ac80 to your computer and use it in GitHub Desktop.
Save Gyarbij/4dc1fe668b6e7d804b490bebddd3ac80 to your computer and use it in GitHub Desktop.
Steps and example RClone systemd with mounted Google Drive or OneDrive for use with Plex en Jellyfin and other similar use-cases. Replace 'nano' with vi or your editor of choice if not on distro with nano included or because you like misery... your kinks are yours :)

CHANGE LEGEND: (you MUST replace these in the service file)

  • USERNAME = your actual username e.g. gyarbij
  • I recommend changing rclone.service to the name of eache drive if you have multiple mount points.
  • If you already have rclone mounts check Step #2 then skip to Step #4 and place your mount point at #MOUNT

Steps for RClone systemd to autostart on boot

  1. Install fusermount (if not already installed)
sudo apt install fuse3
  1. Allow non-root users to mount filesystems
sudo nano /etc/fuse.conf

Uncomment (remove the) # from the line: allow_other

  1. Make the requisite directories for mount and cache.
sudo mkdir /mnt/rclonecache

or do all directories at once. You will need to chown regardless.

sudo mkdir /mnt/{gdrive,rclonecache}
sudo chown -R USERNAME:USERNAME /mnt/{gdrive,rclonecache}
  1. Create the service(s):
sudo nano /etc/systemd/system/rclone.service
  1. Copy the below BASIC example to the service file created/opened above:
[Unit]
Description=RClone Service
Wants=network-online.target
After=network-online.target
AssertPathIsDirectory=/mnt/gdrive

[Service]
Type=notify
Environment=RCLONE_CONFIG=/home/USERNAME/.config/rclone/rclone.conf #check USERNMAE
RestartSec=10
ExecStart=/usr/bin/rclone mount gdrive: /mnt/gdrive \  #MOUNT
   --allow-other \
   --dir-cache-time 5000h \
   --syslog \
   --poll-interval 10s \
   --umask 0000 \
   --user-agent GoogleDrive \
   --cache-dir=/mnt/rclonecache \
   --vfs-cache-mode full \
   --volname gdrive \ #MOUNT
   --vfs-cache-max-size 60G \
   --vfs-read-chunk-size 128M \
   --vfs-read-ahead 2G \
   --vfs-cache-max-age 5000h \
   --bwlimit-file 100M

ExecStop=/bin/fusermount -uz /mnt/gdrive #MOUNT
Restart=on-failure
User=USERNAME #change
Group=USERNAME #change

[Install]
WantedBy=multi-user.target
  1. Save and then exit the file
ctrl+o | ctrl+x
  1. Run the follwoing commands in order to enable and then start the service:
sudo systemctl daemon-reload
sudo systemctl enable rclone
sudo systemctl start rclone
  1. To see if the service is running:
systemctl status rclone
  1. To see if the drive is mounted run:
df -H
  1. Reboot and repeat step 7 for a final sanity check!

  2. Prevent Docker from starting before mounts:

sudo systemctl edit docker.service
[Service]
#ExecStartPre=/bin/sleep 30
RequiresMountsFor=/mnt/gdrive /media/odrive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment