Cara Setup Freebsd Server dengan Nginx

Tutorial cara setup server Freebsd dengan Nginx web server untuk menjalankan web statis/hugo


JagoTekno.com - Kali ini saya ingin share cara setup VPS server dengan OS Freebsd yang saya beli pada sebuah web hosting.

Saya hanya ingin menjalankan web statis di sana. Jadi settingan server ini akan sangat minimalis.

Tanpa berlama-lama begini caranya.

Setup Nginx

Install nginx dan neovim

pkg install nginx neovim

Aktifkan service nginx.

sysrc nginx_enable="YES" 

Jalankan service nginx.

service nginx start 

Konfigurasi Server Block Nginx

Selanjutnya mengkonfigurasi Nginx server block untuk domain.anda.

Membuat folder untuk document root website. Website akan disimpan di /usr/local/www/.

mkdir -p /usr/local/www/domain.anda

Coba buat sebuah file index.html di sana lalu isi dengan hello world.

echo "hello world" > /usr/local/www/domain.anda/index.html

Membuat folder untuk menyimpan file virtual host konfigurasi server block.

bebas beri nama foldernya mau pakai websites, virtualhost, vhost, dsb.

mkdir -p /usr/local/etc/nginx/websites

Membuat file konfigurasi server block.

nvim /usr/local/etc/nginx/websites/domain.anda.conf 

Isi file konfigurasi server block dengan ini.

server {
    listen 80;
    server_name domain.anda www.domain.anda;
    root /usr/local/www/domain.anda;
    index index.html;
 
    location / {
            try_files $uri $uri/ =404;
    }
 
    access_log /var/log/nginx/domain.anda_access.log;
    error_log /var/log/nginx/domain.anda_error.log;
}

Buka file konfigurasi Nginx.

nvim /usr/local/etc/nginx/nginx.conf

Tambahkan konfigurasi di bawah ini sebelum penutup http.

Di sini kita mau bilang, include (ikutkan) semua file .conf yang ada di /usr/local/etc/nginx/websites/.

http {
 ... 
    include /usr/local/etc/nginx/websites/*.conf;
}

Sebelum update, coba cek dulu konfigurasinya.

nginx -t 

Jika tidak ada kesalahan maka akan menghasilkan ini.

nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful 

Restart service nginx.

service nginx restart 

Install Lets Encrypt

Install Certbot

pkg install py39-certbot-nginx 

Request SSL untuk domain.anda

certbot --nginx -d domain.anda -d www.domain.anda

Masukkan email yang aktif.

Jika berhasil, certbot mengubah file konfigurasi server block anda. Silahkan buka

cat /usr/local/etc/nginx/websites/domain.anda.conf 

Anda akan menemukan perubahan, kira-kira seperti ini:

server {
    server_name domain.anda www.domain.anda;
    root /usr/local/www/domain.anda;
    index index.html index.xml;

    location / {
            try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/domain.anda_access.log;
    error_log /var/log/nginx/domain.anda_error.log;



    listen 443 ssl; # managed by Certbot
    ssl_certificate /usr/local/etc/letsencrypt/live/domain.anda/fullchain.pem; # managed by Certbot
    ssl_certificate_key /usr/local/etc/letsencrypt/live/domain.anda/privkey.pem; # managed by Certbot
    include /usr/local/etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = domain.anda) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name domain.anda;
    listen 80;
    return 404; # managed by Certbot

Tips: Jika menggunakan cloudflare sebagai DNS, tidak perlu mengaktifkan SSL melalui Cloudflare, cukup gunakan saja dia sebagai DNS. Karena akan bentrok dengan settingan server.

Sampai di sini kita sudah berhasil membuat website live dengan Nginx di Freebsd.

Selanjutnya kita cukup bekerja di folder root /usr/local/www/domain.anda. Folder ini sama saja seperti folder public_html.

Kita bisa update semua isi website di sana.

Jika menggunakan Hugo sebagai web static builder, yang mana file nya tersimpan secara local di laptop pribadi, kita tinggal kirim hasil build hugo ke server freebsd menggunakan Rsync.

Supaya lebih gampang cukup buat file executable ini di folder root hugo anda.

Ganti port SSH Freebsd

nvim /etc/ssh/sshd_config

Cari baris ini:

Port 22

Ubah port 22 menjadi Port yang di inginkan misalnya Port 1234

Setelah itu save dan restart ssh freebsd anda

service sshd restart

Nanti saat anda logout dari VPS anda tidak bisa lagi akses vps melalui perintah

ssh username@id.address.vps.anda

tapi dengan ini:

ssh -p 1234 username@ip.address.vps.anda

Rsync Hugo ke VPS Hosting

Buat file executable dengan nama deploy.

vim deploy.sh

Isi dengan config berikut.

#!/bin/sh
USER=usernameVPS
HOST=ip.address.vps.anda
DIR=/usr/local/www/domain.anda/

hugo && rsync -arvz --delete public/ ${USER}@${HOST}:${DIR}

# jika menggunakan custom port gunakan ini
# hugo && rsync -arvz -e "ssh -p 1234" --delete public/ ${USER}@${HOST}:${DIR}

exit 0

Save, dengan mengetik :wq

Buat file ini menjadi executable.

chmod +x deploy.sh

Tes exekusi/deploy ke vps

cd folder/web/hugo/anda
./deploy.sh

Demikian tutorial singkat cara setup server Freebsd dengan Nginx untuk menjalankan website statis.

Semoga bermanfaat.

Nixos Flakes Tutorial (system dan home-manager)
Ditulis oleh Rafi pada Monday, 25 December 2023
mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

Baca juga


comments powered by Disqus