Tools & Integrations
API & RPC

Panduan Membuat RPC API dan GRPC WEB Node Cosmos

Persiapkan:

  • Domain dan Subdomain

Pengaturan API dalam app.toml

img

nano $HOME/.planqd/config/app.toml

Instalasi Paket

sudo apt autoremove nodejs -y
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx nodejs git yarn -y 

Pengaturan Proxy nginx dan Instalasi SSL

Periksa API dan RPC IP:PORT

nano $HOME/.planqd/config/app.toml

img

nano $HOME/.planqd/config/config.toml

img

Periksa GRPC dan GRPC IP:PORT

nano $HOME/.planqd/config/app.toml

img

  • Atur Domain API
API_DOMAIN="YOUR_API_DOMAIN"
  • Atur Port API
API_IP_PORT="IP:PORT"
  • Atur Domain RPC
RPC_DOMAIN="YOUR_API_DOMAIN"
  • Atur Port RPC
RPC_IP_PORT="IP:PORT"
  • Atur Domain GRPC
GRPC_DOMAIN="YOUR_GRPC_DOMAIN"
  • Atur Port GRPC
GRPC_IP_PORT="IP:PORT"
  • Atur Domain GRPC_WEB
GRPC_WEB_DOMAIN="YOUR_GRPC_WEB_DOMAIN"
  • Atur Port GRPC_WEB
GRPC_WEB_IP_PORT="IP:PORT"

Buat Konfigurasi

Buat Konfigurasi API

sudo cat <<EOF > /etc/nginx/sites-enabled/${API_DOMAIN}.conf
server {
    server_name $API_DOMAIN;
    listen 80;
    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Max-Age 3600;
        add_header Access-Control-Expose-Headers Content-Length;
 
	proxy_set_header   X-Real-IP        \$remote_addr;
        proxy_set_header   X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_set_header   Host             \$host;
 
        proxy_pass http://$API_IP_PORT;
 
    }
}
EOF

Buat Konfigurasi RPC

sudo cat <<EOF > /etc/nginx/sites-enabled/${RPC_DOMAIN}.conf
server {
    server_name $RPC_DOMAIN;
    listen 80;
    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Max-Age 3600;
        add_header Access-Control-Expose-Headers Content-Length;
 
	proxy_set_header   X-Real-IP        \$remote_addr;
        proxy_set_header   X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_set_header   Host             \$host;
	
	proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection "upgrade";
 
        proxy_pass http://$RPC_IP_PORT;
 
    }
}
EOF

Buat Konfigurasi GRPC

sudo cat <<EOF > /etc/nginx/sites-enabled/${GRPC_DOMAIN}.conf
server {
    server_name $GRPC_DOMAIN;
    listen 80;
    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Max-Age 3600;
        add_header Access-Control-Expose-Headers Content-Length;
 
	proxy_set_header   X-Real-IP        \$remote_addr;
        proxy_set_header   X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_set_header   Host             \$host;
 
        proxy_pass http://$GRPC_IP_PORT;
 
    }
}
EOF

Buat Konfigurasi GRPC WEB

sudo cat <<EOF > /etc/nginx/sites-enabled/${GRPC_WEB_DOMAIN}.conf
server {
    server_name $GRPC_WEB_DOMAIN;
    listen 80;
    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Max-Age 3600;
        add_header Access-Control-Expose-Headers Content-Length;
 
	proxy_set_header   X-Real-IP        \$remote_addr;
        proxy_set_header   X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_set_header   Host             \$host;
 
        proxy_pass http://$GRPC_WEB_IP_PORT;
 
    }
}
EOF

Uji Konfigurasi

sudo pkill nginx
nginx -t 

Output jika berhasil

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Pasang Sertifikat SSL

sudo certbot --nginx --register-unsafely-without-email
sudo certbot --nginx --redirect -d ${API_DOMAIN},${RPC_DOMAIN},${GRPC_DOMAIN},${GRPC_WEB_DOMAIN}