Dukungan Video MP4/H.264 di openSUSE Leap 15.0

openSUSE Asia Summit 2015

Setelah memasang Leap 15.0 di x260, ternyata saya tidak bisa memainkan gif ataupun video dari Facebook. Peramban yang saya gunakan adalah Firefox 60.0.1. Di lain sisi, memutar youtube tidak ada masalah. Dari hasil pengecekan https://www.youtube.com/html5 didapat bahwa format MP4/H.264 belum didukung oleh sistem operasi dan peramban.

Membaca wiki openSUSE ditautan https://en.opensuse.org/SDB:Firefox_MP4/H.264_Video_Support, masalah ini dapat diatasi dengan:

  1. Pasang repo packman,
  2. Pasang libav, sekalian memasang VLC
    $ sudo zypper in vlc libavcodec56 libavcodec57 libavformat56 libavformat57 libavdevice56 libavdevice57
    
  3. Restart firefox, dan test kembali dukungan video di https://www.youtube.com/html5

Selesai. Horeee.

Estu~

Advertisements

Setelah Rilis Uluwatu

foto: Jan Peter

Setelah Rilis?

Uluwatu sudah dirilis 2 Mei silam. Dirilis dengan harapan semoga menjadi yg terbaik, mesti tak anyal, hanya beberapa jam setelah rilis. Pengembang sepakat mengajukan minor rilis untuk beberapa perbaikan. Perjalanan menyenangkan buat saya, selaku Manajer Rilis; nano nano, deg deg an, depresi semua bercampur.

BlankOn masih menghadapi masalah lama. Pekerjaan rumah merapikan service pengaturan lumbung. Peta ini mengarah kepada perubahan menggunakan reprepro menuju dak. Saya sendiri belum yakin sejauh mana ini akan dioprek. Tapi sepertinya akan menjadi mainan saya 2-4 bulan kedepan.

Dengan tulisan ini dirilis, saya mengundurkan diri dari Manajer Rilis Uluwatu, dan berpindah tim ke bagian riset Proyek BlankOn.

Kemana setelah ini?

Beberapa rencana kedepan yang terbayang, beberapa selipan ide:

  • Menghidupkan kembali tautan rsync untuk lumbung arsip
  • Melakukan rilis minor tiap tgl 2 tiap bulan, jahitan akan menggunakan nomor, kode rilis akan dipilih setelah ada manajer baru.
  • Kembali membuka pembaharuan arsip-dev
  • Merapikan repo update dan repo security
  • Melakukan pemetaan DNS,  kembali terpusat.
  • Melakukan pemetaan web, khususnya yang jalan di waljinah. mematikan semua layanan, dan kemudian menghidupkan satu persatu yang dibutuhkan dan dipakai.
  • Meruwat Manokwari untuk berjalan beriring dengan pembaruan GNOME.

Mungkin itu saja.

Selamat Hari Kebangkitan Nasional.

Binar dalam Metabase

Metabase is the easy, open source way for everyone in your company to ask questions and learn from data.

Di Binar Academy, kami menggunakan metabase sebagai mesin untuk mengolah data dari hasil Academy. Metabase dapat dipasang dalam berbagai cara. Namun ketika saya diminta untuk memasang Metabase di lingkungan produksi, baru sadar bahwa stack yang dibutuhkan adalah java. Dan ini membutuhkan resource mesin yang lumayan. Untuk lingkungan development, sebelumnya kita menggunakan Heroku. Dipilihlah untuk menggunakan teknologi container.

Dari halaman dokumentasi, Metabase mampu dipasang pada layanan ElasticBeanstalk. Mari kita coba. Ya Binar Academy menggunakan layanan AWS untuk semua platform infrastruktur. Untuk pemasangan Metabase di ElasticBeanstalk(selanjutnya disingkat EB) saya mencoba menggunakan EB CLI, namun sepertinya terlalu overkill. Saya kembali menggunakan konfigurasi dari dashboard web.

Beberapa langkah yang saya lakukan dalam konfigurasi Metabase:

Memasang metabase di ElasticBeanStalk.

Saya menggunakan panduan dari sini. Beberapa catatan dalam pemasangan:

  • EC2 yang digunakan EB: t2.micro
  • RDS Postgres: t2.micro

Setelah Metabase selesai dipasang, kita akan mendapatkan publik url berupa domain, sebagai contoh: prod-metabase.xxxxxx.ap-southeast-1.elasticbeanstalk.com.

Setting Up Metabase

Silahkan akses domain yang didapat. Saya merujuk dokumentasi resmi untuk melakukan konfigurasi.

  • Setup Admin Account, beserta credential
  • Setup Email untuk notifikasi, saya menggunakan Google Apps, konfigurasinya hampir sama ketika konfigurasi email Mattermost.
  • Setup database internal Metabase (RDS) dan Database Raw Data, (DB Aplikasi, Google Analytic)
  • Invite Team, dengan memasukkan email team.

Setting Domain dan HTTPS

Domain yang didapat merupakan domain costum dari ElasticBeanstalk. Ingin diarahkan ke metabase.domain.id. Caranya:

  • Login ke Domain Management, pilih DNS
  • Buat sebuah CNAME baru dengan isian
    name: metabase
    value: {{enter-your-subdomain}}.elasticbeanstalk.com.
  • Simpan dan tunggu propagasi domain berjalan

Untuk HTTPS, saya menggunakan SSL dari LetsEncrypt. Untuk pembuatannya, saya generate dari mesin lain yang sudah ada certbotnya.

$ sudo service nginx stop
$ sudo certbot certonly --standalone -d metabase.domain.id
$ sudo service nginx start

Kemudian downlaod dua file ini dari sertifikat ke laptop lokal.

  • fullchain.pem
  • privkey.pem

Unggah dua file tadi ke IAM mengunakan AWS CLI dalam format berikut:
aws iam upload-server-certificate –server-certificate-name [berikan nama ssl ke iam] –certificate-body file://[path to fullchain.pem] –private-key file://[path to privkey.pem]

$ aws iam upload-server-certificate --server-certificate-name [berikan nama ssl ke iam] --certificate-body file://[path to fullchain.pem] --private-key file://[path to privkey.pem]
$ cd /path/to/ssl
$ aws iam upload-server-certificate --server-certificate-name metabase.domain.id --certificate-body file://fullchain.pem --private-key file://privkey.pem

Load ssl ke metabase:

  • Buka Elastic Beanstalk dan pilih aplikasi Metabase.
  • Pilih Enviroment metabase
  • Kemudian pilih bagian Load Balancing. Pilih Add Listener. Kemudian isi jendela pop up seperti berikut:
    Listener Port: 443
    Listener Protocol: HTTPS
    Instance Port: 80
    Instance Protocol: HTTP
    SSL Sertificate: metabase.domain.id (sesuai dengan nama yang ditulis ketika Unggah SSL)
  • Simpan.

Silahkan uji akses costum domain dengan HTTPS. Semoga sukses 😀

Dah itu aja.

Estu~

 

Memasang Mattermost di AWS

Rencana Desain

Bagi yang belum mengenal mattermost, bisa membaca postingan saya sebelumnya.

1 Mesin EC2 free tier (1Core1GB) AWS
OS Ubuntu 16.04
IP Publik Static (Elastic IP)

Stack:

  • Nginx (as proxy)
  • Mattermost-server
  • Postgresql
  • SSL letsencrypt

Security Group outbond:

  • 443, 80 (open)
  • Ping (open)
  • 8065 (port mattermost sementara)

Instalasi saya pecah menjadi beberapa bagian

Persiapan Mesin

  1. Buat mesin, sesuai spesifikasi diatas
  2. Login ssh dan mulai masang-masang

Continue reading “Memasang Mattermost di AWS”

Menjadi BlankOn

Hai, saya Estu.

Kali ini sedang mencoba menjadi manager rilis BlankOn XI dengan nama kode Uluwatu. Rilis kali ini pengerjaan dimulai 8 Feb 2017.

Apa yang terjadi dalam kurun waktu menuju Uluwatu?

Setelah rilis BlankOn X Tambora, hampir semua koordinator tim mengundurkan diri, tak luput beberapa pengembang veteran pun ikut gantung papan ketik.

Saya sendiri mungkin hanya sebagian pengembang lawas yang masih ikut. Mari bikin tim baru. Kenyataan pertama yang dari dulu sudah menjadi momok adalah baru sadar bahwa tidak ada dokumentasi yang memadai pada Infrastruktur dan aplikasi utama. Kedua hal itu biasanya merupakan tugas turunan untuk menjadi pawang mesin dan pawang aplikasi tanpa tau bagaimana kedua hal itu dibangun. Momok itu baru sadar ketika beberapa service tidak berjalan baik.

Selama perjalanan menjahit Uluwatu, ada beberapa kejadian yang menjadi catatan saya.

Milestone:

  1. Perawatan Mesin BlankOn
    • Waljinah, penambahan hardisk | Maret 2017
    • Perawatan Rani, penambahan hardiks | Maret 2017
    • Perawatan Alynne, penambahan CPU dan RAM | April 2017
  2. Laporan kerusakan pada lumbung Tambora | April 2017
    • Backup service, Alynne install ulang
  3. Rekontruksi Pabrik CD, Pabrik Paket (IRGSH), dan Pabrik Repo | Maret – Juni 2017
    • Inisiasi ananda | mesin baru di Digital Ocean untuk riset rekontruksi
  4. Alynne gagal hidup dan bekerja akibat MotherBoard yg rusak | Desember 2017
  5. Penyalahgunaan Maskot Boni untuk komersial

Pada rilis Uluwatu ini, tidak banyak yang berubah dari segi isi dan fitur. Beberapa hanya menaikan versi aplikasi. Namun beberapa kerjaan selesai yang saya anggap sebuah pencapaian dalam rilis kali ini ada banyak, diantaranya:

  1. Dokumentasi bagaimana membangun layanan BlankOn.
    Rilis kali ini saya ikut membidani rekontruksi infra BlankOn akibat beberapa catatan kejadian diatas.

    • Dokumentasi Pabrik Repo menggunakan reprepro
    • Dokumentasi Pabrik CC, service yg menjahit ISO BlankOn
    • Dokumentasi Pabrik Paket (irgsh server dan irgsh worker)
    • Isu-isu yang sering muncul di layanan dan bagaimana menangani
  2. Pemindahan Repository dari dev.boi yg menggunakan bzr ke github dengan scm git.
  3. Pemindahan Wiki oleh tim Dokumentasi dari Trac di dev.bo ke github pages.
    • Tim Dokumentasi kali ini memberikan lompatan yg besar. Karena mayoritas anggota bukan dari latar belakang IT, setelah bergabung. Belajar bagaimana menulis dokumentasi dalam format Markdown dan menggungahnya ke github melalui baris-baris perintah git.
  4. Perilisan Kode Etik berkomunikasi
  5. Pendaftaran Sponsor dan Mitra dirilis
  6. Kegiatan Translasi GCompris edisi Bahasa Indonesia
  7. Kegiatan Pameran di Habibie Festival dan Libroffice Conference Indonesia

Beberapa catatan lain.

9 Februari 2018, kami kehilangan kawan, sahabat, jiwa muda di tim pengembang BlankOn.
Muhammad Rafi, koordinator Humas, berpulang setelah seminggu dirawat pasca kecelakaan.
Sebuah kehilangan yang sangat besar bagi kami. Semoga dilapangkan jalannya, Amin.

Diawal bulan Mei ini, setelah melalui perjalanan panjang, pasang surut. Tim Pengembang sepakat.
“Merilis BlankOn XI Uluwatu”

Selamat rilis kawan, tetap semangat menuju kemandirian perangkat lunak bersumber terbuka.
Mohon maaf belum dapat menjadi manager rilis yang baik.

Tabik
Estu – tuanpembual

Mattermost, Slack Alternative

2018-01-23 16.42.36

Mattermost, ketika mendengar kata ini, yang kebayang disaya adalah termos air. 😀

Mattermost sendiri adalah open source private cloud messaging sebagai alternative dari Slack. Kode sumber mattermost dapat diakses di https://github.com/mattermost. Lengkap dengan server dan client side.

Beberapa limitasi slack gratis yang kerasa adalah hanya menyimpan 10ribu chat terakhir dan batasan total file dan total ukuran file yang diunggah.

Mattermost sendiri sebagai private cloud messaging bisa digunakan lewat beberapa cara. Diantaranya:

  1. Beli layanan dengan beberapa service tambahan menarik lainnya
  2. Install dan konfigurasi Mattermost server di server sendiri

Saya memilih memasang di mesin sendiri. Ada beberapa pilihan pemasangan lain, seperti memasang di heroku, memasang menggunakan Puppet, Chef atau Ansible. Bahkan memasang mattermost-server dalam Docker.

Sementara setelah membaca beberapa tautan di halaman unduhan, saya sepertinya akan memasang di AWS saja.

Sempat nyoba di heroku tapi kurang berhasil. Nyoba di aws 3-4 kali baru sukses. Panduan pemasangan akan saya tulis setelah ini. Iya nyobanya banyak, karena masih meraba-raba bagaimana konfigurasi yang paling cocok digunakan di kasus saya.

Untuk aksesnya bisa dari browser ke domain yang sudah diatur dari mattermost server. Untuk versi ponsel pintar android sudah ada jg di Google Play.

Dah itu aja dulu pengenalannya.

Lanjut nulis install-install.

Estu~

Konfigurasi LB gRPC Service dengan HAProxy

Kemaren diminta setting load balancer di HAProxy untuk gRPC Service.
Panduan ini saya nyomot dari https://grpc.io/blog/loadbalancing dan https://gist.github.com/thpham/114d20de8472b2cef966

Desain service kira-kira seperti ini:

Springboot-Service(API) <—> HAProxy <—-> gRPC Server 1 & gRPC Server 2

Kasusnya adalah:

  • Traditional setup – Many clients connecting to services behind a proxy
  • Need trust boundary between servers and clients
  • Metode pembagian beban adalah roundrobin
  • HAProxy dipasang dimesin yang sama dengan gRPC server 1.

Solusi yang diambil:

  • L3/L4 LB with haproxy.

Installasi dan Konfigurasi

$ sudo apt install haproxy

Berikut konfigurasi yang saya gunakan dengan perubahan seperlunya termasuk mengatur status load balancer (Dashboard HAProxy).

global
  tune.ssl.default-dh-param 1024

defaults
  timeout connect 10000ms
  timeout client 60000ms
  timeout server 60000ms

## Pengaturan Dashboard HAProxy
listen stats
  bind :1936
  mode http
  log  global

  stats enable
  stats uri /stats
  stats refresh 15s
  stats show-node
  stats hide-version
  stats realm Haproxy\ Statistics
  stats auth user:password

frontend fe_http2
  mode tcp
  ## alamat binding gRPC yg akan diakses oleh Springboot-Service
  bind 192.168.33.100:6668 npn spdy/2 alpn h2,http/1.1
  ## alamat routing backend
  default_backend be_grpc

backend be_grpc
  mode tcp
  balance roundrobin
  ## daftar gRPC service yang akan menerima LB dari HAProxy
  server prod-service-020 127.0.0.1:6667
  server prod-service-021 192.168.101:6667

Setelah konfigurasi dirasa cukup, lakukan testing konfigurasi HAPRoxy dengan perintah berikut.

$ sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Jika udah ijo, lakukan restart haproxy.

$ sudo systemctl restart haproxy

Demikian.
Estu yg lagi dolanan Mattermost