Berawal dari kisah sekelas Google yang tadi malam bisa down gara-gara kehabisan storage, saya tidak bisa mengakses file di Google Drive dan akhirnya beberapa pekerjaan terhambat. ๐Ÿ˜” ๐Ÿค•

Tampilan Deploy Owncloud

Belajar dari kejadian tersebut, akhirnya saya berusaha untuk mencari cara agar bisa membuat cloud storage sendiri, akhirnya menemukan satu perangkat lunak CMS(Content Management System) berbagi berkas gratis dan bebas seperti Google Drive/Dropbox bernama Owncloud.

Dengan menggunakan owncloud, kita dapat mengatur layanan cloud storage mulai dari user, group user, limited akses, size quota user dan lain sebagainya. Owncloud bisa kita jadikan sebagai salah satu bahan testing untuk cloud computing dikarenakan owncloud termasuk salah satu kategori dari model layanan cloud computing.

Deploy OwnCloud

Seperti biasa, agar mudah kita akan menggunakan docker-compose. Pada dasarnya docker-compose adalah sebuah tool untuk menjalankan aplikasi docker yang menggunakan banyak container, yang dibagi-bagi menjadi/sebagai sebuah services.

Oh iya, sebelumnya saya akan menjabarkan spec service/docker image apa saja yang akan kita gunakan, berikut daftarnya:

Petama kita akan buat direktori terlebih dahulu:

mkdir owncloud-docker
cd owncloud-docker

Lalu kita bikin file konfigurasi environment dan file docker-compose.yml, sesuaikan dengan preferensi teman-teman ya:

cat << EOF > .env
OWNCLOUD_VERSION=10.6
OWNCLOUD_DOMAIN=localhost:8080
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
HTTP_PORT=8080
EOF

touch docker-compose.yml

Kemudian docker-compose.yml edit dan sesuaikan. Saya ada sample dibawah dengan integrasi traefik:

version: '3.6'

volumes:
  files:
    driver: local
  mysql:
    driver: local
  backup:
    driver: local
  redis:
    driver: local

services:
  owncloud:
    image: owncloud/server:${OWNCLOUD_VERSION}
    restart: always
    ports:
      - ${HTTP_PORT}:8080
    depends_on:
      - db
      - redis
    environment:
      - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN}
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_NAME=owncloud
      - OWNCLOUD_DB_USERNAME=owncloud
      - OWNCLOUD_DB_PASSWORD=owncloud
      - OWNCLOUD_DB_HOST=db
      - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME}
      - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD}
      - OWNCLOUD_MYSQL_UTF8MB4=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=redis
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - files:/mnt/data
    networks:
      - web
      - owncloud
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:own.example.com
      - traefik.port=8080
      - traefik.docker.network=web

  db:
    image: webhippie/mariadb:latest
    restart: always
    environment:
      - MARIADB_ROOT_PASSWORD=owncloud
      - MARIADB_USERNAME=owncloud
      - MARIADB_PASSWORD=owncloud
      - MARIADB_DATABASE=owncloud
      - MARIADB_MAX_ALLOWED_PACKET=128M
      - MARIADB_INNODB_LOG_FILE_SIZE=64M
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - mysql:/var/lib/mysql
      - backup:/var/lib/backup
    networks:
      - owncloud

  redis:
    image: webhippie/redis:latest
    restart: always
    environment:
      - REDIS_DATABASES=1
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - redis:/var/lib/redis
    networks:
      - owncloud

networks:
  web:
    external: true
  owncloud:

Mari kita deploy dengan cara seperti biasa:

docker-compose up -d

Coba kita akses ke own.example.com atau dengan IP Address server:8080 maka cloud storage kita sudah jadi! Tampilan Deploy Owncloud

Untuk login pertama, seperti yang didefinisikan di file .env tadi, yaitu admin admin jangan lupa untuk mengubahnya dan tambahkan user lainnya juga.

Oh iya, owncloud juga tersedia versi mobile, jika teman-teman menggunkan smarphone android ada di Playstore.

Tampilan Deploy Owncloud

Lumayankan teman-teman? Saya bisa bebas upload file sesuka saya selama storage server belum penuh. ๐Ÿฅณ