vps

2 postingan
post
Kamis, 05 Sep 2024

Setup Terminal VPS

Biar tampilan terminal vps kita lebih menarik, gua mau setup terminal vps Ubuntu 24.04 gua menggunakan zsh, Oh My Zsh!, powerlevel10k dan zsh-autosugesstions. Gua juga mau install zoxide + fzf biar navigasi ke folder-folder lebih gampang. Install zsh & Oh My Zsh!zsh merupakan terminal biasa seperti bash, cmd, powershell, dll. Dengan menginstall Oh My Zsh!, kita dapat menggunakan plugin dan tema untuk terminal zsh kita. Langsung aja kita install zsh-nya terlebih dahulu sudo apt update -y && sudo apt upgrade -y sudo apt install zsh -y  Cek apakah zsh sudah terinstall atau belum zsh --version # expected >>> zsh 5.9 or similiar  Sekarang atur zsh sebagai terminal default chsh -s $(which zsh)  Coba kita logout dulu dan masuk lagi ke vps-nya untuk ngecek kalo zsh sudah jadi terminal default kita. Kalo berhasil, kita diminta untuk konfigurasi awal zsh kita.    Untuk saat ini kita ketik 0 aja untuk buat configuration filenya aja. nanti mungkin akan kita ubah ketika udah mulai install powerlevel10k. Kalo mau liat isi file konfigurasinya bisa jalankan nano ~/.zshrc. Selanjutnya kita install Oh My Zsh! dengan menjalankan sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"  kalo berhasil, hasilnya kaya gini:   Sampe sini, udah cukup bagus ya terminalnya, lebih berwarna dan simple. Biar lebih mantep, gua mau pasang tema powerlevel10k. Install powerlevel10kBtw, di laptop windows, gua menggunakan aplikasi terminal dari windows store dengan default profile-nya PowerShell   Pada menu Settings > Defaults > Appearance, gua menggunakan Color schema "One Half Dark" dan Font face MesloLGS NF sesuai dengan rekomendasi font dari powerlevel10k  Kalo udah setting terminalnya dengan font "MesloLGS NF", kita lanjut install powerlevel10k git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k  Buka konfigurasi zsh (nano ~/.zshrc), ganti ZSH_THEME menjadi: ZSH_THEME="powerlevel10k/powerlevel10k"  Notes: simpan dengan Ctrl+X, y, Enter. Selanjutnya kita restart zsh dengan exec zsh. Akan muncul prompt konfigurasi dari powerlevel10k seperti ini:  Notes: kalo gk muncul prompt-nya coba jalanin p10k configure Silahkan setting sesuai keinginan kalian, kalo gua kurang lebih kaya gini settingnya: y > y > y > y > 3 > 1 > 2 > 3 > 3 > 1 > 2 > 3 > 4 > 2 > 2 > 1 > n > 1 > y Kurang lebih hasilnya akan seperti ini:  Install zsh-autosuggestionsBiar terminalnya ada autosuggestions-kita install plugin zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions  Tambahin plugin-nya di file ~/.zshrc (nano ~/.zshrc) pada bagian plugins plugins=( # other plugins... git zsh-autosuggestions )  Restart zsh dengan exec zsh, kalo berhasil akan muncul suggestion berdasarkan histori command kita.  Install zoxide + fzfLast but no least, kita install zoxide agar memudahkan navigasi. Misal dari /home/user kita mau masuk ke folder aplikasi kita yaitu my-app yang ada di /app/project. Normalnya kita akan menjalankan: cd /app/project/my-app  Nah, kalo pake zoxide, asalkan udah pernah masuk ke direktori my-app sebelumnya, dari manapun kita cukup jalankan cd my-app. Ibaratnya zoxide ini kaya fitur search untuk nyari folder-folder yang udah pernah dikunjungi. Langsung aja install curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh  kita install juga fzf untuk command-line fuzzy finder. sudo apt install fzf  Tambahkan script berikut di ~/.zshrc di line paling bawah # Export PATH for zoxide export PATH="$HOME/.local/bin:$PATH" # ============================================================================= # # Utility functions for zoxide. # # pwd based on the value of _ZO_RESOLVE_SYMLINKS. function __zoxide_pwd() { \command cygpath -w "$(\builtin pwd -P)" } # cd + custom logic based on the value of _ZO_ECHO. function __zoxide_cd() { # shellcheck disable=SC2164 \builtin cd -- "$@" } # ============================================================================= # # Hook configuration for zoxide. # # Hook to add new entries to the database. function __zoxide_hook() { # shellcheck disable=SC2312 \command zoxide add -- "$(__zoxide_pwd)" } # Initialize hook. # shellcheck disable=SC2154 if [[ ${precmd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]] && [[ ${chpwd_functions[(Ie)__zoxide_hook]:-} -eq 0 ]]; then chpwd_functions+=(__zoxide_hook) fi # ============================================================================= # # When using zoxide with --no-cmd, alias these internal functions as desired. # __zoxide_z_prefix='z#' # Jump to a directory using only keywords. function __zoxide_z() { # shellcheck disable=SC2199 if [[ "$#" -eq 0 ]]; then __zoxide_cd ~ elif [[ "$#" -eq 1 ]] && { [[ -d "$1" ]] || [[ "$1" = '-' ]] || [[ "$1" =~ ^[-+][0-9]$ ]]; }; then __zoxide_cd "$1" elif [[ "$@[-1]" == "${__zoxide_z_prefix}"?* ]]; then # shellcheck disable=SC2124 \builtin local result="${@[-1]}" __zoxide_cd "${result:${#__zoxide_z_prefix}}" else \builtin local result # shellcheck disable=SC2312 result="$(\command zoxide query --exclude "$(__zoxide_pwd)" -- "$@")" && __zoxide_cd "${result}" fi } # Jump to a directory using interactive search. function __zoxide_zi() { \builtin local result result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${result}" } # Completions. if [[ -o zle ]]; then function __zoxide_z_complete() { # Only show completions when the cursor is at the end of the line. # shellcheck disable=SC2154 [[ "${#words[@]}" -eq "${CURRENT}" ]] || return 0 if [[ "${#words[@]}" -eq 2 ]]; then _files -/ elif [[ "${words[-1]}" == '' ]] && [[ "${words[-2]}" != "${__zoxide_z_prefix}"?* ]]; then \builtin local result # shellcheck disable=SC2086,SC2312 if result="$(\command zoxide query --exclude "$(__zoxide_pwd)" --interactive -- ${words[2,-1]})"; then result="${__zoxide_z_prefix}${result}" # shellcheck disable=SC2296 compadd -Q "${(q-)result}" fi \builtin printf '\e[5n' fi return 0 } \builtin bindkey '\e[0n' 'reset-prompt' [[ "${+functions[compdef]}" -ne 0 ]] && \compdef __zoxide_z_complete __zoxide_z fi # ============================================================================= # # Commands for zoxide. Disable these using --no-cmd. # \builtin alias cd=__zoxide_z \builtin alias cdi=__zoxide_zi # ============================================================================= # # To initialize zoxide, add this to your configuration (usually ~/.zshrc): # eval "$(zoxide init zsh)"  Apply konfigurasi dengan command source ~/.zshrc. Kemudian kita coba masuk ke direktori /etc/ssh dan balik lagi ke direktori user. cd /etc/ssh cd  Nah, kalo sudah cukup dengan command cd ssh, kita akan masuk ke direktori /etc/ssh  Terakhir, jalankan command cdi untuk melihat direktori yang telah disimpan zoxide. Arahkan kursor untuk memilih direktori yang dituju  PenutupAlright, cukup segini aja untuk setup terminal vps-nya. Bye 😎

post
Rabu, 29 Mei 2024

Setup VPS Ubuntu 24

Kali ini gua akan setup vps dengan OS Ubuntu 24.04. gua akan mulai setup vps dari pertama kali masuk ke vps melalui terminal powershell di laptop windows gua. Untuk setup basic-nya gua ngikutin setup-annya kang Dea Afrizal (bisa ditonton di YouTube).   Update dan upgrade aptSebelum kita setup vps, baiknya kita update dan upgrade apt kita untuk memastikan package-package yang ada terupdate. sudo apt update -y && sudo apt upgrade -y    Install neofetchBiar gaya, kita install neofetch untuk nampilin spesifikasi vps kita. sudo apt install neofetch -y neofetch    Add UserSaat pertama kali kita masuk ke vps, pasti kita akan menggunakan root user. Nah, karena root user ini bisa akses segala macem permission, gua akan bikin user baru agar nantiya gua bisa masuk ke vps tanpa pakai root user. Kita bisa bikin user baru dengan menggunakan root user dan menjalankan command: adduser {username} // ganti {username} dengan username kalian  Setelah itu akan muncul beberapa pertanyaan terkait pembuatan user dan kalian bisa isi sesuai kebutuhan.   Notes: ketika kita ketik passwordnya, emang gk keliatan di terminal jadi ketik aja yang sesuai dan pastiin pas retype passwordnya juga bener   Terus masih menggunakan root user, gua mau nambahin user yang udah dibikin ke group sudo biar user ini bisa install-install pake sudo usermod -aG sudo {username}  Kalo udah berhasil, coba masuk pake user yang baru dengan command su - {username}. Kalo berhasil nanti tampilannya kaya gini:   kita cek groups nya   Nah, skrg kita bisa pake sudo di user yang baru kaya gini:   Ketik command su - untuk balik login ke root user   Config SSHBy default, ketika kita masuk ke vps menggunakan ssh, maka kita akan masuk menggunakan port 22 dan kita juga bisa masuk menggunakan root user. Gua akan config ssh agar port yang digunakan sesuai keinginan gua dan untuk root user gak boleh masuk pakai ssh. Kita login dengan root user kemudian buka file /etc/ssh/sshd_config menggunakan nano: nano /etc/ssh/sshd_config  Cari bagian #Port 22 tambahin 1 baris dengan port yang kalian mau misalnya Port 1234.   Cari lagi di paling bawah ada bagian PermitRootLogin yes kita ganti jadi PermitRootLogin no   Save dengan tekan Ctrl+X, y, dan Enter.   Restart service ssh dengan command systemctl restart sshd. Notes: kalau muncul error sshd.service not found bisa lakukan command berikut: systemctl disable ssh.socket systemctl stop ssh.socket systemctl disable ssh.service systemctl enable ssh.service systemctl restart sshd  Kemudian pastiin portnya udah keganti kaya gini: sudo systemctl status sshd    Test hasil config SSHBuka terminal baru, harusnya kalian udah gabisa masuk vps kaya gini ssh {username}@{ip_vps} output >>> ssh: connect to host {ip_vps} port 22: Connection timed outNotes: kalo masih bisa connect coba reboot vpsnya   kita tambahin opsi -p 1234 biar bisa masuk menggunakan user selain root ssh {username}@{ip_vps} -p 1234  Terus kalo mau login pake root user bisa jalankan su - kaya gini   Setup Firewall with UncomplicatedFirewall (ufw)kalo pake ubuntu seharusnya udah ada package ufw. Untuk memastikannya jalankan ufw status dan harusnya masih inactive. Sebelum mengaktifkan ufw kita harus allow port ssh yang kita udah config sebelumnya, kalo nggak kita gabisa masuk lagi ke vpsnya (kejadian di gue soalnya wkwk 🤣). jalankan ufw allow 1234/tcp untuk allow port ssh yang sesuai dengan config-nya. Kemudian enable ufw ufw enable dan cek statusnya ufw status   Jangan logout dulu dari session root, Coba pastiin kita bisa masuk ke vps di terminal baru.   Setup NginxSampai sekarang ketika kita akses ip public vps-nya melalui browser harusnya belum ada konten apa-apa (loading lama dan connection timeout). Sekarang kita coba install nginx untuk menampilkan html sederhana dari vps kita. Jalankan command berikut: sudo apt install nginx -y  Karena kita udah setup ufw sebelumnya, kita belom bisa akses ip public melalui browser dengan protcol http/https. jalankan command ufw allow http && ufw allow https (pake sudo kalo bukan root user) kemudian coba akses ip public melalui browser. Seharusnya akan keluar halaman Welcome to nginx!.   kalo nggak keluar coba reload ufw nya dengan command ufw reload dan cek list port yang di-allow dengan ufw status. Pastikan sudah ada port 80 (http) dan 443 (https).   Kalo mau ganti isi html-nya bisa edit file nya dengan command nano /var/www/html/index.nginx-debian.html atau hapus file itu dan bikin file index.html di direktori /var/www/html.   PenutupAlright! cukup segini dulu gess setup vps-nya. After ini gua mau coba setup terminal menggunakan ohmyzsh, powerlevel10k, zsh-autosuggestions, fzf , dan zoxide. Setelah itu baru kita belajar deploy-deploy aplikasi yang kita udah develop. Bye 😎