Deployment
Bagian ini menjelaskan pertimbangan dan kegiatan utama untuk deploy sistem Web Assessment dan Smartlab ke lingkungan produksi. Meskipun pilihan metode orkestrasi dan deployment (misalnya, Docker Swarm, Kubernetes, atau manajemen container manual) bergantung pada kebutuhan spesifik pengguna, langkah-langkah berikut memberikan contoh sistem diatur dengan aman dan efisien.
Containerization
Semua komponen utama dari sistem, termasuk Admin Backend, Assessment Backend, Storage Service, TURN Server (coturn), Redis, dan PostgreSQL, dikontainerisasi menggunakan Docker. Pendekatan ini memastikan bahwa sistem mudah di-deploy, skalabel, dan terisolasi dari potensi konflik di lingkungan host.
Setiap servis dijelaskan dalam file docker-compose.yml masing-masing atau dalam konfigurasi orkestrasi container lainnya.
Networking and Security
SSL/TLS Setup
Untuk memastikan komunikasi yang aman antara frontend dan backend, penting untuk mengonfigurasi sertifikat SSL/TLS. Karena sistem mungkin beroperasi menggunakan alamat IP alih-alih nama domain, digunakan sertifikat self-signed untuk enkripsi untuk lingkungan produksi.
Berikut adalah contoh cara mengatur sertifikat self-signed menggunakan openssl:
-
Buat file san.cnf
Create a san.cnf file with the following content to define the Subject Alternative Names (SAN) for your SSL certificate:
[ req ] distinguished_name = req_distinguished_name req_extensions = req_ext x509_extensions = v3_req prompt = no [ req_distinguished_name ] CN = xx.xx.xx.xxx [ req_ext ] subjectAltName = @alt_names [ v3_req ] subjectAltName = @alt_names [ alt_names ] IP.1 = xx.xx.xx.xxx -
Generate Penerbit (Issuer)
Jalankan perintah berikut untuk menghasilkan private key dan sertifikat self-signed untuk Certificate Authority (CA):
# Generate CA private key openssl genrsa -out smartlabCA.key 2048 # Generate self-signed CA certificate openssl req -x509 -new -nodes -key smartlabCA.key -sha256 -days 3650 -out smartlabCA.crt -subj "/CN=Smartlab CA" -
Generate SSL Certificate
Generate private key, CSR (Certificate Signing Request), dan SSL certificate menggunakan CA and konfigurasi SAN yang sudah dibuat.
openssl genrsa -out self-signed-smartlab.key 2048 openssl req -new -key self-signed-smartlab.key -out self-signed-smartlab.csr -config san.cnf openssl x509 -req -in self-signed-smartlab.csr -CA smartlabCA.crt -CAkey smartlabCA.key -CAcreateserial -out self-signed-smartlab.crt -days 365 -sha256 -extfile san.cnf -extensions req_ext
File yang dihasilkan:
- smartlabCA.key: Root CA private key
- smartlabCA.crt: Root CA certificate
- self-signed-smartlab.csr: Server Certificate Signing Request
- self-signed-smartlab.key: Server private key
- self-signed-smartlab.crt: SSL certificate
File self-signed-smartlab.key dan self-signed-smartlab.crt digunakan dalam konfigurasi web server untuk mengaktifkan SSL.
File smartlabCA.crt, yang merupakan sertifikat Root Certificate Authority (CA), adalah file yang harus diinstal di perangkat mana pun yang perlu mempercayai sertifikat SSL self-signed. Langkah ini sangat penting karena memungkinkan sistem atau browser untuk mengenali sertifikat SSL yang Anda buat sebagai sertifikat yang dipercaya.
Pada banyak sistem (seperti Windows dan macOS), penginstallan bisa cukup dengan mengklik dua kali file smartlabCA.crt untuk membuka dialog instalasi sertifikat, yang akan menyederhanakan proses.
Web Server & Proxy
Web server bertanggung jawab untuk menangani trafik masuk, mengelola sertifikat SSL/TLS, dan mengarahkan permintaan ke servis yang sesuai. Bagian ini menjelaskan cara mengonfigurasi web server untuk sistem Web Assessment dan Smartlab menggunakan Caddy sebagai reverse proxy. Konfigurasi ini memastikan bahwa trafik dienkripsi menggunakan SSL/TLS, dan permintaan diarahkan ke servis yang tepat berdasarkan arsitektur sistem.
Caddy untuk Reverse Proxy dan Setup SSL/TLS
-
Contoh Konfigurasi Web Assessment Caddy:
https://xx.xx.xx.xxx { handle /api/v1* { uri strip_prefix /api/v1 reverse_proxy localhost:3010 } #socketio handle /socket.io/* { reverse_proxy localhost:3010 { lb_policy cookie #cookie-based load balancing untuk sticky sessions } } handle /socket/* { reverse_proxy localhost:3010 { lb_policy cookie #cookie-based load balancing untuk sticky sessions } } handle { reverse_proxy localhost:3000 } tls /etc/caddy/certs/self-signed-smartlab.crt /etc/caddy/certs/self-signed-smartlab.key }Perhatikan pengaturan lb_policy cookie dalam konfigurasi Caddy. Pengaturan ini mengaktifkan sticky sessions. Sticky sessions atau session persistence sangat penting ketika memiliki beberapa instance backend atau menggunakan load balancing untuk servis yang mempertahankan koneksi long polling pada Socket.IO.