Singkat cerita ini kebutuhan client:

  1. File share static dengan protokol http. Kenapa http? karena IOT device nya belum bisa baca https. Kenapa static? karena file nya ga akan berubah
  2. Pake domain biar gampang manggilnya
  3. Orang lain di luar si client ga boleh ada yang nge-list file

Solusi nya:

  1. Saya pake image dari halvernus - static file server
  2. Simpan file yang dibutuhkan client di folder, misal /home/ipang/static-file-server/ lalu menjalankan
docker run -d \
 -v /home/ipang/static-file-server/:/web \
 -p 77:8080 \
 -c SHOW_LISTING=false \
 --name staticfile-ctr \
  halverneus/static-file-server:latest

Sebenernya kan bisa tinggal config di nginx buat root /home/ipang/static-file-server, udah beres. Pake docker karena pake fitur isolization nya & juga image halvernus - static file server, gampang dan customizable

Berikut contoh file swarm nya:

version: '3.3'

services:
  staticfile:
    image: halverneus/static-file-server:latest
    networks:
      - traefik-public
    environment:
      - FOLDER=/content
      - SHOW_LISTING=false
      - URL_PREFIX=/rahasia
    volumes:
      - type: bind
        source: /home/username/test-staticfile
        target: /content
    deploy:
      labels:
        - traefik.enable=true
        - traefik.docker.network=traefik-public
        - traefik.constraint-label=traefik-public
        - traefik.http.routers.staticfile-http.rule=Host(`staticfile.domain.com`)
        - traefik.http.routers.staticfile-http.entrypoints=http
        - traefik.http.middlewares.secure-headers-staticfile.headers.customresponseheaders.x-robots-tag=noindex, nofollow, nosnippet, noarchive, noimageindex, notranslate
        - traefik.http.middlewares.secure-headers-staticfile.headers.customresponseheaders.x-content-type-options=nosniff
        - traefik.http.middlewares.secure-headers-staticfile.headers.customresponseheaders.x-xss-protection= 1; mode=block
        - traefik.http.routers.staticfile-http.middlewares=secure-headers-staticfile
        - traefik.http.services.staticfile.loadbalancer.server.port=8080
networks:
  traefik-public:
    external: true    
Test Lewat Browser

Test Lewat Browser

Test Lewat Terminal

Test Lewat Terminal