Add dependency when install Pillow at alpine image docker


Pillow needs dependency jpeg-dev, zlib-dev and libjpeg so add this to your Dockerfile before requirement instalation

.....
RUN apk add jpeg-dev zlib-dev libjpeg
COPY ./requirements.txt .
...
And rebuilt the image, hope this helps

Happy Codding 
Salam Ngoprek

Internet speed monitoring using grafana and telegraf in docker


Clone project here https://github.com/susiloharjo/internet-speedtest-docker-grafana-telegraf

Edited for running on raspberry pi

Happy codding

Salam ngoprek

install pihole at docker swarm with nfs share


I’m using portainer

This is my stack

version: "3.7"
services:
  pihole:
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      TZ: 'Asia/Jakarta'
      WEBPASSWORD: 'password'
    volumes:
      - 'pihole.vol:/etc/pihole/'
      - 'pihole.dns:/etc/dnsmasq.d/'

volumes:
  pihole.vol:
    driver: local
    driver_opts:
      type: "nfs"
      o: addr=192.168.0.13,nolock,soft,rw
      device: ":/media/fdisk/container/pihole2/pihole"
      
  pihole.dns:
    driver: local
    driver_opts:
      type: "nfs"
      o: addr=192.168.0.13,nolock,soft,rw
      device: ":/media/fdisk/container/pihole2/dnsmasq.d"

Don’t forget to mkdir pihole and dnsmasq.d in share directory

Install node-red in docker swarm with share data in nfs


I’m using portainer

Please read my note before this for setting nfs

This is my docker stack ‘

version: "3.7"

services:
  node-red:
    image: nodered/node-red:latest
    environment:
      - TZ=Asia/Jakarta
    ports:
      - "1880:1880"
    networks:
      - node-red-net
    volumes:
      - nodered.vol:/data
    user: root:root

volumes:
  nodered.vol:
    driver: local
    driver_opts:
      type: "nfs"
      o: addr=192.168.0.13,nolock,soft,rw
      device: ":/media/fdisk/nodered/"

networks:
  node-red-net:

If you have permission problem when you running your stack in nfs share maybe you can add user:root:root in your stack it works for me

Happy Coding

Salam Ngoprek

Share nfs volume docker swarm


//Docker stack

version: "3.7"
services:
  web:
    image: nginx
    volumes:
      - nginx.vol:/usr/share/nginx/html
    ports:
      - 80:80
    networks:
      - web

networks:
  web:
    driver: overlay
    name: web

volumes:
  nginx.vol:
    driver: local
    driver_opts:
      type: "nfs"
      o: addr=192.168.0.13,nolock,soft,rw
      device: ":/media/fdisk"


// nfs setting /etc/exports

/media/fdisk *(rw,insecure,sync,no_subtree_check,no_root_squash)


I had problem with nfs share if i use vfat partition, and i change to ext4 for partition usb fdisk and now all volumen working properly (dont forget to change media share to 777 if you have problem to read and write)

Source :

https://pimylifeup.com/raspberry-pi-nfs/

https://sysadmins.co.za/docker-swarm-persistent-storage-with-nfs/

https://linuxize.com/post/how-to-mount-an-nfs-share-in-linux/

https://serverfault.com/questions/212178/chown-on-a-mounted-nfs-partition-gives-operation-not-permitted

Membuat Raspberry Pi Cluster part 3 (manage docker swarm menggunakan portainer )


Ok lanjutan dari tulisan saya sebelumnya membuat raspberry pi cluster series, kali ini saya akan membahas penggunaan portainer untuk memanage docker swarm kita.

Apa itu portainer? kalau menurut keterangan di webnya portainer adalah sebuah tools yang digunakan untuk memanage docker dengan cepat dan mudah.

Dan yang serunya adalah aplikasi nya gratis bisa digunakan dengan bebas buat main main cukuplah kan ya :D. Dan portainer sendiri juga menawarkan versi berbayar dan tentu saja dengan support yang berbeda dengan versi gratisnya.

Ok cara mudah install portainer di docker kita cukup ketikkan perintah ini di master cluster kita

curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml 

docker stack deploy --compose-file=portainer-agent-stack.yml portainer 

lengkapnya bisa baca disini , tunggu beberapa saat untuk melihat service nya sudah jalan apa belum ketikkan perintah ini

docker service ls

Kalau sudah running semua tinggal buka browser masuk ke ip master

http:<ip master>:9000

masukkan user dan password dan selesai

Continue reading “Membuat Raspberry Pi Cluster part 3 (manage docker swarm menggunakan portainer )”

Membuat Raspberry Pi Cluster part 1


Mumpung WFH dan ada beberapa raspberry pi yang nganggur dan berserakan gitu aja, akhirnya kepikiran membuat raspberry pi cluster ini, semua raspberry pi ini saya dapatkan tidak dari membeli semuanya saya dapat dari event event yang saya ikuti dan mendapatkan hadiah raspberry pi ini lumayan gratisan 😀 .

Setelah menghitung hitung isi dompet dan kalau beli casenya mahal akhirnya mampirlah ke Mr DIY cari cari kotak plastik ini 🙂 dan dapatlah murah harganya cuman 20 ribuan, beli dua yang satu buat menyimpan koleksi board yang satu dibuat raspi cluster ini, dan satu lagi kenapa lebih milih plastic case seperti ini selain gampang didapat juga gampang di modifikasi, cukup dengan pisau panas 😀 dengan gampang melubangi bagian bagian yang akan kita modifikasi.

Ini adalah part 1 yang akan membahas mengenai cara buatnya part selanjutnya membuat cluster secara softwarenya. Dibawah ini adalah gambaran dari raspi clusternya, silahkan kalau ingin membuat dengan model lain, saya cukup puas dengan hasilnya yang begini.

Beberapa komponen banyak yang available di online market dan yang menurut saya bikin rapi adalah power supplynya yang bentuknya sudah USB dan mampu sampai 8A, input power supply nya juga cukup lebar rentangnya dari 8-35 VDC, untuk cluster ini saya catu dengan supply 12VDC 7A. Selain power supply penting juga menambahkan kipas angin, waktu tulisan ini dibuat saya sedang menunggu kipas yang ada lampunya biar meriah 😀 nanti mungkin saya akan masukkan di tulisan selanjutnya.

Happy Coding …

Salam ngoprek …

Cara install docker dan docker-compose di Raspberry pi


Dibawah ini adalah step by step how to install docker dan docker-compose di raspberry pi

//Jalankan perintah dibawah ini satu persatu

//auto install docker di raspberry pi
curl -sSL https://get.docker.com | sh

//menambahkan docker di usermod pi
sudo usermod -aG docker pi

//install beberapa dependenci

sudo apt-get install -y libffi-dev libssl-dev

sudo apt-get install -y python3 python3-pip

sudo apt-get remove python-configparser

//install docker-compose menggunakan pip
sudo pip3 -v install docker-compose

Silahkan tunggu sampai selesai dan pastikan koneksi internet lancar dan boom docker dan docker-compose sudah terinstall

Happy coding

Salam Ngoprek …

Membuat docker hub di lokal server


Buat Folder yang nantinya akan menampung semua setingan docker kita, disini saya akan memberikan nama docker-registry

didalam docker-registry saya akan membuat dua folder lagi yaitu folder certs dan data, certs sendiri akan menampung sertifikat opensll dan data akan menampung image dari docker yang kita push ke lokal server kita

langkah pertama buat sertifikat openssl dengan cara dibawah ini didalam folder certs

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

kemudian buat file docker-compose.yml dan isi seperti dibawah ini

version: '3'

services:
  registry:
    image: registry:2
    restart: always
    ports:
    - "5000:5000"
    environment:
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      REGISTRY_HTTP_TLS_CERTIFICATE: /opt/certs/ca.crt
      REGISTRY_HTTP_TLS_KEY: /opt/certs/ca.key
    volumes:
      - ./data:/data
      - ./certs:/opt/certs

Setelah selesai jalankan docker-compose up maka server lokal docker hub kita akan jalan di 0.0.0.0:5000, kemudian untuk mengetes apakah server docker ini sudah bisa digunakan kita bisa test dengan cara pull docker dari docker hub kemudian coba push ke server docker kita dengan cara seperti dibawah ini

dockur pull nginx

setelah itu coba tag ke localhost:5000 dengan cara

docker tag nginx localhost:5000/nginx-edit

setelah itu coba push ke localhost:5000 dengan cara

docker push localhost:5000/nginx-edit

kalau berhasil maka bisa kita lihat didalam data 
kalau docker yang sudah kita push masuk kesitu

Sekian tutorial kali ini selamat mencoba

Salam Ngoprek …

Docker compose nginx


Catatan setup nginx di docker supaya bisa ngeload volume diluar file directorynya docker

Buat docker-compose.yml isikan baris perintah dibawah

version: '2'

services:

nginx:

image: nginx:latest

container_name: production_nginx

volumes:

- /home/onix/sites:/usr/share/nginx/html:z #directory internal:directory docker

ports:

- '8080:80'

Udah gitu aja mudah bukan

Happy Coding ..

Salam ngoprek