Halo, kalau kamu merasa tulisan saya ngebantu kamu, kamu bisa ucapkan terima kasih lewat saweria .

If you feel this website help you, you can donate at saweria .



What I Used in This Tutorial

  1. Ubuntu Server 22.04 LTS

  2. Docker version 24.0.2

  3. Gohttpserver - HTTP Static File Server

  4. RClone v1.62.2


Install Rclone Docker Volume Plugin

You can check rclone docker volume plugin documentation

#install fuse
sudo apt-get -y install fuse  

#IT WAS NOT /var/lib/docker/plugins/ but /var/lib/docker-plugins 
sudo mkdir -p /var/lib/docker-plugins/rclone/config
sudo mkdir -p /var/lib/docker-plugins/rclone/cache 

# install rclone plugin
docker plugin install rclone/docker-volume-rclone:amd64 args="-v" --alias rclone --grant-all-permissions
docker plugin list

# enable rclone plugin
docker plugin enable rclone:latest
Docker Plugin Installation

Docker Plugin Installation


Setup S3 Storage on Rclone

It was easier to setup in our server first, then copy the config to /var/lib/docker-plugins/rclone/config

You can follow my tutorial Setup rclone for Google Storage

Or you can follow tutorial below

  1. After install rclone apt install rclone, create new directory mkdir ~/.config/rclone

  2. Create new file vim ~/.config/rclone/rclone.conf fill it with

[spaces]
type = s3
provider = DigitalOcean
env_auth = false
access_key_id = your-DO-KEY-ID
secret_access_key = your-SECRET-ACCESS-KEY
endpoint = sgp1.digitaloceanspaces.com
acl = private

#use alias to serve only specific bucket and specific folder
[bucket]
type = alias
remote = spaces:your-Specific-Bucket-Name/
  1. Test config rclone dengan rlone lsd bucket:

  2. Copy rclone.conf to docker-plugin config sudo cp ~/.config/rclone/rclone.conf /var/lib/docker-plugins/rclone/config/

Rclone Config Works. It Consist ‘images & master’ Directory

Rclone Config Works. It Consist ‘images & master’ Directory


Create Docker-Compose Gohttpserver

  1. create new file docker-compose.yml
version: '3.8'

services:
  gohttpserver:
    container_name: gohttpserver-ctr
    image: codeskyblue/gohttpserver
    ports: [8081:8000]
    volumes: [workdir:/app/public]
    #give it basic auth with
    # username -> username 
    # password -> assword
    command:
      - '--auth-type=http'
      - '--auth-http=username:password'
    networks: [gohttpserver-net]

networks:
  gohttpserver-net:

volumes:
  workdir:
    driver: rclone
    driver_opts:
      remote: bucket:
      allow_other: 'true'
      vfs_cache_mode: full
      poll_interval: 0
  1. Run with docker-compose up -d
Your File Server With S3 Storage Was Ready To Serve

Your File Server With S3 Storage Was Ready To Serve