Saturday, June 21, 2025

Perhatikan Volume Docker dan Jangan dihapus!

Sertifikat yang diterbitkan oleh Let's Encrypt disimpan di dalam volume Docker. Jika Anda membangun ulang nginx-proxy atau nginx-proxy-acme dengan docker-compose down -v, semua volume yang tidak didefinisikan sebagai external: true akan dihapus, termasuk volume tempat sertifikat disimpan. Ini akan menyebabkan sertifikat Anda hilang dan Anda harus meminta ulang, berpotensi menabrak rate limit lagi.




Memahami Cara Kerja Volume dan Sertifikat

Dalam konfigurasi docker-compose.yml Anda, ada bagian volumes di bagian paling bawah:

YAML
volumes:
  certs:
  vhost.d:
  html:
  # ... volume lain

Ini adalah volume bernama (named volumes) yang dibuat dan dikelola oleh Docker.

  • certs: Volume inilah tempat nginx-proxy-acme menyimpan semua sertifikat SSL yang berhasil diterbitkan oleh Let's Encrypt.
  • vhost.d: Digunakan oleh nginx-proxy untuk konfigurasi tambahan per virtual host.
  • html: Digunakan oleh nginx-proxy untuk halaman default atau custom.

Kapan Volume Ini Dihapus?

Volume bernama seperti certs tidak akan dihapus secara otomatis ketika Anda menjalankan docker-compose down (tanpa -v). Mereka hanya akan dihapus jika Anda secara eksplisit menambahkan -v (yaitu docker-compose down -v) atau jika Anda menghapusnya secara manual (docker volume rm <volume_name>).


Strategi yang Benar Saat Membangun Ulang

Jika Anda hanya mengubah kode aplikasi (PHP, Flask, React) atau konfigurasi spesifik aplikasi Anda (seperti Dockerfile di php/, backend/, frontend/, atau nginx.conf internal mereka), Anda tidak perlu menghapus volume certs.

Begini cara yang benar untuk membangun ulang tanpa kehilangan sertifikat:

  1. Jika Anda hanya mengubah source code aplikasi atau Dockerfile spesifik untuk service tersebut (misalnya backend, frontend, php-app):

    • Anda bisa menargetkan hanya service tersebut untuk dibangun ulang dan dijalankan:
      Bash
      docker-compose up -d --build <nama_service_yang_berubah>
      
      Contoh: docker-compose up -d --build backend Ini akan membangun ulang image backend dan me-restart container ebook_backend.
  2. Jika Anda mengubah konfigurasi docker-compose.yml yang memengaruhi service tertentu (misalnya, menambahkan variabel lingkungan di backend):

    • Anda bisa me-recreate service tersebut tanpa membangun ulang image (jika Dockerfile tidak berubah) atau membangun ulang image jika Dockerfile juga berubah:
      Bash
      docker-compose up -d --build <nama_service_yang_berubah> --force-recreate
      
      Contoh: docker-compose up -d --build backend --force-recreate
  3. Jika Anda mengubah konfigurasi nginx-proxy atau nginx-proxy-acme (misalnya menambahkan subdomain baru di VIRTUAL_HOST atau LETSENCRYPT_HOST):

    • Anda perlu me-restart kedua service ini agar mereka membaca konfigurasi baru dan memicu permintaan sertifikat jika diperlukan. Anda tidak perlu menghapus volumenya.
      Bash
      docker restart nginx-proxy-acme
      docker restart nginx-proxy
      
    • Kemudian, pantau log nginx-proxy-acme untuk memastikan sertifikat diterbitkan atau diperbarui tanpa masalah.
  4. Kapan Menggunakan docker-compose down -v (Menghapus Volume)?

    • Hanya jika Anda ingin menghapus semua data persisten dan memulai dari nol (misalnya, saat debugging masalah inisialisasi database atau jika volume sertifikat korup).
    • Jika Anda menggunakan docker-compose down -v, siapkan diri untuk menghadapi rate limit Let's Encrypt lagi jika Anda segera mencoba meminta sertifikat untuk domain yang sama. Ini harus menjadi opsi terakhir setelah semua troubleshooting lain.

Kesimpulan

Strategi terbaik adalah tidak pernah menggunakan docker-compose down -v kecuali Anda benar-benar ingin menghapus semua data persisten. Untuk perubahan kode atau konfigurasi, cukup targetkan service yang relevan untuk dibangun ulang atau di-restart saja.

Dengan demikian, sertifikat Let's Encrypt Anda akan tetap aman di volume certs, dan Anda tidak perlu khawatir tentang terhapusnya sertifikat saat Anda melakukan perubahan pada aplikasi atau Docker Compose.

Sunday, January 12, 2025

Barcelona versus Real Madrid di Final Piala Super Spanyol 2025: Skor Telak 5-2

Barcelona Hancurkan Real Madrid di Final Piala Super Spanyol 2025: Skor Telak 5-2

Real Madrid 2-5 Barcelona: Goals and highlights - Spanish Super Cup 2025 https://www.marca.com/en/soccer/spanish-supercopa/r-madrid-barcelona/2025/01/12/01_0113_20250112_186_178-live.html

Di bawah langit Jeddah, Barcelona menunjukkan performa gemilang saat mengalahkan Real Madrid dengan skor mencolok 5-2 dalam final Piala Super Spanyol yang digelar di King Abdullah Sports City. Pertandingan penuh drama ini menjadi panggung dominasi Blaugrana setelah awal musim yang penuh tantangan.


Babak Pertama: Awal Sengit, Barcelona Unggul

Real Madrid membuka keunggulan di menit ke-5 lewat gol Kylian Mbappé, memanfaatkan serangan balik cepat. Namun, Barcelona segera membalas lewat Lamine Yamal di menit ke-22, mengubah skor menjadi 1-1. Keunggulan berlanjut dengan penalti Robert Lewandowski (36’) dan gol spektakuler Raphinha (39’). Alejandro Balde menutup babak pertama dengan gol di menit ke-45+10, membawa Barcelona unggul 4-1.


Babak Kedua: Barcelona Tak Terbendung

Raphinha kembali mencetak gol di menit ke-48, semakin menenggelamkan Real Madrid. Meski Rodrygo memperkecil kedudukan melalui tendangan bebas di menit ke-60, usaha Madrid tak cukup untuk mengejar ketertinggalan.


Panggung Kehebatan Barcelona

Penampilan Barcelona ini memukau, terutama dengan kontribusi luar biasa dari pemain muda seperti Lamine Yamal dan aksi solid Lewandowski di lini depan. Xavi kembali membuktikan dirinya sebagai pelatih yang mampu menghidupkan semangat tim dalam laga krusial.


Statistik dan Sorotan

Penguasaan Bola: Barcelona mendominasi jalannya laga dengan distribusi bola yang efektif.

Pemain Kunci: Raphinha menjadi bintang pertandingan dengan dua golnya yang menentukan.

Performa Madrid: Meski Mbappé dan Rodrygo mencatatkan gol, lini pertahanan Madrid sering kewalahan menghadapi tekanan bertubi-tubi dari Barcelona.

Dengan hasil ini, Barcelona merebut gelar Piala Super Spanyol 2025, melanjutkan tradisi kemenangan mereka di kompetisi bergengsi ini. Rivalitas El Clásico pun semakin memanas, menjanjikan laga-laga seru ke depannya!

Laga El Clasico di final Piala Super Spanyol 2025 yang digelar di King Abdullah Sports City, Jeddah, menjadi panggung pertunjukan penuh drama. Barcelona sukses melumat Real Madrid dengan skor telak 5-2 dalam pertandingan sengit yang menyajikan keajaiban strategi dan aksi memukau dari kedua tim.


Kronologi Gol

Menit 5: Kylian Mbappé membawa Real Madrid unggul lebih dulu lewat serangan balik cepat. Tendangan kaki kanannya dari dalam kotak penalti tak mampu dibendung kiper Barcelona.

Menit 22: Barcelona menyamakan kedudukan melalui Lamine Yamal yang memanfaatkan umpan terukur. Tembakan kaki kirinya membuat skor menjadi 1-1.

Menit 36: Penalti Robert Lewandowski sukses membawa Barcelona unggul 2-1 setelah pelanggaran Eduardo Camavinga.

Menit 39: Raphinha menambah keunggulan Barcelona dengan sundulan tajam dari umpan silang, membuat skor berubah menjadi 3-1.

Menit 45+10: Alejandro Balde mencetak gol spektakuler melalui tembakan kaki kirinya, membawa Barcelona unggul jauh 4-1 di babak pertama.

Menit 48: Raphinha mencetak gol keduanya malam itu dengan tembakan kaki kiri yang memukau, mengubah skor menjadi 5-1.

Menit 60: Rodrygo memperkecil ketertinggalan Real Madrid menjadi 5-2 lewat tendangan bebas akurat.



Highlights dan Statistik

Pertandingan ini penuh dengan aksi. Total 7 gol tercipta, 6 kartu kuning dikeluarkan, dan kedua tim menunjukkan permainan menyerang yang agresif. Namun, dominasi Barcelona di lini tengah dan serangan balik yang efektif menjadi kunci kemenangan mereka.


Faktor Kemenangan Barcelona

Meski kehilangan beberapa pemain inti seperti Ter Stegen dan Christensen, Barcelona menunjukkan konsistensi dan kepercayaan diri. Pelatih Xavi berhasil memanfaatkan setiap peluang dan memperlihatkan bahwa formasi serta rotasi pemain yang tepat bisa mengatasi tantangan besar.


Real Madrid: Gagal di Pertahanan

Tim asuhan Carlo Ancelotti tampil kurang solid di lini belakang. Meskipun Mbappé dan Rodrygo bersinar, pertahanan mereka sering terekspos oleh kecepatan serangan Barcelona.


Apa Selanjutnya?

Kemenangan ini menjadi momen penting bagi Barcelona untuk kembali ke jalur kemenangan setelah serangkaian hasil buruk di LaLiga. Bagi Real Madrid, kekalahan ini menjadi pelajaran penting dalam upaya memperbaiki pertahanan mereka di pertandingan-pertandingan berikutnya.



Tuesday, December 17, 2024

Reset ESP Microcontroller Using Python and esptool

 The ESP series of microcontrollers, such as the ESP32 and ESP8266, are widely used in IoT projects due to their affordability, ease of use, and powerful wireless capabilities. At times, you may need to reset an ESP device to its factory state or reinitialize it for a new project. Python's esptool is a popular utility for interacting with ESP devices, and it can be used to perform various operations, including resetting the device. In this article, we’ll guide you on how to reset your ESP microcontroller using Python and esptool.

What is esptool?

esptool is an open-source Python-based utility developed by Espressif Systems, the creators of the ESP series. It allows users to:

  • Flash firmware onto ESP devices
  • Erase the flash memory
  • Reset the microcontroller
  • Read and write flash data
  • Check device information (chip ID, MAC address, etc.)

You can install esptool via Python's package manager, pip, and use it on various platforms like Windows, macOS, and Linux.

python -m esptool --chip esp32 erase_flash


Prerequisites

Before proceeding, make sure you have the following:

  1. Python Installed: Ensure you have Python 3.6 or later installed on your computer.

    • To check your Python version, run: python --version or python3 --version.
  2. esptool Installed: Install esptool using the following command:

    pip install esptool
    
  3. ESP Device: An ESP32, ESP8266, or any compatible ESP microcontroller.

  4. USB-to-Serial Converter: Connect the ESP device to your computer using a USB cable. Ensure the required drivers for the USB-to-serial chip (e.g., CH340, CP210x) are installed.

  5. Serial Port Information: Note the serial port your ESP device is connected to (e.g., /dev/ttyUSB0 on Linux, COM3 on Windows). You can find this in your device manager or by using a terminal command such as:

    ls /dev/tty*  # For Linux/Mac
    

    or

    mode  # For Windows
    

Step 1: Identify Your ESP Device

Run the following command to verify that your ESP device is detected and connected properly:

esptool.py --port <PORT> chip_id

Replace <PORT> with the serial port of your ESP device (e.g., /dev/ttyUSB0 or COM3). This command will output the chip ID and other device details.


Step 2: Erase Flash Memory (Reset to Factory State)

To reset the ESP device, you need to erase its flash memory. This will wipe all existing firmware and configurations. Run the following command:

esptool.py --port <PORT> erase_flash

Explanation:

  • --port <PORT>: Specifies the serial port connected to your ESP device.
  • erase_flash: A command to clear the entire flash memory of the device.

After running this command, you should see an output confirming that the flash memory has been erased.


Step 3: Flash New Firmware (Optional)

If you plan to load new firmware onto the ESP device after resetting it, you can use the following command:

esptool.py --port <PORT> write_flash -z 0x1000 <FIRMWARE_FILE>

Replace <FIRMWARE_FILE> with the path to your firmware binary file (e.g., esp32-20220101-v1.19.1.bin).

Explanation:

  • write_flash: Command to write firmware to the flash memory.
  • -z: Compress the firmware before flashing.
  • 0x1000: The default memory address for flashing firmware on ESP devices.

Step 4: Reset the ESP Device

Once the flash memory is erased or new firmware is written, you can manually reset the ESP device by pressing the RESET button on the board. Alternatively, you can issue a reset command via esptool:

esptool.py --port <PORT> run

This command will reboot the device and start it with either the default bootloader or the newly flashed firmware.


Example Python Script

You can automate the reset process using a Python script. Here’s an example:

import esptool
import sys

# Replace with your ESP's port
serial_port = "COM3"

try:
    # Connect to the ESP device
    sys.argv = ["esptool.py", "--port", serial_port, "erase_flash"]
    esptool.main()
    print("Flash memory erased successfully!")

    # Reset the device
    sys.argv = ["esptool.py", "--port", serial_port, "run"]
    esptool.main()
    print("Device reset successfully!")

except Exception as e:
    print(f"An error occurred: {e}")

Save this script as reset_esp.py and run it using:

python reset_esp.py

Conclusion

Resetting an ESP microcontroller is an essential process when reinitializing the device for a new project or troubleshooting. Python's esptool makes this task straightforward and efficient. With the steps outlined above, you can erase the flash memory, flash new firmware, and reset your ESP device using simple commands or Python scripts.

Feel free to experiment and customize the process based on your project needs. Happy coding!