Sunday 31 December 2023

PostgreSQL : Membuat Server Database PostgreSQL pada Ubuntu Server 22.04 [Quick Start]

PostgreSQL : Membuat Server Database PostgreSQL pada Ubuntu Server 22.04 [Quick Start]

RDBMS atau sistem manajemen basis data relasional adalah jenis sistem basis data yang menyimpan dan mengelola data dalam bentuk tabel yang terhubung satu sama lain melalui kunci utama dan kunci asing.

PostgreSQL, sering disebut sebagai "Postgres," adalah sistem manajemen basis data relasional (RDBMS) yang sangat populer dan banyak digunakan dalam berbagai sistem pada saat ini. PostgreSQL adalah proyek open-source, yang berarti sumber kode-nya dapat diakses oleh siapa saja. Hal ini memberikan fleksibilitas bagi pengguna untuk mengonfigurasi dan mengadaptasikan sistem sesuai kebutuhan mereka tanpa biaya lisensi.

Tutorial ini akan menjelaskan BAGAIMANA CEPATnya kita bisa membuat server database pada Ubuntu Server 22.04 menggunakan PostgreSQL dari proses instalasi, konfigurasi dasar seperti menambahkan user baru dan database, dan juga praktik terbaik untuk backup dan restore database.

Untuk mengikuti tutorial ini, kamu membutuhkan server Ubuntu yang sudah dilakukan konfigurasi dasar dengan mengikuti Konfigurasi Dasar pada Ubuntu Server.
Baca juga :

Konfigurasi Dasar Pada Ubuntu Server 20.04 

1. Instalasi PostgreSQL

Untuk menginstal PostgreSQL, pertama-tama kita lakukan update package lokal server menggunakan perintah :

sudo apt update

Kemudian, kita install postgresql menggunakan package -contrib yang akan menambahkan beberapa utilitas dan fungsi tambahan menggunakan perintah :

sudo apt install postgresql postgresql-contrib

Setelah proses instalasi selesai, kita periksa apakah service postgresql sudah berjalan. Kita bisa cek menggunakan perintah :

sudo systemctl status postgresql

Output :
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2023-12-30 15:21:00 UTC; 23s ago
   Main PID: 3881 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 4680)
     Memory: 0B
     CGroup: /system.slice/postgresql.service

Dec 30 15:21:00 databasesaurus systemd[1]: Starting PostgreSQL RDBMS...
Dec 30 15:21:00 databasesaurus systemd[1]: Finished PostgreSQL RDBMS.


2. Setup Default User postgres

Proses instalasi PostgreSQL akan secara otomatis membuat user bernama postgres yang terkait dengan role default Postgres. Ada beberapa cara untuk menggunakan user ini untuk mengakses PostgreSQL. Salah satu caranya adalah dengan menggunakan perintah sudo -i -u, sebelumnya kita perlu menambahkan user postgres kedalam sudoers group, caranya dengan menggunakan perintah :

sudo visudo

Kemudian input konfigurasi seperti dibawah ini :

postgres ALL:(ALL) NOPASSWD: ALL

Setelah selesai, tekan CTRL + X dan ketikan Y untuk menyimpan konfigurasinya.

Selanjutnya kita bisa masuk sebagai user postgres menggunakan perintah :

sudo -i -u postgres

Untuk mengakses terminal query postgresql, kita bisa ketikan perintah :

psql

Selanjutnya kita bisa melakukan pergantian password untuk user postgres di database menggunakan query ALTER ;

ALTER USER postgres WITH PASSWORD '12345';

Pada tahap ini, kalian bisa menambahkan user baru sesuai kebutuhan kalian menggunakan perintah ;

sudo createuser --interactive

Output :
Enter name of role to add: arief
Shall the new role be a superuser? (y/n) y


3. Membuat Database

Disini kita akan membuat database dengan nama dvd, untuk membuat database kita bisa menggunakan 2 cara yaitu lewat terminal server dan lewat terminal query ;

Untuk membuat database lewat terminal server, ketikan perintah ;

createdb dvd

Kemudian untuk membuat database lewat terminal query, kalian bisa menggunakan query CREATE DATABASE ;

CREATE DATABASE dvd;


4. Import Database dari File External

Bayangkan kita ada di suatu kondisi dimana, kita perlu melakukan setup database server untuk keperluan development sebuah aplikasi dan memerlukan database dummy untuk digunakan. Sekarang ini kita bisa mendapatkan database dummy dengan mudah, salah satunya adalah pada website postgresqltutorial, kalian bisa mendownload file database dummy yang digunakan pada tutorial ini pada websitenya.

Setelah didownload, kita perlu mengupload file archive .tar kedalam server, kalian bisa menggunakan software sftp untuk mengupload file archive tadi ke server.

Setelah filenya diupload ke server, kita perlu memindahkan file dummy tadi kedalam home directory postgres yang ada di /var/lib/postgresql. Untuk melakukannya kita bisa menggunakan perintah ;

sudo mv dvdrental.tar /var/lib/postgresql/

Pastikan bahwa file dummy sudah pindah ke home directory postgres ;

ls

Output :
12  dvdrental.tar

Selanjutnya kita ubah ownership file dummynya ke user postgres ;

sudo chown postgres:postgres dvdrental.tar

Kita pastikan bahwa ownershipnya sudah berubah ;

ls -lh

Output :
total 2.8M
drwxr-xr-x 3 postgres postgres 4.0K Dec 30 15:21 12
-rw-rw-r-- 1 postgres postgres 2.8M May 12  2019 dvdrental.tar

Disini kita akan mengimport database dari file archive .tar kedalam database dvd yang sudah kita buat tadi. Untuk melakukannya kita bisa menggunakan perintah :

pg_restore -h localhost -U postgres -d dvd -v dvdrental.tar

Fungsi pg_restore akan melakukan koneksi ke database untuk proses import ini, kita akan diminta untuk menginput password untuk user postgres yang sudah kita ubah tadi menggunakan query ALTER.

Output :
pg_restore: connecting to database for restore
Password:

Setelah proses import database selesai, kita bisa memeriksa apakah proses import berhasil dengan masuk ke terminal query dan masuk ke database dvd menggunakan query :

\c dvd

Output :
You are now connected to database "dvd" as user "postgres".

Selanjutnya kita bisa periksa table dari database dvd menggunakan query :

\dt

Output :
             List of relations
 Schema |     Name      | Type  |  Owner
--------+---------------+-------+----------
 public | actor         | table | postgres
 public | address       | table | postgres
 public | category      | table | postgres
 public | city          | table | postgres
 public | country       | table | postgres
 public | customer      | table | postgres
 public | film          | table | postgres
 public | film_actor    | table | postgres
 public | film_category | table | postgres
 public | inventory     | table | postgres
 public | language      | table | postgres
 public | payment       | table | postgres
 public | rental        | table | postgres
 public | staff         | table | postgres
 public | store         | table | postgres
(15 rows)


5. Backup pg_dump dan Restore pg_restore

Dalam proses belajar posgtresql, rasanya kurang jika tidak membahas tentang 2 fungsi penting ini yaitu pg_dump dan pg_restore.

pg_dump digunakan untuk membuat cadangan (dump) dari satu atau beberapa basis data PostgreSQL.
pg_restore digunakan untuk mengembalikan (restore) basis data PostgreSQL dari cadangan yang dibuat dengan pg_dump.
Disini kita akan melakukan backup dari database dvd menggunakan fungsi pg_dump, adapun perintah yang digunakan adalah :

pg_dump -h localhost -U postgres -F c -f db.dump dvd

Perintah pg_dump diatas akan menghasilkan file backup bernama db.dump

Selanjutnya kita akan melakukan restore database menggunakan file db.dump. Sebelumnya kita perlu membuat 1 database baru lagi, disini kita membuat database dengan nama dvd_restore menggunakan query :

CREATE DATABASE dvd_restore;

Kemudian kita bisa lakukan restore database dari file db.dump menggunakan perintah :

pg_restore -h localhost -U postgres -d dvd_restore -v db.dump

Setelah proses restore selesai, kita bisa periksa apakah prosesnya berhasil dengan masuk ke terminal query dan melihat table dari database dvd_restore.

\c dvd_restore

Setelah terkoneksi dengan database dvd_restore, kita bisa cek table-tablenya.

\dt

Output :
             List of relations
 Schema |     Name      | Type  |  Owner
--------+---------------+-------+----------
 public | actor         | table | postgres
 public | address       | table | postgres
 public | category      | table | postgres
 public | city          | table | postgres
 public | country       | table | postgres
 public | customer      | table | postgres
 public | film          | table | postgres
 public | film_actor    | table | postgres
 public | film_category | table | postgres
 public | inventory     | table | postgres
 public | language      | table | postgres
 public | payment       | table | postgres
 public | rental        | table | postgres
 public | staff         | table | postgres
 public | store         | table | postgres
(15 rows)


Kesimpulan :

Sekarang kamu berhasil membuat sebuah server database postgresql menggunakan Ubuntu Server 22.04.

Saturday 1 July 2023

Jenkins : Cara Menginstall Jenkins pada Sistem Operasi Linux

cara menginstall jenkins pada sistem operasi linux

Jenkins adalah sistem open source yang berbasis Java Web Aplikasi. Jenkins berfungsi sebagai server berbasis Java yang dapat mengintegrasikan berbagai alat pengembangan perangkat lunak dan menyediakan lingkungan yang kuat untuk mengotomatisasi proses pengembangan perangkat lunak.

Menjadi salah satu platform Automation Server yang sangat populer karena berbasis open source. Jenkins sendiri mendistribusikan project mereka dalam banyak format seperti Linux Packages, WAR file & Docker Images.

Pada tutorial ini, kita akan membahas opsi-opsi dalam menginstall Jenkins pada sistem operasi Linux.

1. Package Manager

Jenkins Project Package distribusi Linux adalah salah satu yang paling populer ketika ingin menginstall Jenkins, ada banyak distribusi yang disediakan seperti untuk Linux Ubuntu, Debian dan Redhat. Dokumentasi lengkapnya bisa kalian baca di website resmi Jenkins.

Cara untuk menginstall Jenkins menggunakan Package Manager :

Sebelum menambahkan Jenkins Repository, kita perlu mendownload key dari website resmi Jenkins menggunakan curl, untuk melakukannya kalian bisa menggunakan perintah :

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

Setelah key sudah ditambahkan ke local, kita bisa menambahkan Repository Jenkins menggunakan perintah :

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc ] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

Selanjutnya, kita perlu melakukan update package pada local Linux kita menggunakan perintah :

sudo apt-get update

Sebelum menginstall menggunakan package manager, pastikan dulu bahwa komputer kamu sudah menginstall Java versi 11, karena Jenkins ini berbasis Java.

Terakhir kita bisa menginstall Jenkins pada Local Linux kita menggunakan perintah :

sudo apt-get install jenkins -y

Ketika instalasi sudah selesai, Jenkins sudah berjalan pada background service menggunakan port 8080. Kalian bisa mengaksesnya lewat browser menggunakan url http://localhost:8080 atau http://youripaddress:8080.

Selain itu, proses instalasi lewat package manager ini juga secara otomatis menambahkan Jenkins ke dalam sistemd sebagai service

Kalian bisa start service Jenkins ini menggunakan perintah :

sudo systemctl start jenkins

Untuk mengecek service Jenkins yang berjalan, kalian bisa menggunakan perintah :

sudo systemctl status jenkins

Jangan lupa untuk meng-enable service Jenkins ini agar bisa running saat booting :

sudo systemctl enable jenkins

2. WAR File

Untuk cara menginstall Jenkins menggunakan WAR (Web Application Resource) File sudah pernah kita bahas pada tutorial sebelumnya, kalian bisa baca pada link dibawah ini :

3. Docker Container

Selain menggunakan Linux Package Manager dan WAR File, Jenkins juga mendistribusikan project mereka lewat Docker. Bedanya ketika menggunakan Docker, kita tidak perlu menginstall requirement seperti Java 11 pada lokal Linux kita.

Pada halaman docker hub, Jenkins menggunakan nama jenkins/jenkins untuk imagenya.

Yang pertama kalian siapkan adalah, kalian harus menginstall Docker pada lokal Linux kalian. Selanjutnya kalian bisa melakukan Pull Image Docker Jenkins menggunakan perintah :

docker pull jenkins/jenkins

Selanjutnya, kalian bisa running image jenkins menggunakan perintah :

docker run --name jenkins -p 8080:8080 -d -v /opt/data/jenkins:/var/jenkins_home jenkins/jenkins

Perintah diatas menggunakan tab -v option, dimana kita melakukan mounting local path /opt/data/jenkins ke /var/jenkins_home direktori yang ada didalam Container Jenkins yang berisi semua data Jenkinsnya.

Kesimpulan :

Sebagai platform automation server berbasis open source yang populer, Jenkins juga mendistribusikan project mereka lewat banyak cara agar user bisa menginstall Jenkins menggunakan banyak cara seperti ; Package Manager, WAR File dan juga Docker.

Seperti itu tadi pembahasan kita tentang Cara Menginstall Jenkins pada Sistem Operasi Linux. Sekian untuk tutorial kali ini, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.

Jenkins : Membuat Automation Server pada Ubuntu Server 22.04

jenkins automation server with ubuntu server 22.04

Pada tutorial ini, kita akan belajar bagaimana cara untuk membuat automation server pada Ubuntu Server 20.04 menggunakan Jenkins.

Sebelum membahas tentang Jenkins, kita berkenalan dulu dengan Automation Server.

Automation Server adalah komponen perangkat lunak yang berfungsi untuk mengotomatisasi berbagai tugas dalam proses pengembangan perangkat lunak dan pengiriman aplikasi. Automation server ini bertindak sebagai pusat kontrol yang mengelola alur kerja otomatis untuk menjalankan tugas-tugas tertentu sesuai dengan aturan dan skenario yang telah ditentukan.

Fungsi utama automation server adalah mengotomatisasi dan mengkoordinasi berbagai tugas dan aktivitas yang terlibat dalam siklus pengembangan perangkat lunak, termasuk kompilasi kode, pengujian, analisis statik, pengiriman, dan penerapan aplikasi.

Automation server memungkinkan tim pengembang untuk mengatur alur kerja yang kompleks menjadi serangkaian langkah-langkah yang dapat dijalankan secara otomatis, mengurangi kesalahan manusia, meningkatkan efisiensi, dan mempercepat waktu pengiriman aplikasi.

Sekarang kita akan berkenalan dengan Jenkins yang digunakan pada Tutorial Automation Server ini.

Jenkins adalah sebuah sistem otomatisasi tugas open-source yang digunakan untuk membangun, menguji, dan menerapkan perangkat lunak secara otomatis. Jenkins berfungsi sebagai server berbasis Java yang dapat mengintegrasikan berbagai alat pengembangan perangkat lunak dan menyediakan lingkungan yang kuat untuk mengotomatisasi proses pengembangan perangkat lunak.

Jenkins dapat terhubung dengan berbagai alat pengujian, sistem manajemen versi, dan layanan cloud untuk mempermudah pengembangan dan pengiriman perangkat lunak.

Jenkins adalah salah satu dari banyaknya platform Automation Server, beberapa fitur umum dari automation server meliputi :
  1. Integrasi Alat: Automation server dapat terintegrasi dengan berbagai alat pengembangan perangkat lunak, seperti GIT.
  2. Konfigurasi Berbasis Skrip: Automation server biasanya menggunakan skrip atau konfigurasi berbasis kode yang akan dijalankan layaknya mengetikan script/kode di terminal.
  3. Pemantauan dan Pelaporan: Automation server menyediakan tampilan pemantauan yang memungkinkan pengguna untuk melacak status dan hasil dari setiap langkah dalam alur kerja otomatis.
  4. Skalabilitas: Jenkins dapat dikonfigurasi untuk mengelola proyek-proyek pengembangan perangkat lunak yang kompleks dan skala besar dengan mendukung distribusi tugas ke berbagai mesin.
  5. Fleksibilitas: Jenkins memiliki fleksibilitas yang tinggi dalam mengkonfigurasi dan mengelola pipeline CI/CD. Pengguna dapat menyesuaikan langkah-langkah, lingkungan, dan alat-alat yang terlibat dalam pipeline sesuai dengan kebutuhan proyek.
Server requirements untuk Jenkins ini sendiri tidak terlalu rumit, yang perlu kita siapkan adalah :
  1. Linux Server with 2 /4 Core CPU, 4GB RAM, 50GB Storage (Pada tutorial ini, saya menggunakan VirtualBox dengan Ubuntu Server 22.04)
  2. SSH
  3. Java 11
  4. Git
Sebelum masuk ke konfigurasi, pastikan bahwa Ubuntu Server kalian selalu up to date, ketikan perintah dibawah ini untuk memeriksa update yang tersedia :

sudo apt update

Jika terdapat update yang tersedia, ketikan perintah dibawah ini untuk memulai proses update pada server kalian :

sudo apt upgrade

Dibawah ini adalah tahapan yang akan kita lakukan untuk melakukan konfigurasi :
  1. Setup SSH
  2. Install Java
  3. Install Git
  4. Install Jenkins
  5. Jenkins Job ; Create Folder on Home Directory
Kita mulai saja proses instalasi & konfigurasi Jenkins Automation Server ini.

1. Setup SSH

Kita mulai dengan melakukan setup ssh pada server automate kita, kalian bisa gunakan perintah :

ssh-keygen

Lalu selanjutnya tekan enter saja sampai proses pembuatan SSH key selesai, kalian bisa melihat file ssh key yang dibuat pada folder .ssh di home direktori. Fungsi dari SSH ini kita gunakan agar kita bisa meremote server lewat terminal, tapi tidak hanya itu saja, fungsi lain dari setup SSH ini akan kita bahas pada tutorial Jenkins selanjutnya.

2. Install Java 11

Selanjutnya kita install Java versi 11 pada server, kalian bisa mengecek versi Java yang tersedia pada Ubuntu Server yang kita gunakan dengan perintah :

javac --version

Output :
Command 'javac' not found, but can be installed with:

sudo apt install default-jdk                              # version 2:1.11-72, or
sudo apt install openjdk-11-jdk-headless        # version 11.0.19+7~us1-0ubuntu1~20.04.1
sudo apt install openjdk-13-jdk-headless        # version 13.0.7+5-0ubuntu1~20.04
sudo apt install openjdk-16-jdk-headless        # version 16.0.1+9-1~20.04
sudo apt install openjdk-17-jdk-headless        # version 17.0.7+7~us1-0ubuntu1~20.04
sudo apt install openjdk-8-jdk-headless          # version 8u372-ga~us1-0ubuntu1~20.04
sudo apt install ecj                                           # version 3.16.0-1

Terlihat pada output diatas, pada server yang kita gunakan belum ada Java yang terinstall. Kita bisa menginstal Java menggunakan perintah yang disediakan diatas, disini kita gunakan perintah :

sudo apt-get install openjdk-11-jdk-headless -y

Setelah itu kita tunggu proses instalasi Java 11 ini sampai selesai, kalian bisa mengecek java yang terinstall pada server menggunakan perintah :

javac --version

Output :
java 11.0.19

Terlihat pada output diatas, server kita sudah terinstall Java versi 11.

3. Install Git

Kemudian kita install Git pada server kita menggunakan perintah :

sudo apt-get install git

Setelah terinstall, kalian bisa cek versi Git yang terinstall pada server menggunakan perintah :

git --version

Output :
git version 2.34.1


4. Install Jenkins

Pada tutorial ini, kita akan menginstall Jenkins menggunakan WAR (Web Application Resource) File yang bisa kita download di Website Resmi Jenkins.

Disini kita akan menggunakan wget untuk mendownload filenya :

wget https://www.jenkins.io/download/

Ukuran file yang akan di download sekitar 94MB.

Harap diperhatikan : Jenkins menggunakan port default 8080

Setelah file jenkins.war sudah didownload, kita bisa langsung menjalankan Jenkinsnya di background menggunakan perintah :

java -jar jenkins.war &

Tag & digunakan agar Jenkins bisa berjalan di background, jadi meskipun terminal kita close, jenkins tetap akan berjalan di background sistem, kecuali jika Server/Host di Matikan maka kita harus running lagi Jenkinsnya agar bisa diakses lewat Web Browser.

Setelah Jenkins running, kita bisa akses Jenkins melalui Web Browser menggunakan ipserver:8080.

Gambar diatas adalah tampilan awal Jenkins setelah running pertama kali, pada tahap ini kita harus melakukan unlock Jenkins menggunakan Adminstrator Password

Gambar diatas adalah tampilan awal Jenkins setelah running pertama kali, pada tahap ini kita harus melakukan unlock Jenkins menggunakan Adminstrator Password. Dimana kita bisa mendapatkan password ini?, kalian bisa mendapatkan administrator passwordnya di folder .jenkins yang berada pada home direktori dengan mengetikan perintah :

cat /home/yourusername/.jenkins/secrets/initialAdminPassword

Output :
122f1270799b4f569aa8c6694e24bbc5

Setelah memasukan password kalian bisa klik tombol Continue.

Selanjutnya, kita bisa melakukan customize pada Jenkins kita dengan menginstall plugin yang disarankan oleh Jenkins dengan memilih Install suggested plugins. Tapi disini kita akan memilih Select plugins to install, artinya kita akan memilih sendiri plugins yang akan kita install. Kemudian pada tampilan saat memilih plugins, saya akan pilih none, jadi seolah-olah Jenkins yang kita install ini bersih dan kita akan setup dan integrasi dari NOL. Terakhir kalian bisa klik tombol Install

Selengkapnya kalian bisa lihat dibawah ini :

setup jenkins plugins

Kemudian, kita masuk ke proses create user admin, disini kalian bisa menginput username dan password untuk user admin jenkins kita. Selanjutnya kalian bisa klik tombol Save and Continue.

create jenkins first admin

Terakhir masuk ke proses konfigurasi url untuk Jenkins, pada tutorial ini kita menggunakan port default 8080. Selanjutnya kalian bisa klik tombol Save and Finish.

jenkins port configuration 8080

Sampai pada tahap ini, proses instalasi Jenkins sudah selesai, kita bisa klik tombol Start using Jenkins.

jenkins ready

Dibawah ini adalah tampilan Dashboard Jenkins : 

jenkins home dashboard

5. Create Jenkins Job

Setelah Jenkins sudah berhasil di install dan running pada server kita, selanjutnya kita akan membuat Job pada Server Jenkins kita. Pada tutorial ini kita akan membuat job dasar yaitu membuat folder pada home direktori :
  1. Klik New Item
  2. Isikan nama untuk Job Jenkinsya, disini saya isikan dengan nama create-folder
  3. Pilih tipe project Freestyle Project
  4. Selanjutnya, pada kolom Deskripsi kalian bisa isikan deskripsi dari job jenkins yang mau dibuat, disini saya isikan dengan create folder home direktori
  5. Terakhir ke bagian Build Steps, klik tombol add Build Steps dan pilih Execute Command Shell
  6. Karena job ini akan berjalan pada sistem operasi linux, disini saya mengetikan 2 perintah :
    cd /home/arief
    mkdir belajar-jenkins
  7. Perintah yang pertama adalah kita akan meminta jenkins masuk ke folder /home/arief, setelah itu buat folder belajar-jenkins.

    Selengkapnya kalian bisa lihat gambar animasi dibawah ini :

    create first jenkins job

  8. Terakhir klik Save
Setelah job sudah dibuat, kita bisa klik tombol Build Now yang ada di panel sebelah kiri untuk menjalankan job jenkins yang sudah kita buat tadi.

Setelah job sudah dibuat, kita bisa klik tombol Build Now yang ada di panel sebelah kiri untuk menjalankan job jenkins yang sudah kita buat tadi.

Setelah job sudah running, kalian bisa melihat console output dari job pada bagian Build History - Console Output.

Pada gambar dibawah ini, terlihat bahwa jobnya sukses berjalan. Jika kita kembali ke server dan mengetikan ls di home folder, maka akan terlihat folder belajar-jenkins yang dibuat menggunakan job dari jenkins ini.

Setelah job sudah running, kalian bisa melihat console output dari job pada bagian Build History - Console Output.

Kesimpulan :

Sekarang ini peranan dari Automation server sangat penting dalam pengembangan perangkat lunak modern karena membantu mengurangi beban kerja manual, meningkatkan kecepatan dan kualitas pengiriman, serta mengurangi human error jika job tersebut berkaitan dengan deployment aplikasi ke production server. Banyak platform automation server yang berbedar saat ini dan Jenkins adalah salah satu dari platform automation server open source yang bebas kita gunakan untuk membuat job automasi.

Masih banyak sekali kegunaan dari Jenkins ini dan bisa kita integrasikan dengan service lain yang akan kita bahas pada tutorial Jenkins selanjutnya.

Seperti itu tadi pembahasan kita tentang cara membuat automation server pada Ubuntu Server 20.04 menggunakan Jenkins. Sekian untuk tutorial kali ini, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.

Friday 17 June 2022

Moodle : Instalasi Sistem E-Learning pada Ubuntu Server 20.04

moodle thumbnail

Pada tutorial ini, kita akan belajar bagaimana cara untuk menginstal learning management system pada Ubuntu Server 20.04.

LMS adalah singkatan dari Learning Management System, merupakan sistem untuk mengelola catatan pelatihan dan pendidikan, perangkat lunaknya untuk mendistribusikan program pembelajaran melalui internet dengan fitur untuk kolaborasi yang dilakukan secara online.

Friday 10 June 2022

osTicket : Instalasi Sistem Ticketing pada Ubuntu Server 20.04

ticketing thumbnail

Pada tutorial ini, kita akan belajar bagaimana cara untuk menginstal ticketing sistem pada Ubuntu Server 20.04.

Ticketing System adalah sebuah sistem manajemen dan pengelola daftar isu atau masalah yang di request oleh client untuk diselesaikan, tiket ini bisa berupa permintaan, pertanyaan, ataupun keluhan tertentu. Umumnya sistem ini dimiliki oleh instansi atau perusahaan yang memiliki banyak staff karyawan yang membutuhkan seorang Support Staff untuk menyelesaikan masalah teknis yang berkaitan dengan perangkat IT.

Wednesday 1 June 2022

Certbot : Mengamankan Web Server Apache dengan Lets Encrypt - Ubuntu Server 20.04

lets encrypt thumbnail

Sebelum memulai tutorial ini, kita akan mengenal dulu apa itu TLS dan SSL.

TLS (Transport Layer Security) dan SSL (Secure Socket Layer), adalah sebuah protokol yang akan membentuk koneksi terenkripsi antara web server dengan client atau sebaliknya, sehingga koneksi antara client dan server dapat berjalan secara aman dari pihak lain yang tidak berkepentingan. Protokol ini penting untuk ada pada sebuah website, terlebih jika website tersebut berbentuk e-commerce jual beli barang yang menyimpan banyak informasi client seperti username/password, informasi kartu kredit, dll.

Thursday 19 May 2022

Fail2ban : Mengamankan Server dari Serangan Brute Force - Ubuntu Server 20.04

fail2ban-thumbnail

Pada tutorial ini kita akan membahas tentang Fail2ban dan cara mengamankan server Ubuntu kita dari serangan Brute Force.

Fail2ban adalah sistem pencegah intrusi atau serangan otomatis yang melindungi server kita dari serangan brute force. Fail2ban akan melakukan monitoring log file (/var/log/auth.log, /var/log/apache/access.log, dll), jika terdapat aktivitas login yang tidak wajar seperti password salah dan dilakukan berkali-kali, maka fail2ban akan secara otomatis memasukan ip host tersebut ke dalam ip table untuk di blokir.

Wednesday 18 May 2022

UFW (Uncomplicated Firewall) : Keamanan Dasar pada Ubuntu Server 20.04

ufw-thumbnail

Pada tutorial ini kita akan membahas tentang UFW atau Uncomplicated Firewall pada Ubuntu Server 20.04.

UFW atau Uncomplicated Firewall, sebuah program yang berfungsi untuk melakukan manajemen netfilter firewall. Pada dasarnya UFW adalah IP Table yang merupakan firewall default pada Ubuntu Server, tapi karena IP Table ini sangat kompleks dan tidak cocok untuk para pemula yang baru terjun ke dalam server, sesuai dengan namanya yaitu Uncomplicated maka diciptakanlah sebuah program yang user friendly yaitu UFW.

Tuesday 17 May 2022

Project Deployment on Ubuntu Server 20.04 : Company Profile with Database

deploy-company-profile-thumbnail

Pada tutorial ini kita akan melakukan deploy project lagi, berbeda dengan tutorial sebelumnya yang hanya berupa Landing Page sederhana tanpa ada import database, untuk project deployment kali ini kita akan melakukan deploy sebuah company profile beserta dengan databasenya.

Konfigurasi FTP Server dengan VSFTPD pada Ubuntu Server 20.04

ftp-server-thumbnail

Pada tutorial ini kita akan membahas tentang konfigurasi FTP Server pada Ubuntu Server 20.04.

FTP (File Transfer Protocol), adalah sebuah protokol jaringan yang digunakan untuk melakukan pengiriman data antar jaringan. FTP digunakan untuk melakukan pengiriman data bisa berupa folder atau file, seperti folder project yang akan di deploy ke dalam sebuah live server. Terdapat beberapa FTP open source yang bisa digunakan pada platform Linux, disini kita akan menggunakan VSFTPD (Very Secure FTP Daemon), kenapa?, karena VSFTPD terkenal karena kestabilannya, sekuritas dan juga FTP Server tercepat.

Friday 13 May 2022

Memahami Server Requirements untuk Proses Deployment Live and Running pada Ubuntu Server 20.04

server-requirements-thumbnail

Disini kita akan membahas tentang server requirements pada Ubuntu Server 20.04.

Agar sebuah project yang di deploy bisa di publish dan berjalan tanpa adanya masalah, sebuah perangkat server membutuhkan beberapa service tertentu yang terinstal didalamnya. Prasyarat ini dikenal dengan istilah Server Requirement. Khusus untuk penggunaan framework, tiap framework memiliki persyaratan yang berbeda untuk server requirementnya agar project yang di bangun menggunakan framework tersebut bisa berjalan tanpa ada masalah.

Wednesday 11 May 2022

Konfigurasi Port Based Virtual Host pada Ubuntu Server 20.04

port-based-virtual-host-thumbnail

Pernah kepikiran gak?, gimana cara agar website dan aplikasi yang ada di dalam unit server fisik yang sama, bisa online berbarengan hanya dengan menggunakan 1 ip publik saja.

Gimana caranya?

Caranya adalah dengan menggunakan Virtual Host, pada tutorial ini kita akan membahas apa itu Virtual Host dan bagaimana konfigurasinya pada Ubuntu Server 20.04.

Tuesday 10 May 2022

Konfigurasi Apache Mod_Rewrite pada Ubuntu Server 20.04

module-rewrite-thumbnail

Pada tutorial ini kita akan membahas tentang konfigurasi modul Rewrite pada service Apache Ubuntu Server 20.04

Modul Rewrite adalah sebuah modul pada service Apache yang berfungsi untuk memanipulasi sebuah URL pada webserver. Sederhananya, modul Rewrite ini akan menyesuaikan url pada sebuah website, agar url yang digunakan terlihat rapi, bersih dan SEO friendly.
Secara default, Apache tidak secara otomatis mengaktifkan modul ini, jadi disini kita akan melakukan beberapa konfigurasi agar modul rewrite ini bisa kita gunakan.
Implementasi dari modul rewrite ini akan berbentuk file .htaccess yang biasanya ada didalam folder sebuah website. File .htaccess sendiri akan berisikan script rule sederhana yang disesuaikan pada framework atau bahasa yang digunakan pada proses pembangunan website tersebut. Pada tutorial ini, kita akan melakukan konfigurasi modul rewrite pada apache web server yang berisikan website yang dibuat dengan framework Codeigniter 4.

Kalian bisa buka dokumentasi dari framework yang kalian gunakan dan cari bagian setup apache web server. Dibawah ini adalah dokumentasi dari framework Codeigniter 4, terlihat pada bagian Apache Web Server dijelaskan bagaimana cara untuk menggunakan mod_rewrite menggunakan simple rule. Pada konfigurasi ini, kita akan menggunakan script .htaccess versi lengkapnya.

codeigniter-4-documentation

Kita mulai proses konfigurasi modul rewrite ini.

1. Aktifkan Modul Rewrite
Untuk mengaktifkan modul rewrite, gunakan perintah :

sudo a2enmod rewrite

Selanjutnya, restart service apache menggunakan perintah :

sudo systemctl restart apache2

2. Konfigurasi site-enable Apache
Selanjutnya, kita perlu melakukan konfigurasi pada site-enable Apache agar bisa melakukan fungsi URL rewrite yang nantinya akan di jalankan oleh file .htaccess.

Ketikan perintah :
sudo nano /etc/apache2/sites-enabled/000-default.conf

Output
<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Di dalam file konfigurasi diatas, tambahkan script dibawah ini setelah string <VirtualHost *:80> :

<Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow, deny
    Allow from All
</Directory>

Kemudian save pengaturan konfigurasi yang sudah kita setting. Tekan CTRL+X untuk melakukan penyimpanan konfigurasi, lalu konfirmasi dengan mengetik Y, lalu terakhir tekan Enter untuk kembali ke terminal utama server. Selanjutnya kita lakukan restart kembali pada service Apache.
3. File .htaccess
Selanjutnya, kita buat file .htaccess, kalian bisa langsung membuat file .htaccess ini didalam folder website atau project kalian. Disini kita akan membuat file .htaccess pada directory html, diluar folder website atau project, untuk membuat file .htaccess gunakan perintah :

sudo nano /var/www/html/.htaccess

Lalu kita buat rule mod_rewrite dengan mengetikan script dibawah ini :

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule>

Setelah script diatas sudah diketikan, kita save konfigurasinya, tekan CTRL+X untuk melakukan penyimpanan konfigurasi, lalu konfirmasi dengan mengetik Y, lalu terakhir tekan Enter untuk kembali ke terminal utama server.

Setelah itu kalian bisa pindahkan file .htaccess ke dalam folder website atau project kalian.
Kesimpulan :
Dengan mengaktifkan mod_rewrite ini, kita dapat meningkatkan keamanan website sekaligus merapihkan URL website agar terlihat rapi, bersih dan SEO friendly.

Sebagai perbandingan, berikut adalah contoh URL website yang belum menggunakan modul rewrite :

https://website.com/posts.php?year=2022&month=05&day=09&title=mod-rewrite-apache

Sedangkan, dibawah ini adalah contoh URL website yang sudah menggunakan modul rewrite :

https://website.com/2022/05/09/mod-rewrite-apache

Sekian untuk tutorial cara melakukan konfigurasi modul rewrite pada Ubuntu Server 20.04, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.

Project Deployment on Ubuntu Web Server : Simple Landing Page

deploy-landing-page-thumbnail

Pada tutorial ini kita akan melakukan deploy project berupa Landing Page sederhana ke dalam Ubuntu Web Server yang sudah kita setting pada tutorial sebelumnya, jadi pastikan bahwa kalian sudah membaca post kami sebelumnya.
Baca juga :
How To Install Ubuntu Server 20.04 On Virtual Box
Konfigurasi Dasar Pada Ubuntu Server 20.04
Konfigurasi SSH Key Pada Ubuntu Server 20.04
Konfigurasi LAMP Server Pada Ubuntu Server 20.04
Project deployment disini, kita akan menggunakan fungsi clone dari github. Project yang akan kita clone ke dalam web server bisa kalian lihat pada link dibawah ini :


Dalam prosesnya, kita akan melakukan sedikit ubahan pada konfigurasi service apache, kemudian melakukan clone dari repository github, lalu menyesuaikan file config pada folder projectnya, baru kemudian kita lakukan test dengan mengakses website tersebut. Untuk website disini akan kita akses menggunakan ip address/folder project.

1. Konfigurasi Apache Server
Pertama, kita akan melakukan ubahan pada konfigurasi service apache dengan menambahkan beberapa rule dibawah ini :

<Directory />
    Options FollowSymLinks
    Allow Override None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    Allow from All
</Directory>

<Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
    Allow from All
</Directory>

Buka konfigurasi service apache dengan mengetikan perintah :

sudo /etc/apache2/apache2.conf

Kemudian cari komentar dengan tagar :

# access here, or in any related virtual host

Ketikan script diatas ke dalam terminal konfigurasi apache seperti gambar dibawah ini :

apache.conf rule script
Harap diperhatikan, untuk semua rule yang dibuat didalam file konfigurasi apache2.conf ini bersifat "cache sensitive", jadi besar-kecilnya huruf akan berpengaruh pada servicenya nanti. Jadi pastikan bahwa kalian mengetikan rule konfigurasi diatas sesuai dengan yang kami berikan.
Setelah script konfigurasi sudah diketik, kalian bisa tekan CTRL+X untuk melakukan penyimpanan konfigurasi, lalu konfirmasi dengan mengetik Y, lalu terakhir tekan Enter untuk kembali ke terminal utama server dan lakukan restart pada service apache.

sudo systemctl restart apache2

Kemudian cek juga status konfigurasi dari service apache, pastikan bahwa service apache berjalan dengan benar :

sudo apachectl configtest

Jika balasan dari sistem adalah "Syntax OK", berarti apache server kita sudah berjalan dengan konfigurasi yang kita buat. Tetapi jika balasan dari system berisi "Syntax Error", kalian cek lagi pada konfigurasi apache2.conf, pastikan tidak ada typo atau kesalahan pengetikan pada rulenya.

2. Git Clone
Selanjutnya, kita akan clone project website landing page ke dalam server, diawal post ini kita sudah menyiapkan project yang akan kita clone ke dalam server. Pastikan kalian mengetahui link repository dari project yang akan kalian clone.

Sebelumnya kita akses terlebih dahulu directory html pada server dengan mengetikan perintah :

cd /var/www/html

Lanjut dengan melakukan clone pada folder html, ketikan perintah dengan format :

git clone https://link-repository-project.git

Disini kita mengetikan perintah :

git clone https://github.com/mmarcec007/landing-page-ci.git

Setelah itu tunggu proses clone ini sampai selesai.

3. config.php
Setelah proses clone sudah selesai, terakhir kita akan melakukan ubahan pada file config.php yang ada didalam folder project landing page.

Kita akses terlebih dahulu directorynya, ketikan perintah :

cd /var/www/html/landing-page-ci/application/config

Kemudian kita lakukan ubahan pada file config.php dengan mengetikan :

sudo nano config.php

Perhatikan pada string :

$config['base_url'] = 'http://localhost/Codeigniter';

config.php-base-url

Ubah URL localhost menggunakan alamat ip server kalian /landing-page-ci.

Contoh :
$config['base_url'] = 'http://192.168.43.14/landing-page-ci';

Kemudian tekan CTRL+X untuk melakukan penyimpanan konfigurasi, lalu konfirmasi dengan mengetik Y, lalu terakhir tekan Enter untuk kembali ke terminal utama server dan lakukan restart pada service apache.

Test :
Kita coba akses website yang sudah kita deploy tadi. Buka browser favorit kalian masing-masing dan ketikan url ip-server/landing-page-ci

landing-page-website

Terlihat pada gambar diatas, website bisa diakses dan kita berhasil melakukan deploy project berupa landing page sederhana ke dalam server kita.

Sekian untuk tutorial project deployment ini, yang dimana kita berhasil melakukan deploy project landing page sederhana ke Ubuntu Server 20.04, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.