How to Install Hasura GraphQL Engine

Hasura adalah mesin sumber terbuka yang berbasis pada bahasa kueri GraphQL untuk API. Ini memungkinkan Anda untuk membuat koneksi, mengelola, dan mengonfigurasi pemicu peristiwa untuk database PostgreSQL dalam beberapa menit. Hasura membantu Anda membangun aplikasi GraphQL yang didukung oleh PostgreSQL atau secara bertahap memindahkan proyek yang ada.
Dalam tutorial ini, kami akan mengulas dua contoh instalasi mesin Hasura GraphQL di platform:
- Automatic Deployment with Local PostgreSQL Database
- Manual Deployment with External PostgreSQL Database
Automatic Deployment with Local PostgreSQL Database
1. Masuk ke dashboard dan klik Marketplace di pojok kiri atas.

2. Cari paket Docker Engine CE dan mulai instalasinya.

3. Untuk secara otomatis membuat Hasura dan database PostgreSQL dalam kontainer yang sama, pilih opsi Deploy containers from compose.yml, dan berikan konfigurasi default dari repository Hasura on Docker:
https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/docker-compose/docker-compose.yaml

Instalasi memerlukan public IP, yang merupakan opsi berbayar yang tersedia hanya untuk pengguna billing.
Konfigurasikan kolom Environment, Display Name, dan Region (jika tersedia) sesuai kebutuhan Anda, lalu klik Install.
4. Setelah instalasi berhasil, Anda dapat mengakses konsol Hasura untuk memastikan semuanya berjalan dengan baik.
http://{envDomain}:8080/console

Itu saja! Sekarang, Anda dapat memberikan Data untuk database Anda melalui tab bernama sama di bagian atas dan mencoba kueri GraphQL setelahnya.
Manual Deployment with External PostgreSQL Database
Jika Anda sudah memiliki database, Anda dapat menghubungkannya dengan mesin Hasura GraphQL.
1. Buat Docker Engine CE standalone yang bersih melalui Marketplace platform.

2. Setelah dibuat, sambungkan ke kontainer melalui Web SSH dan buat file dengan konten berikut (misalnya, nano docker-run.sh):
docker run -d --restart=always -p 80:8080 \
-e HASURA_GRAPHQL_DATABASE_URL=postgres://{username}:{password}@{host}/{dbname} \
-e HASURA_GRAPHQL_ENABLE_CONSOLE=true \
-e HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey \
hasura/graphql-engine:v1.0.0

Untuk informasi lebih lanjut tentang perintah docker run, lihat dokumentasi resmi. Dalam kasus kami, parameter-parameter sebagai berikut:
- -d - menjalankan layanan Anda di latar belakang
- –restart=always - selalu memulai daemon (misalnya setelah kontainer di-restart)
- -p 80:8080 - mengonfigurasi pengalihan port dari port 80 kontainer Docker Engine ke port 8080 dari gambar Hasura yang berjalan di dalam
- -e - mengatur variabel lingkungan (lihat daftar lengkap untuk detail tambahan)
- HASURA_GRAPHQL_DATABASE_URL - tautan koneksi ke database PostgreSQL Anda dengan karakter khusus yang di-URL encode (jika terletak di platform, detail yang diperlukan dapat dilihat di email pembuatan PostgreSQL)
- HASURA_GRAPHQL_ENABLE_CONSOLE - mengaktifkan konsol Hasura
- HASURA_GRAPHQL_ADMIN_SECRET - mengonfigurasi kunci rahasia admin untuk mengakses konsol, myadminsecretkey dalam kasus kami
- hasura/graphql-engine:v1.0.0 - gambar Docker yang akan diinstal
3. Buat file ini dapat dieksekusi dan jalankan untuk membuat kontainer Docker Hasura.
chmod +x docker-run.sh
./docker-run.sh

Anda juga dapat menjalankan perintah docker ps untuk memastikan bahwa layanan Hasura berjalan.
4. Dalam kasus kami, konsol aplikasi berada di port 80, sehingga Anda dapat mengklik Open in Browser di sebelah environment Anda untuk pengalihan otomatis. Jika tidak, port yang diperlukan harus ditambahkan ke URL environment.

Sesuai pengaturan kami, kunci rahasia admin harus disediakan untuk mengakses konsol (myadminsecretkey dalam kasus kami).
5. Sekarang, Anda dapat mulai bekerja dengan database Anda melalui API GraphQL. Misalnya, dari tab GraphiQL.
Jika ada tabel yang sudah ada yang harus dilacak oleh Hasura, pergi ke tab Data dan izinkan akses ke tabel yang diperlukan.

Sebagai alternatif, Anda dapat menggunakan GraphQL Endpoint (ditentukan di bagian atas halaman) untuk membuat permintaan POST ke database melalui alat atau skrip yang Anda pilih.