# Instalasi dan Konfigurasi Awal Node-Red

Node-red menyediakan sebuah editor berbasis browser sehingga mudah untuk dioperasikan pada waktu merangkai sebuah flow dari sebuah node pada pallete dan dapat di-deploy hanya dengan sekali klik. Node-red dibangun pada sebuah Node.js yang terkenal dengan ringan untuk dijalankan, konsep *event-driven*, dan menggunakan model non-blocking. Node-red dapat diinstall dalam sebuah jaringan dengan spesifikasi hardware yang murah seperti raspberry maupun di cloud. Pada kesempatan kali ini akan diinstall pada sebuah layanan cloud yaitu AWS.

> Misalnya belum mendaftar sebagai AWS Educate bisa diganti dengan install di Raspberry Pi atau di komputer local. Tentunya ketika install di local dengan sistem operasi windows sangat berbeda dengan langkah yang disajikan pada workshop ini, Untuk lebih jelasnya bisa melihat dokumentasinya di <https://nodered.org/docs/getting-started/>

Berikut ini adalah langkah-langkahnya yang dapat digunakan untuk proses installasi node

* Silakan login ke akun aws educate, <https://www.awseducate.com/educator/s/>. Jika berhasil akan diarahkan ke halaman AWS educate seperti pada gambar di bawah ini&#x20;

![Halaman AWS Educate](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbWNkbrwnXTbuIf6_GC%2F-MbWSeeF3bdz3k_u1PV5%2F01.png?alt=media\&token=e0e840de-f0c2-4dd1-b1d6-0286ca2f8119)

* Pilih menu `AWS Account - AWS Educate Started Account`, selanjutnya muncul halaman seperti ditunjukkan pada gambar berikut

![AWS Akun Status](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbWNkbrwnXTbuIf6_GC%2F-MbWTB8mHm1Vhtg-XGcx%2F02.png?alt=media\&token=46c6453d-e697-40db-85e5-b23f6ee66dc9)

* Pilih `AWS Console` dan muncul halaman `AWS Management Console` seperti berikut ini

![AWS Management Console](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbWTaDJcMcd1s45pP4E%2F-MbWTljFPdsTxjyWHdRb%2F03.png?alt=media\&token=70f40048-4486-495c-8ba0-ca8dacbd6703)

* Selanjutkan akan diarahkan pada halaman EC2 Dashboard seperti pada tampilan di bawah ini, pilih `Launch Instance - Launch instance.`

![EC2 Dashboard](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbWTaDJcMcd1s45pP4E%2F-Mb_o82HVoH5QP4ZOGF-%2FScreen%20Shot%202021-06-07%20at%2016.28.46.png?alt=media\&token=ab14d88a-e39c-4492-8420-94d9b994ac82)

* Langkah yang selanjutnya dengan melakukan konfigurasi instance yang akan dibuat, ada 7 langkah yang perlu dilewati untuk membuat sebuah instance tetapi karena beberapa batasan dari akun educate. Kita fokuskan langkah 1 dan langkah 6, untuk langkah yang lain dibuat default saja. Untuk langkah yang pertama yaitu memilih sistem operasi yang akan kita gunakan, silakan ketik `"ubuntu"` pada text search kemudian pilih **Ubuntu Server 20.04 LTS(HVM), SSD Volume Type** dengan klik tombol **Select**. Untuk lebih jelasnya silakan perhatikan gambar di bawah ini

![Step 1 - Amazone Machine Image](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbWTaDJcMcd1s45pP4E%2F-Mb_rUgixPyh_jcmfMPH%2FScreen%20Shot%202021-06-07%20at%2016.45.25.png?alt=media\&token=d76b7e79-64ec-4531-a55d-9bdd72270d86)

* Setelah selesai pada langkah 1, silakan loncat atau beralih ke langkah 6 yaitu `Configure Security Group`. Tambahkan port 1880, port tersebut digunakan untuk kebutuhan komunikasi Node-RED dengan cara klik tombol **Add Rule**. Isikan `Port Rage` ***1880*** dan `Source` ***0.0.0.0/0***, jika klik tombol **Review and Launch** seperti pada gambar di bawah ini \`\`

![Configure Security Group](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbWTaDJcMcd1s45pP4E%2F-Mb_u5mF1DHwCTWQi2Q5%2FScreen%20Shot%202021-06-07%20at%2016.56.44.png?alt=media\&token=2a9387d4-be95-48fe-a186-1356264b4f5f)

* Langkah yang terakhir silakan klik tombol **Launch**, pada halaman ini adalah summary dari konfigurasi langkah-langkah sebelumnya. Antarmuka pada langkah 7 kurang lebih seperti gambar di bawah ini

![Review Instance Launch](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-Mb_u8ng2NXx4m0_GKlA%2F-Mb_vC7t4OG_tmCirxgc%2FScreen%20Shot%202021-06-07%20at%2017.00.32.png?alt=media\&token=68fb784a-f342-4524-af30-26a69e54ecbb)

Setelah tombol **Launch** diklik, akan muncul dialog untuk membuat sebuah Key Pair. Key Pair digunakan untuk memudahkan akses atau berkomunikasi dengan instance yang kita buat tanpa melakukan memasukkan user password setiap kali akan mengakses instance. Pilih `Create a new key pair` dan berikan nama key pair tersebut dan selanjutnya download key pair tersebut dengan klik tombol **Download Key Pair** dan klik **Launch Instance**. Untuk lebih jelaskan dapat dilihat pada gambar di bawah ini

![Create key pair](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-Mb_u8ng2NXx4m0_GKlA%2F-Mb_wwacv4tLXdBT4IXx%2FScreen%20Shot%202021-06-07%20at%2017.09.20.png?alt=media\&token=f2a0075c-6d1b-4a06-b67d-6e4aa0add890)

Untuk melihat instance yang telah kita buat, klik tombol **View Instance** dan tunggu statusnya pada kolom `Instance state` menjadi **Running** seperti pada gambar berikut

![Status instance pada EC2 Dashboard](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-Mb_u8ng2NXx4m0_GKlA%2F-Mb_xl-QOsrKMwArorxk%2FScreen%20Shot%202021-06-07%20at%2017.13.37.png?alt=media\&token=81798a56-a8fc-480f-879d-ceca73f46664)

Untuk menghubungkan ke instance yang telah kita buat, ada beberapa langkah yang dapat kita lakukan tergantung dengan sistem operasi yang digunakan. Misalkan menggunakan sistem operasi windows biasanya menggunakan tool putty, sedangkan jika menggunakan sistem operasi UNIX cukup mengetika perintah ssh pada terminal. Terlebih dahulu klik atau checklist instance yang telah kita buat, kemudian scrooll ke bawah atau ke kanan untuk mengetahui ip public atau domain agar kita bisa mengaksesnya. Perhatikan gambar di bawah ini

![Details EC2](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbacFOBPXuBdtllTfVy%2F-MbadpICfkK6ls3JbpiZ%2FScreen%20Shot%202021-06-07%20at%2020.25.54.png?alt=media\&token=d42c2dbb-ba49-4e3f-a7b6-32d2b68d63c7)

Untuk menghubungkan menggunakan sistem operasi UNIX bisa mengikuti langkah di bawah ini

```
chmod 400 tot-iot-keypair.pem
ssh -i "tot-iot-keypair.pem" ubuntu@34.239.124.118
```

Pada baris pertama digunakan untuk mengubah permisi dari file pem yang sebelumnya kita download, lokasi dan nama file key pair silakan disesuaikan dengan yang Anda miliki. Sedangkan langkah kedua perintah untuk remote atau menghubungkan ke EC2, **34.239.124.118** adalah ip public EC2 kita atau bisa diganti dengan DNS. Ip atau DNS silakan disesuaikan dengan EC2 Anda. Jika berhasil akan menampilkan keluaran seperti di bawah ini

```
The authenticity of host '34.239.124.118 (34.239.124.118)' can't be established.
ECDSA key fingerprint is SHA256:1ExscKho0XX9/pBCW2USR5xjnE4+02gN/DUKZEhWn+Q.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '34.239.124.118' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-1045-aws x86_64)
...
ubuntu@ip-172-31-82-33:~$
```

Kemudian ketika kita ingin remote atau mengakses menggunakan tool putty, langkahnya adalah sebagai berikut

* Silakan download putty di <https://www.putty.org/> dan lakukan installasi
* Setelah proses installasi selesai, cari **PuTTYgen** pada sistem menu dan klik tombol **Load** untuk mencari fille \*.pem yang sebelumnya kita download ketika membuat instance EC2. Tampilan lengkapnya seperti gambar berikut

![Tampilan PuTTYgen](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbagTcJ6KUesMVyLplQ%2F-MbalFcdOfByu7ZI3bE0%2Fputtygen.PNG?alt=media\&token=2965ae6e-7dfc-4082-a6df-9b769a1c5fea)

* Setelah file \*.pem berhasil diload, kita perlu menyimpan file tersebut dengan klik tombol **Save private key**. Pada bagian Key passphrase dan Confirm passphrase dikosongkan saja sehingga ketika login ke instance EC2 kelak tidak meminta password. Gambar yang lebih jelas bisa dilihat seperti di bawah ini

![PuTTY Key Generator](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbagTcJ6KUesMVyLplQ%2F-Mbam21P6cS6dOvGHc9-%2Fimported.PNG?alt=media\&token=4f408fa1-4c41-48c0-99c9-b8d3f97642e3)

* Selanjutnya buka aplikasi **PuTTY** pada sistem menu, isikan host sesuai dengan ip atau dns instance EC2 Anda. Bisa dilihat pada gambar di bawah ini

![PuTTY Configuration](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-Mbam4byxbaSLgZrv0_1%2F-Mban328qKwT1FOuSInc%2Fsession.PNG?alt=media\&token=c0bdddba-305d-468c-81f1-3f2fed7d9ebd)

* Kemudian kita perlu menambakan file \*.ppk yang sebelumnya telah dibuat, caranya adalah pada bagian **PuTTY Configuration** pilih **SSH** dan **Auth** kemudian masukkan file \*.ppk dengan cara klik tombol **Browse** seperti pada gambar di bawah ini

![Browse File \*.ppk](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-Mbam4byxbaSLgZrv0_1%2F-Mbao6RePPzjEBhbyHhB%2Fauth.PNG?alt=media\&token=0d1f23d3-24bb-455e-9d3f-d58a3818ac44)

* Jika sudah selesai konfigurasi, silakan klik tombol Open seharusnya akan muncul Dialog seperti berikut.

![PuTTY Security Alert](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbaoIbpRagwHR9yyg_S%2F-MbapDyXhIlc1dp9DRcQ%2Fsubmit.PNG?alt=media\&token=1b8e6a84-7e2a-4024-9000-d783f92c8e2a)

Ketika berhasil, seharusnya akan muncul tampilan seperti berikut ini

![Putty EC2](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbaoIbpRagwHR9yyg_S%2F-MbapZo83oZx2vQ3wmP6%2Fsuccess.PNG?alt=media\&token=0434147a-70d5-46e0-ace5-de9316ddb47e)

Node-RED basisnya adalah nodejs sehingga perlu diinstall terlebih dahulu paket-paket untuk kebutuhan nodejs. Jalan perintah di bawah ini untuk memasang paket yang dibutuhkan

```
sudo apt-get update
sudo apt-get install -y nodejs build-essential npm
sudo npm install -g --unsafe-perm node-red
```

Jika 3 baris perintah di atas selesai dijalankan, terakhir jalankan perintah di bawah ini untuk menjalankan Node-RED.

```
ubuntu@ip-172-31-82-33:~$ node-red
7 Jun 14:27:25 - [info]

Welcome to Node-RED
===================

7 Jun 14:27:25 - [info] Node-RED version: v1.3.5
7 Jun 14:27:25 - [info] Node.js  version: v10.19.0
....
7 Jun 14:27:27 - [info] Server now running at http://127.0.0.1:1880/
7 Jun 14:27:27 - [info] Starting flows
7 Jun 14:27:27 - [info] Started flows
```

Terakhir, silakan buka browser Anda dan ketika alamat ip atau DNS diikuti dengan port 1880, sebagai contoh adalah <http://ec2-34-239-124-118.compute-1.amazonaws.com:1880/>. Seharusnya akan menampilkan halaman Node-RED seperti berikut ini

![Tampilan Node-RED](https://3323147311-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M_tN_CaR5ayMH9yNmOz%2F-MbapbDRvW3mjKOIZmMN%2F-Mbask18N0vx7OkcIvCQ%2FScreen%20Shot%202021-06-07%20at%2021.31.29.png?alt=media\&token=0e34cda4-7ba7-4b96-8561-6cfdfa62d44b)

> Ketika instance dimatikan atau direstart maka Node-Red harus dinyalan kembali, berikut ini adalah perintah yang digunakan agar Node-Red otomatis dijalankan ketika instance restart.

```
sudo npm install -g --unsafe-perm pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
```

Silakan restart instance Anda, seharusnya Node-Red sudah berjalan dan tidak perlu menjalankan kembali. `pm2` adalah modul manajemen aplikasi yang berjalan pada nodejs.
