{"id":2330,"date":"2025-08-16T13:01:12","date_gmt":"2025-08-16T06:01:12","guid":{"rendered":"https:\/\/www.jagoweb.com\/kb\/?post_type=ht_kb&#038;p=2330"},"modified":"2025-08-16T13:01:18","modified_gmt":"2025-08-16T06:01:18","slug":"cara-install-ssl-gratis-di-nginx-ubuntu","status":"publish","type":"ht_kb","link":"https:\/\/www.jagoweb.com\/kb\/knowledge-base-jagoweb\/cara-install-ssl-gratis-di-nginx-ubuntu\/","title":{"rendered":"Cara Install SSL Gratis di NGINX Ubuntu"},"content":{"rendered":"<p><strong>Cara Install SSL Gratis di NGINX Ubuntu &#8211;\u00a0<\/strong>Kita akan menggunakan Nginx yang terinstal di server utama (bukan di dalam Docker) sebagai <b>Reverse Proxy<\/b>.Anggap saja Reverse Proxy ini sebagai &#8220;resepsionis&#8221; untuk server kita. Semua pengunjung akan datang ke resepsionis ini (melalui port standar 80\/443). Resepsionis kemudian akan mengarahkan pengunjung ke &#8220;ruangan&#8221; yang tepat (kontainer Docker kita yang berjalan di port 8000).<\/p>\n<p>Setelah itu, kita akan menggunakan <b>Let&#8217;s Encrypt<\/b>, sebuah layanan gratis dan otomatis, untuk memberikan sertifikat SSL\/TLS pada domain kita. Inilah yang akan mengaktifkan HTTPS.<\/p>\n<p><b>Prasyarat :<\/b><\/p>\n<ul>\n<li>Aplikasi WordPress dari tutorial Docker Compose sebelumnya harus sedang berjalan.<\/li>\n<li>Kita <b>HARUS<\/b> memiliki <b>nama domain yang sudah terdaftar<\/b> (misalnya situs-keren-kita.com).<\/li>\n<li>DNS record A untuk domain kita sudah diarahkan (pointing) ke alamat IP publik server kita.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3 id=\"langkah-1-instal-nginx-di-server-utama-host\" ><b>Langkah 1: Instal Nginx di Server Utama (Host)<\/b><\/h3>\n<p>Pertama, mari kita instal Nginx di server utama kita. Nginx inilah yang akan bertindak sebagai resepsionis.<\/p>\n<div class=\"code-block ng-tns-c1437408396-266 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-266\">\n<div class=\"animated-opacity ng-tns-c1437408396-266\">\n<pre class=\"ng-tns-c1437408396-266\"><code class=\"code-container formatted ng-tns-c1437408396-266\" role=\"text\" data-test-id=\"code-content\">sudo apt-get update\r\nsudo apt-get install nginx -y\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p>Kita juga perlu menyesuaikan firewall untuk mengizinkan lalu lintas penuh ke Nginx.<\/p>\n<div class=\"code-block ng-tns-c1437408396-267 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-267\">\n<div class=\"animated-opacity ng-tns-c1437408396-267\">\n<pre class=\"ng-tns-c1437408396-267\"><code class=\"code-container formatted ng-tns-c1437408396-267\" role=\"text\" data-test-id=\"code-content\">sudo ufw allow <span class=\"hljs-string\">'Nginx Full'<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<h3 id=\"langkah-2-konfigurasi-nginx-sebagai-reverse-proxy\" ><b>Langkah 2: Konfigurasi Nginx sebagai Reverse Proxy<\/b><\/h3>\n<p>Sekarang, kita akan memberitahu Nginx (resepsionis kita) bahwa setiap permintaan untuk domain kita harus diteruskan ke kontainer WordPress kita.<\/p>\n<ol start=\"1\">\n<li><b>Buat file konfigurasi baru<\/b> untuk situs kita. Ganti domain-kita.com dengan nama domain Anda yang sebenarnya.\n<div class=\"code-block ng-tns-c1437408396-268 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-268\">\n<div class=\"animated-opacity ng-tns-c1437408396-268\">\n<pre class=\"ng-tns-c1437408396-268\"><code class=\"code-container formatted ng-tns-c1437408396-268\" role=\"text\" data-test-id=\"code-content\">sudo nano \/etc\/nginx\/sites-available\/domain-kita.com\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li><b>Salin dan tempel konfigurasi berikut<\/b> ke dalam file tersebut. Sekali lagi, jangan lupa ganti domain-kita.com dengan domain Anda.\n<div class=\"code-block ng-tns-c1437408396-269 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-269\">\n<div class=\"animated-opacity ng-tns-c1437408396-269\">\n<pre class=\"ng-tns-c1437408396-269\"><code class=\"code-container formatted ng-tns-c1437408396-269\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-section\">server<\/span> {\r\n    <span class=\"hljs-attribute\">listen<\/span> <span class=\"hljs-number\">80<\/span>;\r\n    <span class=\"hljs-attribute\">server_name<\/span> domain-kita.com www.domain-kita.com;\r\n\r\n    <span class=\"hljs-attribute\">location<\/span> \/ {\r\n        <span class=\"hljs-attribute\">proxy_pass<\/span> http:\/\/localhost:8000;\r\n        <span class=\"hljs-attribute\">proxy_set_header<\/span> Host $host;\r\n        <span class=\"hljs-attribute\">proxy_set_header<\/span> X-Real-IP $remote_addr;\r\n        <span class=\"hljs-attribute\">proxy_set_header<\/span> X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        <span class=\"hljs-attribute\">proxy_set_header<\/span> X-Forwarded-Proto $scheme;\r\n    }\r\n}\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li><code>listen 80<\/code>: Nginx akan mendengarkan di port 80 (HTTP).<\/li>\n<li><code>server_name<\/code>: Nginx akan merespons jika ada permintaan untuk domain ini.<\/li>\n<li><code>proxy_pass http:\/\/localhost:8000<\/code>: Ini adalah inti dari reverse proxy. Semua permintaan akan <b>diteruskan<\/b> ke localhost:8000, tempat kontainer WordPress kita berada.<\/li>\n<\/ul>\n<\/li>\n<li><b>Aktifkan konfigurasi ini<\/b> dengan membuat &#8220;symbolic link&#8221;.\n<div class=\"code-block ng-tns-c1437408396-270 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-270\">\n<div class=\"animated-opacity ng-tns-c1437408396-270\">\n<pre class=\"ng-tns-c1437408396-270\"><code class=\"code-container formatted ng-tns-c1437408396-270\" role=\"text\" data-test-id=\"code-content\">sudo ln -s \/etc\/nginx\/sites-available\/domain-kita.com \/etc\/nginx\/sites-enabled\/\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li><b>Pastikan tidak ada kesalahan sintaks<\/b> dan muat ulang Nginx.\n<div class=\"code-block ng-tns-c1437408396-271 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-271\">\n<div class=\"animated-opacity ng-tns-c1437408396-271\">\n<pre class=\"ng-tns-c1437408396-271\"><code class=\"code-container formatted ng-tns-c1437408396-271\" role=\"text\" data-test-id=\"code-content\">sudo nginx -t\r\nsudo systemctl reload nginx\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<p>Pada titik ini, jika kita mengunjungi http:\/\/domain-kita.com (tanpa port), kita seharusnya sudah bisa melihat situs WordPress kita!<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<h3 id=\"langkah-3-instal-certbot-untuk-lets-encrypt\" ><b>Langkah 3: Instal Certbot untuk Let&#8217;s Encrypt<\/b><\/h3>\n<p>&nbsp;<\/p>\n<p>Certbot adalah alat bantu yang akan mengotomatiskan seluruh proses mendapatkan dan memperbarui sertifikat SSL kita.<\/p>\n<div class=\"code-block ng-tns-c1437408396-272 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c1437408396-272 ng-star-inserted\">\n<p><span class=\"ng-tns-c1437408396-272\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c1437408396-272 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-272\">\n<div class=\"animated-opacity ng-tns-c1437408396-272\">\n<pre class=\"ng-tns-c1437408396-272\"><code class=\"code-container formatted ng-tns-c1437408396-272\" role=\"text\" data-test-id=\"code-content\">sudo apt-get install certbot python3-certbot-nginx -y\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr \/>\n<p>&nbsp;<\/p>\n<h3 id=\"langkah-4-mari-kita-dapatkan-sertifikat-ssl-gratis-%e2%9c%a8\" ><b>Langkah 4: Mari Kita Dapatkan Sertifikat SSL Gratis!<\/b> \u2728<\/h3>\n<p>&nbsp;<\/p>\n<p>Inilah saatnya kita melakukan keajaiban. Jalankan perintah Certbot berikut, dan pastikan untuk mengganti <code>domain-kita.com<\/code> dengan domain Anda.<\/p>\n<div class=\"code-block ng-tns-c1437408396-273 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c1437408396-273 ng-star-inserted\">\n<p><span class=\"ng-tns-c1437408396-273\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c1437408396-273 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-273\">\n<div class=\"animated-opacity ng-tns-c1437408396-273\">\n<pre class=\"ng-tns-c1437408396-273\"><code class=\"code-container formatted ng-tns-c1437408396-273\" role=\"text\" data-test-id=\"code-content\">sudo certbot --nginx -d domain-kita.com -d www.domain-kita.com\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p>Certbot akan memandu kita melalui beberapa pertanyaan:<\/p>\n<ul>\n<li>Masukkan alamat email Anda (untuk pemberitahuan pembaruan).<\/li>\n<li>Setujui Persyaratan Layanan.<\/li>\n<li>Pilih apakah akan berbagi email dengan EFF (opsional).<\/li>\n<li>Pilih apakah akan <b>mengarahkan (redirect) lalu lintas HTTP ke HTTPS<\/b>. <b>Pilih opsi ini!<\/b> Ini sangat direkomendasikan untuk keamanan.<\/li>\n<\/ul>\n<p>Jika semua berjalan lancar, Certbot akan mengonfirmasi bahwa sertifikat telah berhasil di-deploy dan secara otomatis mengubah file konfigurasi Nginx kita untuk menggunakan HTTPS.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<h3 id=\"langkah-5-nikmati-situs-aman-kita\" ><b>Langkah 5: Nikmati Situs Aman Kita!<\/b><\/h3>\n<p>&nbsp;<\/p>\n<p>Sekarang, buka browser dan kunjungi domain kita menggunakan <code>https:\/\/<\/code>.<\/p>\n<p><code>https:\/\/domain-kita.com<\/code><\/p>\n<p>Kita akan melihat <b>ikon gembok <\/b> yang menandakan koneksi kita sudah aman dan terenkripsi! Certbot juga secara otomatis mengatur cron job untuk memperbarui sertifikat sebelum kedaluwarsa, jadi kita tidak perlu mengkhawatirkannya lagi.<\/p>\n<p>Kita bisa menguji proses pembaruan otomatis dengan perintah:<\/p>\n<div class=\"code-block ng-tns-c1437408396-274 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c1437408396-274 ng-star-inserted\">\n<p><span class=\"ng-tns-c1437408396-274\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c1437408396-274 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c1437408396-274\">\n<div class=\"animated-opacity ng-tns-c1437408396-274\">\n<pre class=\"ng-tns-c1437408396-274\"><code class=\"code-container formatted ng-tns-c1437408396-274\" role=\"text\" data-test-id=\"code-content\">sudo certbot renew --dry-run\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p><b>Misi Selesai!<\/b> Kita telah berhasil mengubah situs yang berjalan di port internal menjadi sebuah situs web profesional yang aman dan dapat diakses publik melalui domain. Ini adalah keterampilan fundamental dalam dunia administrasi server dan pengembangan web.<\/p>\n","protected":false},"author":3,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":[],"ht_kb_category":[107],"ht_kb_tag":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/ht_kb\/2330"}],"collection":[{"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/comments?post=2330"}],"version-history":[{"count":2,"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/ht_kb\/2330\/revisions"}],"predecessor-version":[{"id":2332,"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/ht_kb\/2330\/revisions\/2332"}],"wp:attachment":[{"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/media?parent=2330"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/ht_kb_category?post=2330"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.jagoweb.com\/kb\/wp-json\/wp\/v2\/ht_kb_tag?post=2330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}