mtls
Mengatur dan mengonfigurasi sertifikat mTLS untuk Platform OneEntry menggunakan token dan mTLS, serta menerapkan aplikasi di server dengan Nginx, Docker, dan GitLab
Bagian 1: Mengatur mTLS
Melindungi API
- Menggunakan Token: Hasilkan token di pengaturan OneEntry dan tambahkan ke header permintaan dengan parameter 'x-app-token', di mana nilainya adalah token.
- Menggunakan mTLS: Aktifkan opsi mTLS di dasbor OneEntry Anda dan hasilkan sertifikat di pengaturan OneEntry.
Mengatur sertifikat
- Di dasbor Anda, pergi ke tab 'Akses' dan beralih dari token ke mTLS.
- Hasilkan sertifikat baru di OneEntry ('Pengaturan' -> 'Sertifikat Aplikasi' -> 'Buat Sertifikat Baru').
- Unduh ke komputer Anda dan ekstrak ke folder 'cert' di root proyek Anda.
Mengatur lingkungan lokal (menggunakan ReactJS sebagai contoh)
- Unduh file setupProxy.js dan simpan di folder 'src'.
- Edit parameter 'target', dengan menentukan alamat proyek Anda.
- Instal paket 'http-proxy-middleware': 'npm install http-proxy-middleware'.
- Mulai aplikasi.
Bagian 2: Konfigurasi Server
Mempersiapkan Server
- Perbarui informasi repositori: `apt update`.
- Tambahkan repositori Docker dan instal paket: `apt install nginx certbot docker-ce pwgen`.
Konfigurasi UFW
- Blokir semua koneksi masuk: `ufw default deny incoming`.
- Izinkan semua koneksi keluar: `ufw default allow outgoing`.
- Izinkan koneksi TCP masuk di port 22, 80, dan 443: `ufw allow 22,80,443/tcp`.
Konfigurasi SSH
- Edit konfigurasi daemon SSH: `nano /etc/ssh/sshd_config`.
- Atur `PasswordAuthentication no`.
- Restart daemon SSH: `systemctl restart ssh`.
Konfigurasi Nginx
- Hapus file konfigurasi default: `rm /etc/nginx/sites-available/default`
- Buat file konfigurasi baru: `nano /etc/nginx/sites-available/my_app`.
- Unduh dan edit konfigurasi Nginx dari OneEntry, mengganti "your_domain.com" dengan domain Anda.
- Kemudian jalankan perintah: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled', mengganti "my_app" dengan nama file konfigurasi Anda.
- Terbitkan sertifikat SSL menggunakan Certbot: `certbot certonly --webroot -w /var/www/html -d your_domain`
- Periksa pembaruan sertifikat otomatis: `certbot renew --dry-run`.
- Edit tugas cron Certbot untuk secara otomatis memuat ulang konfigurasi Nginx setelah penerbitan sertifikat: ‘nano /etc/cron.d/certbot', mengganti baris terakhir dengan: `echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot`
- Hapus komentar pada baris di file konfigurasi 'nano /etc/nginx/sites-available/my_app' (di mana 'my_app' adalah nama file konfigurasi Anda).
- Periksa konfigurasi Nginx: `nginx -t`
- Muat ulang Nginx setelah setiap perubahan: `nginx -s reload`.
Bagian 3: Menerapkan Aplikasi dengan GitLab dan GitHub
GitHub
Membuat pengguna baru untuk GitHub Runner
- Hasilkan kata sandi: 'pwgen -s 15 1'
- Buat pengguna baru: 'useradd -m github-runner'
- Atur kata sandi untuknya: 'passwd github-runner'
- Tambahkan pengguna baru ke grup: 'usermod -aG docker github-runner' dan 'usermod -aG sudo github-runner'.
- Ubah shell untuk pengguna GitHub Runner: 'chsh -s /bin/bash github-runner'
- Beralih ke pengguna baru: 'sudo su - gitlab-runner'.
Mengonfigurasi GitHub Runner
- Buat GitHub Runner: pergi ke pengaturan repositori Anda, klik pada 'Actions' dan pilih 'Runners', lalu klik pada 'New self-hosted runner'.
- Ikuti instruksi di blok 'Download' dan perintah pertama di blok 'Configure'.
- Tambahkan Runner ke autostart sistem: 'sudo ./svc.sh install'. Anda perlu memasukkan kata sandi yang dihasilkan sebelumnya.
- Mulai Runner: 'sudo ./svc.sh start'.
- Pergi ke bagian 'Actions', klik pada 'Runners', dan pastikan 'Runner' sedang berjalan.
- Kembali ke pengguna 'root'.
- Buat direktori kerja: 'mkdir -p /var/apps/frontend'
- Atur izin untuk pengguna 'github-runner': 'chown -R github-runner:docker /var/apps/frontend'.
Mengonfigurasi variabel lingkungan di GitHub
- Buat variabel `DOMAIN`, `MTLS_USER_CERT`, dan `MTLS_USER_KEY` di repositori GitHub Anda ('Pengaturan' -> 'Secrets and Variables').
- Hasilkan sertifikat di OneEntry, tambahkan sertifikat dan kunci ke variabel. Di variabel `DOMAIN`, tentukan alamat proyek Anda tanpa https.
- Unduh file docker-compose.yml dan dua arsip .github dan .docker.
- Letakkan docker-compose.yml, .github.zip, dan .docker.zip di folder root proyek Anda dan ekstrak arsip (Anda dapat menghapus arsip setelah ekstraksi).
- Jalankan perintah push di proyek Anda.
- Periksa proses di tab 'Actions'.
- Periksa aksesibilitas aplikasi di browser.
GitLab
Mendaftarkan GitLab Runner
- Tentukan tag 'docker, frontend'.
- Pergi ke 'Pengaturan -> CI/CD -> Runners' dan klik tombol 'New project runner'.
- Pergi ke direktori yang dibuat: `cd /var/apps/gitlab-runner`.
- Jalankan perintah untuk memulai proses pendaftaran: `docker compose run runner register`.
- Masukkan URL GitLab, misalnya, https://gitlab.com/.
- Dapatkan token pendaftaran dari GitLab (di bagian 'Runners' proyek) dan tempelkan ke terminal.
- Tentukan executor sebagai 'docker'.
- Tentukan gambar default sebagai docker:20.10.16.
Mengatur variabel lingkungan di GitLab
- Buat variabel `DOMAIN`, `MTLS_USER_CERT`, dan `MTLS_USER_KEY` di repositori GitLab Anda ('Pengaturan' -> 'CI/CD' -> 'Variabel').
- Hasilkan sertifikat di OneEntry, tambahkan sertifikat dan kunci ke variabel, dan tentukan alamat proyek Anda tanpa https di variabel `DOMAIN`.
- Unduh file docker-compose.yml, .gitlab-ci.yml, dan arsip .docker, letakkan file-file tersebut di root proyek Anda, dan ekstrak arsip (Anda dapat menghapus arsip setelah ekstraksi).
Mempersiapkan konfigurasi GitLab Runner (executor Docker)
- Buat direktori yang diperlukan: `mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner`
- Jalankan perintah: `cat \ /var/apps/gitlab-runner/docker-compose.yamlversion: '3' services: runner: image: 'gitlab/gitlab-runner:v16.2.0' restart: always container_name: 'gitlab-runner' privileged: true volumes: - './volumes/etc/gitlab-runner:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock' EOT`
Konfigurasi GitLab Runner
- Edit file konfigurasi: `nano volumes/etc/gitlab-runner/config.toml`.
- Atur parameter `priviledged` ke `true` untuk mengaktifkan Docker-in-Docker.
- Ubah nilai `volumes` menjadi `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` agar Docker berfungsi dengan benar.
- Tambahkan `user = 'gitlab-runner'` di awal file untuk menjalankan Runner sebagai pengguna tersebut.
- Simpan perubahan dan keluar dari editor.
- Restart Runner: 'systemctl restart gitlab-runner'.
Mengaktifkan dan memverifikasi GitLab Runner
- Jalankan perintah `docker compose up -d` untuk memulai Runner.
- Pergi ke GitLab dan periksa bahwa Runner aktif dan berjalan (Anda harus melihat statusnya di bagian 'Runners' proyek).
Mengatur Runner tambahan di host (executor shell)
- Ikuti Instruksi untuk menginstal Runner tambahan yang berjalan langsung di host (tidak di Docker).
- Atur tag untuk Runner: 'shell, frontend'.
Izin Runner
- Tambahkan pengguna baru ke grup: 'usermod -aG docker gitlab-runner'
- Jika Anda perlu mengubah pemilik dan grup untuk file atau direktori: 'chown -R gitlab-runner:docker /var/apps/frontend'
Konfigurasi Akhir dan Pengujian
- Pastikan semua Runners telah dikonfigurasi dengan benar dan siap digunakan.
- Eksekusi perintah push di proyek Anda.
- Periksa kemajuan di 'Build' -> 'Pipelines'.
- Periksa ketersediaan aplikasi di browser.
Kesimpulan
Ikuti langkah-langkah ini untuk pengaturan dan penerapan aplikasi Anda yang sukses dengan OneEntry. Semoga sukses dengan pengembangan!