Panduan Deployment ke Server

Pendahuluan

Dokumen ini menjelaskan cara men-deploy aplikasi IoT Vermikompos ke server produksi, seperti Virtual Private Server (VPS) yang menjalankan Ubuntu. Ini akan membuat sistem Anda dapat diakses secara online dan berjalan 24/7.

1. Persiapan Server

Pastikan server Anda memenuhi persyaratan berikut:

# Update server
sudo apt update && sudo apt upgrade -y

# Install Git, Docker, dan Docker Compose
sudo apt install git docker.io docker-compose -y

# Tambahkan user ke grup docker agar tidak perlu sudo
sudo usermod -aG docker ${USER}

Penting: Anda perlu logout dan login kembali agar perubahan grup docker diterapkan.

2. Langkah-langkah Deployment

Langkah 2.1: Clone Repository

Hubungkan ke server Anda via SSH dan clone repository proyek dari GitHub (atau sumber lain).

git clone https://github.com/your-username/mqtt_plan.git
cd mqtt_plan

Langkah 2.2: Konfigurasi Environment

Salin file environment example dan sesuaikan isinya untuk mode produksi. Ganti semua password default dengan password yang kuat.

# Di dalam direktori /api
cp .env.example .env.production
nano .env.production

Pastikan untuk mengatur `DB_HOST=mysql` dan `MQTT_BROKER=mosquitto` agar container dapat berkomunikasi melalui jaringan Docker.

Langkah 2.3: Buat File Docker Compose Produksi

Buat file `docker-compose.prod.yml` yang dioptimalkan untuk produksi. File ini mungkin tidak akan mem-build dari source, melainkan menggunakan image yang sudah jadi, dan tidak akan mem-mount volume kode sumber.

3. Menjalankan Aplikasi

Gunakan Docker Compose untuk membangun image (jika perlu) dan menjalankan semua container di background mode (`-d`).

# Menjalankan semua service
docker-compose -f docker-compose.prod.yml up --build -d

# Memeriksa status container yang berjalan
docker-compose -f docker-compose.prod.yml ps

4. Konfigurasi Reverse Proxy (Nginx)

Sangat disarankan untuk menggunakan Nginx sebagai reverse proxy. Ini berguna untuk:

Anda perlu menginstall Nginx di server dan membuat file konfigurasi di `/etc/nginx/sites-available/`. Jangan lupa untuk mengaktifkannya dengan membuat symbolic link ke `sites-enabled`.