Category: DevOps

  • Cara install Docker di server

    Cara install Docker di server

    Step by step yang dilakukan pada tutorial ini juga works untuk Linux versi desktop, karena disini saya memberikan cara membaca installasi docker dari official sites nya dan tidak seperti artikel pada yang ada di Medium, dan lainnya.

    Untuk installasinya cukup ikuti step by step dari Docker Docs, trust me hanya cukup copy dan paste setiap step nya, dan itu pun hanya 2 step di satu menu dan 1 step lagi di menu lainnya. Berikut adalah cara yang saya lakukan ketika punya server baru dan melakukan installasi Docker.

    Pertama masuk ke server, cukup jalankan ini di terminal / command line

    # Snippet
    ssh <user>:<ip-public>
    # Contoh
    ssh supanadit@123.123.123.123
    # Atau jika sudah di integrasikan dengan domain tinggal
    ssh john@example.com

    Kedua, setelah masuk ke server dengan SSH, kalian bisa lihat gambar dibawah ini yang saya dapat dari dokumentasi Docker, ada Point 1 dan 2 yang berisi perintah shell dan hanya jalankan kedua point tersebut. Tolong perhatikan menu samping di kanan, saya sedang pada tab Ubuntu. Jika kalian menggunakan OS lain tinggal pilih dokumentasi untuk OS tersebut.

    Lah step 3 gimana ? Itu skip aja, karna salah…. dokumentasi Docker berasumsi bahwa kalian sedang menggunakan user root.

    Link: https://docs.docker.com/engine/install/ubuntu/

    Summary Command
    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Add the repository to Apt sources:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    Setelah kalian selesai installasi docker, kalian baru bisa masuk ke dokumentasi dibawah ini.

    Link: https://docs.docker.com/engine/install/linux-postinstall/

    Summary Code
    sudo usermod -aG docker $USER

    Jalankan point No. 2 saja, setelahnya jalankan perintah dibawah ini, untuk mengaktifkan SystemD Docker dan ContainerD.

    sudo systemctl enable --now docker.service
    sudo systemctl enable --now containerd.service

    Setelah itu ada dua pilihan yang harus dilakukan, yaitu tutup terminal kalian dan login lagi ke server, atau restart saja server nya.

    Gimana cara restart server nya

    Tinggal jalankan perintah dibawah ini

    sudo shutdown -r now
    # Atau
    sudo reboot

    Jika sudah selesai, maka kalian bisa coba dengan jalankan perintah docker ps -a jika tidak ada error, artinya docker sudah terinstall dengan baik di server kalian.

    Singkat, padat, see you in the next article… Btw, jika ada kendala boleh di tulis di kolom komentar, saya akan dengan senang hati membantu, semakin banyak masalah yang saya dapat, semakin besar pengalaman yang saya dapat pula ๐Ÿ˜.

  • Cara menyewa dan mempersiapkan server

    Cara menyewa dan mempersiapkan server

    Artikel kali ini kita membahas bagaimana seseorang bisa miliki server dan mengelola nya, saya tidak akan terlalu teknis membahas terkait server, karna akan membuat orang bingung dan kebanyakan salah paham.

    Secara sederhana, server adalah komputer yang dirancang khusus untuk menjalankan program-program dan menyediakan layanan kepada pengguna secara simultan ( terjadi atau berlaku pada waktu yg bersamaan; serentak ).

    Kata khusus ini bukan berati komputer tersebut memang harus berbentuk server seperti pada umum nya orang ketahui, contoh nya kebanyakan orang membayangkan server seperti gambar dibawah ini.

    Pada kenyataan nya, PC / Laptop pribadi juga bisa dijadikan server, karna mampu menjalankan program dan orang lain dapat mengakses program yang dijalankan, entah itu secara offline atau online.

    Namun umum nya kita memiliki keinginan bahwa server yang kita buat itu bisa menjalankan program yang kita miliki / beli lalu dapat di akses oleh orang lain. Dan untuk mencapai keinginan tersebut, selain server yang kalian harus miliki adalah jaringan internet yang memiliki IP Publik dan domain, agar orang tidak perlu menghafal alamat IP publik kalian.

    Dalam artikel ini, saya tidak akan menjelaskan bagaimana menjadikan PC / Laptop kalian menjadi server, melainkan menyewa server dan mengelola nya. Secara teori ketika kalian menyewa, secara tidak langsung kalian juga memiliki nya, namun hanya selama kalian membayar nya.

    Purchasing the Server

    Pertama kalian harus membeli server / menyewa server, dan ini banyak jenis nya, seperti Shared Hosting, VPS, Cloud VPS, Cloud Hosting dan lainnya. Saya akan berikan gambaran sederhana dengan analogi.

    Shared Hosting

    Anda menyewa kamar di sebuah asrama (kos-kosan). Anda berbagi dapur, kamar mandi, dan fasilitas lainnya dengan banyak penghuni. Murah, tapi sumber daya terbatas dan performa bisa terganggu oleh penghuni lain

    VPS

    Anda menyewa sebuah apartemen di gedung apartemen yang besar. Anda memiliki dapur, kamar mandi, dan ruang tamu sendiri yang terisolasi dari tetangga. Meskipun berbagi bangunan fisik yang sama, Anda memiliki sumber daya CPU, RAM, dan storage yang dialokasikan khusus untuk Anda. Anda memiliki “kunci” (root access) untuk mengelola apartemen Anda sendiri.

    Cloud Hosting

    Anda menyewa apartemen di sebuah kompleks apartemen yang sangat modern. Kompleks ini memiliki banyak gedung yang saling terhubung. Jika apartemen Anda tiba-tiba butuh ruang lebih, Anda bisa langsung “meminjam” ruang dari gedung lain di kompleks yang sama tanpa perlu pindah. Ini sangat fleksibel, dapat menyesuaikan kebutuhan Anda secara dinamis.

    Cloud VPS

    Ini adalah gabungan dari konsep VPS dan Cloud Hosting. Anda menyewa apartemen di kompleks apartemen modern yang sangat besar (seperti Cloud Hosting), dan apartemen Anda juga terisolasi dengan sumber daya khusus seperti VPS. Bedanya, “apartemen” Anda ini tidak terikat pada satu gedung fisik saja, melainkan didistribusikan di seluruh kompleks. Jika satu gedung rusak, “apartemen” Anda bisa langsung berpindah ke gedung lain tanpa Anda sadari.

    Dedicated Server

    Anda membeli atau menyewa sebuah rumah pribadi (bukan apartemen). Seluruh rumah, tanah, dan fasilitasnya adalah milik Anda sepenuhnya. Tidak ada tetangga yang berbagi sumber daya fisik dengan Anda. Anda memiliki kontrol penuh atas segala sesuatu di rumah tersebut, mulai dari pondasi hingga atap.

    Secara kesimpulan, jika kalian melihat gambar yang ada pada awal artikel, itu termasuk Dedicated Server, dan untuk memiliki nya kalian membutuhkan biaya lumayan tinggi, waktu, tenaga dan keahlian setingkat professional. Selain itu PC / Laptop kalian juga bisa di kategorikan sebagai Dedicated Server.

    Namun untuk artikel ini mari kita masuk ke VPS / Cloud VPS saja, walaupun secara penjelasan diatas sedikit berbeda tapi dari perspektif kita yang membeli, sama saja.

    Kalian akan diberikan pilihan Memory, Storage dan CPU, dengan rentang harga yang berbeda-beda. Selain itu juga kalian diberikan IP Publik, tanpa harus memikirkan bagaimana mengelola jaringan. Berikut adalah gambaran server yang saya sewa di IDCloudHost.

    Jika kalian perhatikan, bahwa saya memilik IP publik 27.112.78.120. ( Lah itu informasi bisa diketahui dan di hack… ), yups betul…. tolong hack saya ๐Ÿ™๐Ÿ˜.

    Gambar diatas adalah hasil dari membuat instance baru dengan menekan tombol New, lalu kalian akan diberikan opsi seperti gambar dibawah ini.

    Berdasarkan gambar di atas, kalian akan diberikan pilihan untuk memilih sistem operasi, lokasi server, spesifikasi, username, password, resource name dan total harga.

    Untuk bagian SSH dan VPC Network bisa di abaikan saja, kemungkinan jika akun baru kalian harus membuat VPC Network, dan itu bisa pakai konfigurasi default, tinggal nextnext saja hingga selesai.

    Setelah semua diatas selesai, hingga memiliki IP publik maka server kalian sudah bisa diakses lalu mulai konfigurasi reverse proxy dan membeli domain.

    FAQ

    Bagaimana cara akses server nya ?

    Untuk yang menggunakan Linux, entah itu Fedora, Ubuntu, CentOS, Rocky Linux, dll kalian bisa mengakses nya dengan perintah ssh di terminal atau command line, seperti dibawah ini

    ssh dadang@234.34.22.12

    Kalian tidak bisa mengakses SSH server pribadi saya dengan IP yang sudah terekspos diatas… Hah.. kenapa bisa gitu ? ๐Ÿ˜ Rahasia…. Cari tahu sendiri…

    Dimana akses tampilan nya ?

    Untuk server berbasis Linux tidak ada tampilan nya, jadi keahlian di terminal sangat di perlukan.

    Bagaimana deploy aplikasi frontend atau backend seperti Java, Angular, NodeJS, PHP, dan lainnya ?

    Cara yang paling mudah adalah kalian coba sendiri menggunakan Ubuntu OS di laptop / pc kalian masing-masing, lalu cari tahu bagaimana menjalankan program backend / frontend tersebut di Ubuntu OS, setelah kalian tau bagaimana cara nya, dan step by step nya, maka cara yang kalian pelajari berlaku di server yang kalian sewa. Hanya saja di local mungkin kalian jalankan dengan http://localhost:3000.

    Maka jika kalian sudah punya server, kalian bisa jalankan di server dan akses http://<ip-publik-server-kalian>:<port-aplikasi>

    Question: Tapi ketika kita tutup terminal nya, kok aplikasinya mati ? ya kalian bisa pelajari gimana caranya aplikasi bisa berjalan secara background.

    Bagaimana server nya bisa di akses melalui Domain ?

    Domain sendiri harus di beli terlebih dahulu, setelah itu kalian arahkan domain nya ke IP publik server kalian, lalu install reverse proxy, seperti NGINX, Caddy, Traefik, dll.

  • Cara integrasi DNS dengan server

    Cara integrasi DNS dengan server

    Kebanyakan artikel dan tutorial diluar sana cukup membingungkan banyak orang yang baru masuk di dunia IT, bahkan untuk professional engineer yang fokus di bidang nya masing-masing seperti backend atau frontend yang ingin memiliki domain dan server nya sendiri namun bingung harus mulai dari mana.

    Pertama, yang harus di pahami sebelum masuk ke ranah Domain dan Server, kalian harus sedikit paham tentang dasar jaringan, dan perlu kalian pahami bahwa Domain dalam konteks IT adalah alamat lengkap dari sebuah situs entah itu offline atau online, contoh nya artikel yang sedang kalian baca ini memiliki domain dengan nama supanadit.web.id. Lalu bagaimana dengan akhiran pada Domain seperti .web.id ? ini bukan domain melainkan TLD. Banyak orang salah paham, dan berpikir bahwa .com, .net, .co.id, .id, dll adalah domain, padahal itu adalah TLD.

    Kebanyakan dari kalian juga mungkin bertanya-tanya, kenapa Domain itu berbayar… sebenarnya GRATIS, lalu kenapa ada beberapa penyedia layanan Domain ? Ini karena dibalik Domain, ada server dan jaringan yang harus di rawat begitupun dengan tenaga ahli nya, selain itu juga ada birokrasi agar semuanya bisa terkoneksi satu sama lain dan di atur oleh ICANN.

    Untuk kalian publish aplikasi yang paling penting adalah Server dan untuk kasus ini setiap aplikasi pasti kebutuhan server nya beda-beda khusus nya pada sistem operasi yang digunakan. Server tidak selalu Linux, juga tidak selalu Windows Server, bahkan Windows biasa pun atau Mac Book bisa dijadikan server. Namun untuk pembahasan ini akan di jelaskan pada artikel yang berbeda.

    Secara teori kalian bisa membuat TLD sendiri secara sederhana, contoh nya .ganteng yang kalian buat mandiri di Laptop / PC masing-masing. Dan ini pun pembahasan nya terlalu jauh, mari kita lanjut ke pembahasan utama.

    Purchasing the domain

    Hal yang pertama kali ketika ingin membuat situs atau aplikasi yang bisa di akses oleh banyak orang, kalian pasti akan mencari alamat yang cocok sesuai keinginan kalian, yang biasanya kalian cari di penyedia layanan domain, seperti Hostinger, IDCloudHost, Namecheap, GoDaddy, dan masih banyak lagi. Dibawah ini adalah dua gambar yang mana saya membeli domain di beda provider, pertama di Hostinger dan yang kedua di IDCloudHost. ( Contoh nya ini sudah di beli )

    Introducing DNS Manager

    Setelah kalian membeli dan memiliki Domain, kalian akan diberikan panel oleh penyedia domain untuk mengelola domain tersebut, masing-masing penyedia layanan memiliki panel yang berbeda-beda dan halaman yang berbeda, namun secara fungsi tetap sama. Bahkan jika kalian tidak ingin menggunakan panel bawaan penyedia layanan domain, bisa menggunakan panel pihak ketiga dan akan dibahas di lain waktu.

    Balik ke pembahasan, untuk mengelola Domain, mari kita masuk ke panel nya. Untuk di IDCloudHost, di sini saya akan menggunakan domain gusrandi.my.id yaitu domain milik adik yang saya kelola, dan di IDCloudHost tampilan nya seperti ini.

    Seperti yang dijelaskan sebelumnya, bahwa setiap penyedia layanan memiliki tampilan dan menu nya berbeda, tapi kurang lebih akan mirip-mirip, contoh nya untuk supanadit.web.id yang saya beli di IDCloudHost tapi panel nya saya kelola di Google Cloud Platform seperti gambar dibawah ini.

    Managing DNS

    Disini kita langsung saja integrasikan DNS nya dengan server yang kita miliki, sebagai contoh saya punya server dengan IP 27.112.78.120, dimana WordPress milik adik saya pun ada di server yang sama dengan yang saya gunakan.

    Apakah bisa banyak DNS tapi server nya satu ?

    Tentu bisa, tinggal di mainkan saja di bagian reverse proxy dan dns management nya.

    Apakah bisa server nya banyak tapi DNS nya satu ? ( Kebalikan nya )

    Ini juga jelas bisa, tinggal di mainkan di bagian panel nya saja.

    Sebagai contoh gambar dibawah ini adalah konfigurasi yang saya terapkan.

    Berdasarkan gambar diatas, saya sudah memberikan beberapa tanda panah beserta nomor nya.

    No.1 = Adalah nama domain, tanda @ memberikan isyarat bahwa row tersebut adalah main domain, artinya gusrandi.my.id. Jika kalian ganti tanpa @, misalnya menjadi hello, maka nanti akan menjadi subdomain seperti ini hello.gusrandi.my.id

    No.2 = Adalah tipe domain, jenis A adalah akses ke server dengan jaringan IPV4, umum nya IP publik yang digunakan jenis A, atau jika kalian punya IPV6, bisa menggunakan AAAA. Untuk konfigurasi email bisa menggunakan MX, dan masih banyak lagi seperti CNAME, NS, PTR, TXT, SRV.

    No.3 = Adalah nilai berdasarkan tipe nya, untuk A bisa di isi IP address IPV4 dan AAAA bisa di isi IP Address IPV6 server kalian.

    Saya contohkan membuat sub domain baru seperti gambar dibawah ini dengan tipe A.

    Dan hasil pada panel nya akan bertambah seperti ini gambar dibawah ini.

    Setelah itu kalian harus menunggu sekitar 1 – 30 menit, tergantung kecepatan penyedia layanan internet dan layanan domain menerima perubahan itu secara serentak. Jika sudah menunggu sekian lama nya, kalian bisa test dengan perintah sederhana di CMD / Terminal menggunakan program ping seperti gambar dibawah ini.

    Setelah hasil nya keluar seperti gambar diatas, IP kalian akan muncul disamping DNS dan artinya konfigurasi sudah berhasil, selanjutnya adalah persiapan server dan reverse proxy juga deploy aplikasi kalian. Tapi jika IP kalian belum keluar, maka tunggu lagi dan coba ping kembali beberapa menit / jam kemudian. Harap bersabar…

  • Tutorial deploy Traefik menggunakan Docker

    Tutorial deploy Traefik menggunakan Docker

    Traefik adalah reverse proxy yang paling bagus dan sederhana yang pernah saya gunakan, dibandingkan dengan Caddy, NGINX, dan lainnya. Selain itu Traefik sudah dilengkapi dengan otomatis SSL seperti Caddy namun lebih jauh lagi sudah terintegrasi dengan Docker dan Kubernetes.

    Pertama, yang harus dilakukan adalah membuat network khusus, contoh nya saya membuat network sendiri dengan nama pratama-network yang kalian bisa buat dengan perintah dibawah ini.

    docker network create pratama-network

    Setelah itu kalian bisa membuat directory dengan nama traefik di server kalian, lalu buat file compose.yaml dengan content code dibawah ini.

    Setelah ini, kalian masih harus membuat beberapa file yaitu

    • traefik.toml -> Konfigurasi utama Traefik
    • dynamic-conf.toml -> Konfigurasi routing HTTP, TCP dan UDP
    • acme.json -> Konten SSL yang digenerate oleh Traefik

    Disini saya menggunakan format TOML untuk konfigurasi Traefik, umum nya orang-orang menggunakan format YAML namun saya sendiri lebih suka format TOML. Kalian bisa menggunakan format YAML secara langsung jika lebih suka format tersebut, namun pada tutorial ini kita akan menggunakan format TOML saja.

    Mari kita buat file nya terlebih dahulu, dimana traefik.toml dan dynamic-conf.toml akan di simpan pada directory conf sedangkan acme.json akan di simpan pada level yang sama dengan compose.yml

    Berikut adalah perintah secara ringkas:

    mkdir conf
    touch conf/traefik.toml
    touch conf/dynamic-conf.toml
    touch acme.json
    chmod 600 acme.json

    Secara urutan, akan saya beri gambaran sebagai berikut.

    -- | /home/<user>/docker/traefik
       | -- compose.yml
       | -- acme.json
       | -- conf
            | -- traefik.toml
            | -- dynamic-conf.toml

    Berdasarkan struktur diatas, saya menambahkan directory docker agar terlihat lebih rapih, namun kalian bebas menentukan dimana letak directory traefik dan sebenarnya tidak harus traefik, ini hanya untuk keperluan tutorial, sekarang lanjut mengisi konten traefik.toml, yang kurang lebih seperti dibawah ini

    Lalu kita isi konten file dynamic-conf.toml seperti dibawah ini, yang nantinya kedua file diatas akan di jelaskan secara rinci

    Sudah selesai proses code nya, dan kalian perlu mengganti bagian traefik.supanadit.com menjadi domain kalian, lalu setelah itu langsung menjalankan nya dengan perintah dibawah ini.

    docker compose up -d

    Secara singkat Traefik yang di deploy di server kalian sudah bisa diakses, contoh nya dengan konfigurasi diatas, adalah potongan kecil dari bagian server saya ini, dan pada kasus ini ada pada link berikut.

    http://traefik.supanadit.com

    Eits…. namun, kalian tidak akan bisa mengakses nya, karena saya tutup menggunakan Authelia sebagai Middleware, agar tidak semua orang tahu daftar aplikasi pada dashboard.

    ๐Ÿ˜Penasaran kan bagaimana saya bisa menggunakan Authelia dan di integrasikan dengan Traefik ? Saya akan menulis lebih banyak artikel tentang Traefik di lain waktu, dan akan saya buat halaman khusus tentang Traefik.

    FAQ

    Bagaimana aplikasi docker lainnya bisa di akses ?

    Untuk ini ada dua cara, yaitu:

    1. Menggunakan label
    2. Menulis konfigurasi routing pada dynamic-conf.toml

    Namun secara rinci nya akan dijelaskan pada artikel yang berbeda. Dan akan saya bagikan link nya di sini.

    Bagaimana dengan acme.json ?

    Ini bisa dibiarkan saja, karena Traefik akan secara otomatis mengisi file tersebut, dengan syarat berikut:

    1. Website kalian di konfigurasi dengan lets encrypt yang di ada pada bagian traefik.toml
    2. Lalu di bagian dynamic-conf.toml kalian aktifkan property yang saya beri informasi Uncomment this for production use. Lalu comment bagian yang saya tandai dengan kata Comment this for production use. Kecuali service, bagian itu jangan di comment entah production atau bukan.
    Bagaimana dengan testing di local menggunakan Docker Engine / Desktop seperti pada Windows / Mac / Linux

    Kalian bisa lakukan step by step diatas tanpa mengubah apapun, artinya websecure tidak di aktifkan, dan bagian traefik.toml comment saja baris dibawah ini.

    [certificatesResolvers.lets-encrypt.acme]
      email = "xxx@xxx.com"
      storage = "acme.json"
      [certificatesResolvers.lets-encrypt.acme.tlsChallenge]

    Setelah itu kalian bisa konfigurasi /etc/host pada linux / mac dan C:\Windows\System32\drivers\etc\hosts pada windows dengan konfigurasi dibawah ini.

    127.0.0.1 traefik.supanadit.com

    Domain nya bebas, asalkan sama dengan yang ada di traefik.toml

    Jika ada pertanyaan atau penjelasan yang membingungkan bisa tulis di kolom komentar dibawah ini dan akan saya update pada artikel ini.

  • Cara memperbaiki sertifikat MicroK8S yang sudah expired

    Cara memperbaiki sertifikat MicroK8S yang sudah expired

    Dari pada panjang lebar, berikut adalah perintah untuk memperpanjang sertifikat MicroK8S.

    sudo microk8s refresh-certs --cert ca.crt

    Ini sudah sering saya lakukan selama 4 tahun menggunakan Kubernetes dengan distribusi MicroK8S.

    Dengan otomatis, ketika menjalankan perintah microk8s config view sertifikat nya sudah menggunakan yang baru, dan bisa langsung digunakan pada Lens IDE, atau K9S.

  • Resize LVM Ubuntu Server

    Resize LVM Ubuntu Server

    LVM2 adalah alat standar dan preset yang ter-install pada Ubuntu server secara default ketika kita melakukan instalasi Ubuntu server. Walaupun ini sebenarnya tidak mutlak dan bisa di lepas.

    Namun terkadang beberapa orang dan bahkan saya sendiri ketika menggunakan Ubuntu Server cukup bingung ketika melihat ukuran partisi penyimpanan itu tidak 100% dialokasikan.

    Hal ini wajar mengingat dengan kita mengalokasikan 100% storage memiliki efek samping dan tidak effisien, yang mungkin detail nya akan dibahas pada artikel yang berbeda.

    Namun sekarang kita langsung masuk ke daftar perintah yang umum digunakan untuk merubah ukuran partisi.

    1. Untuk melihat ukuran atau sisa penyimpanan yang dapat dialokasikan
      sudo vgdisplay
    2. Resize disk
      sudo lvextend -l 100%FREE <path>
      sudo resize2fs <path>
    3. Reduce disk
      lvreduce -L -8G <path>
      sudo resize2fs <path>

    Jika kalian menggunakan VM dan melakukan penambahan storage umumnya jika langsung menjalankan lvextend tidak akan berhasil untuk alokasi storage tambahan nya. Dan untuk mengatasi ini bisa melakukan pembesaran partisi dulu dengan tools dibawah ini

    sudo cfgdisk

    Referensi

    1. https://askubuntu.com/questions/124465/how-do-i-shrink-the-root-logical-volume-lv-on-lvm
    2. https://www.tecmint.com/extend-and-reduce-lvms-in-linux/
    3. https://howtovmlinux.com/articles/vmware/resize-lvm-disk-after-extending-virtual-machine-disk-vmdk/