Perjalanan Keyboard Jadul IBM

Sudah dari 2021 saya pingin punya keyboard IBM, hal ini bermula setelah melihat postingan di group IMKG tentang IBM Model M. Setelah menyelam di marketplace ternyata harganya malah wkwkw, okelah coba dengan cari di group rongsokan.

Berikut beberapa istilah yang akan akan dipakai:

Buckle Spring

Mekanisme switch yang akan menekan pegas ketika keycaps ditekan, spring akan tertekuk dan plastik bawah akan menekan PCB

Soarer’s converter / TMK

Firmware yang digunakan untuk mengkonfersi protokol keyboard IBM ke protokol USB untuk komputer modern. Firmware ini di flash ke board teensy atau pro micro alternative murahnya

Berikut perjalanan saya:

IBM Model F XT

Keyboard ini saya dapatkan bulan Oktober 2022. Kondisinya bisa dibilang cukup bagus hanya kaki sebelah kiri saja yang patah.

Setelah cari tutorial sana sini akhirnya coba buat converter pakai Pro Micro dengan firmware Soarer’s, percobaan pertama masih gagal karena belum ketemu wiringnya. Model F XT ini lumayan ribet karena ada 10 pin dan hanya kepakai 5 pin saja.

Saya juga sempat tanya tanya dengan Om Richard dari group Pegel Thinkpad. Setelah berkonsultasi cukup lama, sepertinya tidak ada harapan lagi untuk keyboard ini karena bagian spring beberapa patah.

Update sampai blog ini ditulis masih belum berhasil nyala.

IBM Model M122

Setelah vacum hampir 3 tahun dari dunia per IBM an, di suatu hari bulan Mei tiba tiba ada dm masuk menawarkan keyboard IBM. Beliau menawarkan 5 keyboard, iya 5 bukan 1 atau 2. Niat hati ingin ambil 1 tetapi beliau minta diborong dan akhirnya saya deal.

List keyboard yang mendarat sebagai berikut:

  • 2 unit IBM Model M122 tahun 1987
  • 2 unit IBM Model M122 tahun 1988
  • 1 unit IBM Model F “Bigfoot” (next kita bahas model ini)

Berikut dalaman Modem M122 yang saya bongkar

Setelah pro micro sampai, langsung saya flash pakai firmware TMK (firmware ini lebih baru dari pada Soarer’s). Setelah selesai lanjut ke bagian wiring, warna kabel ada 4, yaitu merah, hitam, putih, dan kuning. Jangan tertipu dengan warna kabel ini. Wiring yang benar:

  • Hitam > VCC
  • Putih > GND
  • Merah > Data
  • Kuning > Clock

Ingat untuk selalu pastikan dengan multimeter, jangan sampai VCC dan GND terbalik, bisa mati nanti.

Saya coba pertama di keyboard tahun 1988, hampir setengah hari belum bisa nyala. Tukar wiring, ganti firmware ke Soarer’s, ganti keyboard ke 2 masih tetep. Akhirnya saya coba keyboard ke tiga dan ke empat bisa nya, kebetulah keduanya tahun 1987, dugaan pertama adalah PCB nya yang rusak, karena PCB 1987 & 1988 beda. PCB atas adalah tahun 1987 dengan resistor dan chip yang lebih banyak.

Tetapi dugaan saya salah, setelah tukar PCB ternyata yang tahun 1988 juga bisa nyala. Karena harus bongkar total semua, oke lah kita lanjut ke keyboard 1987 aja.

Oh ya disini saya pakai type converter internal, jadi pro micro ditanam didalam keyboard, kabel spiral bawaan keyboard didak dipakai. Kekurangannya harus coak case keyboard untuk lubang USB.

Dan sekarang disinilah si Gerald berada, diatas meja kerja saya. Keyboard yang dulu mungkin menjadi kesayangan seseorang, terbengkalai puluhan tahun bukan karena jelek tetapi perubahan teknologi yang cepat, dan kini sudah menemukan kehidupannya lagi meskipun dengan segala kekurangannya.

Self Host Cloud Storage

2 tahun terakhir saya langganan Google Drive paket 100GB dengan harga -+350k/tahun, manun seiring bertambahnya data saya rasa 100GB ini terlalu kecil untuk saya. Sebenarnya bisa nambah kapasitas ke 2TB, tetapi ini cukup mahal harganya sekitar 1.5jt/tahun. Maka mulai 2 bulan lalu data mulai saya takeout dari Google dengan fitur takeout di link berikut https://takeout.google.com.

Ok permasalahan pertama selesai, masalah kedua adalah bagaimana menyimpan data secara aman. Disini saya gunakan external storage dengan detail sebagai berikut:

  • HDD copotan laptop 512GB
  • HDD external transcend 1TB
  • SSD 128GB
  • SSD 256GB
  • SSD 512GB
  • SSD laptop 1TB

Dengan total storage -+ 3TB tentu tidak terpakai semua, untuk file penting saya pecah kedalam beberapa media untuk menghindari kerusakan. Permasalahan penyimpanan data selesai.

Permasalahan ketiga adalah ketidak praktisan kemana mana membawa semua storage itu, dan karena sebagian masih pakai HDD maka sangat riskan akan goncangan, ditambah lagi cukup berat hampir 700gr. Karena beberapa permasalahan diatas akhirnya saya putuskan untuk merakit sebuah NAS, setelah mempertimbangkan kebutuhan maka segera cek harga di marketplace dan ternyata budget untuk merakit PC saat ini tidak masuk akal karena mahalnya part efek AI. Akhirnya saya putuskan membeli NAS bekas, setalah cari sana sini dan menyelam di group facebook saya ketemu yg cocok. Singkat cerita barang dikirim dari Jakarta dan 3 hari kemudian sudah sampai.

Type yang saya pilih adalah Qnap T431P, alasan utama memilih type ini karena memiliki 4 slot hardisk (ini penting untuk RAID). NAS ini saya beli dengan harga 2.9jt sudah include HDD 1TB. Setelah setup dan test isi data, beberapa hari kemudian HDD menunjukkan warning, saya curiga HDD ini terbentur di pengiriman dan 1 minggu kemudian HDD sudah tidak terbaca lagi. Tapi ini masih aman karena data yang saya simpan hanya untuk test.

Sembari menunggu HDD baru, saya putuskan untuk pasang SSD 512GB sebagai storage data dan SSD 128GB sebagai cache, cache ini penting untuk menguragi beban read pada SSD utama sehingga umur SSD utama bisa lebih awet.

Pointing domain utama dengan cloudflare tunnel

Install



curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $VERSION_CODENAME main" | \
  sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update
sudo apt install -y cloudflared

Login

cloudflared tunnel login
cloudflared tunnel create namatunnel

Setelah jalankan cloudflare tunnel login akan muncul url, buka url di browser dan pilih domain yang akan dipakai

Config

buat file /etc/cloudflared/config.yml yang berisi:

tunnel: TUNNEL_ID
credentials-file: /root/.cloudflared/TUNNEL_ID.json

ingress:
  - hostname: domain.id
    service: http://localhost:8080
  - service: http_status:404

tambahkan DNS record:

cloudflared tunnel route dns domain domain.id

cek konfigurasi:

sudo cloudflared --config /etc/cloudflared/config.yml tunnel ingress validate

jalankan sebagai service systemd:

which cloudflared
sudo tee /etc/systemd/system/cloudflared.service >/dev/null <<'EOF'
[Unit]
Description=Cloudflare Tunnel
After=network-online.target
Wants=network-online.target

[Service]
User=root
ExecStart=/usr/local/bin/cloudflared --config /etc/cloudflared/config.yml --no-autoupdate tunnel run
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflared
sudo systemctl status cloudflared --no-pager

Cek konfigurasi

curl -I https://domain.id

BGP configuration on Juniper

Topologi

IP config

R-100-01
set interface em0 unit 0 family inet address 172.16.10.1/30
set interface em1 unit 0 family inet address 10.1.1.1/30
R-100-02
set interfaces em1 unit 0 family inet address 10.1.1.2/30
R-200-01
set interfaces em0 unit 0 family inet address 172.16.10.2/30
set interfaces em1 unit 0 family inet address 10.2.2.1/30
R-200-02
interfaces em1 unit 0 family inet address 10.2.2.2/30

AS Number config

R-100-01 & R-100-02
set routing-options autonomous-system 100
R-200-01 & R-200-02
set routing-options autonomous-system 200

eBGP Peers config

R-100-01
edit protocols bgp 
set group ebgp-peers 
set neighbor 172.16.10.2 peer-as 200
set type external
R-200-01
edit protocols bgp 
set group ebgp-peers 
set neighbor 172.16.10.1 peer-as 100
set type external

iBGP Peers config

R-100-01
edit protocols bgp
set group ibgp-peers
set neighbor 10.1.1.2
set type internal
R-100-02
edit protocols bgp
set group ibgp-peers
set neighbor 10.1.1.1
set type internal
R-200-01
edit protocols bgp
set group ibgp-peers
set neighbor 10.2.2.2
set type internal
R-200-02
edit protocols bgp
set group ibgp-peers
set neighbor 10.2.2.1
set type internal

Set routing policy

Create this policy on all routers

set policy-options policy-statement BGP term 1 from protocol direct
set policy-options policy-statement BGP term 1 then accept
set policy-options policy-statement BGP from protocol direct
set policy-options policy-statement BGP then accept

Assigning Routing Policy

R-100-01 & R-200-01

set protocols bgp group ebgp-peers export BGP
set protocols bgp group ibgp-peers export BGP

R-100-02 & R-200-02

set protocols bgp group ibgp-peers export BGP

Verification

root@R-100-01> show bgp summary  
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 2 Down peers: 1
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0                
                      1          0          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.1.2                100          0          0       0       0     1:15:32 Establ
172.16.10.2             200        172        171       0       0     1:15:29 Establ
 inet.0: 0/1/1/0

root@R-100-01>
root@R-100-01# run ping 10.2.2.2  
PING 10.2.2.2 (10.2.2.2): 56 data bytes
64 bytes from 10.2.2.2: icmp_seq=0 ttl=63 time=1.431 ms
64 bytes from 10.2.2.2: icmp_seq=1 ttl=63 time=1.352 ms
64 bytes from 10.2.2.2: icmp_seq=2 ttl=63 time=1.301 ms
64 bytes from 10.2.2.2: icmp_seq=3 ttl=63 time=1.147 ms
64 bytes from 10.2.2.2: icmp_seq=4 ttl=63 time=1.230 ms
64 bytes from 10.2.2.2: icmp_seq=5 ttl=63 time=1.363 ms
^C
--- 10.2.2.2 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.147/1.304/1.431/0.093 ms

[edit]
root@R-100-01#
root@R-100-01# run traceroute 10.2.2.2  
traceroute to 10.2.2.2 (10.2.2.2), 30 hops max, 52 byte packets
1  172.16.10.2 (172.16.10.2)  2.083 ms  0.604 ms  0.403 ms
2  10.2.2.2 (10.2.2.2)  1.330 ms  1.004 ms  1.096 ms

[edit]
root@R-100-01#

Cisco Packet Tracer Opensuse

Karena di web netacad Cisco Packet Tracer hanya tersedia untuk Ubuntu/Debian dengan format .deb, jadi secara default tidak tersedia di distro rpm based. Untuk itu perlu memasang secara manual.

Download

Download file installasi untuk Ubuntu/Debian dari web netacad

Unpack

mkdir /tmp/cpt
cp CiscoPacketTracer_820_Ubuntu_64bit.deb /tmp/cpt 
ar -xv CiscoPacketTracer_820_Ubuntu_64bit.deb 
mkdir control
tar -C control -Jxf control.tar.xz 
mkdir data
tar -C control -Jxf data.tar.xz 
cd data

Install

cp -r usr /
cp -r opt /

untuk Tumbleweed jalankan ini:

ln -s /usr/lib64/libdouble-conversion.so.3.1.5 /usr/lib64/libdouble-conversion.so.1

Update icon

xdg-desktop-menu install /usr/share/applications/cisco-pt.desktop
xdg-desktop-menu install /usr/share/applications/cisco-ptsa.desktop
update-mime-database /usr/share/mime
gtk-update-icon-cache --force --ignore-theme-index /usr/share/icons/gnome
xdg-mime default cisco-ptsa.desktop x-scheme-handler/pttp

Buat symlink

ln -sf /opt/pt/packettracer /usr/local/bin/packettracer

~~~

Mesin Tua

Thinkpad x61

Gak sengaja nemu di FB marketplace dengan harga 150k dengan kondisi matot, dugaan awal matot karena baterai konslet. Setelah beli dan oprek sana sini belum berhasil nyala juga, akhrinya ketemu teman di group tele Pegel Thinkpad yang nyaranin ganti mobo. Setelah ganti mobo akhirnya berhasil nyala.

Mods

Setelah nyala akhirnya niat iseng muncul juga untuk flash Midleton Bios agar bisa menggunakan ram 2x4GB (Walau pun sampai sekarang masih pakai 1x2GB karena harga sekeping 4GB hampir sejuta;v).

Thinkpad x41 tablet

Nemu di FB marketplace dengan kondisi gabisa booting, tanpa pikir panjang langsung CO dan barang sampai setelah 4 hari. Setalah sampai ternyata test boot bisa, tapi karena gak tau password login akhirnya harus install ulang ke windows vista.

Setup fail2ban zimbra

Before start

sudo -u zimbra -
zmprov mcf +zimbraMailTrustedIP 127.0.0.1 +zimbraMailTrustedIP {IP of Server}
zmcontrol restart

Install fail2ban

yum install epel-release -y
yum install fail2ban -y

Buat jail.conf

nano /etc/fail2ban/jail.local

[DEFAULT]
    # "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts.
    # Fail2ban will not ban a host which matches an address in this list.
    # Several addresses can be defined using space (and/or comma) separator.
    #ignoreip = 127.0.0.1/8 ::1 10.137.26.29/32
    ignoreip = 127.0.0.1/8 IP-ADDRESS-OF-ZIMBRA-SERVER/32 WHITELIST-IP

    banaction = route

Buat file jail untuk Zimbra

nano /etc/fail2ban/jail.d/zimbra.local

[zimbra-smtp]
    enabled = true
    filter = zimbra-smtp
    port = 25,465,587
    logpath = /var/log/zimbra.log
    maxretry = 3
    findtime = 86400
    bantime = 86400
    action = route

    [zimbra-web]
    enabled = true
    filter = zimbra-web
    port = 80,443,7071,9071
    logpath = /opt/zimbra/log/mailbox.log
    maxretry = 5
    findtime = 86400
    bantime = 86400
    action = route

Buat file jail untuk SSH

nano /etc/fail2ban/jail.d/sshd.local

 [sshd]
    enabled = true
    port = 22
    maxretry = 3
    findtime = 600
    bantime = 3600

Buat filter untuk Zimbra

nano /etc/fail2ban/filter.d/zimbra-web.conf

[Definition]
    failregex = .*ip=<HOST>;.*authentication failed for .*$
    ignoreregex =

nano /etc/fail2ban/filter.d/zimbra-smtp.conf

[Definition]
failregex = postfix\/submission\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$
    
postfix\/smtps\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$

ignoreregex =

Enable service

systemctl restart fail2ban
systemctl status fail2ban
systemctl enable fail2ban

Cek statu

fail2ban-client status

Ban & unban

fail2ban-client set sshd banip 10.137.26.29
fail2ban-client set sshd unbanip 10.137.26.29

Sekian

~~~

Manually Build Vyos

Kenapa kita perlu build Vyos manual? karena di website Vyos hanya tersedia versi Rolling Release untuk versi gratis.

Berikut langkah untuk build vyos

Requirements

  • Debian Jessie untuk VyOS 1.2 (crux)
  • Debian Buster untuk VyOS 1.3 (equuleus)
  • Debian Bookworm untuk VyOS 1.4 (sagitta)
  • Debian Bookworm untuk VyOS 1.5 & rolling release

Clone repository


# VyOS 1.2 (crux)
$ git clone -b crux --single-branch https://github.com/vyos/vyos-build

# VyOS 1.3 (equuleus)
$ git clone -b equuleus --single-branch https://github.com/vyos/vyos-build

# VyOS 1.4 (sagitta)
$ git clone -b sagitta --single-branch https://github.com/vyos/vyos-build

# VyOS 1.5 (circinus,current)
$ git clone -b current --single-branch https://github.com/vyos/vyos-build

Proses Build

$ cd vyos-build

# VyOS 1.2 (crux) and VyOS 1.3 (equuleus)
$ ./configure --architecture amd64 --build-by "[email protected]"
$ sudo make iso


# VyOS 1.4 (sagitta)
$ sudo make clean
$ sudo ./build-vyos-image iso --architecture amd64 --build-by "[email protected]"

# VyOS 1.5 (circinus,current)
$ sudo make clean
$ sudo ./build-vyos-image generic --architecture amd64 --build-by "[email protected]"

Setelah selesai maka hasil build ada di folder build

~~~

Build Kernel openSUSE 15.4

Karena openSUSE Leap mengutamakan kestabilan maka untuk dapat mencoba kernel 6.* saya harus menunggu cukup lama, pada tulisan kali ini saya akan coba build kernel 6.* di openSUSE Leap 15.4

Persiapan

Install Requirements dan buat folder yang diperlukan

sudo zypper ref && sudo zypper update 
sudo zypper in -t pattern devel_basis bc openssl openssl-devel dwarves rpm-build libelf-devel elfutils-libelf-devel
sudo mkdir ~/kernel

Download Kernel

Download kernel dari https://kernel.org/, saat blog ini dibuat kernel terbaru yaitu 6.0.9

cd ~/kernel
sudo mv ~/Download/linux*.tar.xz .
tar -xafv linux*.tar.xz

Konfigurasi

cd linux*
sudo find /boot/ \( -iname "*config*" -a -iname "*`uname -r`*" \) -exec cp -i -t ./ {} \;
mv *`uname -r`* .config

Berikan comment pada CONFIG_MODULE_SIG_KEY di file *.config*

ls /boot | konfigurasi grep
sudo nano .config
sudo make menuconfig

Build Kernel

sudo make clean

Selanjutnya adalah proses yang paling lama, saya sendiri memakan waktu sekitar 4 jam. Pada langkah ini silahkan sesuaikan dengan spesifikasi hardware,

sudo make rpm-pkg

Setelah selesai silahkan cek dengan perintah

sudo ls /usr/src/packages/RPMS/x86_64/ | grep kernel

Install Kernel

Setelah semua selesai saatnya install kernel yang sudah saya build

sudo su -c "zypper in /usr/src/packages/RPMS/x86_64/kernel*.rpm"

Setelah berhasil install saatnya saya update bootloader dan reboot

grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot


Cek apakah sudah berhasil terpasang dengan perintah

uname -r

Do it at your own risk

~~~

Allow Winbox Discovery

Secara default winbox di openSUSE tidak menampilkan Neighbors karena terblokir oleh firewall. Kita harus allow manual.

sudo firewall-cmd --permanent --service=winbox-discover --add-port=5678/udp
sudo firewall-cmd --zone=public --add-service=winbox-discover --permanent 
sudo firewall-cmd --reload