29 Apr 2017

Idenya adalah, bagaimana XAMPP bisa langsung mulai, tanpa harus dimulai secara manual, via terminal. Dengan CentOS 7, cara yang dilakukan adalah:

  1. Pastikan XAMPP-nya sudah terpasang. Atuh kalo belom dipasang, gimana kita ngonfignya;
  2. Setelah dipastikan XAMPP terpasang, silahkan buka terminal untuk langkah selanjutnya;
  3. Sunting berkas rc.local yang ada di dalam direktori /etc. Gunakan aplikasi penyunting paforit Anda. Apakah itu vi, nano, gedit, dslb.;
  4. Pada bagian akhir berkas, masukkan: /opt/lamp/lampp start
  5. Sebelum menyimpan hasil suntingan, perhatikan kalimat ini di dalam berkas rc.local, "please note that you must run chmod +x /etc/rc.d/rc.local to ensure that this script will be executed during boot";
  6. Iya, jadikan perhatian. Karena langkah berikutnya, simpan berkas rc.local yang sudah disunting tadi;
  7. Masuk ke dalam direktori /etc/rc.d, lalu ubah hak akses berkas rc.local. Masih ingat sama yang harus diperhatikan tadi, di nomor 5? Iya, itu maksudnya dari yang harus diperhatikan;
  8. Setelah mengubah hak akses, untuk mencobanya, silahkan mula-ulang sistem operasi Anda;
  9. Masuk ke dalam sistem operasi Anda, buka terminal, dan masukkan perintah ini untuk memeriksa apakah XAMPP sudah berjalan seperti yang Anda inginkan: /opt/lampp/lampp status;
  10. Seperti gambar di bawah, artinya XAMPP sudah berjalan secara otomatis, seperti yang diinginkan.

Oke, semoga bermanfaat ;).
on 29 Apr 2017 04:32 PM
Jadi, ceritanya lagi dan masih bermain-main dengan distro-distro. permainan kali ini dengan CentOS 7. Dipasang pada VirtualBox. Ketika proses pemasangan sudah berjalan dengan baik, dilanjutkan dengan mencoba memasang VirtualBox Guest Additions.

Pemasangan dan dilakukan, namun menemukan kendala dan ketika melihat pesan galat yang diterbitkan, ternyata katanya harus pasang gcc, bla bla bla.

Cari-cari solusinya via google, ketemu ini, https://www.if-not-true-then-false.com/2010/install-virtualbox-guest-additions-on-fedora-centos-red-hat-rhel/. Solusinya manjur dan cespleng ;).

Demikian. Semoga bisa membantu bagi yang membutuhkan.
on 29 Apr 2017 10:38 AM

16 Apr 2017

OK, langsung saja download flag.zip yang di berikan seperti diatas.
Sebelumnya, mari kita cek dahulu flagnya.
$ file flag.png 
flag.png: PNG image data, 960 x 5, 8-bit/color RGBA, non-interlaced

Bisa kita cek lebih dalam lagi file nya dengan binwalk.
$ binwalk flag.png 

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
253 0xFD Zlib compressed data, default compression
330 0x14A PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
392 0x188 Zlib compressed data, default compression
469 0x1D5 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
---snip---
7514 0x1D5A Zlib compressed data, default compression
8404 0x20D4 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
8466 0x2112 Zlib compressed data, default compression
9249 0x2421 PNG image, 960 x 5, 8-bit/color RGBA, non-interlaced
9311 0x245F Zlib compressed data, default compression

Setelah itu estrak file gambarnya menggunakan foremost.
$ foremost -v flag.png 
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Fri Apr 14 00:57:40 2017
Invocation: foremost -v flag.png
Output directory: /home/darm/CTF/FITHACK/forensic/aw/output
Configuration file: /etc/foremost.conf
Processing: flag.png
|------------------------------------------------------------------
File: flag.png
Start: Fri Apr 14 00:57:40 2017
Length: 82 KB (84177 bytes)

Num Name (bs=512) Size File Offset Comment

0: 00000000.png 330 B 0 (960 x 5)
1: 00000000_1.png 139 B 330 (960 x 5)
2: 00000000_2.png 139 B 469 (960 x 5)
3: 00000001.png 139 B 608 (960 x 5)
4: 00000001_1.png 139 B 747 (960 x 5)
5: 00000001_2.png 139 B 886 (960 x 5)
6: 00000002.png 139 B 1025 (960 x 5)
7: 00000002_1.png 139 B 1164 (960 x 5)
8: 00000002_2.png 139 B 1303 (960 x 5)
9: 00000002_3.png 139 B 1442 (960 x 5)
10: 00000003.png 254 B 1581 (960 x 5)
11: 00000003_1.png 357 B 1835 (960 x 5)
12: 00000004.png 516 B 2192 (960 x 5)
13: 00000005.png 603 B 2708 (960 x 5)
14: 00000006.png 657 B 3311 (960 x 5)
15: 00000007.png 764 B 3968 (960 x 5)
16: 00000009.png 932 B 4732 (960 x 5)
17: 00000011.png 895 B 5664 (960 x 5)
18: 00000012.png 893 B 6559 (960 x 5)
19: 00000014.png 952 B 7452 (960 x 5)
20: 00000016.png 845 B 8404 (960 x 5)
21: 00000018.png 1 KB 9249 (960 x 5)
22: 00000020.png 901 B 10328 (960 x 5)
23: 00000021.png 936 B 11229 (960 x 5)
24: 00000023.png 946 B 12165 (960 x 5)
25: 00000025.png 1 KB 13111 (960 x 5)
26: 00000027.png 795 B 14142 (960 x 5)
27: 00000029.png 927 B 14937 (960 x 5)
28: 00000030.png 976 B 15864 (960 x 5)
29: 00000032.png 726 B 16840 (960 x 5)
30: 00000034.png 895 B 17566 (960 x 5)
31: 00000036.png 983 B 18461 (960 x 5)
32: 00000037.png 1 KB 19444 (960 x 5)
33: 00000039.png 1019 B 20473 (960 x 5)
34: 00000041.png 1 KB 21492 (960 x 5)
35: 00000044.png 1 KB 22760 (960 x 5)
36: 00000047.png 975 B 24130 (960 x 5)
37: 00000049.png 1 KB 25105 (960 x 5)
38: 00000051.png 1 KB 26239 (960 x 5)
39: 00000053.png 954 B 27272 (960 x 5)
40: 00000055.png 1 KB 28226 (960 x 5)
41: 00000057.png 1 KB 29528 (960 x 5)
42: 00000060.png 1 KB 30765 (960 x 5)
43: 00000062.png 1 KB 32207 (960 x 5)
44: 00000065.png 1 KB 33520 (960 x 5)
45: 00000068.png 1 KB 34835 (960 x 5)
46: 00000070.png 1024 B 36058 (960 x 5)
47: 00000072.png 850 B 37082 (960 x 5)
48: 00000074.png 1 KB 37932 (960 x 5)
49: 00000076.png 844 B 39000 (960 x 5)
50: 00000077.png 1 KB 39844 (960 x 5)
51: 00000079.png 1 KB 40899 (960 x 5)
52: 00000081.png 965 B 41927 (960 x 5)
53: 00000083.png 901 B 42892 (960 x 5)
54: 00000085.png 879 B 43793 (960 x 5)
55: 00000087.png 1 KB 44672 (960 x 5)
56: 00000089.png 862 B 45871 (960 x 5)
57: 00000091.png 944 B 46733 (960 x 5)
58: 00000093.png 1 KB 47677 (960 x 5)
59: 00000095.png 1 KB 48788 (960 x 5)
60: 00000097.png 1 KB 50164 (960 x 5)
61: 00000100.png 1 KB 51236 (960 x 5)
62: 00000102.png 1 KB 52302 (960 x 5)
63: 00000104.png 1 KB 53454 (960 x 5)
64: 00000106.png 1 KB 54677 (960 x 5)
65: 00000109.png 1 KB 55882 (960 x 5)
66: 00000111.png 1 KB 57143 (960 x 5)
67: 00000113.png 1 KB 58175 (960 x 5)
68: 00000115.png 1 KB 59223 (960 x 5)
69: 00000117.png 997 B 60313 (960 x 5)
70: 00000119.png 931 B 61310 (960 x 5)
71: 00000121.png 882 B 62241 (960 x 5)
72: 00000123.png 939 B 63123 (960 x 5)
73: 00000125.png 858 B 64062 (960 x 5)
74: 00000126.png 854 B 64920 (960 x 5)
75: 00000128.png 943 B 65774 (960 x 5)
76: 00000130.png 885 B 66717 (960 x 5)
77: 00000132.png 881 B 67602 (960 x 5)
78: 00000133.png 996 B 68483 (960 x 5)
79: 00000135.png 1 KB 69479 (960 x 5)
80: 00000137.png 1 KB 70558 (960 x 5)
81: 00000139.png 1 KB 71664 (960 x 5)
82: 00000142.png 1 KB 72726 (960 x 5)
83: 00000144.png 863 B 73797 (960 x 5)
84: 00000145.png 976 B 74660 (960 x 5)
85: 00000147.png 790 B 75636 (960 x 5)
86: 00000149.png 713 B 76426 (960 x 5)
87: 00000150.png 689 B 77139 (960 x 5)
88: 00000152.png 732 B 77828 (960 x 5)
89: 00000153.png 566 B 78560 (960 x 5)
90: 00000154.png 554 B 79126 (960 x 5)
91: 00000155.png 472 B 79680 (960 x 5)
92: 00000156.png 402 B 80152 (960 x 5)
93: 00000157.png 307 B 80554 (960 x 5)
94: 00000157_1.png 357 B 80861 (960 x 5)
95: 00000158.png 435 B 81218 (960 x 5)
96: 00000159.png 403 B 81653 (960 x 5)
97: 00000160.png 432 B 82056 (960 x 5)
98: 00000161.png 290 B 82488 (960 x 5)
99: 00000161_1.png 287 B 82778 (960 x 5)
100: 00000162.png 139 B 83065 (960 x 5)
101: 00000162_1.png 139 B 83204 (960 x 5)
102: 00000162_2.png 139 B 83343 (960 x 5)
103: 00000163.png 139 B 83482 (960 x 5)
104: 00000163_1.png 139 B 83621 (960 x 5)
105: 00000163_2.png 139 B 83760 (960 x 5)
106: 00000163_3.png 139 B 83899 (960 x 5)
107: 00000164.png 139 B 84038 (960 x 5)
*|
Finish: Fri Apr 14 00:57:40 2017

108 FILES EXTRACTED

png:= 108
------------------------------------------------------------------

Foremost finished at Fri Apr 14 00:57:40 2017

Euw, ternyata banyak juga, ada 108 files yang berhasil di ekstrak.
$ cd output/
$ ls
audit.txt png
$ cd png/
$ l
00000000_1.png 00000002.png 00000012.png 00000029.png 00000047.png 00000068.png 00000085.png 00000104.png 00000123.png 00000139.png 00000154.png 00000161.png
00000000_2.png 00000003_1.png 00000014.png 00000030.png 00000049.png 00000070.png 00000087.png 00000106.png 00000125.png 00000142.png 00000155.png 00000162_1.png
00000000.png 00000003.png 00000016.png 00000032.png 00000051.png 00000072.png 00000089.png 00000109.png 00000126.png 00000144.png 00000156.png 00000162_2.png
00000001_1.png 00000004.png 00000018.png 00000034.png 00000053.png 00000074.png 00000091.png 00000111.png 00000128.png 00000145.png 00000157_1.png 00000162.png
00000001_2.png 00000005.png 00000020.png 00000036.png 00000055.png 00000076.png 00000093.png 00000113.png 00000130.png 00000147.png 00000157.png 00000163_1.png
00000001.png 00000006.png 00000021.png 00000037.png 00000057.png 00000077.png 00000095.png 00000115.png 00000132.png 00000149.png 00000158.png 00000163_2.png
00000002_1.png 00000007.png 00000023.png 00000039.png 00000060.png 00000079.png 00000097.png 00000117.png 00000133.png 00000150.png 00000159.png 00000163_3.png
00000002_2.png 00000009.png 00000025.png 00000041.png 00000062.png 00000081.png 00000100.png 00000119.png 00000135.png 00000152.png 00000160.png 00000163.png
00000002_3.png 00000011.png 00000027.png 00000044.png 00000065.png 00000083.png 00000102.png 00000121.png 00000137.png 00000153.png 00000161_1.png 00000164.png

Setelah melihat gambar hasil dari ekstrakan diatas, kalau dilihat satu persatu isi gambar adalah potongan-potongan gambar yang tidak lain adalah Flag yang kita cari-cari. Terus gimana gabunginnya? Caranya cukup mudah, kita bisa menggunakan tool dari ImageMagick yaitu convert.
$ convert -append *.png out.png

Flag: FIT{6xgwxloxq79ew}
on 16 Apr 2017 07:07 PM
Soal yang diberikan yaitu Trivia, and here you go.

Trivia1 [10]

A bug found in bash causes arbitrary code to be executed remotely
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{SHELLSHOCK}


Trivia2 [10]

A dog breed that exists in version 3.0 of SSL.
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{POODLE}


Trivia3 [10]

VyOS 1.0.0 - 1.0.5
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{HYDROGEN}


Trivia5 [10]

Nickname of SHA-1 collision attack done by Google and CWI.
Flag format: FIT{[Capital letters and no spaces]}

Flag: FIT{SHATTERED}
on 16 Apr 2017 05:56 PM

Seperti yang terlihat pada challenge diatas, langsung saja kita akses pada link url https://look.problem.ctf.nw.fit.ac.jp, dan ternyata tidak ada apa-apa disana. Sesuai dari Hint yang diberikan "Look quickly", saya langsung cek response headers dari website tersebut.


Did you see the flag?
Yes, flag langsung muncul pada response headers yang terletak di set-cookie, tapi disitu terlihat ada URL encoding pada flag, dan gampang saja kita bisa melakukan decode flag melalui situs penyedia layanan URL decode seperti dibawah ini.

Flag: FIT{17_i5_n07_4_c00ki3_t0_3a7}
on 16 Apr 2017 05:50 PM

09 Apr 2017

Secara resmi ponsel yang dapat dipasang Kali NetHunter dapat dilihat pada pranala https://github.com/offensive-security/kali-nethunter/wiki#10-supported-devices-and-roms. Sampai tulisan ini dibuat Xioami Mi4 belum tercatat sebagai ponsel yang dapat dipasang Kali NetHunter. Namun pada pranala https://github.com/offensive-security/nethunter-devices/tree/master/marshmallow ada mesin cancro yang digunakan Xiaomi Mi4 dan Mi3. Kebetulan sampai saat ini Mi4 menggunakan MIUI 8.2.x yang berbasis Android M.

+fazlur rahman sudah memulai terlebih dahulu melakukan pemasangan di perangkat Xiaomi. Cara saya agak sedikit berbeda yang dilakukan oleh +fazlur rahman dan semua saya lakukan menggunakan LinuxMint. Saya memulai dari direktori Download:
1.   Ponsel sudah dalam kondisi rooted
2.   Hak akses pengembangan disesuaikan
3.   Untuk jaga-jaga, sudo python -m pip install pyopenssl pyasn1 ndg-httpsclient
4.   git clone https://github.com/offensive-security/kali-nethunter.git
5.   cd kali-nethunter/update/data/app/
6.   adb install Term-nh.apk
7.   adb install nethunter.apk
8.   cd ~/Download
9.   Unduh, wget -c https://images.offensive-security.com/https://images.offensive-security.com/kalifs-armhf-full.tar.xz
11. Pastikan hak akses pada MIUI sudah diperkenankan semuanya
12. mv kalifs-armhf-full.tar.xz kalifs-full.tar.xz
13. adb push kalifs-full.tar.xz /sdcard/
14. Jalankan aplikasi NetHunter pada ponsel
15. Ikuti petunjuk pada pilihan Kali Chroot Manager

Pada prinsipnya Kali NetHunter bisa berfungsi di Xiaomi dengan MIUI-nya namun saya belum bisa memanfaatkan maksimal karena terkendala cukup banyak seperti kapasitas internal memory dan terbentur dengan sistem keamanan MIUI yang menurut saya cukup ketat. Suatu saat kalau memang benar-benar longgar dan memiliki perangkat yang sesuai rekomendasi saya akan ngulik lagi.





on 09 Apr 2017 11:38 PM

29 Mar 2017

Setelah memasang ulang sisop pada laptop yang saya gunakan, waktunya oprak oprek lagi.

Ceritanya mau masang alat konversi data hasil olahannya Ido Alit yang bisa dilihat di sini:

https://github.com/idoalit/converter

Alat pengkonversi ini menggunakan alat yang dibuat oleh Hendro Wicaksono yaitu, Persneling:

https://github.com/hendrowicaksono/persneling

Nah, paket aplikasi yang diperlukan untuk menjalan aplikasi konversi di atas adalah composer. Karena komponen yang harus dijalankan pertama kali setelah klon data adalah:

$ composer install

Pada sisop yang saya gunakan, ternyata ada masalah yang terjadi yaitu:

"...the requested PHP extension dom is missing from your system."

Lengkapnya begini:

buitenzorg812@theminion:/var/www/html/converter$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/phpunit 4.8.9 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.8 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.7 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.6 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.5 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.4 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.35 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.34 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.33 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.32 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.31 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.30 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.3 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.29 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.28 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.27 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.26 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.25 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.24 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.23 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.22 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.21 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.20 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.2 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.19 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.18 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.17 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.16 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.15 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.14 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.13 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.12 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.11 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.10 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.1 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - phpunit/phpunit 4.8.0 requires ext-dom * -> the requested PHP extension dom is missing from your system.
    - Installation request for phpunit/phpunit 4.8.* -> satisfiable by phpunit/phpunit[4.8.0, 4.8.1, 4.8.10, 4.8.11, 4.8.12, 4.8.13, 4.8.14, 4.8.15, 4.8.16, 4.8.17, 4.8.18, 4.8.19, 4.8.2, 4.8.20, 4.8.21, 4.8.22, 4.8.23, 4.8.24, 4.8.25, 4.8.26, 4.8.27, 4.8.28, 4.8.29, 4.8.3, 4.8.30, 4.8.31, 4.8.32, 4.8.33, 4.8.34, 4.8.35, 4.8.4, 4.8.5, 4.8.6, 4.8.7, 4.8.8, 4.8.9].

  To enable extensions, verify that they are enabled in those .ini files:
    - /etc/php/5.6/cli/php.ini
    - /etc/php/5.6/cli/conf.d/10-mysqlnd.ini
    - /etc/php/5.6/cli/conf.d/10-opcache.ini
    - /etc/php/5.6/cli/conf.d/10-pdo.ini
    - /etc/php/5.6/cli/conf.d/20-calendar.ini
    - /etc/php/5.6/cli/conf.d/20-ctype.ini
    - /etc/php/5.6/cli/conf.d/20-exif.ini
    - /etc/php/5.6/cli/conf.d/20-fileinfo.ini
    - /etc/php/5.6/cli/conf.d/20-ftp.ini
    - /etc/php/5.6/cli/conf.d/20-gd.ini
    - /etc/php/5.6/cli/conf.d/20-gettext.ini
    - /etc/php/5.6/cli/conf.d/20-iconv.ini
    - /etc/php/5.6/cli/conf.d/20-json.ini
    - /etc/php/5.6/cli/conf.d/20-mbstring.ini
    - /etc/php/5.6/cli/conf.d/20-mysql.ini
    - /etc/php/5.6/cli/conf.d/20-mysqli.ini
    - /etc/php/5.6/cli/conf.d/20-pdo_mysql.ini
    - /etc/php/5.6/cli/conf.d/20-phar.ini
    - /etc/php/5.6/cli/conf.d/20-posix.ini
    - /etc/php/5.6/cli/conf.d/20-readline.ini
    - /etc/php/5.6/cli/conf.d/20-shmop.ini
    - /etc/php/5.6/cli/conf.d/20-sockets.ini
    - /etc/php/5.6/cli/conf.d/20-sysvmsg.ini
    - /etc/php/5.6/cli/conf.d/20-sysvsem.ini
    - /etc/php/5.6/cli/conf.d/20-sysvshm.ini
    - /etc/php/5.6/cli/conf.d/20-tokenizer.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Panjang khan? Iya. Lantas solusinya adalah, dengan memasang paket ini:

  • php5.6-xml; atau
  • php7.0-xml
Silahkan disesuaikan dengan versi php yang digunakan. Karena saya menggunakan PHP 5.6, maka saya memasang yang versi php5.6.

Udah, gitu ajah ;).



on 29 Mar 2017 12:33 PM

01 Mar 2017

Suatu ketika, saya penasaran bagaimana cara memindahkan panel KDE yang secara baku ada di bawah layar, menjadi ke atas. Tapi karena saya males, saya nggak banyak oprek-oprek yang namanya panel itu. Sudah, biarkan saja di bawah.

Tapi pada malam itu, yang mana seharusnya saya sudah tidur, rasa penasaran saya kembali terpelatuk. Anggap saja pada akhirnya saya berhasil memindahkan panel KDE yang tadinya di bawah menjadi ke atas. Beginilah pada akhirnya tampilannya tersebut.


Di atas khan? Iya di atas. Senang? Jelas! Dengan percaya diri penuh, karena saya menganggap bahwa setelan panel yang tadinya di bawah dengan setelan panel yang sudah ada di atas pasti dan mesti sama, saya hapus lah itu panel yang ada di bawah. Namun ternyata? Tidak demikian sodara-sodara!

Tak lama setelah saya hapus panel bawah dan melihat isi menu panel atas, ternyata berubah. Semua sudah nggak sama lagi seperti sebelumnya. Daftar ikon favorit berubah, nggak seperti yang sudah disetel sebelumnya dan yang paling krusial, tombol meta/win yang ada di papan kunci nggak aktif untuk mbuka menu. Bah...bencana! Masak harus pasang ulang sistem gegara hal remeh temeh begini! Cih!

Hahaha!!! Segitunya sich ya. Iya loh, saya ini repot bener. Padahal menunya masih bisa diakses dengan klik menggunakan touchpad atau tetikus. Zona nyaman itu benar-benar brengsek ya. Saya dah amat sangat nyaman dengan pencet tombol sekali terus semua akses ke aplikasi terbentang begitu saja. Bikin nggak tenang kalo nemu masalah kek ginih, nggak bisa tidur kalo belom ketemu solusinya.

Cari sana-sini, bongkar atas-bawah, nggak ketemu jawaban yang mencerahkan. Malah bikin tambah puyeng. Ada satu yang mbahas tentang bagaimana Microsoft sudah sukses memberikan ketergantungan pada tombol meta/win yang ada pada papan ketik sampe kenapa harus bergantung sama tombol tersebut, sampai akhirnya...solusinya ada pada kolom balasan yang mungkin, bukan...pastinya, kalo nggak pelan-pelan dibaca, sampai saat ini belom teratasi.

Jadi gimana cara mengembalikan fungsi tombol meta/win supaya mau mbuka menu? Begini.


Klik kanan ikon menu, sehingga memunculkan pilihan seperti gambar di atas. Kemudian pilih pada "Application Dashboard Settings" yang dilanjutkan dengan gambar di bawah


Langsung pilih "Keyboard Shortcuts" yang mana, selanjutnya, kita akan dibawa ke gambar berikut:


Nah itu, lihat pada tombol "Input". Biang masalahnya ada di situ. Karena itu kosong, maka ketika kita tekan tombol meta/win, maka tidak terjadi apa-apa. Bagaimana cara mengisinya, sementara ketika kita hanya menekan tombol meta/win tidak bisa dilakukan penambahan apapun. Tombol "Input" tadi hanya bisa diisi dengan kombinasi tombol.

Solusinya adalah dengan mengisi kombinasi tombol:

ALT + F1

Dah...gitu ajah. Setelah saya masukkan kombinasi tombol tersebut dan terapkan, hasilnya, tombol meta/win pada papan kunci bisa menampilkan kembali isi menu pada KDE Neon yang saya gunakan.


Demikian dan terima kasih. Tapi, kenapa mojok.co harus ditutup sich :'(

Bahan bacaan:

on 01 Mar 2017 03:25 PM

12 Feb 2017

Menarik untuk disimak… Meme #1: We have shared software since we have written software. Meme #2: Writing good software is hard work. Meme #3: There is no scale without discipline. Meme #4: Software is inherently dynamic. Meme #5: You always get more than you give. Meme #6: Freeloaders are essential to success. Meme #7: Don’t […]
on 12 Feb 2017 01:01 PM

07 Feb 2017


It's almost unreal!!! Tsaah! Akhirnya punya GitBook Editor di OpenSUSE! Sebelumnya mah pasrah ajah, nyunting buku pakek editor versi web. Tapi ternyata, bisa jugak dipasang pada OpenSUSE. Koq? Iya, khan ada alien. Kalo dulu, di GnU/Linux Ubuntu, pernah pakek perintah ini ketika mau menggunakan aplikasi dari berkas .rpm supaya bisa dipasang pada GnU/Linux Ubuntu. Nggak kepikiran kalo bisa dipakek sebaliknya. Karena pun baru kali ini saya penuh waktu menggunakan distribusi dengan basis RPM.

Prosesnya begini:
  1. Unduh kode pemasangan GitBook Editor dalam format .deb di https://www.gitbook.com/editor/linux/download
  2. Jalankan perintah alien dengan kredensial root
    • # alien --to-rpm (nama berkas .deb yang akan dikonversi)
  3. Tunggu beberapa saat sampai berkas .rpm terbentuk. Setelah berkas .rpm terbentuk, jalan pemasangan dengan perintah:
    • # zypper in (nama berkas .rpm hasil konversi)
Mudah khan ya? Kalau masih belum jelas, nanti lihat-lihat lagi rujukan yang saya baca, di bawah. Semoga bermanfaat :)

Bahan bacaan:
https://tunnelix.com/converting-a-deb-into-rpm-using-alien-on-opensuse/
on 07 Feb 2017 12:35 PM

04 Feb 2017

Mohon maaf jika tulisan dan judul tidak nyambung saya hanya teringat gaya menulis jaman masih SMP. Belajar menulis hasil praktikum di Lab. IPA menurut saya masih bermanfaat sampai saat ini. Hal ini didasari pemilihan Instant Messenger yang cocok untuk sebuah "forum diskusi singkat". Untuk forum diskusi saya lebih menyukai milis atau web forum. Selain itu juga ada pemberitaan yang diduga ada rekayasa dalam sebuah percakapan Instant Messenger. 

A. Alat dan Bahan
Dalam ngoprek kali ini alat dan bahan yang saya perlukan sebenarnya standar dan mudah didapat (apalagi kalau menggunakan Linux). Ada pun alat dan bahan yang saya gunakan sebagai berikut:
  1. Ponsel dengan sistem operasi Android yang telah ter-root.
  2. Kabel data (sebaiknya yang original)
  3. Komputer bersistem operasi Linux
  4. ADB yang terpasang di komputer
  5. Aplikasi Sqliteman yang terpasang di komputer

B. Tujuan
Instant Messenger saat ini banyak sekali tersedia di Playstore. Bisa dikatakan terkadang bingung memilihnya. Namun yang saat ini cukup populer di Indonesia menurut JakPat yang saya kutip dari DailySocial diantaranya Blackberry Messenger, Whatsapp, Line, FB Messenger dan Telegram. Dalam ngoprek  saya tidak menggunakan tidak menggunakan Line. Intinya saya hanya ingin "melihat" pesan yang tertinggal didalam ponsel sesuai kaidah analisis forensik.

C. Langkah Kerja
Dalam tulisan ini saya tidak menjelaskan secara detil tentang mendapatkan barang bukti digital dari  Blackberry Messenger, Telegram, FB Messenger, dan Whatsapp maupun barang bukti elektronik berupa ponsel. Asumsinya bahwa proses pengambilan barang bukti digital sudah memenuhi kaidah akuisisi barang bukti digital secara logikal.
1. Pastikan ponsel dalam kondisi ter-root.
2. Pastikan ponsel dalam mode developer.
3. Pastikan USB debugging telah aktif.
4. Saya tancapkan kabel data antara ponsel dan komputer ber-Linux kondisinya aman tidak perlu install driver ponsel.
5. Jalankan perintah adb shell.
6. Masuk ke mode administrator ketik su.
7. Membuat direktori dengan perintah, mkdir /sdcarcd/forensik-201702
8. Menyalin barang bukti digital ke direktori /sdcard/forensik-201702

D.  Analisis Barang Bukti Digital
Dengan kondisi ponsel yang ter-root memudahkan dalam mendapatkan barang bukti digital. Semua barang bukti digital disalin ke direktori /sdcard/dorensik-201702. Selanjut barang bukti digital satu per satu disalin ke komputer untuk analisis menggunakan perintah adb pull /sdcard/forensik-201702/nama.db ~/forensik/2017/02/ . Ingat harus satu per satu tidak bisa menyalin secara semua dengan tanda * . Analisis lebih lanjut silakan bisa dipelajari, berikut hanya tangkapan layar dari masing-masing barang bukti digital.
1. Blackberry Messenger
Barang Bukti Digital: master.enc
2. Telegram
Barang Bukti Digital: cache4.db


Memiliki 39 Tabel
3. Whatsapp
Barang Bukti Digital: msgstore.db

Memiliki 18 Tabel
4. FB Messenger
Barang Bukti Digital: threads_db2

Memiliki 15 Tabel
E. Kesimpulan
Ada 2 Instant Messenger yang tidak bisa saya baca isi pesannya yaitu Blackberry Messenger dan Telegram. Whatsapp dan FB Messenger tidak ada enkripsi apapun sehingga sangat mudah dibaca. Sebelum 1 November 2014 Blackbeery Messenger masih bisa dibaca menggunakan BBMPork. Serupa seperti Whatsapp versi terbaru yang tidak terenkripsi. Tidak seperti jaman dulu, Whatsapp relatif sulit dibaca walaupun ada aplikasi tambahan yang dapat membongkarnya seperti Wforensic dan Whatsapp Xtract. Sekedar bonus jika Whatsapp boros media penyimpanan. Whatsapp di ponsel saya hampir "memakan" 1 GB dapat dilihat di gambar berikut.


Harapannya adanya analisis ini Anda bisa bijak memilih dan menggunakan Instant Mesenger. Insya Allah dalam waktu dekat hasil analisis ini akan saya presentasi di Padepokan ASA, waktu dan tempat mohon bisa memantau blog ini.

on 04 Feb 2017 08:00 AM

03 Feb 2017

Ini perbaikan dari tulisan sebelumnya. Masih sama dengan kata kunci terdahulu yaitu Recover MySQL Root Password, Reset MySQL Root Password, Reset Forgotten MySQL Root Password, dan lain-lain. Berikut langkah-langkah mengubah password Mysql yang lupa di Ubuntu 16.04:
1. sudo /etc/init.d/mysql stop
2. sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld ; sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &. Jika sudah muncul tulisan seperti dibawah ini berarti "angin segar".
2017-02-03T07:47:01.759823Z mysqld_safe Logging to syslog.
2017-02-03T07:47:01.763524Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-03T07:47:01.767094Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-03T07:47:01.789149Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

3. Login mysql dengan perintah, mysql -uroot -p dan tekan enter untuk memasukan password-nya.
4. Saat pada konsol mysql jalankan perintah
USE mysql;
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('password_baru_anda');
FLUSH PRIVILEGES;
\q
5. Hentikan proses mysql dengan perintah, ps ax| grep mysql | awk '{print $1}' | xargs kill -9
6. Jalankan mysql dengan perintah, /etc/init.d/mysql start

 Silakan dicoba ulang menggunakan password baru anda.
on 03 Feb 2017 08:09 AM

01 Feb 2017

Sekedar refreshing mainan Wireshark, saat menyimpan hasil "capture" muncul pesan The capture file appears to be damaged or corrupt. Dibuka ulang pesan tersebut masih muncul. Solusinya supaya tidak muncul pesan tersebut maka install pcapfix. Dari Linux Mint cukup unduh dan install menggunakan perintah sudo apt-get install pcapfix.

Menggunakan pcapfix tidaklah sulit cukup mengetikan pcapfix -n namafile.pcapng



on 01 Feb 2017 03:22 AM

27 Jan 2017

Super Android, recharge!

WordPress semenjak versi 4.7 telah menambahkan fitur WP REST API v2. Dengan adanya fasilitas tersebut, WordPress bisa dibuat sebagai peladen API yang berisi artikel. Namun, yang paling penting dari semuanya itu, WordPress dapat menjadi peladen untuk aplikasi-aplikasi web modern macam React/Redux dan lain sebagainya.

Cara Pasang

Pastikan bahwa Android SDK sudah terpasang. Paling gampang, kita bisa langsung memasang Android Studio yang juga akan memasang Android SDK. Silakan ikuti tautan. Saya takkan menulis apa pun karena tutorial dari Google sudah ada yang menggunakan Bahasa Indonesia.

Jalankan ketiga baris ini dan tambahkan ketiga baris tersebut ke dalam ~/.bashrc agar selalu otomatis terjalankan setiap kali Anda menjalankan sesi terminal baru.

export ANDROID_HOME=~/Android/Sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools

Lalu, jalankan Android SDK Manager:

android

Dalam Android SDK Manager, pilih dua paket berikut:

  • Android SDK Build-tools versi 23.0.1
  • Android 6.0 (API 23) SDK Platform (Rev 3).

Silakan lihat gambar untuk lebih jelasnya.

SDK Android Platform Manager

Android SDK Manager, showing what to install to run React Native

Setelah ini, pasang React Native:

sudo npm install -g react-native

Ambil kopi atau sapa sanak saudara dari pada bengong lama menunggu proses pemasangan React Native.

Buat AVD Dulu

Buat terlebih dahulu sebuah emulasi mesin Android:

android avd

AVD Manager

AVD Manager, click Create to create new emulated Android device.

Pilih tombol Create.

Saya mengubah beberapa parameter berikut:

  • AVD Name: ReactNativeOS [Saya memang kurang kreatif :P]
  • Device: Nexus 5 [Terserah, sih]
  • Target: Android 5.1.1 – API Level 22
  • CPU/ABI: Intel Atom (x86_64)
  • Skin: Skin with dynamic hardware control
  • Front Camera, Back Camera: Emulated
  • SD Card: 200 MB
  • Emulation Options: Use Host GPU
Create Android Emulator

Create new Android Emulator based on Nexus 5 and API Level 21

Sisanya saya biarkan pilihan baku. Setelah itu, klik OK.

Jalankan Android yang baru dibuatkan:

emulator -avd ReactNativeOS &

Cara Pakai

Jalankan terlebih dahulu emulator AVD

Untuk membuat proyek baru:

react-native init UnivIndonesia && cd UnivIndonesia

Setelah pemasangan berhasil, masuk ke direktori dan jalankan peladen NodeJS:

npm start

Setelah itu, buka terminal baru lagi dan masuk ke direktori tersebut. Kalau mau di terminal yang sama, tambahkan tanda ampersand (“&”) setelah “start” agar Nodejs dijalankan di latar belakang.

Untuk melihat aplikasi Android yang sudah dibuat, jalankan:

react-native run-android

Selamat mencoba. Sebenarnya, React Native bisa dijalankan di iOS, tapi saya tak mampu membeli SDK Apple. 😛

on 27 Jan 2017 09:03 AM

21 Jan 2017

Ceritanya ingin memasang LibreOffice di Windows dengan koneksi seadanya. Dari pagi sampai siang selalu gagal padahal sudah menggunakan cermin terdekat, kambing.ui.ac.id. Saya coba ganti menggunakan cermin lain dari berbagai negara juga gagal. Saya pikir ini ada masalah dengan koneksi yang seadanya tadi. Saya coba memasang penggaya Down Them All di Firefox. Tetap saja, gagal. Muncul pertanyaan, apakah disebabkan komputer tua yaa...

Saya ingat jika komputer tua ini pernah terinstall Linux Mint. Langsung saja saya reboot untuk menjalankan Linux Mint. Masih tetap menggunakan cermin kambing.ui.ac.id saya mencoba unduh LibreOffice menggunakan wget. Tidak perlu menunggu lama, mengunduh menggunakan  wget di Linux Mint lancar tanpa ada kendala. Pancen penak nganggo Linux.


on 21 Jan 2017 06:35 AM

19 Jan 2017

secure

Maaf, ya, saya suka khilaf lupa menulis tulisan lanjutan. Ha… ha… ha….

Berikut ini adalah cara memasang sertifikat SSL yang ditandatangani oleh Let’s Encrypt dengan menggunakan certbot pada Debian Wheezy. Silakan lihat cara pasang di Wheezy untuk keterangan lebih lanjut.

Aktifkan Repo Debian Wheezy Backports

Anda bisa langsung mengaktifkan repo Debian Wheezy Backports:

echo "deb http://kambing.ui.ac.id/debian-backports/ jessie-backports main" | sudo tee /etc/apt/sources.list.d/debian-backports.list
sudo apt update

Atau nanti tunggu ditanyakan pada saat menjalankan certbot.

Pasang certbot

Unduh dengan pengunduh favorit Anda.

sudo wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
sudo chmod +x /usr/local/bin/certbot-auto

Sebelum Memasang Let’s Encrypt

Siapa tahu Anda malas tidak punya waktu untuk membaca artikel sebelumnya, perhatikanlah:

  1. Pastikan semua domain yang didaftarkan sudah terdaftar di DNS publik.
  2. Pastikan bahwa direktori yang memuat URL untuk sertifikasi dapat diakses.

Penulisan DNS di luar cakupan tulisan ini. Berikut contoh direktori .well-known

server {
        listen   80;
        listen  [::]:80 ipv6only=on;
        server_name  example.com www.example.com;
        server_name_in_redirect on;
        port_in_redirect on;
 
        access_log  /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;
 
        # For ACME Let's Encrypt challenge
        location /.well-known {
                alias /var/www/html/.well-known; # have this as the webroot
        }
 
        location / {
                return 301 https://$server_name$request_uri;
        }
 
}

Mari memasang certbot.

Sertifikasi

Seperti biasa:

sudo certbot-auto certonly --webroot -w /var/www/html -d example.com -d www.example.com

Seandainya tadi Anda melewati bagian pemasangan repositori Debian Backports, maka Anda akan ditanyakan:

To use the Apache Certbot plugin, augeas needs to be installed from wheezy-backports.
Would you like to enable the wheezy-backports repository [Y/n]? y

Lalu beberapa pesan pemasangan paket Python virtualenv. Kemudian, ditanyakan alamat info:

Installing Python packages...
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):admin@example.com

Lalu, ditanyakan apakah menyetujui syarat dan ketentuan yang diberikan, jawab A untuk setuju.

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

Setelah itu, tunggu beberapa saat.

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2017-04-19. To obtain a new or tweaked version
   of this certificate in the future, simply run certbot-auto again.
   To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you lose your account credentials, you can recover through
   e-mails sent to admin@example.com.
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Kalau sudah sampai sini, Anda sudah selesai mendapatkan sertifikasi dari Let’s Encrypt.

Konfigurasi NGINX

Kalau mau penjelasan, lihat artikel terdahulu.

Berikut blok SSL:

ssl  on;
 
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
ssl_prefer_server_ciphers on;
ssl_session_cache   shared:SSL:20m;
ssl_session_timeout 60m;
 
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
 
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 8.8.8.8;
 
add_header Strict-Transport-Security "max-age=31536000" always;

Nah, untuk Debian Wheezy, ada tambahan yang harus dilakukan.

Penambahan Penjadwalan CRON

Pada paket Debian Jessie, jadwal CRON untuk certbot sudah dipasang pada /etc/cron.d/certbot. Mari tambahkan secara manual untuk Debian Wheezy.

Pertama-tama, coba jalankan apakah sukses.

sudo certbot-auto renew --dry-run

Kalau sudah berhasil, maka pasang pada CRON.

sudo crontab -e

Masukkan entri:

0 */12 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

Let’s Encrypt memandatkan untuk pengecekan sehari dua kali.

Terakhir

Selesai.

 

Bacaan Lebih Lanjut

on 19 Jan 2017 10:26 AM

HJKL

Fajran Iman Rusadi

As a vim user, I know since a long time ago that it has another key combination to do movement, in addition to the obvious arrow keys: HJKL. They are used as left, down, up, and right keys. They supposed to be convenient to use due to their location at the home row of the keyboard. The place where the hands naturally lay on.

I had been trying to use them but never feel quite comfortable using it. Maybe it's just me who don't "get" it right yet. But this changed since a couple of weeks ago when I decided to change my strategy a little bit.

on 19 Jan 2017 09:36 AM

13 Jan 2017

secure

Untuk mendukung web yang aman dan dalam rangka HTTP/2 yang sudah menggunakan SSL sebagai dasar koneksi, diperlukan sertifikat digital yang ditandatangani oleh pihak yang terpercaya. Situs yang memiliki sertifikat digital yang ditandatangani sendiri bahkan sudah ditandai oleh beberapa peramban sebagai situs tak aman. Tak ayal lagi, diperlukan tanda tangan digital yang terpercaya.

Kali ini kita menggunakan sebuah sertifikat gratis yang bernama Let’s Encrypt. Penyedia sertifikat ini (CA) didukung oleh EFF (Electronic Frontier Foundation), sebuah organisasi nirlaba yang bergerak dalam aktivitas digital. Bahkan, organisasi nirlaba ini menyediakan perkakas untuk sertifikasi tanda tangan digital, certbot.

Mungkin Anda bertanya, bagaimana dengan Sivion? Sivion adalah salah satu usaha dari Indonesia untuk itu. CA (penyedia sertifikat) dari Indonesia ini saat ini menyediakan tanda tangan gratis bagi kita. Namun, sayangnya mereka belum menyediakan perkakas sertifikasi seperti Let’s Encrypt.

Artikel kali ini membahas bagaimana memasang sertifikat Let’s Encrypt dengan certbot. Artikel ditulis untuk Debian Jessie.

Aktifkan Repo Debian Jessie Backports

Tambahkan ke daftar repo dan perbaharui daftar paket.

echo "deb http://ftp.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/debian-backports.list
sudo apt update

Saya tidak arahkan ke Kambing karena saya sedang malas membetulkan Kambing. Mungkin nanti setelah betul, saya arahkan ke Kambing. ;-P

Pasang certbot

Perkakas certbot ada di repo Jessie Backports.

sudo apt-get install certbot -t jessie-backports

Sebelum Memasang Let’s Encrypt

Ada dua hal yang menjadi kewajiban kita:

  1. Pastikan semua domain yang didaftarkan sudah terdaftar di DNS publik.
  2. Pastikan bahwa direktori yang memuat URL untuk sertifikasi dapat diakses.

Untuk pembuatan entri DNS di luar cakupan tulisan ini.

Halaman HTTP (tanpa SSL) untuk lokasi .well-known/ (http://example.com/.well-known/) harus dapat diakses. Bila Anda seperti saya yang mematikan non-SSL, harus ditambahkan dahulu pengecualian tersebut di peladen. Omong-omong saya menggunakan peladen NGINX. Contoh pengecualian:

server {
        listen   80;
        listen  [::]:80 ipv6only=on;
        server_name  example.com www.example.com;
        server_name_in_redirect on;
        port_in_redirect on;

        access_log  /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;

        # For ACME Let's Encrypt challenge
        location /.well-known {
                alias /var/www/html/.well-known; # have this as the webroot
        }

        location / {
                return 301 https://$server_name$request_uri;
        }

}

Berikutnya, pasang.

Sertifikasi

Jalankan sertifikasi

sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com

Ikuti prosesnya, biasanya pertama-tama ditanyakan alamat surel yang bisa dihubungi bila ada apa-apa.

Enter our email address

Enter our email address

Setelah itu, biasanya ditanyakan kesediaan mengikuti syarat dan ketentuan yang ditetapkan oleh Let’s Encrypt. Pencet tombol [ENTER] saja.

Saya lupa menyuplikkan saat sudah berhasil. Ya, coba saja cek direktori /etc/letsencrypt/live yang seharusnya berisi satu direktori bernama domain pertama yang kita daftarkan.

Konfigurasi NGINX

Sebelum saya kasih konfigurasi penuh, saya coba berikan potongan.

SSL Baku

Untuk konfigurasi SSL baku gunakan sertifikat-sertifikat ini:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

OCSP Stapling

Untuk memanfaatkan OCSP Stapling gunakan sertifikat ini:

ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

Contoh Penuh

Ini contoh penuh blok SSL saya.

ssl  on;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
ssl_prefer_server_ciphers on;
ssl_session_cache   shared:SSL:20m;
ssl_session_timeout 60m;

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 8.8.8.8;

add_header Strict-Transport-Security "max-age=31536000" always;

Terakhir

Untungnya menggunakan paket Debian Jessie adalah pembaharuan SSL berlangsung otomatis. Setelah ini saya akan buat tulisan untuk Debian Wheezy. Sayangnya, pemasangan Debian Wheezy lebih rumit dari Debian Jessie.

Selamat mencoba dan tinggalkan komentar bila ingin bertanya.

Bacaan Lebih Lanjut

on 13 Jan 2017 09:22 AM

08 Dec 2016

Some days ago, I wanted to program an ESP8266 module but somehow it sort-of always failed. Small program worked, but soon I added more into it, it started to fail. The upload process will get stuck and sometimes it eventually finished. But still, I could not get the program to run. If I checked through the serial console, I got the following message, or something similar.

ets Jan 8 2013,rst cause:4, boot mode:(3,7)

I also tried to do the connection more properly, by adding pull-up/down resistors and capacitor, but it did not help. Googling did not give the help that I needed until I someone mentioned to check the serial adapter. Could that be the problem?

on 08 Dec 2016 10:20 AM

07 Dec 2016

Beberapa waktu yang lalu saya butuh memprogram modul ESP8266 namun entah mengapa selalu gagal. Setelah coba macem2, sepertinya USB-to-Serial adapter yang saya gunakan itu bermasalah. Saya sudah pesan adapter baru namun butuh waktu lama untuk sampai; dan saya gak sabaran xD Untungnya saya menemukan artikel berisi petunjuk menggunakan Arduino Uno atau Nano untuk memprogram modul ESP8266 dan kebetulan saya punya Arduino Uno dan Nano yang bisa dipakai. Inilah cara yang saya pakai.

Perhatian! Panduan berikut ini BUKAN berisi panduan menggunakan ESP8266 dari Arduino, melainkan panduan untuk memprogram.

Arduino Uno dan Nano itu memiliki USB port yang bisa dipakai untuk memprogram dan keduanya memiliki jalur serial TX dan RX. Ternyata andai Arduino dibuat dalam mode Reset dengan cara menghubungkan RESET ke GND, maka si Arduino akan bertingkah sebagai USB-to-Serial adapter!

Sebelum lanjut, menurut yang saya baca, port Arduino itu bekerja dengan 5V sedangkan ESP8266 itu bekerja dengan 3.3V dan tidak memiliki toleransi sampai 5V. Sehingga sinyal dari Arduino yang dikirim ke ESP8266 berpotensi untuk merusak modul ESP8266 tersebut. Kebetulan saya lupa menyadari hal ini namun untungnya modul ESP8266 saya masih bisa berfungsi dengan baik. Supaya aman kita perlu mengubah sinyal 5V dari Arduino menjadi 3.3V sehingga aman dikonsumsi oleh ESP8266. Salah satu caranya adalah dengan membuat voltage divider.

Voltage Divider

Dengan memakai kombinasi R1 = 1KΩ dan R2 = 2KΩ, kita bisa mendapatkan sinyal 3.3V yang berasal dari 5V.

Hal lain yang perlu diperhatikan adalah bagimana memberi pasokan listrik ke modul ESP8266. Menurut sebuah dokumen, ESP8266 dapat memakai arus listrik sampai 215mA sedangkan Arduino hanya dapat memasok sampai 200mA. Walau besar kemungkinan ESP8266 tidak akan memakai arus sebesar itu ketika diprogram, akan lebih baik jika kita menggunakan sumber listrik yang lain. Menurut eksperimen saya, bread board power supply biasa sudah cukup untuk memenuhi kebutuhan pasokan listrik untuk ESP8266.

Mari lanjut dengan menghubungkan Arduino dengan ESP8266. Buat hubungan sebagai berikut.

  • Arduino TX ke ESP8266 TX
  • Arduino RX ke voltage divider input
  • Voltage divider output ke ESP8266 RX
  • Arduino RESET ke GND
  • Hubungkan semua GND
    • Arduino GND
    • ESP8266 GND
    • Voltage divider GND
    • Breadboard power supply GND
  • Breadboard power supply 3.3V ke ESP8266 VCC
  • ESP8266 CH_PD ke 3.3V via resistor 10KΩ
  • Untuk mengaktifkan mode pemrograman, hubungkan ESP8266 GPIO0 ke GND via resistor 10KΩ

Kalau digambarkan, kira2 akan terbentuk hubungan seperti berikut.

Koneksi ESP8266 dengan Arduino

Setelah semua siap, sambungkan Arduino via USB dan nyalakan breadboard power supply dan modul ESP8266 sudah bisa diprogram. Jika menggunakan Arduino IDE, cukup pilih board ESP8266 dan port USB yg dipakai.

Berdasar pengalaman saya, walau konfigurasi di atas ini sudah bisa berfungsi, kadang2 saya masih menemui kegagalan ketika proses pemrograman berlangsung. Saya belum tahu apa sebabnya namun biasanya setelah saya matikan dan nyalakan lagi si breadboard power supply, proses pemrograman berikutnya bisa berjalan lancar.

Have you tried turning it off and on again?

Selamat mencoba!

on 07 Dec 2016 08:39 AM

Hello world!

Fajran Iman Rusadi

Hi, hello there!
on 07 Dec 2016 08:09 AM

30 Nov 2016

We sometimes just need to download one branch of GIT without its history. Kind of like svn export thingie. A feature of SVN that would export a branch without any SVN metadata.

Suppose we have a Github repository:

https://github.com/jpmrblood/percuma

Lo, we could do this:

svn export https://github.com/jpmrblood/percuma/trunk/

And this to see what GIT versions available:

$ svn ls https://github.com/jpmrblood/percuma/
branches/
tags/
trunk/

And this to see what version had been released in the past:

$ svn ls https://github.com/jpmrblood/percuma/tags/
v1/
v2/

Cool hidden stuff from Github.

Bacaan Lebih Lanjut

on 30 Nov 2016 02:41 PM
zfsonlinux

Ubuntu Xenial secara baku memasang ZFS. Sayangnya, saya sering pindah-pindah sistem operasi sehingga versi ZFS yang dimiliki oleh Ubuntu Xenial tidak memadai. Ada fitur yang tidak kompatibel dengan versi ZFS Ubuntu.

Untungnya, perkakas ZFS yang sudah ada di Xenial sudah mumpuni. Yang perlu diperbaiki hanya versi kernelnya. Jadi, itulah yang hendak kita lakukan: memasang kernel ZFS terbaru pada Ubuntu Xenial sehingga fitur-fitur terbaru didukung.

Saya belum tahu efeknya, tetapi mohon berhati-hati bila menggunakan perkakas berbeda dengan kernel. Kalau saya, saya punya cadangan. Lagipula, saya biasa melakukan ini dari CD Pemasangan KDE Neon, distro GNU/Linux berdasarkan Ubuntu Xenial.

Mohon berhati-hati.  Saya tidak bertanggung jawab atas risiko yang Anda lakukan.

Teknis Setelah Mukadimah

Untuk kernel dari Ubuntu, hapus kernel ZFS yang sudah ada:

rm -rf /lib/modules/4.4.0-24-generic/kernel/zfs/

Pasang ketergantungan:

apt -y install build-essential autoconf libtool gawk alien fakeroot linux-headers-$(uname -r)
apt -y install zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev
apt -y install parted lsscsi ksh
apt -y install autoconf git libdevmapper-dev

Unduh SPL:

git clone https://github.com/zfsonlinux/spl && cd spl

Buat:

./autogen
./configure --prefix=/usr --with-config=kernel
make -j$(nproc)
sudo make install

Unduh ZFS:

cd ..
git clone https://github.com/zfsonlinux/zfs && cd zfs

Buat:

./autogen.sh
./configure --prefix=/usr --with-config=kernel
make -j$(nproc)
sudo make install

Selesai.

on 30 Nov 2016 01:45 AM

23 Nov 2016

The other day, I had problem accessing an HTTPS site from a Python script. Since I had no time to spend figuring out why (it was for a personal project anyway), I decided to make a reverse proxy using Apache. However, unlike the commonly setup reverse proxy, this one is to make an HTTPS site available as HTTP site.

This is what I needed to put in my Apache config.

<VirtualHost 127.0.0.1:12345>
    ...
    SSLProxyEngine On
    ProxyPass / https://that.secure.site/
    ProxyPassReverse / https://that.secure.site/
    ....
</VirtualHost>

I also had to enable mod_proxy and mod_ssl which can be done easily (on Debian based system) by running the following command

# a2enmod proxy ssl

Then reload or restart Apache

# service apache2 reload

The most important bit in the config above is SSLProxyEngine On. Without this the proxy would not work!

on 23 Nov 2016 09:50 AM

07 Nov 2016

Lastweek when spinning up an AWS Instance, I was greeted with an Official Ubuntu 16.04 image.. naturally I would use this image for the new service we were planning..

As all new services we deploy, we run them on Docker. One practice we do in our AWS Docker setup is to store all images in EBS as /mnt/docker.. I’m not going into details of the advantage of this setup.. but usually it is simply modifying the /etc/defaults/docker file setting DOCKER_OPTS=”-g /mnt/docker” ..

Unfortunately Docker installation did not obey this setting

$ docker info | grep "Root dir"
Root Dir: /var/lib/docker/aufs
Docker Root Dir: /var/lib/docker

even though I have correctly updated /etc/default/docker

$ cat /etc/default/docker | grep DOCKER_OPTS
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
DOCKER_OPTS="-g /mnt/docker"

For that I modified the docker.service file

$ sudo vim /lib/systemd/system/docker.service

adding the following

EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd://

reloaded systemctl and restarted docker service

$ sudo systemctl daemon-reload
$ sudo service docker restart

and now Docker installation of Ubuntu 16.04 is storing images in /mnt/docker

$ docker info | grep "Root Dir"
Root Dir: /mnt/docker/aufs
Docker Root Dir: /mnt/docker

on 07 Nov 2016 05:31 AM

27 Oct 2016



To upgrade from Ubuntu 14.10 server to Ubuntu 15.04 server, do the following steps.
Install the update-manager-core package if it is not already installed:
sudo apt-get install update-manager-core
Edit the file /etc/update-manager/release-upgrades,
sudo nano /etc/update-manager/release-upgrades
and set Prompt=normal or Prompt=lts as shown below.
# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
Prompt=normal

Normal – Check to see if a new release is available. If more than one new release is found, the release upgrader will attempt to upgrade to the release that immediately succeeds the currently-running release.
LTS – Check to see if a new LTS release is available. The upgrader will attempt to upgrade to the first LTS release available after the currently-running one. Note that this option should not be used if the currently-running release is not itself an LTS release, since in that case the upgrader won’t be able to determine if a newer release is available.
As you may know, Ubuntu 15.04 is not a LTS version. So, I entered normal.
Now, it is time to upgrade your server system to latest version using the following command:
sudo do-release-upgrade -d

Follow the on-screen instructions. Reboot the server. 
on 27 Oct 2016 06:01 AM

20 Oct 2016

Sebagai salah satu seller di forum terbesar Indonesia, Kaskus mungkin anda pernah menggunakan fasilitas rekening bersamanya yang diberi nama Brankas.
on 20 Oct 2016 04:41 AM

03 Oct 2016

on the boot, after installing broadcom wireless driver in linux Mint CInnamon Sarah we are stuck on boot. So bugs its on kernel, you just run your live usb or cd again. Change hostname to your hostname on local drive, open your terminal chroot to your local drive

hostname awangga
lsblk
mount /dev/sda2 /mnt
chroot /mnt

and run command :

sudo systemctl mask systemd-backlight@leds\:dell\:\:kbd_backlight.service


on 03 Oct 2016 11:45 PM

28 Sep 2016

Setiap kali Anda menggunakan perintah sudo pada Ubuntu, terminal akan secara default meminta Anda untuk memasukkan password root anda. Hal
on 28 Sep 2016 05:33 AM

01 Sep 2016

Instalasi ZFS di openSUSE Leap 42.1 Selamat!
on 01 Sep 2016 04:42 AM

29 Aug 2016

Hari ini nemuin salah satu vm guest yang menggunakan os solaris 10 di vmware mengalami “intermittent” koneksinya, hal ini menyebabkan user yang akses mengalami akses yang sangat lambat dan putus-putus. Setelah dicermati, ternyata vm guest ini masih menggunakan tipe ethernet “e1000” pada settingannya. Solusinya adalah dengan mengganti tipe ethernet ini menggunakan “vmxnet3”. Cara menggantinya adalah: […]
on 29 Aug 2016 11:57 AM

18 Aug 2016

Bagaimana cara menginstall docker swarm?

Docker swarm default sudah dimasukkan kedalam versi 1.12, kebar baiknya adalah untuk konfigurasinya sangat mudah. Anda tidak perlu bersusah payah melakukan konfigurasi seperti di versi sebelum versi 1.12.

Kali ini saya akan mendemontrasikan betapa mudahnya melakukan setup docker swarm di versi 1.12, pada saat menulis ini saya menggunakan Ubuntu Xenial (16.04 LTS) dan menggunakan repository dari docker. dalam lab ini saya menggunakan lima server dengan dua sebagai manager dan tiga sebagai worker. Dalam penamaan node, sayamenggunakan nama manager-X dan worker-Y untuk menunjukkan fungsi dari node itu sendiri.

Untuk pengaturan IP, pada manager akan dibari IP 192.168.0.11 sampai dengan 192.168.0.99, dan worker akan mempunyai ip mulai dari 192.168.0.101 sampai dengan 192.168.0.254.

Sebelum melakukan konfigurasi docker swarm, silakan install docker dulu pada tulisan saya sebelumnya

Memastikan versi docker

Silakan pastikan bahwa docker anda mempunyai versi 1.12 atau lebih tinggi.

$ docker version
Docker version 1.12.1, build 23cf638

Dari hasil diatas menunjukkan bahwa docker saya adalah versi 1.12.1 sehingga pemasangan akan mudah.

atau jika anda belum memasang docker baik itu di manager maupun di worker, anda dapat menggunakan docker-machine untuk melakukan pemasangan docker-engine. Sebelumnya pastikan bahwa anda dapat login dengan seh key sehingga anda dapat melakukan login dengan passwordless

Untuk melakukan setup sshkey silakan ketik:

$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa.
Your public key has been saved in /home/ubuntu/.ssh/id_ecdsa.pub.
The key fingerprint is:
20:96:c8:f6:5a:5c:cc:cd:8c:33:45:97:de:a3:55:61 ubuntu@localhost
The key's randomart image is:
+--[ECDSA  256]---+
|       .o ..  E. |
| . . + * ..  ..  |
|  + + O +. . .   |
| . + o +  . +    |
|    +   S  o .   |
|   o      .      |
|  .              |
|                 |
|                 |
+-----------------+

Selanjutnya silakan copy ssh key ke mesin manager dan worker dengan perintah berikut:

$ ssh-key-id 192.168.0.11

Anda akan dimintai password untuk login. silakan masukkan password dari user anda

Selanjutnya adalah melakukan pemasangan dengan docker-machine:

$ docker-machine create --driver generic --generic-ip-address=$IP-ADDPRESS \
 --generic-ssh-key ~/.ssh/$KEY --generic-ssh-user $USER manager-1

Contoh bila ingin menginstall manager-1 dengan user ubuntu dan ssh ecdsa contohnya adalah sebagai berikut:

$ docker-machine create --driver generic --generic-ip-address=192.168.0.11 \
 --generic-ssh-key ~/.ssh/id_ecdsa --generic-ssh-user ubuntu manager-1

Silakan ulangi pada manager-2 dan worker1 sampai worker-3, kemudian verifikasi dengan perintah berikut:

$ docker-machine ls
NAME		ACTIVE	DRIVER    	STATE     URL						SWARM	DOCKER    ERRORS
worker-1	-		generic		Running   tcp://192.168.0.101:2376			v1.12.1   
worker-2	-		generic		Running   tcp://192.168.0.102:2376			v1.12.1   
worker-3	-		generic		Running   tcp://192.168.0.103:2376			v1.12.1   
manager-2	-		generic		Running   tcp://192.168.0.12:2376			v1.12.1   
manager-1   *		generic		Running   tcp://192.168.0.11:2376			v1.12.1   

Memulai setup docker swarm

Untuk memulainya, silakan login di node yang bertugas sebiagai manager, dan ketikkan perintah dibawah ini:

$ docker swarm init --advertise-addr 192.168.0.11

Hasilnya:

Swarm initialized: current node (erk63hyz95hy7s1giwd0mjjmp) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-d9a8l921hjyql4mub3oh1117g \
    192.168.0.11:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

hanya itu? ya hanya itu, perintah diatas untuk membuat inisial dari docker swarm di manager.

Verifikasi dengan perintah docker info

$ docker info
Containers: 73
 Running: 0
 Paused: 0
 Stopped: 73
Images: 103
Server Version: 1.12.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 592
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null bridge overlay host
Swarm: active
 NodeID: erk63hyz95hy7s1giwd0mjjmp
 Is Manager: true
 ClusterID: 30ty62s2py73okcei9kmr95o5
 Managers: 1
 Nodes: 1

$ docker node ls
ID                           HOSTNAME            STATUS  AVAILABILITY  MANAGER STATUS
erk63hyz95hy7s1giwd0mjjmp *  manager-1			 Ready   Active        Leader

terlihat bahwa docker swarm sudah aktif meskipun hanya satu node yang aktif

Konfigurasi client

Silakan login ke manager-1 untuk mendapatkan toket manager:

$ docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-0ou18lotoo36mjq0e4s0apuo5 \
    192.168.0.11:2377

Silakan login ke manager-2 dan ketikkan perintah diatas:

$ docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-0ou18lotoo36mjq0e4s0apuo5 \
    192.168.0.11:2377
This node joined a swarm as a manager.

Langkah selanjutnya adalah login ke worker-1 sampai dengan worker-3 dan ketikkan perintah yang didapat saat melakukan inisialisasi docker swarm

$ docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-d9a8l921hjyql4mub3oh1117g \
    192.168.0.11:2377

Verifikasi swarm

Setelah melakukan testing dari semua manager dan node, silakan verifikasi dari manager dengan perintah berikut:

$ eval $(docker-machine env --swarm manager-1)
$ docker info
Containers: 6
 Running: 2
 Paused: 0
 Stopped: 4
Images: 31
Server Version: swarm/1.2.4
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 5
 manager-2: 192.168.10.12:2376
  └ ID: 3KQB:C4DQ:AV46:NX7O:XN6Y:EP24:3XLH:UO4D:5N2R:SDAX:AJR6:CI3T
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:24Z
  └ ServerVersion: 1.12.1
 worker-1: 192.168.10.111:2376
  └ ID: VO22:NU4C:ODDV:R2TL:HVV2:2E4I:MKAW:SBRO:WWFD:T265:HPNY:JKZI
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:37Z
  └ ServerVersion: 1.12.1
 worker-2: 192.168.10.112:2376
  └ ID: AFYB:C2IM:Z276:RWMN:CODJ:SHKM:IFX6:POWT:VZKO:BHVS:UBAQ:QVJC
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:25Z
  └ ServerVersion: 1.12.1
 worker-3: 192.168.10.113:2376
  └ ID: PGC3:TJJR:GCRG:5RKA:Q4N3:LWHF:3TAO:FDD2:TY6F:DOUK:27WS:76MQ
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T20:18:37Z
  └ ServerVersion: 1.12.1
 manager-1: 192.168.10.11:2376
  └ ID: HEN3:HWX4:2XTZ:EL5B:YUK3:JUH2:YZ2N:XD77:OTPW:ZONP:UYVP:MYDG
  └ Status: Healthy
  └ Containers: 2 (2 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 8
  └ Reserved Memory: 0 B / 8.087 GiB
  └ Labels: kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:45Z
  └ ServerVersion: 1.12.1
Plugins:
 Volume: 
 Network: 
Swarm: 
 NodeID: 
 Is Manager: false
 Node Address: 
Security Options:
Kernel Version: 4.4.0-21-generic
Operating System: linux
Architecture: amd64
CPUs: 24
Total Memory: 40.83 GiB
Name: 6f894401a6f4
Docker Root Dir: 
Debug Mode (client): false
Debug Mode (server): false
WARNING: No kernel memory limit support

Selamat docker-swarm telah terpasang!

Deploy service di swarm

Setelah membuat cluster swarm, kita akan mencoba membuat service di swarm. kita akan membuat nginx di cluster. Silakan login di manager-1

$ docker service create --replicas 3 --name nginx nginx

Berikut adalah hasil dari docker services diatas:

$ docker service ls
ID            NAME   REPLICAS  IMAGE  COMMAND
cp2er0hu010r  nginx  3/3       nginx  

$ docker service inspect nginx 
[
    {
        "ID": "cp2er0hu010rl0qbv0714t8pw",
        "Version": {
            "Index": 21053
        },
        "CreatedAt": "2016-08-18T22:28:01.748449495Z",
        "UpdatedAt": "2016-08-18T22:28:01.748449495Z",
        "Spec": {
            "Name": "nginx",
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "nginx"
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "MaxAttempts": 0
                },
                "Placement": {}
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 3
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "FailureAction": "pause"
            },
            "EndpointSpec": {
                "Mode": "vip"
            }
        },
        "Endpoint": {
            "Spec": {}
        },
        "UpdateStatus": {
            "StartedAt": "0001-01-01T00:00:00Z",
            "CompletedAt": "0001-01-01T00:00:00Z"
        }
    }
]

$ docker service ps nginx
ID                         NAME     IMAGE  NODE			DESIRED STATE  CURRENT STATE          ERROR
8ihthj14i9qitl792vatmrqjj  nginx.1  nginx  worker-1		Running        Running 2 minutes ago  
48eq2nah2txv7yxthk5y3158m  nginx.2  nginx  worker-2		Running        Running 2 minutes ago  
8yv7z3bk25h7jf06yf6y9hivm  nginx.3  nginx  manager-1	Running        Running 3 minutes ago  

Nah mudah bukan? silakan dicoba

Bagaimana cara menginstall Docker-swarm was originally published by at mahyuddin on August 19, 2016.

on 18 Aug 2016 10:39 PM

16 Aug 2016

Memasang Docker di Linux

Mahyuddin Susanto

Bagaimana memasang docker engine di Linux?

Docker pada saat ini sedang naik daun dikarenakan docker sangat mudah dalam pengoperasiannya. Dalam tulisan ini akan dibahas bagaimana cara memasang Docker di Linux.

Persiapan:

  • Linux box, anda bebas menggunakan distro apa saja
  • Distro yang anda gunakan mensupport cgrups dan unionfs

Install perangkat lunak pendukung

Beberapa perangkat lunak yang perlu dipasang saat pemasangan adalah curl atau wget. untuk pemasangan, sialakan mengikuti prosedur pemasangan dari distro anda.

Contoh apabila menggunakan Debian base:

sudo apt-get update
sudo apt-get install -y curl wget

Contoh apabila menggunakan RedHat basei:

sudo yum install -y curl wget

Langkah selanjutnya adalah memasang docker, petunjuk lengkap dari pemasangan docker dapat dilihat di Dokumentasi Docker hanya saja saya jarang mengikuti prosedur tersebut karena bertele-tele :).

Untuk pemasangan docker, anda cukup mengetikkan perintah dibawah ini:

curl -sSL https://get.docker.com/ | sh

atau jika menggunakan wget

wget -qO- https://get.docker.com/ | sh

Pengaturan tambahan

Berikut adapah pengaturan tambahan untuk docker

Menambahkan account ke grup docker

Secara bawaanya, docker hanya bisa dieksekusi oleh root atau menggunakan sudo, untuk mengakalinya anda harus memasukkan account anda ke grup docker. Untuk menambahkan account anda ke grup docker silakan mengeksekusi perintah dibawah ini:

sudo groupadd docker
sudo usermod -aG docker $(whoami)

Kemudian silakan logout dan login kembali, untuk memastikan account anda silakan cek dengan perintah dibawah ini:

id $(whoami)

Penyesuaian pembatasan memory dan swap

Seringkali dalam menjalankan docker, akan menghasilkan pesan seperti dibawah ini:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.

Untuk mengatasi masalah tersebut, silakan sunting berkas /etc/default/grub dan update seperti dibawah ini

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

Bagaimana memasang docker-compose? (tambahan)

Docker compose adalah salah satu peralatan dari Docker yang saya suka. Berikut adalah cara measangan dari docker-compose

mkdir $HOME/bin
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-$(uname -s)-$(uname -m) > $HOME/bin/docker-compose
chmod +x $HOME/bin/docker-compose

Alternatif lain

Python pip

Docker-compose dapat dipasang menggunakan python-pip, berikut adalah caranya

sudo apt-get install python-pip
pip install docker-compose

Sebagai Docker container

Docker-compose juga dapat dijalankan sebagai container. Untuk pemasangan compose, silakan ketik

mkdir $HOME/bin
curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > $HOME/bin/docker-compose
chmod +x $HOME/bin/docker-compose

Verifikasi

Berikut adalah cara verifikasi untuk meastikan versi Docker-compose

docker-compose -v
docker-compose version 1.7.1, build 6c29830

Bagaimana memasang docker-machine? (tambahan)

Seperti docker-compose, docker machine juga peralatan pendukung untuk docker. Docker machine sangat berguna bagi anda yang ingin melakukan memanajemen docker host dari tempat lain secara remote.

berikut adalah cara pemasangannya:

mkdir $HOME/bin
curl -L https://github.com/docker/machine/releases/download/v0.7.0/docker-machine-`uname -s`-`uname -m` > $HOME/bin/docker-machine
chmod +x $HOME/bin/docker-machine

it is done, next post saya akan menulis tentang memulai menggunakan docker

Memasang Docker di Linux was originally published by at mahyuddin on August 17, 2016.

on 16 Aug 2016 11:27 PM

when you run a business then it is very important to own a custom domain associated with your company and also have email that has a custom address so as to add business credence and proffesionalism to your marketing. and this is why email hosting comes into play.

there are 2 ways to send email, by using email provider like google apps, zoho mail and others or you can just get a server and install email software like zimbra in the server. although the latter requires you to have a sysadmin that will have to standby 24/7 in managing the email server. because if you don’t monitor the server then you might miss those important email from your client and this can be troublesome.

if you used email hosting from shared IP then there is a higher degree that your email IP address might get blacklisted due to spam. and hence will get blocked when you send the email to your client’s email address. so my advice is to use trusted email hosting like google apps or zoho. I had used both of this service and they are just good. although google apps gives you much more functionalities and ask you to pay first to use it.

no matter what, email is still an important tools in delivering messages across business partners and that’s why you should invest money in using better email hosting.

 


on 16 Aug 2016 06:25 AM

30 Jul 2016


Linux Mint Community proudly announced the release and general availability of Linux Mint 18 codenamed “Sarah”. Linux Mint 18 is an LTS release, which will be supported until 2021.

What’s new in Linux Mint 18 Cinnamon

  1. Linux Mint 18 brings latest cinnamon 3.0 to your Desktop, with all its amazing features.
  2. X-Apps can be installed side-to-side to GNOME/MATE/Xfce Apps. In order to produce generic applications for traditional GTK desktop environments, “X-Apps” was started. X-Apps aims at replacing those applications that don’t tend to be adaptive. Other than that X-Apps strive to give you the same set of core applications for your Desktop Environment so that all the changes, new features, improvement are available for all the environment and not just one. Also, it enables you to use modern toolkits and technologies (GTK3, gsettings, …), traditional UI (titlebars, menubar), generic applications along with present functionalities enjoyed by users and backward compatibility.
  3. Totem, popularly known movie player and videos have been updated to 3.18.
  4. Xplayer updated to 1.0, is the default media Player for music and videos.
  5. Xed (based upon Pluma), is the default text editor.
  6. Xviewer (based upon Eye of GNOME), is the default image viewer.
  7. Xrender (based upon Atril), is the default document and PDF reader.
  8. Pix is based on gThumb, for organizing photos.
  9. Updated Update-Manager which lets you when there is newer kernel.
  10. Linux Mint 18 brings Mint Y theme. Mint-Y looks modern, Clean and professional. This theme has three variants, which are light, dark, mix of light and dark.
  11. System Improvements – apt install and apt remove now show progress output.
  12. New Commands were introduced viz., apt full-upgrade, apt edit-sources, apt-showhold, which does the same as apt dist-upgrade, apt- sources and apt held respectively.
  13. Artwork Improvement at login screen, in the default theme.
  14. Superb collection of background.
  15. Improved HiDPI support.
  16. All editions support OEM installations.
  17. Popular applications like Steam, Spotify, Dropbox were added to software center and is available for easy install.
  18. Linux Mint 18 is powered by Linux Kernel 4.4 and Ubuntu 16.04 package base.

System requirements

    1. RAM: Minimum 512 MB, Preferred 1 GB
    2. HDD: Minimum 9GB, Preferred 20 GB
    3. Resolution: 1024X768 and above

Upgrade

If you are running Beta, you may update it to Linux Mint 18 the latest stable release simply as
    • Remove samba
It was observed that Samba negatively impacted boot speed and hence it is removed from stable release. Remove samba as
# apt purge samba
  • Upgrade Linux Mint
Click on the refresh button in your update manager and apply any outstanding level 1 update.

Download Link (Choose your Nearest Mirror or Torrent)

Linux Mint Cinnamon 32 bit
Linux Mint Cinnamon 64 bit
Linux Mint Mate 32 bit
Linux Mint Mate 64 bit
Linux Mint seems to have a number of improvements and some interesting features. It would be interesting to install and test it, which we are going to do, in our next article. Till then stay tuned and connected to Unixmen. Don’t forget to give your valuable feedback in the comments below. Like and share us and help us get spread.
on 30 Jul 2016 06:23 AM

27 Jul 2016

How to delete git branch local and remote?

To delete local branch:

git branch -d branch_name

To delete remote branch:

git push origin --delete branch_name

Note: origin is a remote name, please use remote name with yours

Then, in the other machine, you can sync it with remote with:

git fetch --all --prune

Bagaimana cara membuang branch di remote dan local?

Untuk membuang local branch:

git branch -d branch_name

Untuk membuang remote branch:

git push origin --delete branch_name

Kemudian, di mesin lain anda dapat melakukan sync dengan remote:

git fetch --all --prune

This is a post to remember myself when panic

Git, Delete branch Local dan Remote was originally published by at mahyuddin on July 28, 2016.

on 27 Jul 2016 10:47 PM

I created a planet feed then there is something wrong with its RSS feed that prevent me from posting the feed in my twitter account. below is the error

This page contains the following errors:

error on line 357 at column 40: xmlParseEntityRef: no name
Below is a rendering of the page up to the first error.

turns out the cause of the error is because one of the blogs that I aggregated into has a post title with (&) ampersand. now this ampersand symbol would be allright if it was put into a post body but if you put it into a post title then the above error would come up.

it’s a bit silly that a single ampersand could have fail the whole RSS feed in planetplanet. so yeah I hope you will not put ampersand in the title of your blog posting and just put it in the post body instead.

 


on 27 Jul 2016 12:42 PM

It seems like such a long time ago that we reviewed Linux Mint 17. It was back in June 2014 that we published our thoughts on the “Qiara” release of Mint. Two years on, we’re now taking a look at its successor – Linux Mint 18 (Sarah).
Introduction
mint-1
We decided to take a good look at two releases of Mint 18. We chose to test out the MATE and Cinnamon releases. There are other options available for fans of XFCE and KDE, yet the two we tested probably remain the most popular.
Before we dive into our thoughts on how Mint 18 performs, we need to mention the most important change with this release has been the choice by developers to remove proprietary multimedia codecs from the default builds. This did initially cause a small amount of noise among Mint loyalists, but the fact remains that they can easily be installed in just a few quick key-strokes post-installation. More on this shortly. But as it remains a very minor technical set-back, we’re not going to rant on about it too much because it’s a moot point. And to be honest, there are much more interesting things to talk about with this release rather than dwelling on something minor like codecs.
mint-2
We booted our test builds without any problems. In fact, the early builds we used for testing were so stable, they were worthy of being installed on production machines. As a professional publishing organization, we probably should not be recommending you go ahead and do this, but we use this reference as an indication of just how stable it was, in the weeks prior to final release.
Our test builds were running the Linux kernel 4.4.0-21. This was without running any kind of APT update, so by the time this article makes it to press, we have no doubts you will seeing an updated kernel make its way through the repositories. Although the 4.4.0 branch is not bleeding edge, it is a stable kernel and if absolute stability is what you like in a Linux based operating system, then you will find no problems with the 4.4.0 kernel branch. If you want something a little more on the edge, you could essentially go ahead and install a more recent kernel. We’re actually running Mint 17.3 on one of our servers here in the office, which sits on top of Linux 4.6.0 and it’s rock solid. We didn’t have the resources to be testing Mint 18 with a more recent kernel, but if 17.3 stability is any kind of indication of its compatibility, we see no outstanding indications that Mint 18 would be any different. So if you’re feeling a little more adventurous, go ahead and do it and drop us an email to let us know how it runs.
MATE/Cinnamon
mint-4
The Cinnamon release was the first desktop environment that we gave a run. Our previous experience with Cinnamon was horrible and one we’d rather forget. Its performance was terrible and there were very little options for desktop customization. Admittedly, that was quite some time ago. We are pleased to now say that Cinnamon has grown up, matured and has become a very pleasant desktop environment to use with additional performance improvements to boot.
mint-5
Mint 18 has a new theme – called Mint-Y. Which is unfortunately not enabled as default. It can easily be enabled by the changing the Appearance settings. It’s a beautiful theme and we are not quite sure why the decision as made to have it as an option rather than enabled by default. In Cinnamon, the theme does not change as one. Rather the user needs to change each individual setting – Windows/Buttons/Icons etc. This is a little strange and only a small annoyance, but why the theme can not just be changed as one setting at the desktop level is a little silly, to be frank. Thankfully, things were much better in MATE. If you change the appearance to the new theme inside MATE, it changes everything at the desktop level. This is exactly as it should be.
Like we’ve stated, the theme is beautiful and we recommend you switch Mint 18 to it before you do anything else.
There’s a nice selection of stock wallpapers to choose from. Most users will probably choose their own preference for their own desktop, which is not uncommon. However, if you’re feeling lazy, there’s plenty of choice of stock images to spice up your desktop a little more.
Desktop environment performance was great in both Cinnamon and MATE. There was a slight noticeable lag when using Cinnamon compared to MATE, but that’s just us being technically picky. Most users would probably not even notice unless it was pointed out to them. So we couldn’t possibly take any points away from the Mint 18 developers for this. We commend their efforts for bringing two fantastic desktop environments to the table.
Multimedia codecs
As we mentioned at the beginning of the Review, multimedia codecs are no longer installed out-of-the-box in Linux Mint 18. Instead of complaining about this decision, just go ahead and install them by running the following command in your terminal console as soon as your new system has completed installation:
$ sudo apt-get update && sudo apt-get install mint-meta-codecs
The command above will install the most commonly required and used proprietary codecs.
mint-3
Depending on your network connection, it should be completely downloaded and installed in just a couple of minutes. One installed, you can close your terminal console and get onto more important tasks!

Downloads

Conclusion

We are really happy with the results of Linux Mint 18. Once you have switched to the new theme and installed the multimedia codecs, there’s not much left to do. Mint 18 has it all. It’s selection of software is very well thought out and leaves very little for users to worry about post-installation.
Then there is the ‘Ubuntu-factor’ that can not be ignored. Linux Mint 18 traditionally depends on its Ubuntu heritage for a majority of its packages by utilizing its software repositories, in addition to its own dedicated repository for more updated packages that don’t make their way into the Ubuntu ones. Combined, you will find that you have a extensive package selection at your fingertips – all from inside Mint 18.
Regular readers will have probably seen our recent published Review of Ubuntu 16.04 LTS. If you missed it, we can tell you that we were very disappointed with it and made the recommendation for people to jump ship in search of a good third-party distribution based on Ubuntu. If you are one of those people, then please note that we happily endorse Mint 18 as a perfect Ubuntu replacement.
If you were looking to jump the Ubuntu ship completely, then we recommend taking a look at our recent Review of Fedora 24. It’s equally as good as Mint 18 and equally worthy of your consideration.
Between Linux Mint 18 and Fedora 24, we reckon it’s exciting times in the Linux world. With the exception and onset of the boring world of vanilla Ubuntu releases, Linux feels reinvigorated and fresh once again. Jump on board, because it can only get better from here.
on 27 Jul 2016 06:15 AM

26 Jul 2016

Install RVM di Ubuntu

Mahyuddin Susanto

Install RVM di Ubuntu

Dalam keseharian, terkadang ada aplikasi yang memerlukan ruby versi tertentu. Sebagai contoh ketika kemarin saya melakukan migrasi dari wordpress ke jekyll saya memerlukan ruby minimal versi 2.0 untuk memasang jekyll. Server saya menggunakan Ubuntu 14.04 LTS, secara default Ubuntu 14.04 menggunakan ruby versi 1.9.1 sehingga saya tidak bisa menggunakan jekyll versi terakhir.

Solusi dari permasalahan ini adalah menggunakan RVM, RVM merupakan singkatan dari Ruby Version Manager yang bertugas untuk mengatur versi ruby di sebuah system, sehingga antar versi tidak salah tercampur. Hal ini mirip dengan python virtual environment.

Berikut adalah langkah-langkah cara pemasangan RVM di Ubuntu.

Persiapan

Pengaturan repository

Sebelum melakukan pemasangan, moghon pastikan jika ubuntu anda memiliki menggunakan repository yang benar. Pengaturan repository di Ubuntu dapat di cek di /etc/apt/sources.list, berikut adalah isi dari berkas /etc/apt/sources.list di system saya:

deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Upgrade paket ke versi terakhir

Sebelum melakukan pemasangan, alangkah baiknya bila kita melakukan update database paket dan upgrade paket ke versi terakhir, untuk itu silakan ketik perintah dibawah ini:

:~$ sudo apt-get update
:~$ sudo apt-get dist-upgrade -y

Install curl

Paket curl ini dibutuhkan nantinya untuk pemasangan RVM

:~$ sudo apt-get install curl -y

Pemasangan RVM

Setelah melakukan persiapan dasar, langkah selanjutnya adalah pemasangan RVM, pada pemasangan ini kita perlu mengimport kunci GPG dari developer RVM.

:~$ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

Output:

gpg: directory `/home/mahyuddin/.gnupg' created
gpg: new configuration file `/home/mahyuddin/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/mahyuddin/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/mahyuddin/.gnupg/secring.gpg' created
gpg: keyring `/home/mahyuddin/.gnupg/pubring.gpg' created
gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
gpg: /home/mahyuddin/.gnupg/trustdb.gpg: trustdb created
gpg: key D39DC0E3: public key "Michal Papis (RVM signing) <mpapis@gmail.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Install RVM

Langkah selanjutnya adalah memasang RVM

:~$ curl -sSL https://get.rvm.io | bash -s stable

Output:

Downloading https://github.com/rvm/rvm/archive/1.27.0.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.27.0/1.27.0.tar.gz.asc
gpg: Signature made Tue 29 Mar 2016 01:49:47 PM UTC using RSA key ID BF04FF17
gpg: Good signature from "Michal Papis (RVM signing) <mpapis@gmail.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 409B 6B17 96C2 7546 2A17  0311 3804 BB82 D39D C0E3
     Subkey fingerprint: 62C9 E5F4 DA30 0D94 AC36  166B E206 C29F BF04 FF17
GPG verified '/home/mahyuddin/.rvm/archives/rvm-1.27.0.tgz'

Installing RVM to /home/mahyuddin/.rvm/
    Adding rvm PATH line to /home/mahyuddin/.profile /home/mahyuddin/.mkshrc /home/mahyuddin/.bashrc /home/mahyuddin/.zshrc.
    Adding rvm loading line to /home/mahyuddin/.profile /home/mahyuddin/.bash_profile /home/mahyuddin/.zlogin.
Installation of RVM in /home/mahyuddin/.rvm/ is almost complete:

  * To start using RVM you need to run `source /home/mahyuddin/.rvm/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

# mahyuddin,
#
#   Thank you for using RVM!
#   We sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne, Michal & team.

In case of problems: https://rvm.io/help and https://twitter.com/rvm_io

Setup environment

Untuk melanjutkan setup RVM, kita perlu membuat RVM kedalam environment bash. Pada beberapa case tertentu, kita harus memuat RVM pada sesi shell sebagai function. Untuk itu pastikan bahwasanya pada berkas ~/.bashrc mengandung dua baris berikut:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Setelah itu, load berkas ~/.bashrc kedalam sesi sekarang dengan perintah sebegai berikut:

:~$ source ~/.bashrc

Install paket dependency ruby

Untuk memasang RVM, beberapa dependency juga perlu dipasang. Untuk pemasangan nya silakan lakukan perintah dibawah ini:

:~$ rvm requirements

Output:

Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating system.......
Installing required packages: patch, gawk, g++, gcc, make, libc6-dev, patch, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgmp-dev, libgdbm-dev, libncurses5-dev, automake, libtool, bison, pkg-config, libffi-dev................................
Requirements installation successful.
:~$

Memilih versi ruby

Untuk melakukan cek versi berapa saja versi ruby yang tersedia, kita dapat melakukan cek dengan perintah dibawah ini

:~$ rvm list known

Output:

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.8]
[ruby-]2.2[.4]
[ruby-]2.3[.0]
[ruby-]2.2-head
ruby-head

Pada kali ini kita akan meenggunakan ruby versi 2.3, jika anda menginkan versi lain, pastikan bahwa versi nya ada dalam daftar.

:~$ rvm install 2.3

Output:

Searching for binary rubies, this might take some time.
Found remote file https://rubies.travis-ci.org/ubuntu/14.04/x86_64/ruby-2.3.0.tar.bz2
Checking requirements for ubuntu.
Requirements installation successful.
ruby-2.3.0 - #configure
ruby-2.3.0 - #download
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 25.1M  100 25.1M    0     0  1373k      0  0:00:18  0:00:18 --:--:-- 3681k
No checksum for downloaded archive, recording checksum in user configuration.
ruby-2.3.0 - #validate archive
ruby-2.3.0 - #extract
ruby-2.3.0 - #validate binary
ruby-2.3.0 - #setup
ruby-2.3.0 - #gemset created /home/mahyuddin/.rvm/gems/ruby-2.3.0@global
ruby-2.3.0 - #importing gemset /home/mahyuddin/.rvm/gemsets/global.gems....................................
ruby-2.3.0 - #generating global wrappers........
ruby-2.3.0 - #gemset created /home/mahyuddin/.rvm/gems/ruby-2.3.0
ruby-2.3.0 - #importing gemsetfile /home/mahyuddin/.rvm/gemsets/default.gems evaluated to empty gem list
ruby-2.3.0 - #generating default wrappers........

Langkah selanjutnya adalah memastikan ruby versi 2.3 digunakan sebagai versi ruby default untuk user. Untuk melakukannya, apat mengeksekusi perintah dibawah ini:

:~$ rvm use 2.3 --default
mahyuddin@ubuntu:~$ rvm use 2.3 --default
Using /home/mahyuddin/.rvm/gems/ruby-2.3.0

Cek versi ruby

Untuk melakukan pengecekkan versi ruby yang sedang digunakan oleh sesi user sekarang, silakan ketik perintah dibawah ini dan pastikan bahwasanya output dari kedua peintah mengandung versi 2.3

:~$ which ruby
:~$ ruby --version

Output

:~$ which ruby
/home/mahyuddin/.rvm/rubies/ruby-2.3.0/bin/ruby
:~$ ruby --version
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

Hasil dari output diatas menunjukkan bahwa ruby yang digunakan sekarang adalah versi ruby 2.3

Manajemen ruby menggunakan RVM

Cek versi ruby yang terinstall

Untuk melakukan cek versi berapa saja ruby yang sudah dipasang, silakabn ketk perintah dibawah ini:

:~$ rvm list

Output

rvm rubies

   ruby-2.0.0-p648 [ x86_64 ]
   ruby-2.1.8 [ x86_64 ]
   ruby-2.2.4 [ x86_64 ]
=* ruby-2.3.0 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Switch ke versi ruby lain

Jika versi lain sudah terinstall, silakan gunakan perintah rvm use, contoh:

:~$ rvm use 2.2
Using /home/mahyuddin/.rvm/gems/ruby-2.2.4

:~$ which ruby
/home/mahyuddin/.rvm/rubies/ruby-2.2.4/bin/ruby

:~$ ruby --version
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]

Bash completion

Salah satu fitur dari RVM adalah adanya fitur tab completion untuk mengaktifkan tab completion, pastikan dalam berkas ~/.bashrc anda terdapat baris berikut:

[[ -r $HOME/.rvm/scripts/completion ]] && . $HOME/.rvm/scripts/completion

Silakan dicoba

Install RVM di Ubuntu was originally published by at mahyuddin on July 27, 2016.

on 26 Jul 2016 06:46 PM

20 Jul 2016

Migrasi Ke Jekyll

Mahyuddin Susanto

Migrasi ke Jekyll

Sudah lama saya menggunakan wordpress, dan saat ini saya memutuskan untuk menggunakan jekyll. Saya memilih jekyll karena jekyll sangat cepat (karena static) dan support markdown (bahasa yang saya suka). Beberapa pertimbangan lain yang ada adalah hosting situs ini menggunakan shared hosting, jadi sangat rentan apabila menggunakan wordpress, seperti yang kita tahu wordpress adalah salah satu cms favorit untuk dijadikan target serangan. Walau sebenarnya kita bisa melakukan pencegahan, tapi saya hanya ingin pengaturan minimal untuk situs ini. CMIIW

Untuk migrasi ke dari wordpress ke jekyll pun sangat mudah dan tidak membutuhkan proses yang bertele-tele dan panjang, saya menggunakan exitwp untuk melakukan export post dan halaman ke format markdown. Kebetulan saya menggunakan Ubuntu untuk melakukan proses migrasi ini jadi tinggal mengikuti prosedur yang ada.

Migrasi Ke Jekyll was originally published by at mahyuddin on July 21, 2016.

on 20 Jul 2016 08:58 PM