📑 Daftar Isi

Ilustrasi website Docker di layar laptop untuk panduan self-hosting aplikasi

Panduan Self-Hosting Aplikasi Docker dengan Docker Compose

Penulis:Ida Farida
Terbit:
Diperbarui:
⏱️5 menit membaca
Bagikan:
  • Docker adalah platform open-source untuk mengemas software ke dalam container terisolasi dengan alokasi sumber daya terpisah
  • Docker Compose memungkinkan menjalankan beberapa container sekaligus melalui file compose.yaml dengan satu perintah
  • Prasyarat: server Linux Ubuntu/Debian, akses root, klien SSH, dan kredensial server
  • Langkah instalasi: koneksi SSH, instalasi Docker Engine dari repo resmi, setup direktori proyek, penulisan file YAML, dan peluncuran aplikasi
  • Contoh aplikasi Docker: Portainer, Nextcloud, Pi-hole, Jellyfin, Vaultwarden, AdGuard Home, dan Uptime Kuma
  • Perintah kunci: docker compose up, docker compose stop, dan docker compose down

Telset.id – Self-hosting aplikasi menjadi solusi bagi pengguna yang ingin menghindari biaya langganan atau biaya berbasis pemakaian yang mahal. Dengan Docker, pengguna dapat menjalankan berbagai aplikasi self-hosted di server web standar atau workstation lokal dalam lingkungan yang sepenuhnya terpisah menggunakan sumber daya yang terpartisi.

Melalui Docker Hub, pengguna juga mendapatkan akses ke banyak aplikasi dan proyek yang dikelola komunitas. Panduan langkah demi langkah ini akan menunjukkan cara self-hosting aplikasi Docker menggunakan workstation berbasis Linux atau server VPS, mulai dari instalasi Docker Engine hingga meluncurkan aplikasi containerized dengan Docker Compose.

Docker adalah platform open-source yang mengemas perangkat lunak ke dalam container terpisah. Container adalah bagian server atau perangkat yang terisolasi dan berisi semua kode, library, dan pengaturan yang terkait dengan aplikasi. Container mendapatkan alokasi sumber daya terpisah, sehingga aplikasi tidak menarik lebih banyak sumber daya dari sistem daripada yang seharusnya.

Aplikasi self-hosted bergantung pada “dependencies” tertentu, seperti database, bahasa pemrograman, dan alat sistem. Karena itu, sebagian besar aplikasi merekomendasikan instalasi melalui Docker agar dependencies yang diinstal untuk satu aplikasi tidak merusak dependencies aplikasi lain. Aplikasi Docker sepenuhnya terisolasi satu sama lain sehingga tidak menarik dari sumber daya yang sama atau mengganggu satu sama lain selama runtime.

Docker Engine adalah platform inti yang mengisolasi aplikasi. Images adalah library proyek yang digunakan untuk menginstal aplikasi atau layanan. Docker Hub adalah library publik images untuk aplikasi yang dapat dijalankan menggunakan Docker. Docker Compose adalah add-on yang memungkinkan peluncuran beberapa container Docker secara bersamaan untuk aplikasi yang lebih kompleks.

Docker screenshot

Mengapa Perlu Docker Compose?

Sebagian besar aplikasi tidak cukup sederhana untuk dijalankan dari satu container. Aplikasi biasanya memiliki komponen frontend, backend untuk administrator, serta database untuk menyimpan dan mengambil informasi. Alih-alih meluncurkan setiap container Docker secara terpisah dengan mengetik `docker run` di terminal Linux atau SSH setiap kali perlu menjalankan ulang aplikasi, pengguna dapat membuat file compose.yaml untuk menentukan container dan layanan mana yang perlu dijalankan bersama.

Setelah membuat file compose.yaml, Docker Compose dapat menjalankan seluruh aplikasi menggunakan satu perintah: `docker compose up`. Pengguna juga dapat menggunakan `docker compose stop` untuk menjeda aplikasi sementara dan `docker compose down` untuk menghentikan sepenuhnya serta membersihkan container untuk persiapan deployment berikutnya.

Langkah-Langkah Self-Hosting Aplikasi Docker

Berikut adalah proses lengkap self-hosting aplikasi containerized dengan Docker Engine dan Docker Compose.

Prasyarat

Sebelum memulai, pastikan memiliki:

  • Server rumah berbasis Linux atau VPS yang menjalankan versi terbaru Ubuntu atau Debian
  • Akses root ke server
  • Klien SSH di komputer sendiri (tersedia di macOS, Linux, dan terminal Windows modern)
  • Alamat IP server dan kredensial SSH

Langkah 1: Hubungkan ke Server melalui SSH

Akses terminal pada perangkat macOS, Linux, atau Windows. Login ke server menggunakan kredensial SSH dan IP server dengan perintah: `ssh username@your-server-ip`. Masukkan password SSH saat diminta.

Setelah terhubung, perbarui library dan paket server ke versi terkini untuk menghindari konflik dengan instalasi dan mendapatkan patch keamanan terbaru:

“`
sudo apt update && sudo apt upgrade -y
“`

Someone setting up a VPS via their laptop in a minimalist office

Langkah 2: Instal Docker Engine

Versi terbaru Docker Engine dapat diambil dari repository resminya. Mulai dengan menginstal sertifikat yang diperlukan dan kunci GPG Docker:

“`
sudo apt 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
“`

Tambahkan repo Docker resmi ke daftar sumber paket:

“`
echo \
“deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
“`

Perbarui paket dan instal Docker Engine dengan Compose:

“`
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
“`

Verifikasi instalasi Docker dengan pengecekan versi:

“`
docker –version
docker compose version
“`

Jika terjadi kesalahan, akan muncul pesan “command not found” di terminal. Ini berarti setiap langkah perlu diulang untuk memastikan tidak ada yang terlewat.

Langkah 3: Siapkan Direktori Proyek

Setelah Docker terinstal, siapkan direktori proyek untuk aplikasi self-hosted. Jalankan perintah untuk memastikan Docker dapat diakses oleh semua pengguna, tidak hanya yang memiliki hak sudo atau root:

“`
sudo usermod -aG docker $USER
“`

Log out, lalu restart terminal untuk memperbarui izin penggunaan. Buat direktori proyek dan navigasi ke dalamnya:

“`
mkdir ~/my-app && cd ~/my-app
“`

Docker screenshot

Langkah 4: Tulis File YAML

Buat file compose.yaml di direktori proyek dengan menjalankan perintah untuk meluncurkan editor Nano:

“`
nano compose.yaml
“`

Tempel isi compose.yaml sesuai instruksi setup aplikasi Docker. Biasanya, file compose.yaml harus mencakup field image untuk image proyek, nama container, field volume yang memetakan subfolder proyek, dan port spesifik tempat aplikasi akan diluncurkan.

Berikut contoh file YAML untuk aplikasi monitoring status bernama Uptime Kuma:

“`
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:

  • ./uptime-kuma-data:/app/data

ports:

  • “3001:3001”

restart: unless-stopped
“`

Simpan file dan keluar dari editor. Instruksi spesifik untuk membuat file YAML dapat ditemukan di instruksi setup aplikasi Docker di Docker Hub atau GitHub.

Langkah 5: Luncurkan Aplikasi

Luncurkan aplikasi Docker menggunakan Compose. Semua container Docker di direktori proyek dapat dijalankan dengan satu perintah:

“`
docker compose up -d
“`

Setelah container berjalan, yang biasanya memakan waktu kurang dari satu menit, akses aplikasi dengan mengunjungi alamat berikut dari browser web:

“`
http://your-server-ip:3001
“`

Ganti your-server-ip dengan alamat IP server rumah atau VPS yang sebenarnya, seperti “192.168.1.1” (IPv4) atau “[2001:0db8:85a3:0000:0000:8a2e:0370:7334]” (IPv6).

Docker screenshot

Aplikasi Docker yang Layak Dicoba

Beberapa aplikasi Docker populer yang dapat dicoba untuk memulai:

  • Portainer: Antarmuka visual untuk mengelola container Docker tanpa menggunakan terminal atau command line.
  • Nextcloud: Alternatif berbasis privasi untuk layanan cloud storage publik seperti Google Drive.
  • Pi-hole: Pemblokir iklan dan tracker di seluruh jaringan yang bekerja di tingkat DNS.
  • Jellyfin: Server media untuk streaming film, acara, dan musik sendiri dengan manajemen media BYOD.
  • Vaultwarden: Manajer password self-hosted yang berfungsi sebagai alternatif API Bitwarden.
  • AdGuard Home: Pemblokir iklan berbasis DNS populer dengan enkripsi bawaan.
  • Uptime Kuma: Alat monitoring status sederhana yang memberi peringatan saat layanan self-hosted turun.

Self-hosting dengan Docker memberikan kendali penuh atas aplikasi dan data. Dengan memahami dasar-dasar Docker Engine dan Docker Compose, pengguna dapat menjalankan berbagai aplikasi containerized dengan efisien di server sendiri, menghemat biaya langganan, dan meningkatkan privasi data. Untuk eksplorasi lebih lanjut, pengguna dapat mempelajari panduan self-hosting lainnya atau otomatisasi dengan Docker.

Ikuti Telset.id di Google NewsFollow

Komentar

Belum ada komentar.