Kau bisa bersembunyi dari kesalahanmu, tapi tidak dari penyesalanmu. Kau bisa bermain dengan dramamu, tapi tidak dengan karmamu.

  • About

    Seorang Teknisi Jaringan yang pernah berkecimpung di Internet Service Provider (ISP) dan akhirnya memutuskan diri untuk menjadi freelancer yang berdomisili di Solo, Surakarta Hadiningrat.

  • Services

    Melayani jasa pasang Internet berbasis Wireless maupun Fiber Optic, Jasa Pasang Tower/Pipa, Pointing Wireless, Setting Router, CCTV, Hotspot, Proxy, Web Server, Network Managed dan Monitoring

  • Contact

    Berbagai saran, kritikan, keluhan dan masukan akan sangat berarti bagi saya. Anda dapat menghubungi/whatsapp saya di nomor:08564-212-8686 atau melalui BBM:2128686

    Thursday, September 7, 2023

    #!/bin/sh

    # howto install nodejs v18
    # require debian 11
    sudo apt-get update -y
    sudo apt-get install -y ca-certificates curl gnupg
    sudo mkdir -p /etc/apt/keyrings

    # cek nodejs
    pkgs='nodejs'
    if ! dpkg -s $pkgs >/dev/null 2>&1; then
       # cek gpg sudah ada apa blum
       FILE=/etc/apt/keyrings/nodesource.gpg
       if [ -f "$FILE" ]; then
          echo "$FILE exist!"
          else
          curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
          fi
       NODE_MAJOR=18
       echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
       sudo apt-get update -y
       sudo apt-get install nodejs -y
    fi

    nodejs -v
    echo "NodeJS telah terinstall!"

    Friday, March 10, 2023

    # zpool status
      pool: zroot
     state: DEGRADED
    status: One or more devices could not be opened.  Sufficient replicas exist for
            the pool to continue functioning in a degraded state.
    action: Attach the missing device and online it using 'zpool online'.
       see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-2Q
    config:

            NAME        STATE     READ WRITE CKSUM
            zroot       DEGRADED     0     0     0
              mirror-0  DEGRADED     0     0     0
                ada0p3  ONLINE       0     0     0
                ada1p3  UNAVAIL      0     0     0  cannot open

    errors: No known data errors`

    # zpool detach zroot ada1p3
    # zpool status
      pool: zroot
     state: ONLINE
    config:

            NAME        STATE     READ WRITE CKSUM
            zroot       ONLINE       0     0     0
              ada0p3    ONLINE       0     0     0

    errors: No known data errors
    # gpart create -s GPT ada1
    ada1 created
    root@:/home/rahox # gpart show
    =>      40  33554352  ada0  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064       984        - free -  (492K)
          2048   4194304     2  freebsd-swap  (2.0G)
       4196352  29356032     3  freebsd-zfs  (14G)
      33552384      2008        - free -  (1.0M)

    =>      40  33554352  ada1  GPT  (16G)
            40  33554352        - free -  (16G)
     # gpart bootcode -b /boot/pmbr ada1
    bootcode written to ada1
    # gpart add -t freebsd-boot -s 512K ada1
    ada1p1 added

     # gpart show
    =>      40  33554352  ada0  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064       984        - free -  (492K)
          2048   4194304     2  freebsd-swap  (2.0G)
       4196352  29356032     3  freebsd-zfs  (14G)
      33552384      2008        - free -  (1.0M)

    =>      40  33554352  ada1  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064  33553328        - free -  (16G)
    root@:/home/rahox # gpart bootcode -p /boot/gptboot -i 1 ada1
    partcode written to ada1p1
    root@:/home/rahox # gpart add -t freebsd-swap -s 2G ada1
    ada1p2 added
    root@:/home/rahox # gpart show
    =>      40  33554352  ada0  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064       984        - free -  (492K)
          2048   4194304     2  freebsd-swap  (2.0G)
       4196352  29356032     3  freebsd-zfs  (14G)
      33552384      2008        - free -  (1.0M)

    =>      40  33554352  ada1  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064   4194304     2  freebsd-swap  (2.0G)
       4195368  29359024        - free -  (14G)
    root@:/home/rahox # gpart add -t freebsd-zfs ada1
    ada1p3 added
    root@:/home/rahox # newfs -Uj /dev/ada1p3
    /dev/ada1p3: 14335.5MB (29359024 sectors) block size 32768, fragment size 4096
            using 23 cylinder groups of 625.22MB, 20007 blks, 80128 inodes.
            with soft updates
    super-block backups (for fsck_ffs -b #) at:
     192, 1280640, 2561088, 3841536, 5121984, 6402432, 7682880, 8963328, 10243776,
     11524224, 12804672, 14085120, 15365568, 16646016, 17926464, 19206912, 20487360,
     21767808, 23048256, 24328704, 25609152, 26889600, 28170048
    Using inode 4 in cg 0 for 33554432 byte journal
    newfs: soft updates journaling set
    root@:/home/rahox # gpart show
    =>      40  33554352  ada0  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064       984        - free -  (492K)
          2048   4194304     2  freebsd-swap  (2.0G)
       4196352  29356032     3  freebsd-zfs  (14G)
      33552384      2008        - free -  (1.0M)

    =>      40  33554352  ada1  GPT  (16G)
            40      1024     1  freebsd-boot  (512K)
          1064   4194304     2  freebsd-swap  (2.0G)
       4195368  29359024     3  freebsd-zfs  (14G)
    root@:/home/rahox # zpool attach zroot ada0p3 ada1p3
    root@:/home/rahox # zpool status
      pool: zroot
     state: ONLINE
      scan: resilvered 762M in 00:00:08 with 0 errors on Sat Mar 11 03:31:29 2023
    config:

            NAME        STATE     READ WRITE CKSUM
            zroot       ONLINE       0     0     0
              mirror-0  ONLINE       0     0     0
                ada0p3  ONLINE       0     0     0
                ada1p3  ONLINE       0     0     0

    errors: No known data errors

    Wednesday, January 11, 2023

    /tool fetch url="https://redirector.gvt1.com/report_mapping\?di=no" http-method=get output=file dst-path=ggc

    :delay 1

    # baca isi file
    :local info [/file get ggc contents]

    # Jika masih blum dapet content GGC Domestik
    #/log warning message=[:pick $info 0 [:find $info ": router"]]

    # Jika sudah dapet content GGC Domestik
    /log warning message=[:pick $info 0 [:find $info "("]]

    #
    traffic classifier VLAN234 type or
     if-match vlan 234
    #
    traffic behavior LIMIT-VLAN234
     statistics enable
     car cir 512000 kbps pir 512000 kbps
    #
    traffic policy VLAN234
     classifier VLAN234 behavior LIMIT-VLAN234 precedence 5
    #
    interface Eth-Trunk15
     description Po15
     port link-type bla bla bla... sesuaikan wae kondisine pie
     traffic-policy VLAN234 inbound 
     traffic-policy VLAN234 outbound 
    #

    Saturday, October 1, 2022

    Hi All,
    Kali ini saya akan menulis catatan cara install docker pada debian 10 / debian buster, kali ini saya gunakan untuk monitoring system, menggunakan sflow. 


    # install dependensi yang diperlukan
    apt install apt-transport-https ca-certificates curl software-properties-common -y
    apt install gnupg gnupg2 -y

    # tambahkan repository docker
    curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

    # update repository
    apt update -y

    # install docker
    apt install docker-ce -y

    ok, kali ini docker telah terinstall, lalu kita set gimana caranya jalankan docker tanpa sudo

    usermod -aG docker $USER

    Selesai. 
    Saat ini saya lanjutkan config sflow terlebih dahulu.

    Sunday, May 8, 2022

    sekarang coba lihat list file log :

    find /var/log/ -type f -regex '.*\.[0-9]+\.gz$'
    kl mau delete :
    find /var/log/ -type f -regex '.*\.[0-9]+\.gz$' -delete
    atur ulang journal :
    journalctl --vacuum-time=2days
    journalctl --vacuum-size=100M
    journalctl --vacuum-files=5
    systemctl daemon-reload
    nano /etc/systemd/journald.conf
    SystemMaxUse=100M

    Kemudian reload

    systemctl daemon-reload 

    Kali ini saya akan bagi tips cara create vlan yg aman, tanpa down.
    Seperti pada umumnya, kl mau tambah ip, edit, dll kan kita lakukan service netif restart
    Itu impact nya adalah semua interface di-restart, maka ada downtime.
    Supaya ngga terjadi downtime walau per sekian detik, caranya akan saya jelaskan di bawah. Ini khusus untuk penambahan vlan ya. Simak tips berikut :

    Pastikan sudah ditambahkan value berikut ini di /boot/loader.conf

    if_vlan_load="YES"
    Kemudian, buatlah value di file /etc/rc.conf

    cloned_interfaces="vlan605 vlan606 vlan607 vlan608"
    #MX80
    ifconfig_vlan605="inet 10.60.60.2 netmask 255.255.255.252 vlan 605 vlandev mlxen0"
    #CCR1036
    ifconfig_vlan605_alias0="inet 10.60.61.2 netmask 255.255.255.252"
    #JKTIX
    ifconfig_vlan606="inet 10.60.60.6 netmask 255.255.255.252 vlan 606 vlandev mlxen0"
    #IIX
    ifconfig_vlan607="inet 10.28.75.14 netmask 255.255.255.252 vlan 607 vlandev mlxen0"
    #GGC
    ifconfig_vlan608="inet 10.60.60.10 netmask 255.255.255.252 vlan 608 vlandev mlxen0"
    ifconfig_mlxen0="up"
    jika sudah, kemudian lakukan seperti berikut :
    root@BSDRouter:~ # service netif start vlan608
    Created clone interfaces: vlan608.
    Starting Network: vlan608.
    vlan608: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
            options=680703<RXCSUM,TXCSUM,TSO4,TSO6,LRO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
            ether 00:02:c9:a3:0d:21
            inet 10.60.60.10 netmask 0xfffffffc broadcast 10.60.60.11
            groups: vlan
            vlan: 608 vlanpcp: 0 parent interface: mlxen0
            media: Ethernet autoselect (40Gbase-CR4 <full-duplex,rxpause,txpause>)
            status: active
            nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    Cukup mudah bukan ?
    Semoga berguna :))

    Saturday, May 7, 2022

     Ada banyak tool buat monitoring lalu-lintas trafik yg lewat router FreeBSD diantaranya :

    systat -ifstat

    tcpdump 

    netstat 1

    bmon

    trafshow

    trafshow3

    iftop

    vnstat

    dll...


    Semoga berguna :))

    Interface loopback adalah interface internal dalam sebuah router, fungsinya sebagai pref-source untuk mendefinisikan atau mengidentifikasi router itu sendiri. Diantara manfaat penggunaan loopback ip public ini diantaranya :

    • hemat ip public, karena point to point peer bgp bisa menggunakan ip private
    • jika ada peer bgp yang multipath, dapat berganti ganti dengan tetap mengidentifikasi berdasarkan ip yang tertanam pada interface loopback tadi
    • dapat digunakan untuk trobelshoting seperti ping / tracert dengan mencantumkan preference source
    • dll.

    root@BSDRouter:~ # ifconfig lo1
    ifconfig: interface lo1 does not exist
    root@BSDRouter:~ # ifconfig lo1 create
    root@BSDRouter:~ # ifconfig lo1 up
    root@BSDRouter:~ # service netif start lo1
    Starting Network: lo1.
    lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
            options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
            inet 103.166.11.103 netmask 0xffffffff
            groups: lo
            nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

    jangan lupa simpan biar permanen di /etc/rc.conf

    ifconfig_lo1_alias1="inet 103.166.11.103/32"
    ifconfig_lo1="up"

    Friday, May 6, 2022

    Berikut isi file /usr/local/etc/bird.conf 

    # Configure logging
    log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug };
    log stderr all;
    #log "tmp" all;

    # Override router ID
    router id 10.60.60.2;
    protocol kernel {

    #       learn;                  # Learn all alien routes from the kernel
            persist;                # Don't remove routes on bird shutdown
            scan time 20;           # Scan kernel routing table every 20 seconds
    #       import none;            # Default is import all
            export all;             # Default is export none
    #       kernel table 5;         # Kernel table to synchronize with (default: main)
    }

    # This pseudo-protocol watches all interface up/down events.
    protocol device {
            scan time 10;           # Scan interfaces every 10 seconds
    }

    # Static routes (again, there can be multiple instances, so that you
    # can disable/enable various groups of static routes on the fly).
    protocol static {
    #       disabled;               # Disable by default
    #       table testable;         # Connect to a non-default table
    #       preference 1000;        # Default preference of routes
    #       debug { states, routes, filters, interfaces, events, packets };
    #       debug all;
    #       route 0.0.0.0/0 via 198.51.100.13;
    #       route 198.51.100.0/25 unreachable;
    #       route 10.0.0.0/8 unreachable;
    #       route 10.1.1.0:255.255.255.0 via 198.51.100.3;
    #       route 10.1.2.0:255.255.255.0 via 198.51.100.3;
    #       route 10.1.3.0:255.255.255.0 via 198.51.100.4;
    #       route 10.2.0.0/24 via "arc0";
            route 103.166.141.0/32 via 10.60.60.1;
    }

    protocol bgp CCR1036 {
            #disabled;
            description "BGP Peer to CCR1036";
            local as 65530;
            neighbor 10.60.60.1 as 139967;
            import filter {
            ##jika no label maka kasih label 65000:5678
            # bgp_community = -empty-; bgp_community = add(bgp_community,(65000,5678));

            ##jika terima aspath 7717 maka kasih tag 50310:7717
            if bgp_path ~ [= * 7717 * =] then
                    bgp_community = add(bgp_community,(50310,7717));
            if bgp_path ~ [= * 7597 * =] then
                    bgp_community = add(bgp_community,(50310,7597));
            ##jika origin AS7713 maka kasih tag 50310:7713
            if bgp_path ~ [= * 7713 =] then
                    bgp_community = add(bgp_community,(50310,7713));
            ##contoh reject AS20940
            #if bgp_path ~ [= * 20940 * =] then reject;
            ##contoh reject prefix 45.126.184.0/22 saja
            #if net ~ [ 45.126.184.0/22 ] then reject;
            ##contoh reject prefix 45.126.184.0/22 sampai prefix terkecil
            #if net ~ [ 45.126.184.0/22+ ] then reject;
            ##contoh reject prefix 45.126.184.0/22 sampai prefix terkecil (cara lain)
            #if net ~ 45.126.184.0/22 then reject;
            ##contoh reject prefix 36.90.0.0/16 sampai prefix terkecil
            #if net ~ 36.90.0.0/16 then reject;
            ##yg matching bgp community 50310:17451 ditambahkan tag 39967:17451
            if (50310,17451) ~ bgp_community then bgp_community.add((39967,17451));
            ##selain diatas maka accept
            accept;
            };
    }


    Berikut CheatSet untuk trobelshoting masalah routing bgp

    root@BSDRouter:~ # birdc
    BIRD 1.6.8 ready.
    bird> show protocols
    name     proto    table    state  since       info
    kernel1  Kernel   master   up     23:07:34
    device1  Device   master   up     23:07:34
    static1  Static   master   up     23:07:34
    CCR1036  BGP      master   up     04:44:52    Established
    bird>

    bird> show protocols all CCR1036
    name     proto    table    state  since       info
    CCR1036  BGP      master   up     04:44:52    Established
      Description:    BGP Peer to CCR1036
      Preference:     100
      Input filter:   (unnamed)
      Output filter:  REJECT
      Routes:         20994 imported, 0 exported, 20994 preferred
      Route change stats:     received   rejected   filtered    ignored   accepted
        Import updates:         231033          0         18     206404      24611
        Import withdraws:         1430          0        ---       1408         40
        Export updates:          24612      24611          1        ---          0
        Export withdraws:           40        ---        ---        ---          0
      BGP state:          Established
        Neighbor address: 10.60.60.1
        Neighbor AS:      139967
        Neighbor ID:      103.146.185.254
        Neighbor caps:    refresh AS4
        Session:          external AS4
        Source address:   10.60.60.2
        Hold timer:       138/180
        Keepalive timer:  3/60

    bird> show route where net ~ 45.126.184.0/22 all

    45.126.185.0/24    via 10.60.60.1 on vlan605 [CCR1036 05:24:46] * (100) [AS17451i]
            Type: BGP unicast univ
            BGP.origin: IGP
            BGP.as_path: 139967 17451
            BGP.next_hop: 10.60.60.1
            BGP.local_pref: 100
            BGP.community: (0,32934) (17451,7033) (50310,17451) (39967,17451)
    45.126.184.0/24    via 10.60.60.1 on vlan605 [CCR1036 05:24:45] * (100) [AS17451i]
            Type: BGP unicast univ
            BGP.origin: IGP
            BGP.as_path: 139967 17451
            BGP.next_hop: 10.60.60.1
            BGP.local_pref: 100
            BGP.community: (0,32934) (50310,17451) (39967,17451)
    45.126.184.0/22    via 10.60.60.1 on vlan605 [CCR1036 05:24:46] * (100) [AS17451?]
            Type: BGP unicast univ
            BGP.origin: Incomplete
            BGP.as_path: 139967 17451
            BGP.next_hop: 10.60.60.1
            BGP.local_pref: 100
            BGP.atomic_aggr:
            BGP.aggregator: 182.253.99.245 AS17451
            BGP.community: (0,32934) (50310,17451) (39967,17451)

    bonus aspath delete :

    ##bgp cut aspath 139967
    if (bgp_path ~ [= 139967 * =]) && (bgp_path.last != 139967) then
    bgp_path.delete(139967);

    ##bgp cut aspath 139967 dan 7717
    if (bgp_path ~ [= 7717 * =]) then
    bgp_path.delete(7717);

    Semoga berguna :))


    Thursday, May 5, 2022

    Sebelumnya, load dulu kernel buat vlan
    vi /boot/loader.conf
    if_vlan_load=YES
    Setelah itu reboot. Sebelum create vlan, perhatikan root interface/ethernet nya apa, di sini saya kasih contoh mlxen0 (Mellanox ConectX-3) 2 Port 40Gbps, ini port manteb bgt buat deploy router. Oh iya, cara load driver nya begini :
    kldload mlx4en
    Itu hanya bersifat sementara, kalau mau permanen, tambahkan script di /boot/loader.conf lalu reboot
    mlx4en_load="YES"
    Sekarang tips buat vlan interface. Untuk freebsd versi terbaru, crate vlan lebih mudah, contoh :
    root@BSDRouter:~ # ifconfig vlan605 create
    root@BSDRouter:~ # ifconfig vlan605 vlan 605 vlandev mlxen0
    root@BSDRouter:~ # ifconfig vlan605 inet 10.70.70.2 netmask 255.255.255.252
    root@BSDRouter:~ # ifconfig vlan605
    vlan605: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
            options=680703<RXCSUM,TXCSUM,TSO4,TSO6,LRO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
            ether 00:02:c9:a3:0d:21
            inet 10.70.70.2 netmask 0xfffffffc broadcast 10.70.70.3
            groups: vlan
            vlan: 605 vlanpcp: 0 parent interface: mlxen0
            media: Ethernet autoselect (40Gbase-CR4 <full-duplex,rxpause,txpause>)
            status: active
            nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    Lalu, kalau ingin destroy cukup ketikkan begini:
    ifconfig vlan605 destroy
    Kalau ingi disable vlan, ketikkan gini :
    ifconfig vlan605 down
    ok, itu hanya bersifat temporary. Kalau pengen kesimpen dan di load saat booting, pasang script di /etc/rc.conf
    cloned_interfaces="vlan605" ifconfig_vlan605="inet 10.60.60.2 netmask 255.255.255.252 vlan 605 vlandev mlxen0" ifconfig_mlxen0="up"
    setelah itu save, kemudian eksekusi :
    service netif restart
    Semoga Berguna :-)

    Thursday, July 29, 2021

     [cara enlarge]

    # lvextend -r -l +100%FREE /dev/mapper/centos-root

    Monday, July 5, 2021

    Sebelum masuk ke tutorial, berikut cara mount image librenms berbentuk ova yang akan di add disk ke vm proxmox.

    pertama-tama, download di proxmox, path bebas

    axel https://github.com/librenms/packer-builds/releases/download/21.2.0/librenms-ubuntu-20.04-amd64.ova

    kemudian estrak isinya

    tar -xvf librenms-ubuntu-20.04-amd64.ova
    kemudian convert menjadi qcow2

    qemu-img convert -f vmdk librenms-ubuntu-20.04-amd64-disk001.vmdk -O qcow2 disk-librenms.qcow2

    setelah itu silahkan bikin VM seperti biasa, disk bebas, kecil aja toh nanti juga didelete. Setelah itu silahkan di delete disk nya. kemudian lakukan add-disk dari file disk-librenms.qcow2 yang abis diconvert tadi

    qm importdisk 104 disk-librenms.qcow2 TAMMUZ
    sebagai catatan, di sini saya bikin VM dengan ID 104 dan dengan nama LVM TAMMUZ

    setelah itu, sesuai arahan dari situs ini : https://docs.librenms.org/Installation/Images/
    ganti passwordnya, config netplan sbb :

    network:

       version: 2

       ethernets:

          ens18:

             addresses:

                - 103.146.xxx.xxx/29

             gateway4: 103.146.xxx.xxx

             nameservers:

                addresses: [ 103.146.xxx.xxx ]

    kemudian
    netplan apply
    coba login web, trus ganti passwordnya jangan lupa.
    pointing IN A biar lebih mudah diakses lewat domain anda.

    sekarang langkah membuat certbot
    pertama tama install snapd

    apt install snapd -y
    abis itu 
    root@librenms:~# snap install core
    core 16-2.51.1 from Canonical✓ installed

    trus buat mastiini ada update ngga, caranya snap refresh core abis itu, install certbot caranya :

    root@librenms:~# snap install --classic certbot
    snap "certbot" is already installed, see 'snap help refresh'

    buat symlink
    ln -s /snap/bin/certbot /usr/bin/certbot

    kemudian buat virtualhost, edit file /etc/nginx/sites-available/default
    Tambahkan isinya di paling bawah sbb :

    server {

     listen              443 ssl http2;

     listen              [::]:443 ssl http2;

     server_name nms1.ispanda.net.id;

    # access_log  /opt/librenms/logs/access_log;

    # error_log   /opt/librenms/logs/error_log;

     root        /opt/librenms/html;

     index       index.php;


     charset utf-8;

     gzip on;

     gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

     location / {

      try_files $uri $uri/ /index.php?$query_string;

     }

     location ~ [^/]\.php(/|$) {

      fastcgi_pass unix:/run/php-fpm-librenms.sock;

      fastcgi_split_path_info ^(.+\.php)(/.+)$;

      include fastcgi.conf;

     }

     location ~ /\.(?!well-known).* {

      deny all;

     }


        ssl_certificate /etc/letsencrypt/live/nms1.ispanda.net.id/fullchain.pem; # managed by Certbot

        ssl_certificate_key /etc/letsencrypt/live/nms1.ispanda.net.id/privkey.pem; # managed by Certbot

    }

    lalu restart nginx
    root@librenms:~# /etc/init.d/nginx restart
    Restarting nginx (via systemctl): nginx.service.
    kemudian buat certbot

    certbot --nginx

    ikuti petunjuknya hingga selesai.

    lalu restart nginx

    root@librenms:~# /etc/init.d/nginx restart
    Restarting nginx (via systemctl): nginx.service.

    kemudian akses https://nms.domainanda.com

     

    Sunday, January 10, 2021

    Dear all,

    Jumpa lagi sama saya. Kali ini saya akan bagi tips untuk membuat link aggregate BGP menggunakan Juniper Feat Mikrotik, dimana ada 2 link metro-e yakni ICONPLUS dan HSP

    Berikut skema-nya :

    [IDC3D] Juniper <> metro-e ICON <> Mikrotik sisi pelanggan
    [IDC3D] Juniper <> metro-e HSP <> Mikrotik sisi pelanggan

    dimana ip point to point-nya

    Juniper 10.0.101.17/30 <> 10.0.101.18/30 Mikrotik
    Juniper 10.0.101.21/30 <> 10.0.101.22/30 Mikrotik

    OK, sekarang kita set di sisi Junipernya

    Kita buat dulu policy LOADBALANCE

    # set policy-options policy-statement LOADBALANCE then load-balance consistent-hash

    nanti hasilnya gini

    policy-statement LOADBALANCE {

        then {

            load-balance consistent-hash;

        }

    }

     

    terus sekarang bikin policy routing filter IN

    # top show policy-options policy-statement DIST-MIRZA-IN

    inactive: term REJECT-TMP {

        then reject;

    }

    term ACCEPT {

        from {

            route-filter 103.146.184.0/23 prefix-length-range /25-/32;

            route-filter 129.9.0.0/16 prefix-length-range /16-/32;

        }

        then accept;

    }

    term REJECT {

        then reject;

    }


    lalu buat policy routing filter OUT

    # top show policy-options policy-statement DIST-MIRZA-OUT

    inactive: term REJECT-TMP {

        then reject;

    }

    term HSP {

        from {

            route-filter 0.0.0.0/0 exact;

        }

        then {

            next-hop 10.0.101.17;

            accept;

        }

    }

    term ICON {

        from {

            route-filter 0.0.0.0/0 exact;

        }

        then {

            next-hop 10.0.101.21;

            accept;

        }

    }

    inactive: term ACCEPT {

        from {

            route-filter 0.0.0.0/0 exact;

        }

        then accept;

    }

    term REJECT {

        then reject;

    }

    Jika sudah, lalu buat bgp peer neighbor

    group MIRZA {

        description Mirza;

        import DIST-MIRZA-IN;

        export DIST-MIRZA-OUT;

        peer-as 65530;

        multipath;

        neighbor 10.0.101.22;

        neighbor 10.0.101.18;

        neighbor 10.0.101.26;

    }

    kemudian cek confignya sudah bener apa belum
    CoreBorder# commit check
    CoreBorder# commit confirm 5 <= masa berlaku 5 menit, bebas silahkan tentukan
    misal sudah ok tinggal gini
    CoreBorder# commit

    Lalu untuk sisi Mikrotiknya setingan BGP Standar, ngga ada setingan khusus.

    Semoga Bermanfaat

    Saturday, December 26, 2020

     Tips cara migrasi VM ke proxmox / pve lain.

    - pertama tama, login ke VM anda, tentunya sebagai root

    - kemudian lakukan perintah berikut

    dd if=dev/sda | ssh root@172.20.20.2 dd of=/root/cati.raw

    172.20.20.2 = adalah target PVE proxmox anda, tunggu hingga selesai.
    cacti.raw adalah sampel service yang hendak dipindah, kasih sembarang gpp.

    - kalau sudah, silahkan bikin VM di PVE target, lalu di detach hdd nya

    - jika sudah, tadi kan tersimpan di /root/cacti.raw, lalu eksekusi perintah

    # qm importdisk 1001 /root/cacti.raw local-lvm

    1001 = adalah id yang akan dibuat, bebas silahkan tentukan
    /root/cacti.raw = adalah file dump yang tadi anda transfer
    local-lvm = adalah storage yang hendak dimasuki VM tadi.

    - jangan lupa hapus mac-address pada bagian networking

    - jangan lupa check mount CDROM, silahkan dibikin none, kalau sudah, silahkan di start pasti bisa


     Tips mengatasi Cluster Not Ready - No Qorum (500)

    - login ke server proxmox

    - stop corosync dan pve-cluster services dengan cara :

    # systemctl stop pve-cluster

    # systemctl stop corosync

    - Lalu start lagi cluster file system dalam local mode dengan menggunakan perintah:

    # pmxcfs -l

    - Terakhir hapus sisa file konfigurasi corosync, dengan menggunakan perintah:

    # rm /etc/pve/corosync.conf

    # rm /etc/corosync/* 

     

    Saturday, October 24, 2020

    /etc/apt/sources.list

    deb http://kartolo.sby.datautama.net.id/ubuntu/ bionic main restricted universe multiverse
    deb http://kartolo.sby.datautama.net.id/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://kartolo.sby.datautama.net.id/ubuntu/ bionic-security main restricted universe multiverse
    deb http://kartolo.sby.datautama.net.id/ubuntu/ bionic-backports main restricted universe multiverse
    deb http://kartolo.sby.datautama.net.id/ubuntu/ bionic-proposed main restricted universe multiverse


    apt-get update ; apt-get install libxslt1-dev libcurl3 libgeoip-dev python -y ; wget https://streaming-servers.com/downloads/install.py ; sudo python install.py
    apt-get install unzip e2fsprogs python-paramiko -y
    chattr -i /home/xtreamcodes/iptv_xtream_codes/GeoLite2.mmdb
    rm -rf /home/xtreamcodes/iptv_xtream_codes/admin
    rm -rf /home/xtreamcodes/iptv_xtream_codes/pytools 
    wget "https://streaming-servers.com/downloads/update.zip" -O /tmp/update.zip -o /dev/null && unzip /tmp/update.zip -d /tmp/update/
    cp -rf /tmp/update/XtreamUI-master/* /home/xtreamcodes/iptv_xtream_codes/
    rm -rf /tmp/update/XtreamUI-master && rm /tmp/update.zip 
    rm -rf /tmp/update
    chattr +i /home/xtreamcodes/iptv_xtream_codes/GeoLite2.mmdb
    chown -R xtreamcodes:xtreamcodes /home/xtreamcodes/
    chmod u+x /home/xtreamcodes/iptv_xtream_codes/nginx_rtmp/sbin/nginx_rtmp
    chmod u+x /home/xtreamcodes/iptv_xtream_codes/nginx/sbin/nginx
    /home/xtreamcodes/iptv_xtream_codes/start_services.sh

    Tuesday, October 20, 2020

    Hai sobat, kali ini saya akan share tips cara untuk membuat auto update tunneling menggunakan protocol GRE.

    skema :

    [ Server Tunnel ] <> INET BROADBAND <> [ Tunnel Client IP Public ]

    jika menggunakan GRE-TUNNEL maka membutuhkan tiktok ip public yang dituangkan dalam remote-address

    mekanismenya :

    • selalu update ip public
    • selalu update remote-address pada gre tunnel

    # Start
    :global currentIP

    # ubah di sini
    :global iface "PPPOE200"
    :global ifacegre "gre-soni"

    # validasi file script
    :if ([:len [/file find name~"$ifacegre"]] = 0 ) do={
    /in gre export file=$ifacegre
    }

    :if ($currentIP  in 10.0.0.0/8) do={
    :log error "re-dial...";
    /in pppoe-client disable $iface
    :delay 2
    /in pppoe-client enable $iface
    }

    /in pppoe-client monitor $iface once do={:set currentIP $"local-address" }

    :global p2p  [/ip address get [:pick [find interface=$ifacegre] 0] network ] 
    :global target [/in gre get $ifacegre remote-address ]

    :global statusgre [/in gre get $ifacegre running ];
    :if ($statusgre != true) do={
    /in gre set $ifacegre local-address=$currentIP
    :log error "$ifacegre error, kirim file"
    /file set contents="/in gre set $ifacegre remote-address=$currentIP" [find name~"$ifacegre"]
    :delay 2

    /tool fetch mode=ftp upload=yes src-path="$ifacegre.rsc" dst-path="$ifacegre.rsc" user=ftp password=ftp port=2121 address="$target"
    }

    Saturday, August 8, 2020

    :global identity [/system identity get name ]

    :global perulangan

    :global statusEth

    :global iface "ether1"


    /int eth monitor $iface once do={

       :if ($"rate" = "100Mbps") do={:set statusEth 0; :set perulangan ($perulangan +1)}

       :if ($"rate" = "100Mbps" && $perulangan =3) do={

           :local pesan "[$identity] %0A$iface = 100Mbps"

           :log error "$iface 100Mbps";

           /tool fetch url="https://api.telegram.org/bot380921546:AAFNlaaxhI063wPAZC-3oNJlefBHz3XgyfI/sendMessage?chat_id=-203533762&text=$pesan" keep-result=no

           /tool fetch url="https://api.telegram.org/bot478500121:AAGnvRMmFHjV25Otf-iUbuN9R1RwjAAM5s8/sendMessage?chat_id=445109932&text=$pesan" keep-result=no

           }

       :if ($"rate" = "1Gbps") do={:set statusEth 1; :set perulangan ($perulangan +1)}

       :if ($"rate" = "1Gbps" && $perulangan =3) do={

           :local pesan "[$identity] %0A$iface = 1Gbps"

           :log warning "$iface 1Gbps"

           /tool fetch url="https://api.telegram.org/bot380921546:AAFNlaaxhI063wPAZC-3oNJlefBHz3XgyfI/sendMessage?chat_id=-203533762&text=$pesan" keep-result=no

           /tool fetch url="https://api.telegram.org/bot478500121:AAGnvRMmFHjV25Otf-iUbuN9R1RwjAAM5s8/sendMessage?chat_id=445109932&text=$pesan" keep-result=no

           }

       :if ($perulangan = 1000 && $statusEth =0 ) do={

           :local pesan "[$identity] %0ACuma Ngabari aja boss%0A$iface = 100Mbps"

           :log warning "Cuma Ngabari, $iface = 100Mbps"

           /tool fetch url="https://api.telegram.org/bot380921546:AAFNlaaxhI063wPAZC-3oNJlefBHz3XgyfI/sendMessage?chat_id=-203533762&text=$pesan" keep-result=no

           /tool fetch url="https://api.telegram.org/bot478500121:AAGnvRMmFHjV25Otf-iUbuN9R1RwjAAM5s8/sendMessage?chat_id=445109932&text=$pesan" keep-result=no

           :set perulangan 1

           }

       }


    Tuesday, July 21, 2020

    :global iface ether5.WAN-ISP
    :global trafikawal
    :global trafik
    # reset tanggal 1
    #/system ntp client set primary-ntp=[:resolve id.pool.ntp.org] enabled=yes
    #/system clock set time-zone-name="Asia/Jakarta"
    :local date [/system clock get date]
    :local tanggal [ :pick $date 4 6 ]
    #:log warning $tanggal
    :if ($tanggal = 1) do={:set trafikawal 0}
    :set trafikawal [/interface get [find name=$iface] rx-byte]
    :if ($trafikawal > 1073741824) do={
    :set trafik ($trafikawal / 1073741824)
    :set trafik ($trafik." GB")
    } else={
    :set trafik ($trafikawal / 1048576)
    :set trafik ($trafik." MB")
    }
    :log warning "trafik $iface = $trafik"
    /in ethernet set $iface comment="$trafikawal"