Memulai dengan VPS
VPS atau Virtual Private Server adalah mesin virtual atau server yang terpisah dari server atau mesin utama. Sederhananya, ketika mesin utama yang memiliki resource yang besar akan dibagi menjadi beberapa server lagi tapi bukan berupa mesin utuh melainkan berupa virtual. Penggunaan VPS biasanya digunakan untuk kebutuhan hosting web atau aplikasi. Beberapa penyedia hosting umumnya menyediakan layanan VPS ini, yang mana kelebihannya daripada shared hosting pada umumnya adalah kita sebagai user mendapatkan akses sebagai root atau bertindak sebagai root, sehingga kebutuhan untuk mengkonfigurasi server tersebut bisa dilakukan dengan lebih leluasa misalkan untuk konfigurasi firewall, install aplikasi/program di dalam server, dan lain sebagainya. Sedangkan di shared hosting umumnya terbatas, kita hanya mendapatkan akses untuk sekadar hosting web/aplikasi saja dengan cara mengupload folder aplikasi ke dalam server. Walaupun di beberapa shared hosting tetap menyediakan SSH, tetapi tetap saja penggunaannya terbatas karena tidak mempunyai kapabilitas sebagai root.
Disini saya akan menjelaskan bagaimana umumnya saya melakukan konfigurasi server atau VPS tadi dengan command line. Sampai tulisan ini dibuat, saya menggunakan VPS hanya untuk kebutuhan hosting aplikasi web saja. Tapi seharusnya disini saya akan bahas secara umum bagaimana setup VPS, setidaknya sampai siap untuk digunakan.
Pertama-tama kita harus membeli VPS itu sendiri, ada banyak penyedia VPS atau layanan hosting. Saya jabarkan di bawah beberapa yang saya ketahui, mulai yang beroperasi di indonesia dan di luar.
- https://rumahweb.com
- https://biznetgio.com
- https://hostinger.com
- https://niagahoster.com
- https://digitalocean.com
Bagaimana cara membelinya? umumnnya penyedia hosting ini terdapat beberapa layanan. Disini kalian bisa fokus mencari bagian vps nya saja. Sampai disana biasanya kita diminta untuk mengatur resource server yang akan kita gunakan, atau beberapa pihak lainnya menyediakan pricelist berdasarkan resourcenya saja. Disini sesuaikan saja dengan kebutuhan, jika baru pertama kali dan mau coba-coba akan lebih menggunakan yang paling murah saja. Umumnya yang paling murah rentang 50 - 60 ribu rupiah atau bisa lebih murah tergantung penyedia hosting dan promo apa yang sedang berlaku.
Setelah memutuskan membeli atau memilih resource yang akan digunakan, biasanya kita diminta untuk memilih menggunakan distro linux yang akan digunakan untuk servernya nanti. Umumnya penyedia hosting akan memberikan beberapa opsi distro linux saja, di penyedia hosting yang lebih besar biasanya baru memberikan pilihan sistem operasi seperti windows server, dan linux server. Untuk yang baru memulai akan lebih baik menggunakan distro linux Ubuntu. Mengapa menggunakan Ubuntu dibanding dengan yang lain? Karena salah satu distro dari based debian linux yang paling besar dari sisi komunitas dan penggunanya. Sehingga jika terjadi masalah akan lebih mudah mencari informasinya di internet.
Pastikan juga saat memilih distro Ubuntu untuk tetap menggunakan versi LTS-nya, umumnya diawali dengan angka genap didepannya. Mengapa menggunakan versi LTS? Dari sepengalaman saya ketika menggunakan versi terbaru akan menyebabkan masalah dimana saat menambahkan repository diluar dari ubuntu, akan menyebabkan repository tersebut tidak ditemukan, tapi saya tidak tau apakah ini common issue atau tidak.
Setelah memilih distro linux, seharusnya akan terdapat pilihan untuk setup ssh key.
SSH adalah cara berkomunikasi antar komputer, simplenya ketika kita ingin mengakses komputer orang lain melalui komputer kita sekarang.
Untuk setup ssh biasanya provider hosting berbeda beda, ada yang meminta kita mengisi public key saja, atau mereka memberikan opsi untuk membuat private/public key. Disini biasanya saya akan membuat ssh key di komputer pribadi dan menambahkan public key ke dalam form isian yang provider hosting minta.
Setup SSH
Disini saya menggunakan linux, jika anda yang membaca ini menggunakan windows akan ada beberapa tahapan yang harus dilalui sebelum bisa menjalankan perintah di bawah, silahkan googling untuk sisanya.
Buka terminal, lalu ketikkan perintah di bawah.
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-keygen
: command untuk menghasilkan ssh key pairing, public key dan private key.-t ed25519
: opsi untuk menggunakan algoritmaed25519
. Algoritma ini direkomendasikan oleh Github untuk pairing dengan ssh. Algoritma lain adarsa
,dsa
. Defaultnya akan menggunakanrsa
. Perbedaan algoritma ini hanyalah terkait keamanan.-C "your_email@example.com
: menambahkan label atau penanda pada ssh key.
Setelah itu akan terdapat pesan untuk menaruh file ssh key dimana, defaultnya seharusnya di ~/.ssh/
, silahkan enter saja jika tidak tau mau taruh dimana.
Setelah menerima prompt tadi, selanjutnya kita akan diminta untuk mengisi passphrase. passphrase ini kurang lebih bisa diartikan sebagai password. Silahkan untuk mengisi atau biarkan kosong.
Maka akan ada dua file yang akan dibuat otomatis ke dalam folder/directory ~/.ssh
. private key dan public key. Pergi directory tersebut untuk melihat.
cd ~/.ssh
Jika baru pertama kali membuat ssh key maka disana akan terdapat dua file. Silahkan lihat dengan perintah berikut.
ls -a
Public key atau file yang dibelakang namanya terdapat .pub
. Public key ini yang akan dimasukkan dimasukkan ke form isian yang diminta oleh provider hosting tadi. Lalu private key sebagai penghubung dengan public key tadi. Jika orang lain hanya melihat public key tapi tidak mengetahui private key, maka koneksi ssh tersebut akan gagal, begitupun sebaliknya.
Untuk melihat isi file dari public key, jalankan perintah berikut.
cat id_ed25519.pub
Setelah itu arahkan mouse untuk menyeleksi isi dari file tersebut untuk di copy, lalu paste di form isian yang provider hosting minta.
Masuk ke Komputer Server / VPS dengan SSH
Setelah setup ssh tadi, saatnya kita akan masuk ke komputer server dengan ssh.
ssh -i ~/.ssh/nama_file_private_key username_server@ip_address_server
ssh
: program untuk menjalankan remote akses ke server yang kita tuju.-i ~/.ssh/nama_file_private_key
: Mengidentifikasi private key yang akan kita gunakan.
Perhatikan username_server
dan ip_address_server
, sesuaikan dengan informasi dari VPS yang anda telah beli. Biasanya akan ada informasi IP address static dan username. Jika tidak ada keterangan username, maka seharusnya root adalah default, jadi bisa ganti dengan root@ip_address_server
.
Setelah itu akan diminta mengisi passphrase, isikan passphrase sesuai passhprase yang dibuat sebelumnya. Jika sebelumnya mengosongkan passphrase maka kosongkan juga bagian ini.
Jika port ssh tidak
22
. Tambahkan ini di akhir perintah di atas-p nomor_port
Bertindak dengan Root dengan User Baru
Jika user yang diberikan oleh penyedia hosting adalah root, maka paling baik untuk membuat user baru. Jika user dengan username tersebut bukan root maka silahkan skip langkah ini.
Buat User Baru Sebagai Pengganti Root
Mengapa tidak menggunakan user dengan username root saja? Disamping adalah common practice, penggunaan root user adalah bahaya terkait keamanan. Meskipun sudah setup ssh key dan mengisi passphrase untuk menjaga keamanan. Penggunaan user dengan username root sebaiknya dihindari, mengapa? Mungkin nantinya kita lupa menginstall beberapa aplikasi di dalam komputer server kita, lalu menjalankan aplikasinya dalam mode root atau simplenya memberikan akses penuh aplikasi tersebut berjalan, kemungkinannya aplikasi tersebut akan mengeksploitasi sistem kita. Walaupun kasusnya jarang, tetap saja hal ini sama sekali tidak direkomendasikan.
Jalankan perintah di bawah di terminal anda untuk membuat user baru.
adduser user
Ubah
user
dengan nama user sesuai preferensi anda.
Selanjutnya memberikan akses user yang baru kita buat dengan akses root. Mengapa ini dibutuhkan? karena Untuk menggantikan root maka kita perlu membuat user yang juga bertindak atau memiliki akses sebagai root. Ini lebih baik dibanding secara eksplisit menggunakan root.
usermod -aG sudo user
usermod
: command untuk memodifikasi akun user.-aG sudo
: Opsi untuk menambahkan akun user sekarang ke dalam group sudo.
Sync Authorized Keys dengan User Baru
Melakukan sync authorized key berfungsi agar hubungan ssh dari/ke komputer lokal kita yang sebelumnya menggunakan root juga bisa diakses melalui user yang baru.
rsync --archive --chown=user:user ~/.ssh /home/user
rsync
: command untuk sinkronisasi file/directory antara dua lokasi.--archive
: opsi untuk menjalankanrsync
dalam mode archive, mode ini akan memastikan metadata file/directory juga tersalin.--chown=user:user
: Opsi untuk memastikan ownership dari folder/file yang akan kita saling adalah user yang didefinisikan (disini adalahuser
).
Login Kembali dengan User Baru
Jalankan perintah di bawah untuk keluar.
exit
Kemudian disini kita menggunakan file private key ssh yang sama seperti di awal. Perbedannya adalah nama user-nya saja. Jalankan perintah di bawah untuk login kembali dengan user yang definisikan di sini
ssh -i ~/.ssh/nama_file_private_key user@ip_address_server
Buat alias SSH (Optional)
Jika merasa menulis baris kode
ssh -i ~/.ssh/nama_file_private_key user@ip_address_server
terlalu panjang. Kita bisa membuat alias untuk menyingkatnya.
Perhatian: Langkah-langkah di bawah dijalankan di komputer lokal/bukan di komputer server.
Untuk membuat alias, kita buat dulu file config
di dalam directory .ssh
cd ~/.ssh
touch config
Kemudian buka text editor, lalu isi sesuai informasi server yang digunakan.
vim config
Kemudian ketik i
untuk memulai memasukkan data, lalu isi seperti berikut. Jika telah selesai, ketik Esc
lalu :wq
untuk menyimpan perubahan.
Host nama_alias
HostName ip_address_server/domain
User user
Port 22
IdentityFile ~/.ssh/nama_file_private_key
Setelah itu kita dapat login hanya dengan perintah berikut
ssh nama_alias
Setup Firewall (Optional)
Setup firewall akan membuat kita kerja dua kali ketika service yang nanti akan kita gunakan meminta terhubung dengan koneksi luar. Tapi dengan kelebihan lebih aman dan kita tau apa saja service yang boleh dan yang tidak. Tapi saya biasanya skip bagian ini.
Untuk setup firewall ada beberapa tool/service/program yang bisa digunakan salah satunya adalah UFW. Pastikan tidak menggunakan firewall service lebih dari 1 jika tidak berpengalaman terkait ini.
Untuk melihat profile atau service apa saja yang tersedia untuk kita batasi dengan firewall. Jalankan perintah berikut.
sudo ufw app list
Untuk memastikan saat mengaktifkan firewall, koneksi SSH kita sekarang tidak terputus. Jalankan perintah berikut untuk mengijinkan SSH terlebih dahulu.
sudo ufw allow origin
Selanjutnya untuk mengaktifkan firewall, jalankan perintah berikut
sudo ufw enable
Untuk melihat list service/profile yang dibatasi, jalankan perintah berikut
sudo ufw status
Silahkan googling untuk penggunaannya lebih lanjut.
Update Packages/Dependenies
sudo apt update
Disini kita bisa menggunakan sudo
untuk memberikan suatu command berjalan dalam mode root, karena disini akan mengupdate packages/dependencies di linux kita, maka mode root dibutuhkan. Command ini akan meminta sistem memeriksa repositori dari paket yang terdaftar di sistem dan mengambil informasi terbaru tentang package-package yang tersedia.
Upgrade Packages/Dependenies (Optional)
Bisa menjadi bahasan diskusi, apakah harus upgrade packages/dependencies di VPS? Jika mengikut dari pengalaman saya, maka saya akan melakukannya. Alasannya karena perintah upgrade ini akan meng-upgrade kernel linux Ubuntu itu sendiri, maka menurut saya ini penting dilakukan, disamping untuk memastikan package-package dalam kondisi up to date, ini juga membuat dari sisi keamanan dan kestabilan sistem yang digunakan juga terjaga.
Untuk meng-upgrade jalankan perintah berikut.
sudo apt upgrade
Atau sekaligus dengan sudo apt update
dan flag -y
untuk memaksa upgrade tanpa peringatan atau prompt.
sudo apt update && sudo apt upgrade -y
Subscribe to my newsletter
Read articles from Rizky Ilham Pratama directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Rizky Ilham Pratama
Rizky Ilham Pratama
Who writes with Neovim and use Arch BTW