insights/content/tutorials/self-hosted-hishtory/index.id.md

7.5 KiB

title description summary date lastmod draft noindex nav_weight categories tags images authors
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 HiSHtory adalah alat yang menyimpan konteks riwayat terminal, termasuk tanggal dieksekusinya perintah, direktori, dan durasi perintah tersebut berjalan. Artikel ini menunjukkan cara menginstal self-hosted HiSHtory, yang memungkinkan Anda mengelola riwayat terminal dengan mudah. 2025-03-20T19:08:00+07:00 false false 1000
Self-Hosted
Bash
Zsh
HiSHtory
Linux
ditatompel

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.

{{< youtube z1ZUzmzv70c >}}

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:
git clone https://github.com/ddworken/hishtory.git
cd 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:
version: "3.8"
networks:
    hishtory:
        driver: bridge
services:
    postgres:
        image: postgres
        restart: unless-stopped
        networks:
            - hishtory
        environment:
            POSTGRES_PASSWORD: MyStrongPass
            POSTGRES_DB: hishtory
            PGDATA: /var/lib/postgresql/data/pgdata
        volumes:
            - postgres-data:/var/lib/postgresql/data
        healthcheck:
            test: pg_isready -U postgres
            interval: 10s
            timeout: 3s
    hishtory:
        depends_on:
            postgres:
                condition: service_healthy
        networks:
            - hishtory
        build:
            context: ../../
            dockerfile: ./backend/server/Dockerfile
        restart: unless-stopped
        deploy:
            restart_policy:
                condition: on-failure
                delay: 3s
        environment:
            HISHTORY_POSTGRES_DB: postgresql://postgres:MyStrongPass@postgres:5432/hishtory?sslmode=disable
            HISHTORY_COMPOSE_TEST: $HISHTORY_COMPOSE_TEST
        ports:
            - 45680:8080
volumes:
    postgres-data:
  1. Kemudian build docker image dengan menjalankan perintah:
docker compose -f backend/server/docker-compose.yml build
  1. Setelah proses build selesai, coba jalankan HiSHtory server menggunakan perintah:
docker 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:

export HISHTORY_PATH=.config/hishtory
# sesuaikan IP dan port di bawah ini dengan environment Anda
export 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:

curl 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:

hishtory 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.