September 16, 2018

How to Access Files on DigitalOcean Spaces from Droplets via CLI

Object Storage like DigitalOcean Spaces are very powerful. However, being an external service also comes with its share of inconvenience.

What if I told you that we can interact with it like a local directory if we just mount it to our droplets? Here's how.

1. Install S3FS FUSE

The good thing about DigitalOcean Space is that it is S3-compatible. This enables a lot of S3 tools support out of the box. One fantastic tool we'll use here is s3fs.

sudo apt-get update
sudo apt-get install s3fs

Once that is done, let's setup your DigitalOcean Space credentials:

echo <space_key>:<space_token> > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

2. Managing User Permissions

By default, DigitalOcean Space is mounted for root user. Because of that, any files or folders that are created via the web control panel is not accessible by non-root users after it's mounted, which is not ideal.

To make sure that we can access it via a non-root user, we need to update the config file:

sudo nano /etc/fuse.conf

Uncomment the part that says:


Next, find out your user's details by typing the following command:


You'll see an output like this:

uid=1000(forge) gid=1000(forge) groups=1000(forge)…

In thise case, my user is forge, so I've noted down the uid and gid of the user for the next step.

3. Mount DigitalOcean Space

First, make a mounting folder:

mkdir <folder>

Then, let's mount the Space to our new folder:

s3fs <space_name> <folder> -o url=https://<url> -o use_cache=/tmp -o allow_other -o use_path_request_style -o uid=<uid> -o gid=<gid>

Or if you want to mount a subfolder instead of the whole DO Space, you can do the following:

s3fs <space_name>:/<space_folder> <folder> -o url=https://<url> -o use_cache=/tmp -o allow_other -o use_path_request_style -o uid=<uid> -o gid=<gid>

Now you should be able to do the usual stuff like cd or ls or cp files etc like it's inside the local harddisk. <3

4. Unmounting

And if you ever need to unmount the Space, it's also very easy:

fusermount -u <folder>

That's all!


That's it! Now you can manage your DigitalOcean Spaces just like a local directory.


Hello! My name is Jian Jye and I work on Laravel projects as my main job. If my article was helpful to you, a shoutout on Twitter would be awesome! I'm also available for hire if you need any help with Laravel. Contact me.