---
title: Docker Compose
description: Jalankan Human Plugin di satu host dengan Docker Compose, terhubung ke database PostgreSQL Anda.
canonical: https://developer.unico.io/id/human-plugin/self-hosting/docker-compose
locale: id
generated_by: markdown-export
---

# Docker Compose

Satu container Human Plugin di satu host, terhubung ke database PostgreSQL Anda.

## Prasyarat

- Docker Engine 24 atau lebih baru dengan Docker Compose v2.
- Database PostgreSQL khusus untuk Human Plugin, yang dapat dijangkau dari host. Lihat [Prasyarat dan akses](/id/human-plugin/get-started/prerequisites).
- Kredensial registry dan access key dari Unico.

## 1. Login ke registry

Sekali per host. Docker menyimpan kredensial di `~/.docker/config.json`.

```bash
echo "<token>" | docker login pkg.unico.run -u <username> --password-stdin
```

## 2. Tulis pengaturan

Buat direktori untuk Human Plugin dan file `.env` yang hanya dapat dibaca oleh pemiliknya:

```bash
mkdir -p /opt/human-plugin && cd /opt/human-plugin
```

```bash title=".env"
HUMAN_API_ACCESS_KEY=<your access key>
POSTGRES_ADDRESS_HOST=<database host>
POSTGRES_USER=human_plugin
POSTGRES_PASSWORD=<database password>
```

```bash
chmod 600 .env
```

Tambahkan `POSTGRES_ADDRESS_PORT`, `POSTGRES_DATABASE` atau `POSTGRES_SSL_MODE` hanya jika database Anda berbeda dari nilai default di [Konfigurasi](/id/human-plugin/self-hosting/configuration). Jangan pernah meng-commit file `.env`.

## 3. Tulis `compose.yaml`

```yaml title="compose.yaml"
services:
  human-plugin:
    image: pkg.unico.run/human-plugin-api:latest
    pull_policy: always
    restart: unless-stopped
    stop_grace_period: 60s
    env_file: .env
    ports:
      - "127.0.0.1:8080:8080"
```

- **`ports`:** publikasikan hanya di `127.0.0.1` atau antarmuka privat, jangan pernah di `0.0.0.0`. Human Plugin tidak memiliki autentikasi sendiri: lihat [Jaringan dan keamanan](/id/human-plugin/self-hosting/networking-and-security).
- **`stop_grace_period: 60s`:** Human Plugin menunggu hingga 55 detik untuk permintaan yang sedang berjalan saat berhenti. Grace period yang lebih pendek dapat memutus create di tengah jalan.
- **`pull_policy: always`:** setiap `up` memeriksa image terbaru, sehingga Anda selalu menjalankan rilis terbaru.

## 4. Mulai

```bash
docker compose up -d
```

```bash
curl --fail http://127.0.0.1:8080/health/ready
```

Arahkan trafik ke Human Plugin hanya setelah `/health/ready` menjawab `200`. Lalu jalankan permintaan create dari [Quickstart](/id/human-plugin/get-started/quickstart#3-create-a-process) terhadapnya.

## Log dan status

```bash
docker compose ps
```

```bash
docker compose logs -f human-plugin
```

Startup yang sehat diakhiri dengan baris `human plugin listening`. Lihat [Kesehatan dan pemantauan](/id/human-plugin/self-hosting/health-and-monitoring#logs) untuk log startup lengkap. Jika container restart terus-menerus, log menyebutkan alasannya: lihat [Pemecahan masalah](/id/human-plugin/additional-resources/troubleshooting).

## Pembaruan

```bash
docker compose pull && docker compose up -d
```

Compose mengganti container hanya jika image berubah. Lihat [Operasi](/id/human-plugin/self-hosting/operations) untuk hal yang perlu diperiksa setelah pembaruan.

## Berhenti

```bash
docker compose down
```

Data Anda berada di database PostgreSQL Anda, sehingga menghentikan atau menghapus container tidak menghilangkan apa pun.