Langkah-langkah Menginstall Self-hosted HiSHtory

Cara menginstall self-hosted HiSHtory, sebuah program yang menyimpan konteks riwayat terminal. Ikuti panduan yang mudah diikuti ini untuk proses penyiapan yang lancar

Jika Anda sering bekerja menggunakan Linux Terminal, fitur history pada shell yang kita gunakan bisa sangat membantu meningkatkan produktifitas kita. Namun, secara default, fitur shell history seperti bash atau zsh memikili keterbatasan. Beberapa diantaranya adalah:

  • Tidak menyimpan informasi dari direktori mana perintah yang kita jalankan.
  • Tidak adanya informasi apakah perintah tersebut sukses dieksekusi atau tidak.
  • Tidak adanya informasi seberapa lama komputer kita membutuhkan waktu untuk menyelesaikan perintah tersebut.

Bagi sebagian besar pengguna Linux, fitur-fitur diatas memang sedikit overkill dan bukan sebuah fitur yang krusial. Dan menyimpan informasi ekstra tersebut sedikit banyak dapat meningkatkan disk I/O dan mempengaruhi performa mesin. Tetapi, bagi sebagian penguna Linux lainnya, fitur tersebut dapat sangat membantu melakukan investigasi ataupun troubleshooting pada sebuah sistem.

Jika informasi-informasi tersebut dapat disimpan secara terpusat dan dapat dilakukan pencarian berdasarkan kata kunci tertentu, tentu akan sangat membantu meringankan tugas para Linux System Administrstrator yang seringkali banyak menggunakan perintah dengan pipeline yang kompleks. Untungnya ada sebuah program yang bernama HiSHtory.

Pengenalan HiSHtory

HiSHtory merupakan program yang menyimpan konteks history terminal dari jam dan tanggal kapan perintah tersebut dieksekusi, lokasi direktori yang aktif saat perintah dijalankan, dan seberapa lama perintah tersebut dieksekusi. Informasi tersebut dapat disimpan secara lokal (per mesin) ataupun terpusat (clint-server architecture).

Dengan kata lain, Anda dapat melakukan pencarian shell pipeline yang kompleks dari server atau mesin lain dengan mudah dari laptop atau salah satu komputer Anda.

Menggunakan HiSHtory secara Terpusat (self-hosted)

Di artikel ini, saya akan menggunakan 2 buah laptop dengan sistem opersai Linux dengan detail sebagai berikut:

  • hostname T420 dengan IP 192.168.2.22 akan bertugas sebagai server sekaligus client
  • hostname P50 sebagai client

Perlu diperhatikan bahwa saya akan mengunakan HiSHtory server versi Docker, sehingga pastikan komputer server sudah terinstall Docker dan dapat berjalan dengan baik.

Mengkonfigurasi HiSHtory Server

  1. Login ke komputer server dan clone repositori ddworken/hishtory dan masuk ke direktori tersebut:
1git clone https://github.com/ddworken/hishtory.git
2cd hishtory
  1. Edit backend/server/docker-compose.yml dan sesuaikan konfigurasi sesuai kebutuhan. Karena saya menggunakan PostgreSQL sebagai database backend-nya, saya mengubah POSTGRES_PASSWORD dari TODO_YOUR_POSTGRES_PASSWORD_HERE ke MyStrongPassword. Karena saya mengubah konfigurasi default password Posgres, saya perlu menyesuaikan juga nilai dari environment variable HISHTORY_POSTGRES_DB sesuai dengan password yang sudah saya tentukan. Selain itu, karena port 80 pada server sudah saya gunakan untuk proses lain, saya mengubah listen port HiSHtory server di host machine dari port 80 ke port 45680. HiSHtory backend docker-compose Kurang lebih konfigurasi backend/server/docker-compose.yml saya sebagai berikut:
 1version: "3.8"
 2networks:
 3    hishtory:
 4        driver: bridge
 5services:
 6    postgres:
 7        image: postgres
 8        restart: unless-stopped
 9        networks:
10            - hishtory
11        environment:
12            POSTGRES_PASSWORD: MyStrongPass
13            POSTGRES_DB: hishtory
14            PGDATA: /var/lib/postgresql/data/pgdata
15        volumes:
16            - postgres-data:/var/lib/postgresql/data
17        healthcheck:
18            test: pg_isready -U postgres
19            interval: 10s
20            timeout: 3s
21    hishtory:
22        depends_on:
23            postgres:
24                condition: service_healthy
25        networks:
26            - hishtory
27        build:
28            context: ../../
29            dockerfile: ./backend/server/Dockerfile
30        restart: unless-stopped
31        deploy:
32            restart_policy:
33                condition: on-failure
34                delay: 3s
35        environment:
36            HISHTORY_POSTGRES_DB: postgresql://postgres:MyStrongPass@postgres:5432/hishtory?sslmode=disable
37            HISHTORY_COMPOSE_TEST: $HISHTORY_COMPOSE_TEST
38        ports:
39            - 45680:8080
40volumes:
41    postgres-data:
  1. Kemudian build docker image dengan menjalankan perintah:
1docker compose -f backend/server/docker-compose.yml build
  1. Setelah proses build selesai, coba jalankan HiSHtory server menggunakan perintah:
1docker compose -f backend/server/docker-compose.yml up

Tunggu beberapa saat dan pastikan HiSHtory server berjalan dengan baik. Hal ini bisa di cek dengan menggunakan perintah docker ps atau melakukan pengecekan langsung ke HiSHtory HTTP server: curl -sIL http://127.0.0.1:45680 (ubah dan sesuaikan IP:port dengan konfigurasi milik Anda).

Mengkonfigurasi HiSHtory Client

Satu hal yang penting, karena kita akan menggunakan self-hosted, Anda perlu menambahkan juga environment variable HISHTORY_SERVER=http://<ip>:<port> ke .bashrc atau .zshrc Anda (sesuaikan alamat IP dan port yang digunakan).

Selain itu, secara default, HiSHtory client akan terinstall di ~/.hishtory. Namun, supaya $HOME direktori saya lebih rapi, di artikel kali ini saya akan menggunakan direktori ~/.config/hishtory. Hal ini bisa dilakukan dengan menambahkan HISHTORY_PATH=.config/hishtory ke .bashrc atau .zshrc Anda.

Sehingga kurang lebih .bashrc atau .zshrc saya ada tambahan konfigureasi sebagai berikut:

1export HISHTORY_PATH=.config/hishtory
2# sesuaikan IP dan port di bawah ini dengan environment Anda
3export HISHTORY_SERVER="http://192.168.2.22:45680"

Setelah envoronment variable diatas ditambahkan, reload sesi shell Anda, kemudian download dan jalankan install script yang sudah tersedia:

1curl https://hishtory.dev/install.py | python3 -

Script tersebut akan secara otomatis mengenerate device ID dan secret key Anda serta berbagai konfigurasi dasar lainnya. Simpan secret key yang tampil sehingga dapat Anda gunakan untuk sinkronisasi di komputer lain.

Untuk mengkonfigurasi pada komputer atau server kedua dan seterusnya, ulangi proses diatas di masing-masing komputer atau server. Setelah proses installasi hishtory menggunakan install script terakhir diatas selesai, jalankan perintah berikut:

1hishtory init $YOUR_HISHTORY_SECRET_FROM_FIRST_DEVICE

Ubah $YOUR_HISHTORY_SECRET_FROM_FIRST_DEVICE dengan secret key dari device pertama.

Catatan: Secret key juga bisa ditampilan dengan menjalankan perintah hishtory status dari device pertama.

Semoga membantu.