7 poin oleh GN⁺ 2024-08-27 | 1 komentar | Bagikan ke WhatsApp

Apa itu Dokku?

  • Dokku adalah Platform as a Service (PaaS) open source yang berjalan di satu server tunggal
  • Mirip Heroku, tetapi dimiliki oleh pengguna
  • Dibutuhkan platform serverless yang hemat biaya dan mudah digunakan
  • Menjalankan server Dokku menggunakan VPS seharga $7 per bulan dari OVHcloud

Fitur utama Dokku

  • Mudah digunakan (mirip Heroku)
  • Pengelolaan sertifikat SSL otomatis melalui Let’s Encrypt
  • Mendukung Basic Auth untuk melindungi situs dengan kata sandi
  • Bisa scale up dan scale down dengan satu perintah
  • Fleksibel untuk menangani berbagai aplikasi seperti Node, Python, dan lainnya
  • Dapat di-deploy dengan mudah menggunakan perintah git

Contoh Dokku minimal

Deploy aplikasi dengan container Docker

  • Letakkan Dockerfile di root repositori git
  • Gunakan skrip entrypoint.sh untuk menjalankan aplikasi secara lokal atau di container Docker
  • Buat aplikasi di host Dokku
  • Tambahkan host Dokku sebagai remote dari lokal lalu push
FROM python:3.10
COPY . /app
WORKDIR /app
RUN pip install .
WORKDIR /app/
ENTRYPOINT ["./entrypoint.sh"]
#!/bin/bash
exec uvicorn main:app --port "$PORT" --host 0.0.0.0
dokku apps:create myapp
git remote add dokku dokku@dokku:myapp
git push dokku main

Deploy situs statis

  • Dengan Dokku, Anda bisa dengan mudah men-deploy situs statis dari repositori GitHub privat dan melindunginya dengan kata sandi
  • Atur variabel lingkungan NGINX_ROOT agar NGINX menyajikan situs statis
  • Instal dan konfigurasikan plugin basic auth
dokku apps:create mysite
dokku config:set static-site NGINX_ROOT=_site
sudo dokku plugin:install https://github.com/dokku/dokku-http-auth.git
sudo chmod +x /home/dokku
touch .static
echo BUILDPACK_URL=https://github.com/dokku/buildpack-nginx > .env
git remote add dokku dokku@dokku:mysite
git push dokku main
dokku http-auth:enable mysite <username> <password>

SSL / HTTPS

  • HTTPS dapat dikonfigurasi menggunakan plugin Let’s Encrypt
  • Jika menggunakan Cloudflare, akan lebih mudah jika Cloudflare yang menanganinya

Deploy dengan GitHub Actions

  • Aplikasi Dokku dapat di-deploy otomatis menggunakan GitHub Actions
  • Contoh workflow GitHub Action
name: CI
on:
  workflow_dispatch:
  push:
    branches: [main]
jobs:
  deploy-dokku:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Install SSH key
        run: |
          echo "${{ secrets.DOKKU_SSH_PRIVATE_KEY }}" > private_key.pem
          chmod 600 private_key.pem
      - name: Add remote and push
        run: |
          git remote add dokku dokku@rechat.co:llm-eval
          GIT_SSH_COMMAND="ssh -i private_key.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git push dokku main -f

Tips lainnya

  • Perintah dapat dijalankan dari jarak jauh
  • Membatalkan cache Docker
  • Rebuild tanpa push
ssh dokku@rechat.co apps:list
ssh dokku@rechat.co repo:purge-cache llm-eval
ssh dokku@rehcat.co ps:rebuild llm-eval

Mengapa tulisan ini dibuat?

  • Ditulis karena harus mencari detailnya setiap kali akan men-deploy aplikasi baru
  • Semoga ini juga bermanfaat bagi orang lain

Ringkasan GN⁺

  • Dokku adalah platform PaaS open source yang hemat biaya dan mudah digunakan
  • Menyediakan fitur untuk men-deploy dan mengelola berbagai aplikasi dengan mudah
  • Deploy otomatis dimungkinkan dengan alat seperti GitHub Actions
  • Lebih praktis bila digunakan bersama layanan seperti Cloudflare
  • Proyek lain dengan fungsi serupa antara lain Heroku dan Fly.io

1 komentar

 
GN⁺ 2024-08-27
Komentar Hacker News
  • Baru-baru ini menikmati penggunaan Dokploy

    • Mirip dengan Dokku, tetapi menawarkan UI web yang lebih baik
    • Mempermudah deployment solusi Docker/Compose dan memiliki fitur Let's Encrypt otomatis bawaan
    • Membangun workflow GitHub Actions untuk mengotomatiskan deployment aplikasi
    • Juga menyediakan file Compose yang sudah dikonfigurasi sebelumnya untuk berbagai aplikasi
  • Setelah meninjau beberapa solusi "Heroku self-hosted", memilih Dokku

    • Membutuhkan "sihir" paling sedikit, dan mudah dihapus jika berhenti digunakan
    • Pengembangnya sangat responsif, dan saya mendapat bantuan untuk membuat plugin kustom
    • Saya juga mendokumentasikan hal terkait di blog
  • Saat menggunakan perangkat lunak baru biasanya bisa muncul masalah, tetapi Dokku tidak seperti itu

    • Selain beberapa masalah urutan argumen CLI, semuanya berjalan baik
    • Jika menggunakannya lebih banyak, saya ingin menyusun seluruh arsitektur dengan file konfigurasi deklaratif
  • Dokku memudahkan pengaturan HTTPS melalui plugin Let's Encrypt

    • Menggunakan TLS melalui Cloudflare
    • Perlu berhati-hati agar situs pribadi tidak dikirim dalam bentuk plaintext
  • Pernah menggunakan Dokku lalu beralih ke build image Docker dan deployment Swarm

    • Ini menjadi motivasi untuk mengembangkan Lunni, PaaS self-hosted
    • Menyukai ide menjalankan semuanya di server milik sendiri alih-alih Heroku atau AWS
    • Tagihan bulanan yang dapat diprediksi memberi ketenangan pikiran
  • Popularitas Coolify sedang meningkat, dan memungkinkan organisasi dari berbagai skala menjalankan perangkat lunak self-hosted dengan mudah secara gratis

    • Coolify adalah alternatif Heroku/Netlify/Vercel yang open source dan bisa di-self-host
  • Dokku adalah produk yang luar biasa dan pendirinya sangat rendah hati serta suka membantu

    • Semoga lebih banyak orang mendukungnya secara finansial
  • Penasaran apa yang digunakan untuk penyimpanan file/objek pada jenis infrastruktur seperti ini

    • Jika menggunakan AWS, penghematan apa pun bisa habis oleh biaya egress
  • Pengalaman menggunakan Dokku tidak bagus

    • Saat VPS crash dan restart, aplikasi tidak hidup kembali
    • Akhirnya beralih ke setup k8s node tunggal
  • Bisa menggunakan integrasi traefik + podman standar + systemd

    • Dokumentasi dan tautan terkait disediakan