Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Screen Recording

Jaman sekarang orang bikin tutorial udah gak PDF lagi. Ketinggalan jaman oom. Sekarang musimnya tutorial pake movie, baik AVI, MPG, atau SWF. Jangan sampe kalah gaya sama situs porno.

Di windows ada aplikasi gratis untuk merekam screen, namanya AviScreen. Tapi masalahnya, saya sudah selamat tinggal sama sistem operasi yang ada jendelanya. Bukan apa-apa, namanya ada jendela, pasti debu dan serangga masuk membawa virus. Jadi, AviScreen tidak bisa digunakan.

Untungnya di Linux, pilihan lebih banyak. Ada vnc2swf atau vncrec. vnc2swf outputnya Flash Movie, sedangkan vncrec punya format sendiri yang cuma dia sendiri yang bisa baca.

Update (6 Juni 2006): Ternyata ada lagi aplikasi yang namanya Wink. Tersedia untuk Windows maupun Linux.

Ada beberapa artikel yang membahas tentang cara penggunaan dan perbandingan aplikasi ini. Newsforge dan Linux.com membahas secara lengkap tentang cara penggunaanya.

Berbeda dengan sistem operasi Jendela yang cuma bisa punya satu desktop, di linux desktop bisa sebanyak-banyaknya. Ini bisa menyenangkan (bagi yang sudah tahu), dan bisa juga membingungkan (bagi yang belum tahu). Jadi, kalo AviScreen kita cukup tekan tombol Record, kalau di linux ada beberapa langkah sebelum tekan tombol record, yaitu:

  1. Jalankan VNC server. VNC server adalah aplikasi yang bertugas untuk mempublish desktop kita. Pada saat dijalankan, dia akan menjalankan desktop baru yang berbeda dengan screen yang kita hadapi sekarang.

  2. Jalankan vnc2swf. Setelah itu, kita bisa jalankan vnc2swf untuk connect ke VNC server yang telah kita publish pada langkah pertama.

  3. Mulai merekam. Setelah terhubung dengan VNC server, kita bisa langsung mulai merekam.

Jebakan VNC server : VNC server akan menjalankan desktop baru. Jadi, yang akan direkam adalah desktop baru tersebut, bukan desktop yang sekarang kita gunakan. Jadi kita harus menampilkan dulu desktop baru tersebut, baru mulai merekam. Untuk menampilkan desktop baru tersebut, kita bisa gunakan Remote Desktop Connection yang ada di KDE.

Kalau kita mau merekam desktop yang sedang kita gunakan saat ini, kita harus mempublish desktop dengan aplikasi lain yang namanya x11vnc. Jika dijalankan, aplikasi ini akan mempublish aktivitas desktop kita ke vnc server.

Demikian cara merekam aktivitas desktop. Selamat mencoba.


Keanehan konfigurasi OpenLDAP

Satu hal yang sangat mengganggu dalam OpenLDAP adalah, secara default dia mengijinkan anonymous login. Dan parahnya lagi, user yang login secara anonymous dapat melihat daftar username yang terdaftar. Walaupun aksesnya cuma readonly, tapi tetap saja ini adalah potensi bahaya.

Saya coba mendisable account anonymous dengan cara menambahkan baris ini : disallow bind_anon ke dalam /etc/ldap/slapd.conf.

Berhasil, sekarang orang tidak bisa otentikasi secara anonymous. Tapi muncul masalah berikutnya. Subversion WebDAV juga ternyata tidak bisa login. Setelah ditrace ke lognya apache, dia bilang tidak bisa menggunakan mekanisme simple_bind untuk otentikasi. Berikut pesan errornya :

[LDAP: ldap_simple_bind_s() failed][Inappropriate authentication]

Sepertinya, dengan mendisable anonymous, metode otentikasi simple juga di-disable. Sampai saat tulisan ini diposting, saya belum menemukan cara untuk mematikan anonymous tapi tidak mematikan simple_bind.

Akhirnya, workaroundnya adalah, mengaktifkan anonymous, tapi melucuti semua ijin aksesnya. Ini dilakukan dengan cara mengubah konfigurasi akses (/etc/ldap/slapd.conf) dari

access to *
        by * read

menjadi

access to *
        by anonymous none
        by * read

Dengan demikian, sekarang anonymous bisa login, tapi tidak bisa lihat apa-apa.

**Update 17 Oktober 2005 : ** Ternyata selain anonymous tidak bisa lihat apa-apa, WebDAV juga gak bisa lihat apa-apa. Sepertinya, kalau dia mau otentikasi username, dia akan login anonymous dulu untuk melihat daftar user yang terdaftar. Dengan mematikan anonymous, para user Subversion jadi tidak bisa login dengan pesan error : username not found. Jadi, sementara account anonymous terpaksa dibiarkan seperti defaultnya OpenLDAP.

**Update 18 Oktober 2005 : ** Setelah google kesana kemari, akhirnya saya menemukan orang yang mengalami masalah yang sama. Tentu saja masalah ditemukan bersama dengan solusinya. Sekarang kita bisa mendisable account anonymous, dan apache tetap bisa mengotentikasi user Subversion dengan tenang. Tidak perlu lagi workaround untuk melucuti akses anonymous.


Otentikasi Apache menggunakan LDAP

Pada tulisan sebelumya, saya telah menceritakan cara instalasi dan konfigurasi Subversion. Juga telah diceritakan cara mengaktifkan mode akses HTTP melalui Apache 2 + WebDAV.

Setelah sistem berjalan, ternyata ada kekurangnyamanan dalam mengelola repository. Seperti kita ketahui, yang menggunakan repository adalah para programmer dan tim ofisialnya, semuanya terlibat dalam suatu project. Project datang dan pergi, demikian juga username bertambah dan berkurang.

Cara manajemen username melalui htpasswd tidak scalable. Tambah user harus lapor, ganti password harus dibantu, hapus user juga sama, semua tidak bisa diotomasi. Setidaknya saya belum tau cara mengelola file htpasswd yang lebih efisien. Keinginan saya adalah, untuk menambah dan menghapus username dilakukan administrator, tapi untuk urusan ganti password silahkan ganti sendiri melalui web.

Setelah google ke sana kemari, metode yang umum digunakan orang adalah otentikasi melalui LDAP server. Dan ternyata, memindahkan otentikasi dari file htpasswd ke LDAP tidak sulit, cukup ganti konfigurasi dav_svn.conf dalam folder /etc/apache2/mods-available ini :

AuthUserFile /etc/apache2/htpasswd

menjadi ini :

AuthBasicProvider ldap
AuthLDAPURL ldap://localhost/dc=artivisi,dc=com?uid?sub?
AuthLDAPBindDN uid=apache,dc=artivisi,dc=com
AuthLDAPBindPassword "passwd-user-apache-dalam-ldap"

Perhatian !!! Konfigurasi ini berjalan di Ubuntu 7.04 dengan Apache 2.2. Bila Anda menggunakan distro lain atau Apache 2.0, konfigurasi ini mungkin harus dimodifikasi agar bisa berjalan dengan baik.

Kita membutuhkan modul mod\_authnz\_ldap agar Apache bisa melakukan otentikasi ke LDAP.

Lebih lanjut tentang otentikasi LDAP ini bisa dilihat di manualnya Apache.

Untuk mengaktifkan modul ini, cukup gunakan perintah berikut:

a2enmod authnz\_ldap

Nah, di sisi Apache tidak sulit. Instalasi LDAP di Debian juga sama mudahnya, cukup :

# apt-get install slapd

untuk menginstal OpenLDAP, dan

# apt-get install phpldapadmin

untuk menginstal PHPLDAPAdmin. Ya benar … LDAP Admin, bukan phpmyadmin.

Ternyata merek phpXXadmin ini telah sangat kuat. Mungkin kalau Hermawan Kartajaya pernah menggunakan MySQL, PostgreSQL, dan OpenLDAP, dia juga akan membahas mengenai kekuatan merek phpXXadmin ini. Sejauh ini saya telah menggunakan phpmyadmin dan phppgadmin. Dan sekarang ada phpldapadmin. Luar biasa.

Instalasi OpenLDAP mudah sekali, kita hanya ditanya nama domain yang akan disimpan, saya jawab artivisi.com. Kemudian ditanya password untuk administrator dan metode enkripsinya. OpenLDAP menyediakan clear, crypt, dan md5. Setelah itu … selesai.

Instalasi phpldapadmin sedikit bermasalah. Masalah utama adalah permission. Entah kenapa, debian menginstalnya dengan permission yang tidak sesuai. Ini menyebabkan beberapa halaman tidak bisa diakses karena web server tidak diijinkan untuk membacanya. Untuk mudahnya, saya melakukan :

# chown -R www-data.www-data /etc/phpldapadmin
# chown -R www-data.www-data /usr/share/phpldapadmin

Ok, selesailah sudah. Sekarang untuk menambah user dapat dilakukan melalui web. Konfigurasi default OpenLDAP juga sangat bagus. Hanya admin yang dapat memanipulasi data. User biasa (uid) hanya bisa mengganti atributnya sendiri (termasuk password).

Jadi berikutnya, kalau ada user baru, tinggal tambahkan melalui web dengan password standar. Kemudian suruh user tersebut login dan ganti password. Beres …

Referensi :
Google

Scratchbox


Instalasi Subversion

Setelah pindah ke rumah baru, tugas pertama adalah instalasi Subversion lengkap dengan akses melalui http.

Subversion adalah aplikasi version control system. Cara instalasi detail dan tutorial penggunaan sedang saya susun dalam sebuah tutorial terpisah. Sementara ini, berikut cara cepat instalasi Subversion dan aktivasi akses melalui WebDAV.

Untuk mengaktifkan akses WebDAV, dibutuhkan webserver Apache 2. Apache 2 digunakan (bukan Apache 1) karena telah menyediakan dukungan terhadap WebDAV. WebDAV sendiri adalah tambahan pada protokol HTTP yang memungkinkan aplikasi client memodifikasi file di server. Tanpa WebDAV, aplikasi client (misalnya Internet Explorer atau Mozilla Firefox) hanya bisa membaca data dari webserver dan tidak bisa menyimpan data.

Berikut adalah langkah-langkahnya :

  1. Install Subversion, Apache2 dan WebDAV module :

    # apt-get install subversion apache2 libapache2-svn

  2. Khusus Linux, kita harus membuat wrapper script untuk :
    • svn
    • svnadmin
    • svnlook
    • svnserve

    Gunanya agar folder repository dibuat dengan permission yang benar, yaitu 664. Artinya, user/pembuat repository bisa baca-tulis(rw=6), groupnya bisa baca-tulis, dan orang lain bisa baca(r=4).

    Caranya adalah dengan mengganti script yang asli dengan wrappernya. Pertama, ganti dulu nama script yang asli sebagai berikut :

         # mv svn svn-original
         # mv svnadmin svnadmin-original
         # mv svnlook svnlook-original
         # mv svnserve svnserve-original        
    

    Kemudian buat file text baru untuk wrappernya, jangan lupa untuk membuat file tersebut executable.

         # touch svn svnadmin svnlook svnserve
         # chmod 755 svn svnadmin svnlook svnserve        
    

    Berikut adalah contoh wrapper script untuk svn. File svnadmin, svnlook, dan lainnya mirip, cuma berbeda di baris keempat saja.

    #!/bin/sh

    umask 002 /usr/bin/svn-original “$@”

  3. Buat repository, misalnya di folder /home/endy/svnrepo :

         $ svnadmin create --fs-type fsfs /home/endy/svnrepo
    
  4. Buat group untuk mengakses repository, misalnya group svnusers

         # groupadd repousers
    
  5. Ubah kepemilikan repository menjadi milik group

         $ chgrp -R repousers /home/endy/svnrepo
    
  6. Masukkan semua user yang akan mengakses repository ke dalam group repousers. Sekarang repository siap diakses secara ssh.

         $ svn list svn+ssh://localhost/home/endy/svnrepo
    
  7. Edit Apache 2 agar berjalan dengan group repousers. Instruksi dibawah berlaku untuk Debian. Untuk distro lain silahkan lihat manualnya masing-masing. Pengguna Windows tidak perlu pusing-pusing tentang group, di OS anda fitur ini diabaikan :P

         mc -e /etc/apache2/apache2.conf
    

    ganti baris

         Group www-data
    

    menjadi

         Group repousers
    
  8. Buat username dan password untuk mengakses repository melalui web. Debian menggunakan script htpasswd2. Distro Anda mungkin berbeda.

         # htpasswd2 -mc /etc/apache2/svnusers endy
    

    Lihat manual htpasswd untuk lebih jelasnya.

  9. Edit konfigurasi dav_svn. Intinya adalah, kita harus menambahkan Virtual Directory di Apache. Teknik konfigurasi yang ‘benar’ berbeda di masing-masing distro. Untuk cara paling mudah, tulis saja langsung di bagian paling bawah file httpd.conf. Di Debian, cara paling ‘bersih’ adalah membuat file konfigurasi sendiri di folder /etc/apache2/mods-available.

    Berikut adalah konfigurasi dav_svn. Pastikan file ini diload oleh Apache.

         <Location /svn>
         DAV svn
         SVNPath /home/endy/svnrepo
         AuthType Basic
         AuthName "Subversion Web Authentication"
         AuthUserFile /etc/apache2/svnusers
         AuthzSVNAccessFile /etc/apache2/dav_svn.authz
         Require valid-user
         </Location>
    
  10. Mengaktifkan koneksi https

    • Buat sertifikat, menghasilkan file svn.cert.pem dan svn.key.pem

    • Aktifkan mod_ssl pada Apache. Caranya berbeda sesuai distro. Di debian adalah dengan cara dengan cara membuat symlink mod_ssl.conf dan mod_ssl.load ke folder /etc/apache2/mods-enabled

    • Edit konfigurasi default website (/etc/apache2/sites-available/default).

      SSLEngine on SSLCertificateFile /etc/apache2/ssl/svn.cert.pem SSLCertificateKeyFile /etc/apache2/ssl/svn.key.pem SetEnvIf User-Agent “.MSIE.” nokeepalive ssl-unclean-shutdown

    • Buka koneksi di port 443 dengan cara mengedit konfigurasi Apache dan menambahkan baris berikut :

    Listen 443

    • Restart apache

    Seharusnya sekarang repository kita sudah bisa :

    • diakses melalui ssh
    • diakses melalui https dengan memasukkan username dan password yang benar

Selamat mencoba.

Referensi :


Rumah baru II

Hari ini saya dapat komputer baru. Spesifikasinya lumayan banget, Prosesor P-IV 3 GHz, memori 1GB, dan harddisk SATA 80GB, plus DVD-ROM. Rencananya, mesin ini selain untuk office work, juga akan jadi server sementara.

Kegiatan pertama, bagi sebagian besar orang adalah instal sistem operasi. Buat saya, ada satu kegiatan lagi sebelum instal, yaitu pilih sistem operasi.

Sudah jelas, yang akan saya instal adalah Linux. Sejak meninggalkan Windows tahun 2002 yang lalu, saya merasa seperti naik baswei (baca: busway) jam 5 sore. Melihat ke kiri jalan, kemacetan panjang sekali seperti ular naga, tetapi saya tetap bisa melaju kencang menuju Blok M dalam waktu 30 menit saja. Di dalam busway Linux, saya tetap bisa produktif bekerja pada saat orang lain repot mengupdate antivirus (instal saja tidak cukup, harus up to date juga dong :P), membuang spyware, melakukan defrag, bersih-bersih registry, dan kegiatan non-produktif lainnya.

Nah, pertanyaannya, Linux yang mana? Saya adalah fans berat Debian. Fedora terlalu sulit buat saya. Mandriva, mudah bagi pemula, tapi justru menyulitkan bagi pengguna veteran. Tapi di debian sendiri juga banyak variannya, misalnya Knoppix, Mepis, Ubuntu, dan lainnya.

Knoppix, bagus untuk LiveCD, tapi jelek sekali kalau diinstal di harddisk. Struktur foldernya jelek dan sudah tidak standar lagi. Mungkin karena memang dioptimasi untuk kemudahan remastering.

Mepis bagus, tapi repositorynya tidak kompatibel dengan debian. Untuk pengguna desktop sangat bagus, tapi karena saya mau instal buat macam2 server, di belakang hari menyulitkan.

Ubuntu, sangat bagus … untuk end user. Buat saya, masalah sudo sangat merepotkan. Default instalasinya juga Gnome, sedangkan saya pengguna KDE. Saya sudah berusaha membiasakan diri dengan Gnome, tapi aplikasi-aplikasi Gnome masih kalah (menurut saya) dengan KDE. Saya lebih suka pakai KMail, Akregator, Konqueror daripada Evolution dan Nautilus.

Akhirnya, saya back to basic. Pakai debian murni saja. Toh di sini koneksi IIX laksana LAN. Jadi bisa ambil ke servernya Komo dengan cepat.

Nah, sekarang instalasi. Saya tidak punya CD Writer, jadi walaupun bisa donlod ISO dengan cepat, tetap tidak bisa instal. Akhirnya pakai cara curang sbb :

  1. Download image instalasi jaringan dari Debian (ingat, gunakan kernel 2.6)

  2. Instal Ubuntu

  3. Kopikan image instalasi ke Ubuntu

  4. Konfigurasi GRUB untuk menambahkan image instalasi

  5. Restart, dan mulai instalasi.

Cara ini diinspirasi dari teknik menginstal Linux tanpa CDROM, Floppy, USB, atau media lainnya.

Setelah itu, berikut beberapa aplikasi wajib yang akan diinstal :

  1. Midnight Commander
  2. SSH
  3. MySQL
  4. PostgreSQL
  5. Apache 2
  6. PHP 4
  7. Postfix Mail Server
  8. Subversion Version Control
  9. CVS Version Control
  10. Firestarter (Firewall Front End)
  11. KDE

Selanjutnya, tinggal mengkonfigurasi.

Satu lagi, dengan menggunakan Linux, tidak perlu cari satu-satu, download, klik next beberapa kali, dan restart komputer. Untuk menginstal semua di atas, cukup ketik saja :

apt-get install mc kde mysql-server postgresql apache2 php4 postfix firestarter subversion cvs kde -y

sebagai root. Lalu … sit back and relax …. literally.