Tag Archives

12 Articles
Tutorial Lengkap Patroni PostgreSQL
PostgreSQL database

Tutorial Lengkap Patroni PostgreSQL

Masih ingat tutorial saya tentang Patroni dahulu? Saya akan membuat tulisan lengkap dari nol sampai berjalan. Di akhir tutorial ini Anda bisa membuat kluster Patroni secara manual. Kalau Anda devops dan tertarik menulis resep untuk Ansible, Puppet, dan sejenisnya, saya harap artikel ini bisa menjadi acuan untuk mengerti Patroni.

Mesin-mesin yang Ada

Saya membagi setiap mesin yang digunakan dengan dua IP. Satu subnet IP internal yang digunakan untuk setiap mesin dalam kluster berkomunikasi dan satu subnet IP yang digunakan untuk akses luar. Implementasi fisik dengan menggunakan dua kartu jaringan (atau dua bonding fisik)  yang berbeda. Perbedaan jaringan untuk komunikasi internal dan komunikasi dengan klien ini selain menyediakan keamanan dalam isolasi, juga membuat koneksi internal atau pun eksternal tidak saling mengganggu.

 “Well, hell! PMP exam topics That’s no excuse for insulting me! You PMP exam topics 300-320 questions pdf are 300-320 questions pdf Ma’s PMP exam topics PMP exam topics own blood son, but did PMP exam topics she take on that time PMP exam topics Tony Fontaine shot you in the leg? 70-532 answer analysis No, she 70-532 answer analysis just 300-320 questions pdf sent for old Doc 70-532 answer analysis Fontaine to dress it and asked the doctor what ailed Tony’s aim. Said she guessed licker was spoiling his marksmanship. Remember how mad that made Tony?”Both boys yelled 70-532 answer analysis with laughter.“Ma’s a card!” said Brent with loving approval. “You can always count on her to do the right thing 300-320 questions pdf and 70-532 answer analysis not embarrass you in front of PMP exam topics folks.”  But Gerald remained Gerald. 300-320 questions pdf His habits PMP exam topics of living and his ideas changed, but his manners he would 300-075 certification exam not change, 300-075 certification exam even had he been 70-532 answer analysis able to change them. He admired 300-320 questions pdf the drawling 300-075 certification exam elegance of the 300-075 certification exam wealthy rice and cotton planters, who rode into Savannah from their moss-hung kingdoms, mounted 70-532 answer analysis on 300-320 questions pdf thoroughbred horses and followed by the carriages of their 300-320 questions pdf equally elegant ladies 70-532 answer analysis and the wagons 300-320 questions pdf of their slaves. But Gerald could never attain elegance. 70-532 answer analysis Their lazy, blurred voices fell pleasantly 300-075 certification exam 300-075 certification exam 300-320 questions pdf on PMP exam topics his PMP exam topics ears, but his 300-075 certification exam PMP exam topics own 300-075 certification exam brisk brogue clung to his tongue. He liked the casual 70-532 answer analysis 300-075 certification exam grace with which they PMP exam topics conducted affairs 300-320 questions pdf of importance, 300-320 questions pdf risking 300-320 questions pdf a fortune, a plantation or a slave 70-532 answer analysis 300-075 certification exam on the 300-075 certification exam turn 70-532 answer analysis of a card and writing off their losses with careless good humor and no more ado than when they scattered 300-320 questions pdf pennies to pickaninnies. But Gerald had known poverty, and PMP exam topics he could never PMP exam topics learn to lose money with 70-532 answer analysis good 300-075 certification exam humor or good 300-320 questions pdf 70-532 answer analysis 300-320 questions pdf grace. They were PMP exam topics a pleasant race, these coastal Georgians, with their soft-voiced, 70-532 answer analysis PMP exam topics quick rages and their charming inconsistencies, and Gerald liked them. But 300-075 certification exam there was a 300-075 certification exam brisk and 70-532 answer analysis restless vitality 300-075 certification exam about the young Irishman, fresh from a country where winds blew wet and chill, where misty swamps held no fevers, that 300-075 certification exam set him apart from these indolent gentle-folk of semi-tropical weather and malarial marshes.

Untuk mengurangi kompleksitas tutorial ini, saya hanya menyediakan satu mesin HAProxy dan satu mesin etcd. Fokus tulisan ini adalah untuk ketersediaan PostgreSQL. Untuk membuat ketersediaan HAProxy dan etcd akan dibahas lain kali bila ada waktu [baca: kalau tidak malas].

Agar tidak membingungkan, saya selalu mempraktikkan penamaan kluster ditambah dengan prefiks nama aplikasi. Hal ini penting karena di perawanan yang sudah semakin terotomatisasi, kadang kita suka bingung kalau konfigurasi sudah tidak ada lagi.

konfigurasi

Konfigurasi server yang dipakai

Yak, intinya ada 5 mesin untuk tutorial kali ini. Saya menggunakan GNU/Linux Debian 9 karena itu standar sistem operasi UI. Untuk sistem operasi lain saya rasa tidak ada yang berbeda karena kali ini saya tidak menggunakan paket repositori.

Untuk memudahkan, pastikan kelima mesin ini memiliki berkas /etc/hosts yang berisi kelima host.

$ sudo tee -a  /etc/hosts << EOF
192.168.100.1   haproxy0-nyata
192.168.100.2   etcd0-nyata
192.168.100.3   pg1-nyata
192.168.100.4   pg2-nyata
192.168.100.5   pg3-nyata
EOF

Selanjutnya, akan dibuatkan etcd terlebih dahulu sebagai inti yang mengatur kluster.

ETCD

Aplikasi etcd adalah sebuah basisdata konfigurasi yang digunakan status. Aplikasi etcd tidak ada di repositori Debian 9. Saya mengunduh versi terbaru dari CoreOS dan memasang manual.

wget https://github.com/coreos/etcd/releases/download/v3.3.1/etcd-v3.3.1-linux-amd64.tar.gz
tar xvfz etcd-v3.3.1-linux-amd64.tar.gz
sudo cp etcd-v3.3.1-linux-amd64/etcd /usr/local/bin

Konfigurasi

Aplikasi etcd berisi satu binari. Untuk konfigurasi, buat manual.

$ sudo /etc/etcd.conf.yml << EOF
# This is the configuration file for the etcd server.

# Human-readable name for this member.
name: 'etcd0-nyata'

# Path to the data directory.
data-dir: /var/lib/etcd/data

# Path to the dedicated wal directory.
wal-dir: /var/lib/etcd/wal

# Number of committed transactions to trigger a snapshot to disk.
snapshot-count: 10000

# Time (in milliseconds) of a heartbeat interval.
heartbeat-interval: 100

# Time (in milliseconds) for an election to timeout.
election-timeout: 1000

# Raise alarms when backend size exceeds the given quota. 0 means use the
# default quota.
quota-backend-bytes: 0

# List of comma separated URLs to listen on for peer traffic.
listen-peer-urls: http://192.168.100.2:2380

# List of comma separated URLs to listen on for client traffic.
listen-client-urls: http://localhost:2379,http://192.168.100.2:2379

# Maximum number of snapshot files to retain (0 is unlimited).
max-snapshots: 5

# Maximum number of wal files to retain (0 is unlimited).
max-wals: 5

# Comma-separated white list of origins for CORS (cross-origin resource sharing).
cors: 

# List of this member's peer URLs to advertise to the rest of the cluster.
# The URLs needed to be a comma-separated list.
initial-advertise-peer-urls: http://192.168.100.2:2380

# List of this member's client URLs to advertise to the public.
# The URLs needed to be a comma-separated list.
advertise-client-urls: http://192.168.100.2:2379

# Discovery URL used to bootstrap the cluster.
discovery: 

# Valid values include 'exit', 'proxy'
discovery-fallback: 'proxy'

# HTTP proxy to use for traffic to discovery service.
discovery-proxy: 

# DNS domain used to bootstrap initial cluster.
discovery-srv: 

# Initial cluster configuration for bootstrapping.
initial-cluster: etcd0-scele=http://192.168.100.2:2380,

# Initial cluster token for the etcd cluster during bootstrap.
initial-cluster-token: 'etcd-nyata-cluster'

# Initial cluster state ('new' or 'existing').
initial-cluster-state: 'new'

# Reject reconfiguration requests that would cause quorum loss.
strict-reconfig-check: false

# Valid values include 'on', 'readonly', 'off'
proxy: 'off'

# Time (in milliseconds) an endpoint will be held in a failed state.
proxy-failure-wait: 5000

# Time (in milliseconds) of the endpoints refresh interval.
proxy-refresh-interval: 30000

# Time (in milliseconds) for a dial to timeout.
proxy-dial-timeout: 1000

# Time (in milliseconds) for a write to timeout.
proxy-write-timeout: 5000

# Time (in milliseconds) for a read to timeout.
proxy-read-timeout: 0

# Enable debug-level logging for etcd.
debug: false

# Specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG'.
log-package-levels: 

# Force to create a new one member cluster.
force-new-cluster: true
EOF

Layanan

Agar dapat dijalankan secara sistem, perlu dibuatkan layanan systemd secara manual.

$ sudo tee -a /etc/systemd/system/etcd.service << EOF
[Unit]
Description=etcd key-value store
Documentation=https://github.com/coreos/etcd
After=network.target

[Service]
User=etcd
Group=etcd
Type=notify
ExecStart=/bin/bash --login -c "/usr/local/bin/etcd --config-file /etc/etcd.conf.yml"
Restart=always
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target
EOF

Pengaktifan Layanan etcd

Perhatikan bahwa untuk contoh kali ini saya menggunakan akun etcd dan grup etcd. Praktik aman selalu jalankan layanan sebagai pengguna biasa, bukan root. Buat pengguna baru ini.

sudo adduser --system --home /var/lib/etcd --group etcd

Bagian terakhir dari etcd adalah mengaktifkan dan menjalankan layanan etcd.

sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd

Baris daemon-reload adalah agar systemd membaca konfigurasi yang baru saja dibuat. Baris enable untuk mendaftarkan etcd sebagai layanan yang dijalankan otomatis saat mesin baru mulai. Baris terakhir untuk menjalankan layanan etcd.

PostgreSQL

Berbeda dengan tutorial yang lalu, saya akan membuat konfigurasi per mesin agar lebih menggambarkan apa yang terjadi. Sebelum memulai, saya asumsikan bahwa setiap mesin PostgreSQL pengguna root memiliki kunci SSH sehingga antar mesin bisa masuk tanpa kunci.

Cara paling gampang, di salah satu mesin buat kunci.

ssh-keygen -t ecdsa

Lalu, taruh kunci publik dan privat ke root. Saya asumsikan bahwa kita bekerja di mesin pg1-nyata.

# asumsi kerja di mesin pg1-nyata
sudo mkdir /root/.ssh/
sudo cp ~/.ssh/id_ecdsa /root/.ssh/
cat ~/.ssh/id_ecdsa.pub | sudo tee -a /root/.ssh/authorized_keys

# Transfer
scp ~/.ssh/id_ecdsa ~/.ssh/id_ecdsa.pub pg2-nyata:/tmp
scp ~/.ssh/id_ecdsa ~/.ssh/id_ecdsa.pub pg3-nyata:/tmp

# ke mesin pg2-nyata
ssh pg2-nyata
sudo mkdir /root/.ssh/
sudo cp ~/.ssh/id_ecdsa /root/.ssh/
cat ~/.ssh/id_ecdsa.pub | sudo tee -a /root/.ssh/authorized_keys
rm /tmp/id_ecdsa*
exit

# ke mesin pg3-nyata
ssh pg3-nyata
sudo mkdir /root/.ssh/
sudo cp ~/.ssh/id_ecdsa /root/.ssh/
cat ~/.ssh/id_ecdsa.pub | sudo tee -a /root/.ssh/authorized_keys
rm /tmp/id_ecdsa*
exit

Ini saya pasang secara manual. Biasanya untuk Vagrant, Proxmox, dan sejenisnya sudah menyediakan opsi pemasangan kunci SSH di konfigurasi/plugin mereka. Namun, untuk kelengkapan tutorial ini saya tuliskan saja manual. Saya sendiri sebenarnya hanya memasang satu mesin; memasang PostgreSQL; dan baru diklon menjadi dua mesin lainnya.

Pemasangan PostgreSQL

Saya kali ini menggunakan PostgreSQL yang saya kompilasi sendiri. Mengapa? Karena hasil kompilasi lebih irit dan saya mau ada variasi tulisan. Di blog saya ada kok cara-caranya untuk memasang versi repo.

Pemasangan PostgreSQL setiap mesin sama. Untuk memasang paket ketergantungan di setiap mesin jalankan:

sudo apt -y install build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev pkg-config libsystemd-dev

Unduh PostgreSQL. Saya memakai versi stabil terbaru, 10.2. Kebetulan juga, saya ada peladen cermin di samping ruangan:

wget http://kambing.ui.ac.id/postgresql/source/v10.2/postgresql-10.2.tar.bz2
tar xvfj postgresql-10.2.tar.bz2
cd postgresql-10.2
sed -i '/DEFAULT_PGSOCKET_DIR/s@/tmp@/run/postgresql@' src/include/pg_config_manual.h
./configure --prefix=/usr --with-icu --with-openssl --with-systemd --enable-thread-safety --docdir=/usr/share/doc/postgresql-10.2 CFLAGS="-O3 -march=native -mtune=native -pipe"
make -j$(nproc)
sudo make install

Saya melakukan optimasi CFLAGS untuk kompilasi. Hal ini karena saya tahu bahwa peladen di tempat saya itu homogen. Tapi, kalau misalnya Anda memasang di penyedia awan, sebaiknya  CFLAGS jangan disertakan.

Selanjutnya pemasangan Patroni.

Patroni

Patroni merupakan skrip Python. Untuk memasang Patroni, pastikan Python PIP dipasang. Saya memilih Python3. Namun, biasanya yang digunakan Python2. Saya memakai Python3 karena saya keren.

sudo apt install python3-pip
sudo pip3 install --upgrade setuptools

Pasang Patroni dan plugin etcd-nya.

sudo pip3 install psycopg2-binary
sudo -E pip3 install patroni[etcd]

Buat pengguna postgres

sudo adduser --system --home /var/lib/postgresql --group postgres

Buatkan layanan sistem.

$ sudo tee /etc/systemd/system/patroni.service << EOF
[Unit]
Description=Runners to orchestrate a high-availability PostgreSQL
After=syslog.target network.target
 
[Service]
Type=simple
 
User=postgres
Group=postgres
 
Environment="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
ExecStart=/usr/local/bin/patroni /etc/patroni.yml
 
KillMode=process
 
TimeoutSec=30
 
Restart=no
 
[Install]
WantedBy=multi-user.target
EOF

Selanjutnya, buat konfigurasi per mesin.

Konfigurasi Per Mesin

Buat konfigurasi per mesin /etc/patroni.yml

scope: postgres
namespace: /pg-nyata/
name: pg1-nyata
 
restapi:
    listen: 192.168.100.3:8008
    connect_address: 192.168.100.3:8008
 
etcd:
    host: 192.168.100.2:2379
 
bootstrap:
    dcs:
        ttl: 30
        loop_wait: 10
        retry_timeout: 10
        maximum_lag_on_failover: 1048576
        postgresql:
            use_pg_rewind: true
 
    initdb:
    - encoding: UTF8
    - data-checksums
 
    pg_hba:
    - host replication replicator 127.0.0.1/32 md5
    - host replication replicator 192.168.100.3/0 md5
    - host replication replicator 192.168.100.4/0 md5
    - host replication replicator 192.168.100.5/0 md5
    - host all all 0.0.0.0/0 md5
 
    users:
        admin:
            password: aiwaQuaeHuojeuyai2fiemai6Reeneix
            options:
                - createrole
                - createdb
 
postgresql:
    listen: 192.168.100.3:5432
    connect_address: 192.168.100.3:5432
    data_dir: /var/lib/postgresql/10.2-patroni
    pgpass: /tmp/pgpass
    authentication:
        replication:
            username: replicator
            password: zee0ohjisai5ohCohsaegho5gaeN8Xei
        superuser:
            username: postgres
            password: saichae9Aich0xeen2Otethaduphiepo
    parameters:
        unix_socket_directories: '.'
 
tags:
    nofailover: false
    noloadbalance: false
    clonefrom: false
    nosync: false

Contoh konfigurasi yang tertulis untuk mesin pg1-nyata. Untuk pg2-nyata dan pg3-nyata ubah baris ke-3 name dengan nama mesin, dan setiap baris listen dan connect_address dengan IP per mesin.

Contoh perbedaan pg1-nyata dan pg2-nyata.

$ diff pg{1,2}-nyata/etc/patroni.yml -u
--- pg1-nyata/etc/patroni.yml   2018-03-08 10:03:26.502995392 +0700
+++ pg2-nyata/etc/patroni.yml   2018-03-08 10:08:35.869743378 +0700
@@ -1,14 +1,14 @@
 scope: postgres
 namespace: /pg-nyata/
-name: pg1-nyata
- 
+name: pg2-nyata
+
 restapi:
-    listen: 192.168.100.3:8008
-    connect_address: 192.168.100.3:8008
- 
+    listen: 192.168.100.4:8008
+    connect_address: 192.168.100.4:8008
+
 etcd:
     host: 192.168.100.2:2379
- 
+
 bootstrap:
     dcs:
         ttl: 30
@@ -17,28 +17,28 @@
         maximum_lag_on_failover: 1048576
         postgresql:
             use_pg_rewind: true
- 
+
     initdb:
     - encoding: UTF8
     - data-checksums
- 
+
     pg_hba:
     - host replication replicator 127.0.0.1/32 md5
     - host replication replicator 192.168.100.3/0 md5
     - host replication replicator 192.168.100.4/0 md5
     - host replication replicator 192.168.100.5/0 md5
     - host all all 0.0.0.0/0 md5
- 
+
     users:
         admin:
             password: aiwaQuaeHuojeuyai2fiemai6Reeneix
             options:
                 - createrole
                 - createdb
- 
+
 postgresql:
-    listen: 192.168.100.3:5432
-    connect_address: 192.168.100.3:5432
+    listen: 192.168.100.4:5432
+    connect_address: 192.168.100.4:5432
     data_dir: /var/lib/postgresql/10.2-patroni
     pgpass: /tmp/pgpass
     authentication:
@@ -50,7 +50,7 @@
             password: saichae9Aich0xeen2Otethaduphiepo
     parameters:
         unix_socket_directories: '.'
- 
+
 tags:
     nofailover: false
     noloadbalance: false

Semoga dengan ini tidak ada salah ganti atau terlewat.

Pengaktifan Layanan Patroni

Setelah konfigurasi dan unit layanan Patroni terpasang, layanan Patroni sudah bisa dijalankan. Untuk setiap mesin, jalankan:

sudo systemctl daemon-reload
sudo systemctl enable patroni
sudo systemctl start patroni

Satu langkah lagi.

HAProxy

Bagian yang paling mudah saya salin saja, ya, perintahnya.

sudo apt install haproxy

Konfigurasi:

$ sudo tee /etc/haproxy/haproxy.cfg << EOF
global
    maxconn 100
 
defaults
    log global
    mode tcp
    retries 2
    timeout client 30m
    timeout connect 4s
    timeout server 30m
    timeout check 5s
 
listen stats
    mode http
    bind *:7000
    stats enable
    stats uri /
 
listen postgres
    bind *:5000
    option httpchk
    http-check expect status 200
    default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
    server postgresql_192.168.100.3_5432 192.168.100.3:5432 maxconn 100 check port 8008
    server postgresql_192.168.100.4_5432 192.168.100.4:5432 maxconn 100 check port 8008
    server postgresql_192.168.100.5_5432 192.168.100.5:5432 maxconn 100 check port 8008
EOF

Lalu,

sudo systemctl restart haproxy

Selesai.

Bacaan Lebih Lanjut

Memasang Python 3 Terbaru di Debian dan Turunannya
ID Python

Memasang Python 3 Terbaru di Debian dan Turunannya

Debian menyertakan Python 3 versi 3.5 yang sebenarnya cukup untuk digunakan. Namun, untuk menambah khasanah dan tulisan di blog ini, saya berusaha menulis cara memasang Python versi terbaru. Siapa tahu ada yang berminat. Apalagi, Python menjadi seksi semenjak banyak pustaka seperti Numpy dan Pandas untuk pengolahan data besar.

Paket yang Diperlukan

Pasang pengembangan paket yang diperlukan:

sudo apt install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                         libsqlite3-dev tk-dev libpng-dev libfreetype6-dev  -y

Pasang paket GIT karena perkakas untuk memasang memerlukan akses GIT:

sudo apt install git

Perkakas pyenv

Perkakas pyenv adalah sebuah perkakas yang bisa memasang berbagai versi Python dan mengaktifkannya sesuai selera.

 wget -O- https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer  | bash

Perkakas pyenv akan memasang skrip yang dibutuhkan untuk memasang Python. Setelah memasang pyenv, tambahkan tiga baris berikut ke ~/.bashrc dengan penyunting teks favorit Anda.

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Untuk bisa langsung mengaktifkan, langsung jalankan:

source ~/.bashrc

Pemasangan Python

Setelah perkakas pemasang selesai dipasang, langsung saja pasang Python 3 terbaru:

pyenv install 3.6.4

Setelah selesai pemasangan, kasih nama lingkungan Python versi 3.6.4 itu agar nanti kalau butuh versi ini gampang diaktifkan.

pyenv virtualenv 3.6.4 versi_3.6.4

Versi Global

Sampai baris ini, bila kita mengetik:

$ python --version
Python 2.7.13

akan terlihat versi baku untuk pengguna yang aktif adalah Python 2.7.13 (Debian Stretch). Agar versi yang telah dikompilasi menjadi versi yang baku, jalankan:

pyenv global versi_3.6.4

Selesai.

Bacaan Lebih Lanjut

Pemasangan Oneplus 5: Bagian 1
Super Android, recharge!

Pemasangan Oneplus 5: Bagian 1

Oneplus 5

Oneplus 5 package

Sebegitu rindunya saya memiliki Oneplus 5 sehingga saya pun terpaksa menelan harga diri dan menerima paket Oneplus 5 dengan bonus Beats. Ingat! Saya tidak menggunakan Beats, jadi jangan hakimi saya!

Paket yang saya beli memberikan saya satu karet pelindung, satu pelindung layar, dan satu Beats. Sayangnya, dari ketiganya hanya karet pelindung yang saya pakai sementara. Sisanya akan teronggok di gudang.

Langkah yang pertama ketika membuka Oneplus 5, seperti versi sebelumnya, saya mengganti ROM pabrikan. Hal ini penting karena ada beberapa fitur yang perlu:

  • AdAway untuk DNS anti iklan.
  • F-Droid untuk penyedia aplikasi GPL v3.
  • Membuang aplikasi yang tak perlu.
  • Deodexed, penjadwal kernel, dan beberapa fitur lainnya.
  • Dan beberapa aplikasi yang tak baik untuk disebut di sini.

Saya sebenarnya lebih suka ROM non-OOS (non-Oxygen OS). Namun, apa daya karena masih baru, ada galat seperti dukungan Bluetooth dan beberapa galat lainnya membuat saya masih berpaling ke ROM berbasis OOS.

Setelah riset beberapa saat, saya memutuskan untuk memilih berikut:

Aktifkan Debug

Dari Settings → About phone, ketuk beberapa kali pada baris Build number untuk mengaktifkan Developer options. Keluar dari About phone akan ada menu baru Developer options.

Aktifkan OEM unlocking untuk memasang ROM pemulihan terkustomisasi, TWRP.

Aktifkan USB Debugging agar dapat dikenali di komputer.

Setelah ini, sambungkan ke komputer. Telepon akan menanyakan apakah komputer dapat dipercaya. Silakan dicentang dan setujui. Bila benar, maka Oneplus akan dikenali:

$ adb devices
List of devices attached
b0cb66  device


Selanjutnya memasang BOOT.

Memasang Boot

Nyalakan ulang Oneplus ke mode Fastboot:

adb reboot bootloader

Buka segel Oneplus:

sudo fastboot oem unlock

Saya asumsikan Anda sudah mengunduh twrp-3.1.1-1-cheeseburger.img di komputer Anda.

sudo fastboot flash recovery twrp-3.1.1-1-cheeseburger.img

Nyalakan ulang dan masuk ke Recovery:

adb reboot recovery

Salah satu kekurangan ketika dibuka kunci, perangkat Oneplus pasti mengaktifkan fungsi semacam menu GRUB sebelum masuk. Ya, tinggal pencet tombol Power, sih, untuk Start kalau tidak sabar menunggu beberapa detik.

Memasang ROM

Ketika di dalam mode Recovery, Anda dapat menggunakan menu-menu TWRP untuk memasang sistem. Tetapi, apa serunya? Saya menggunakan terminal dan TWRP.

Format Partisi Lama

Pada menu TWRP, pilih Wipe → Advanced Wipe

Pilih partisi-partisi berikut untuk dihapus:

  • Dalvik/ART Cache
  • Cache
  • System
  • Data

Sisakan Internal Storage dan USB-OTG. Lalu, Swipe to Wipe

Wipe before install

Tekan tombol kembali tiga kali untuk kembali ke menu utama.

Menaruh Berkas-berkas

Taruh berkas-berkas yang diperlukan ke Oneplus.

ROM

adb push xXx_NoLimits_1.6_OP5_Oxygen_4.5.5.zip /sdcard/

Kernel

Pemasang ROM xXx akan mengenali kernel Adin bila ditaruh pada direktori yang tepat:

adb shell mkdir /sdcard/xXx
adb push Adin-Kernel-R6-OP5-OOS-N.zip /sdcard/xXx

Pasang ROM

Untuk memasang, di menu utama ketuk menu Install.

Pilih ZIP ROM xXx yang telah diunggah tadi.

Swipe to confirm Flash

Perhatikan bahwa kita tidak perlu memilih kernel Adin karena akan dideteksi nanti.

xXx Aroma Installer

Pilih Make your individual Selections karena saya suka kebebasan!

Pastikan pilihan berikut tercentang:

Reboot Options:

  • Reboot after Flashing

Root Access:

  • Magisk v13 by topjohnwu

xXx Tweaks:

  • xXx Tweaks Framework
  • Windows Animation Scales

Kernel:

  • Kernel Selection Menu

SDcard Fix:

  • Fix SDcard permissions

Update Radio and Firmware

  • Flash Radio and Firmware

Reset Magisk Repository Image

  • Reset Magisk Image (pastikan ini dipilih supaya bersih)

Ketuk Next untuk ke halaman selanjutnya.

Laman ini laman preferensi. Jadi, silakan saja pilih sesuka hati. Namun, berikut pilihan saya.

Launcher Selection:

  • OnePlus Launcher (saya pilih ini biar terasa rasa Oneplus-nya)

Sound Mods saya tidak pilih satu pun karena semua musik yang saya taruh saya rip dari CD yang saya beli sendiri.  Silakan pilih kedua pilihan yang ada kalau Anda mau.

Debloating:

  • Extreme Debloating

Emojis:

  • Oneplus Stock Emojis 

Ketuk Next untuk ke halaman selanjutnya.

Windows Animation Speeds:

  • Fast Animations (tergantung selera)

Ketuk Next untuk ke halaman selanjutnya.

Kernel Selections:

  • STOCK KERNEL
  • Adin Kernel – by adinkwok

Ketuk Next untuk ke halaman selanjutnya.

Ketuk Next untuk untuk memulai pemasangan sistem.

Bila benar, maka setelah selesai pemasangan, sistem akan dinyalakan ulang dan masuk ke sistem yang baru. Selanjutnya, pemasangan Oneplus seperti biasa.

Memasang Laravel pada Debian Jessie

Memasang Laravel pada Debian Jessie

Laravel bisa dengan PHP 5.6, tetapi lebih baik gunakan versi 7 saja. Versi 7 ada di DotDeb.

Persiapan

Pemasangan repo DotDeb dengan membuat /etc/apt/sources.list.d/dotdeb.list

echo "deb http://packages.dotdeb.org jessie all" | sudo tee -a /etc/apt/sources.list.d/dotdeb.list
echo "deb-src http://packages.dotdeb.org jessie all" | sudo tee -a /etc/apt/sources.list.d/dotdeb.list

Daftarkan kunci  repositori DotDeb dan kemudian perbaharui daftar paket.

wget -O- https://www.dotdeb.org/dotdeb.gpg  | sudo apt-key add
sudo apt update

Pasang Perkakas

Pasang hal-hal remeh.

sudo apt install unzip git

Pasang PHP7.

sudo apt install php-cli php-pgsql php-mysql php-sqlite3 php-mbstring php-xml php-zip

Pasang Composer.

sudo wget https://getcomposer.org/download/1.4.2/composer.phar -O /usr/local/bin/composer && sudo chmod +x /usr/local/bin/composer

Tambahkan PATH untuk Composer.

echo "PATH=\$PATH\:\$HOME/.composer/vendor/bin"  >> ~/.bashrc

Tak perlu keluar:

source ~/.bashrc

Pasang Laravel.

composer global require "laravel/installer"

Selesai.

 The twins looked at each other jubilantly but with some surprise. Although 70-534 answer analysis they 70-534 answer analysis considered themselves Scarlett’s favored suitors, they had never before gained tokens ADM-201 exam dumps of this favor so easily. Usually she made them beg and plead, while she put them off, CISSP exam topics refusing to give a 70-534 answer analysis Yes or No answer, laughing if they sulked, growing cool if they became angry. And here she had practically promised them 70-534 answer analysis the ADM-201 exam dumps whole of tomorrow—seats by her at 70-534 answer analysis the barbecue, all the waltzes (and they’d see to it that the dances were CISSP exam topics all waltzes!) and the supper intermission. This was worth getting expelled from the university.Filled ADM-201 exam dumps with new enthusiasm by their success, they CISSP exam topics lingered on, talking about the barbecue 70-534 answer analysis and the ball and Ashley Wilkes 300-208 study material CISSP exam topics and Melanie Hamilton, CISSP exam topics interrupting each other, making jokes and laughing at them, hinting broadly for invitations 300-208 study material to supper. ADM-201 exam dumps Some time had passed before they realized that Scarlett was having very little to say. The atmosphere had somehow changed. Just how, the twins did not know, but the fine glow had gone out of the afternoon. Scarlett seemed to ADM-201 exam dumps be paying little attention to 70-534 answer analysis what they 300-208 study material 70-534 answer analysis ADM-201 exam dumps said, although she made the correct answers. Sensing something they 300-208 study material could not understand, baffled and annoyed by it, the twins struggled along for a while, and then rose reluctantly, ADM-201 exam dumps looking at their 300-208 study material watches.The sun was low CISSP exam topics across the new-plowed fields and the tall woods across the river ADM-201 exam dumps were looming ADM-201 exam dumps blackly in silhouette. Chimney swallows were darting swiftly across the yard, and chickens, ducks and turkeys were waddling 70-534 answer analysis and strutting and straggling in from the fields.Stuart bellowed: “Jeems!” And after an interval a 70-534 answer analysis tall black boy of their own age ran breathlessly around CISSP exam topics the house and out toward the ADM-201 exam dumps tethered horses. Jeems was their 300-208 study material body servant and, like CISSP exam topics the dogs, accompanied them everywhere. He had been CISSP exam topics their childhood playmate and had been given to the twins for their own ADM-201 exam dumps on their tenth birthday. At the sight of him, CISSP exam topics CISSP exam topics the Tarleton hounds rose up out of the red dust and stood waiting expectantly for their masters. The 300-208 study material boys bowed, shook hands and 300-208 study material told CISSP exam topics Scarlett they’d be over 300-208 study material at the 300-208 study material Wilkeses’ early in the morning, waiting for her. Then CISSP exam topics they were ADM-201 exam dumps off down the 70-534 answer analysis walk CISSP exam topics at a rush, mounted their horses and, followed by ADM-201 exam dumps ADM-201 exam dumps Jeems, went down the avenue of cedars at a gallop, waving their hats and yelling back to her.When they had rounded the curve of the dusty road that hid them from Tara, Brent drew his horse to a ADM-201 exam dumps stop under a clump of dogwood. Stuart halted, 70-534 answer analysis too, and the darky boy pulled up a few paces behind 300-208 study material them. The horses, feeling slack reins, 300-208 study material stretched down their necks to crop the tender spring grass, and the patient hounds lay down again in the 300-208 study material CISSP exam topics soft red dust and looked up longingly at the chimney swallows circling in the gathering dusk. 300-208 study material Brent’s wide ingenuous face was puzzled and mildly indignant.“Look,” he said. “Don’t it look to you like she 70-534 answer analysis would of asked us to stay for supper?”  Nor did 70-534 answer analysis James and Andrew, who took him into their store in Savannah, regret his lack of education. His clear hand, his 300-208 study material accurate CISSP exam topics figures and his shrewd ADM-201 exam dumps ability in bargaining won their respect, where a knowledge 70-534 answer analysis of literature and a fine appreciation of music, had young 300-208 study material Gerald possessed them, would have moved them to snorts of contempt. America, in the early years of the century, had been kind to the Irish. James and Andrew, who had begun by hauling goods in covered wagons 70-534 answer analysis from Savannah to Georgia’s inland towns, had prospered into a store of their own, and Gerald prospered with them.
Memasang Golang Terbaru

Memasang Golang Terbaru

Debian Jessie memiliki Go versi lawas di repositorinya. Hal ini membuat beberapa aplikasi Go seperti Hydra SSO tidak bisa berjalan. Untuk itu, harus dipasang Go versi manual.

Pertama-tama, pergi ke laman unduh di situs resmi Go. Saat penulisan versi Go yang terbaru adalah 1.8.3. Lalu, salin tautan unduhan untuk dipakai.

Unduh dan taruh Go ke direktori tertentu. Kalau saya, lebih suka di /opt

wget -O- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz | sudo tar xvfz - -C /opt

Go memerlukan direktori Go untuk pengguna dan direktori Go sendiri untuk bisa dieksekusi. Maka, buatlah berkas /etc/profiles.d/golang.sh yang berisi:

export GOROOT=/opt/go
export GOPATH=$HOME/.go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Selesai.

Oh, iya, supaya tidak usah keluar, langsung saja eksekusi:

source /etc/profile.d/golang.sh

 

WordPress JP: Installing LAMP Stack with ZFS

WordPress JP: Installing LAMP Stack with ZFS

A REVISION WAS LOST! PLEASE TAKE A LOOK AT THE BOTTOM PAGE FOR GRUB SETTING BEFORE REBOOT.

I’m in fast writing mode as this is probably won’t intended to be understood by most people. I’m writing in this blog as I moving forward installing. To keep writing  and translating from my tacit into Bahasa Indonesia is kind of laboring. Perhaps, if you want, I would reiterate what I do here with better Bahasa Indonesia. But, now, let’s live speed writing.

Preparations

I’ve got Ubuntu 14.04 Live USB on my arsenal. Boot it up and setup some trivial like IP, DNS and stuff. I modify APT sources.list to match my nearest server.

deb http://kambing.ui.ac.id/ubuntu/ trusty main restricted
deb http://kambing.ui.ac.id/ubuntu/ trusty-security main restricted
deb http://kambing.ui.ac.id/ubuntu/ trusty-updates main restricted

Do the update and install SSH and VIM.

sudo -i
apt-get update
apt-get install ssh vim
passwd ubuntu

I need SSH because I can’t stand on server room too long. I’m not going to go on religious war on ViM vs Emacs. Last, change ubuntu user password.

And now the show live from my comfy SSH terminal laptop.

Install Ubuntu ZFS for Ubuntu Live Session

Straight from the doc.

sudo -i
apt-add-repository --yes ppa:zfs-native/stable
apt-get update
apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs
modprobe zfs

You may wondering why I’m not upgrading first. Upgrading a temporary system is wasting time, especially one with GUI installed. Okay, now we get to the formatting.

Create A ZFS Pool

I have 2 SATA and 1 SSD. The best for server should be two SSDs. But, hey, beggar can’t choose.

ZFS config: 2 Disks + 1 SSD.

ZFS config: 2 Disks + 1 SSD.

Using GParted, I turned SSD into GPT with 3 partitions:

  • The first 200MB for /boot partition. Some twisted soul refused to use separated partition for /boot, well, good for you! I go with the conservative.
  • 8GB used for ZIL (ZFS Intent Log) drive. ZFS usually use 8GB max for journaling.
  • The rest used for ZFS Cache (ZARC).

But, hey, where is the EFI partition?

I’ve just recently found out that when you give your whole disk to ZFS, it would format the disk into two partitions. One big partition (sX1) for the use of ZFS and one 8MB partition (sdX9) for EFI partition (FAT). Yeah, ZFS automatically turn the disk into GPT partitioning scheme. After adding the two disks into a ZFS pool, the partitions will be like this:

sda: sda1 sda9, sdb: sdb1 sdb9

I’m doing mirroring for sda and sdb. I wish I have one more SSD. I would mirror two partitions on separated SSDs for ZIL. If you are luckier than me, do it! It is for safety measure. But, don’t mirror the cache because it’s wasting space.

Here’s the reality:

zpool  create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log sdc2 cache sdc3

If I may have a dream with two SSDs:

zpool create -f -o ashift=12 -o altroot=/mnt -m none rpool mirror sda sdb log mirror sdc2 sdd2 cache sdc3 sdd3

Disable access time, enable relative time and enable LZ4 compression on tanks.

zfs set atime=off rpool
zfs set relatime=on rpool
zfs set compression=lz4 rpool

If nothing is wrong, we would got:

# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda     ONLINE       0     0     0
        sdb     ONLINE       0     0     0
    logs
      sdc2      ONLINE       0     0     0
    cache
      sdc3      ONLINE       0     0     0

errors: No known data errors

Next, the partitioning. After this, I’m doing things from Crossroad’s tutorial with some tweaks.

Create Partition

As Debian configuration:

zfs create -o mountpoint=none rpool/ROOT
zfs create -o mountpoint=/ rpool/ROOT/debian-1
zpool set bootfs=rpool/ROOT/debian-1 rpool

What? Yes, I’m installing Debian not Ubuntu.

Last, export the pool we’ve created for later import. We do this so that the ZFS config would read from disk by ID instead of common UDEV naming. Believe me, you don’t want to use UDEV naming (sda, sdb, etc.) on ZFS.

zpool export rpool

Now, we can start installing Debian system.

Install Debian

Reimport ZFS pool and create a ZFS configuration cache file.

zpool import -d /dev/disk/by-id -R /mnt rpool
mkdir -p /mnt/etc/zfs
zpool set cachefile=/mnt/etc/zfs/zpool.cache rpool

REMEMBER: (Straight from the ZFS FAQ)

Run update-initramfs -c -k all after any /sbin/zpool command changes the /etc/zfs/zpool.cache file.

This is the reason of random failures from mounting ZFS root partition.

Install the system and mount all the basic system partitions.

debootstrap --arch=amd64 jessie /mnt http://kambing.ui.ac.id/debian/

And now, configure.

Configure Debian

Hostname.

echo gantenghost > /mnt/etc/hostname
sed -i -Ee "s#(127.+)#\1 gantenghost#" /mnt/etc/hosts

Create configuration for network interfaces. In the spirit of new configuration scheme, I put two files in /etc/network/interfaces.d/

# cat > /mnt/etc/network/interfaces.d/eth0 << .
auto eth0
iface eth0 inet dhcp
.

and

# cat > /mnt/etc/network/interfaces.d/lo << .
auto lo
iface lo inet loopback
.

Mount all the system filesystems.

for f in dev dev/pts proc sys; do mount -v --bind {,/mnt}/$f; done

Chroot there

chroot /mnt /bin/bash

In Debian Configuration

Locales.

apt-get install locales
sed -i -Ee 's/# (en_US.UTF+)/\1/' /etc/locale.gen
locale-gen

Timezone.

dpkg-reconfigure tzdata
apt-get install ntp
/etc/init.d/ntp stop

Remember when I said I’m going to put /boot on different partition? Now is the time.

echo "/dev/sdc1 /boot ext4 rw,relatime,stripe=4,data=ordered 0 0" >> /etc/fstab
mount /boot

Remember also what I said about using the ninth partition of the first disk? Now is the time.

apt-get install dosfstools
mkdir /boot/efi
mkfs.vfat /dev/sda9
echo "/dev/sda9 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0" >> /etc/fstab
ap

Install ZFS packages with Debian style. ZFS needs lsb-release package.

cd /tmp
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
apt-get install lsb-release
dpkg -i zfsonlinux_6_all.deb
apt-get update && apt-get install linux-image-amd64 debian-zfs
apt-get install grub2-common grub-efi zfs-initramfs

Last, add a login.

apt-get install sudo vim ssh
adduser user
adduser user sudo

Setup GRUB For ZFS Boot

There is a bug in Debian’s GRUB that makes the system unbootable. First, let’s reconfigure GRUB Default command line:

sudo dpkg-reconfigure grub-efi-amd64

Change Linux default command line (second screen after Linux command line) from

quiet

to

root=ZFS=rpool/ROOT/debian-1 rpool=rpool bootfs=rpool/ROOT/debian-1 quiet

After this, update grub and we are done.

sudo update-grub

Booting to New System

After all preparations, unmount all the filesystems

umount /boot/efi/ /boot
exit
for f in dev/pts dev proc sys; do umount /mnt/$f; done
zfs umount -a
zfs export rpool

Reboot.

Final Thought

Well, you might find some faults here and there. If not, everything after this is straightforward.

Bacaan Lebih Lanjut

Owncloud: Solusi Perangkat Lunak Bebas

Owncloud: Solusi Perangkat Lunak Bebas

Untuk memenuhi kuota menulis, saya akan menulis mengenai pemasangan Owncloud. Ini bukan karena Snowden yang memberitahukan untuk menghindari menggunakan Facebook, Google, dan Twitter. Tetapi, karena saya memang sedang iseng tentang perangkat lunak ini. Coba ada yang meminta untuk mencoba sesuatu yang lain, saya pasti menulis tentang itu.

Berbeda dengan konfigurasi biasa, saya menggunakan NGINX sebagai peladen HTTP dan PHP-FPM sebagai penyedia PHP. Hal ini karena ada WAF yang bisa dikonfigurasi nantinya apa bila Anda mau membuat ini serius. Ada banyak tambahan yang bisa dibuat dari Owncloud.

Yak, tanpa banyak basa-basi, mari kita memasang. Saya asumsikan Anda telah memasang NGINX dan MySQL pada peladen Anda. Saya juga mengasumsikan Anda menggunakan Debian atau turunannya (BlankOn atau Ubuntu).

Menyiapkan Basisdata

Pertama-tama, siapkan basisdata terlebih dahulu, masuk ke dalam terminal MySQL sebagai Administrator:

sudo mysql --defaults-file=/etc/mysql/debian.cnf

Buat basisdata dan berikan hak akses ke klien Owncloud:

CREATE DATABASE awansendiribd;
GRANT ALL PRIVILEGES ON awansendiribd.* TO 'megawan'@'localhost' IDENTIFIED BY 'week^u2heoQuuv]ah9sah]B~ahShie?t';
FLUSH PRIVILEGES;
QUIT;

Saya menggunakan pwgen untuk membuat sandi yang aman:

pwgen -y 32

Anda bisa buat sendiri sandi Anda, ganti nama basisdata, dan nama klien basisdata yang akan digunakan. Hal ini agar Owncloud Anda bisa aman. Belajarlah untuk aman.

Menyiapkan Rumah

Pada konfigurasi kali ini, saya menggunakan pengguna tersendiri untuk Owncloud. Bukan pengguna baku www-data, tetapi yang berbeda — Anda pun bisa berbeda dari tutorial ini. Caranya:

sudo adduser --home /srv/awani --disabled-password awani

Saya membedakan instalasi Owncloud dengan datanya. Mari buat kedua direktori tersebut.

sudo -u awani mkdir /srv/awani/{app,data}

Selanjutnya, unduh dan pasang Owncloud. Pada penulisan ini, yang terbaru adalah Owncloud 7.0.2. Silakan cek versi terbaru yang mungkin sudah ada saat Anda mencoba ini lagi di masa mendatang.

wget https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2 -O- | \
sudo -u awani tar xvfj - -C /srv/awani/app --strip 1

Sesuaikan dengan direktori Anda sendiri.

Menyiapkan konfigurasi Peladen

Ada dua yang perlu disiapkan:

  1. Peladen PHP-FPM untuk konfigurasi PHP5.
  2. Peladen NGINX untuk HTTPS.

Sekarang konfigurasi PHP-FPM.

Konfigurasi PHP-FPM

Buat berkas konfigurasi /etc/php5/fpm/pool.d/owncloud yang berisi:

[owncloud]
;; I'm using Socket-based connection because it's safer.
;; Set only Owncloud user
user = awani
group = awani
listen = /tmp/php5-awan-awan.sock
listen.owner = awani
listen.group = awani
listen.mode = 0660

;; Set default server pools
pm = dynamic
pm.max_children = 20 
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5 

;; Set PHP5 logging
chdir = /
php_admin_value[error_log] = /var/log/fpm-php.awan-awan.log
php_admin_flag[log_errors] = on

;; Longer execution time and bigger upload size.
php_admin_value[max_execution_time] = 300 
php_admin_value[upload_tmp_dir] = /tmp
php_admin_value[upload_max_filesize] = 16G
php_admin_value[post_max_size] = 16G

Jumlah peladen itu tidak saya rubah. Silakan Anda sesuaikan dengan kebutuhan dan kemampuan mesin Anda. Berkas yang bisa diunggah pun sampai 16GB. Secara teori, sih, berkat Menkominfo yang mau turun, tidak mungkin ada berkas sebesar itu yang diunggah.

Setelah selesai, aktifkan Owncloud dan muat ulang PHP-FPM Anda.

sudo invoke-rc.d php5-fpm restart

Sekarang saatnya mengonfigurasi NGINX.

Konfigurasi NGINX

Asal Anda tahu, CA yang beredar di pasaran masih menggunakan enkripsi 1024-bit dan 2048-bit. Kalau pun ada yang 4096-bit, mereka menjual sertifikat dengan harga mahal. Itu sebabnya, saya menggunakan sertifikat yang ditandatangani sendiri.

Sedikit tambahan, Debian dan distro GNU/Linux terbaru lainnya menolak menyertakan CA yang masih 1024-bit. Makanya tempo hari kita gagal memasang Origin. Hal ini karena Origin masih menggunakan CA yang 1024-bit. Ya, itulah nasib keamanan sebatas ilusi.

Membuat Sertifikat Ditandatangani Sendiri (Self-signed Certificate)

Mari membuat sertifikat yang bisa ditandatangani sendiri:

sudo openssl req -newkey rsa:4096 -sha512 -x509 -days 3650 -nodes -out /etc/nginx/awan-awan.pem -keyout /etc/nginx/awan-awan.key

Selanjutnya membuat konfigurasi NGINX.

Membuat Konfigurasi NGINX

Buat berkas konfigurasi /etc/nginx/sites-available/owncloud dengan isi sebagai berikut:

## REDIRECT ALL HTTP TO HTTPS
server {
        listen 80;
        server_name awan.contoh.aja; # CHANGE THE HOSTNAME!
        return 301 https://$server_name$request_uri;  # enforce https
}

## HTTPS
server {
        listen 443 ssl;
        server_name awan.contoh.aja; # CHANGE THE HOSTNAME!

        keepalive_timeout   70;

        ## DISABLE SSLv3 only TLS!
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate     awan-awan.pem;
        ssl_certificate_key awan-awan.key;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;

        # Path to the root of your installation
        root /srv/awani/app;

        client_max_body_size 16G; # set max upload size
        fastcgi_buffers 64 4K;

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

        ## REWRITE FOR BETTER CLEAN URL
        rewrite ^/f/(.*)$       /public.php?service=files&t=$1;

        index index.php;
        error_page 403 /core/templates/403.php;
        error_page 404 /core/templates/404.php;

        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }

        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                deny all;
        }

        location / {
                # The following 2 rules are only needed with webfinger
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                try_files $uri $uri/ index.php;
        }

        #Path to default data directory
        location ~ ^/srv/awani/data/ {
            internal;
            root /;
        }

        location ~ ^(.+?\.php)(/.*)?$ {
                try_files $1 = 404;

                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$1;
                fastcgi_param PATH_INFO $2;
                fastcgi_param HTTPS on;
                fastcgi_pass unix:/tmp/php5-awan-awan.sock;
        }

        # Optional: set long EXPIRES header on static assets
        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                # Optional: Don't log access to assets
                access_log off;
        }
}

Perhatikan kalau saya menghapus SSLv3 dari muka bumi. Setahu saya, hanya IE6 yang masih menggunakan SSLv3. Peramban modern sudah mendukung TLS. Bahkan, kalau mau lebih aman, silakan hapus selain TLSv1.2 agar aman dari gangguan SHARK.

Jalankan ulang NGINX.

 sudo ngxensite owncloud 
sudo invoke-rc.d nginx restart

Sekarang saatnya memulai pemasangan.

Menyiapkan Konfigurasi Owncloud

Setelah semua berjalan sebagai mana mestinya, saatnya membuka peramban dan mengarahkan ke alamat yang telah dibuat. Nanti ada wisaya yang berisi satu halaman konfigurasi pengguna awal (Administrator), letak data, dan konfigurasi basisdata. Saya malas membuat cuplikannya, lebih baik saya arahkan saja.

Bagian pertama adalah membuat Administrator Owncloud.

Create an admin account

  • superman
  • r4NdomP4$sW()Rd

Bagian berikutnya adalah direktori menaruh data.

Data folder

  • /srv/awani/data

Lalu konfigurasi MySQL.

Configure the database

  • megawan
  • week^u2heoQuuv]ah9sah]B~ahShie?t
  • awansendiribd
  • localhost

Setelah itu semua selesai, lalu tekan tombol Finish Setup.

Tunggu sebentar dan hasilnya Anda siap untuk masuk.

Owncloud Login page

Owncloud Login page

Selamat mencoba dan bereksplorasi! Mohon bagi-bagi ilmu kalau ada yang baru.

Bacaan Lebih Lanjut

Terbitnya Opera 24 untuk GNU/Linux
Opera Developer

Terbitnya Opera 24 untuk GNU/Linux

Opera 24 for GNU/Linux

Opera 24.0.1537.0 for GNU/Linux

Setelah kurang lebih setahun, Opera tidak lagi merilis versi GNU/Linux. Setelah berpindah ke Chromium, mereka lebih berkonsentrasi di versi Windows dan MacOS. Kemarin, mereka membuat kejutan dengan menerbitkan versi pengembang (24.0.1537.0).

Yang menarik, mereka pun tak lupa bercanda-canda (self-trolling) di komentar. Memang, para pengguna GNU/Linux merasa yang paling ditinggalkan setelah hilang dari peredaran selama setahun. Saya sendiri termasuk yang memrotes namun pada akhirnya meninggalkan Opera dan menuju peramban lain. Padahal, Opera salah satu peramban tertua yang mendukung GNU/Linux. Bahkan, sempat masuk ke repositori utama Debian.

Walau pun dibilang Opera for Linux, tapi nampaknya Opera kali ini lebih ditujukan kepada Ubuntu. Kalau dilihat dari gambar, nampak tematik yang digunakan adalah tematik Ubuntu. Itu sebabnya, berkas yang diunduh pun paket Debian.

Pemasangan

Pemasangan saya tulis untuk yang Debian dan non-Debian.

Cara Debian

Untuk Debian, Ubuntu, dan variannya (termasuk BlankOn), cukup unduh dan pasang.

sudo dpkg -i opera-developer_24.0.1537.0_amd64.deb

Kadang, kalau terpasang standar tanpa diutak-atik, biasanya begitu diunduh sudah langsung ditanyakan untuk dipasang. Perintah ini cuma sekedar jaga-jaga saja kalau harus memasang manual melalui terminal.

Cara Non-Debian

Saya memberikan metodologi untuk memasang secara bersih pada sistem. Kebanyakan orang memasang dengan menggunakan standar FHS yakni pada direktori “/usr/local”. Saya asumsikan bahwa paket Debian Opera sudah diunduh pada direktori yang sama.

ar p opera-developer_24.0.1537.0_amd64.deb data.tar.xz \
   | sudo tar xvfJ - --xform='s,\(/usr/\),\1local/,' --exclude=usr/share/{lintian,menu} -C/

Itu semua satu baris perintah. Lalu, kemudian buat SETUID pada opera_sandbox agar bisa dijalankan oleh pengguna biasa.

sudo chmod 4755 /usr/local/lib/x86_64-linux-gnu/opera-developer/opera_sandbox

Selesai.

Terakhir

Saya menulis ini dari Opera Developer. Cukup stabil dan cepat. Saya suka sekali fitur preview. Fitur ini memperlihatkan isi sebuah tab saat titik tetikus melewati tab tersebut tanpa harus membuka tab itu. Lumayan membantu untuk orang yang suka bertab-tab ria.

Memasang BlankOn Suroboyo

Memasang BlankOn Suroboyo

BlankOn Suroboyo sudah rilis dan ada di Kambing pada hari kasih sayang. Saya pun mencoba memasang di Virtual Box. Kebetulan laptop saya tidak saya pegang, belum bisa pasang di sana.

Tampilan Depan Pemasangan

Tampilan Depan Pemasangan

Tampilan depan dibuat baku dengan bahasa Inggris. Nampaknya BlankOn juga bervisi untuk dapat digunakan oleh dunia. Tapi, untuk kasus saya, saya ubah menjadi Bahasa Indonesia. Setelah itu pilih Pasang BlankOn.

Laman Selamat Datang dalam pemasangan BlankOn 9.0

Laman Selamat Datang dalam pemasangan BlankOn 9.0

Pada langkah berikutnya, ada pemilihan ruang penyimpan yang menjadi target pemasangan. Berhubung saya menggunakan satu ruang penyimpan saja, saya langsung pilih itu saja.

Target Pemasangan

Target Pemasangan, yakni ruang penyimpan untuk memasang BlankOn.

Selanjutnya akan masuk ke laman Personalisasi. Sayangnya, ada beberapa yang saya perlu komentari di laman ini.

Berikut yang saya hendak komentari:

  1. Nama Komputer hanya boleh huruf kecil. Padahal RFC 1123 bagian 2.1, adendum dari RFC 952, menyatakan bahwa Nama Komputer boleh alfanumerik (angka dan huruf) dan simbol “-“. Seharusnya, “rajagukguk-blankon” sebuah nama yang valid.
  2. Sandi hanya diperbolehkan kombinasi alfanumerik. Untuk saat ini, praktik penggunaan sandi dengan menggunakan karakter-karakter non-alfanumerik seperti “-_# &^%!~`” adalah lumrah. Sistem pun dapat menyimpan karakter-karakter tersebut.

Untuk mengatasi hal ini, saya menggunakan Nama Komputer sementara, “rajaon”, dan sandi yang alfanumerik. Toh, nanti setelah selesai saya bisa mengganti keduanya.

Ringkasan hasil konfigurasi

Ringkasan hasil konfigurasi sebelum pemasangan dimulai.

Pilih “BERIKUTNYA” untuk lanjut dan memasang BlankOn Suroboyo. Saya suka sekali tampilan pemasangan ini, sederhana dan cepat. Saya hanya mengalokasikan memori 512MB ke sistem operasi ini. Lumayanlah, ini cukup untuk nantinya dicoba ke komputer-komputer tua yang sering disumbangkan untuk amal.

Proses pemasangan

Pemasangan berlangsung dan saya bisa lanjut.

Biasanya di sini ada salindia tentang fitur-fitur sistem operasi. Kali ini aplikasi pemasangan BlankOn Suroboyo hanya memperlihatkan perkembangan proses pemasangan sistem. Apakah ini untuk menurunkan kebutuhan memori? Ya, tak penting juga, sih. Toh, biasanya saat proses pemasangan kita melakukan kegiatan lain.

Selesai

Selesai pemasangan

Untuk masuk ke sistem baru pilih “Jalankan ulang komputer dan gunakan sistem baru”.

Tampilan Selamat Datang BlankOn Suroboyo 9.0

Tampilan Selamat Datang BlankOn Suroboyo 9.0

BlankOn Suroboyo menyediakan dua sesi secara baku:

  • Sesi BlankOn
  • Sesi GNOME

Secara baku, menggunakan sesi BlankOn.

Klik pada tombol di samping untuk memilih sesi. Normalnya ini tak perlu dilakukan.

Klik pada tombol di samping untuk memilih sesi. Normalnya ini tak perlu dilakukan.

Ini tampilan Destop.

Kali ini saya sedang libur, sehingga saya punya waktu untuk melihat parade aplikasi yang ada di BlankOn. Aplikasi terlihat menyatu dengan tematik. Saya mau bilang satu kata untuk GeoBlankOn: KEREN! [Sengaja ditebalkan dan dimiringkan untuk menunjukkan kekaguman yang saya miliki untuk para pengembang BlankOn]

Omong-omong, skrinsut ini diambil dari GIMP yang ada di BlankOn Suroboyo. Lalu, berkas-berkas ditransfer ke komputer dengan menggunakan SFTP dari Peramban Berkas. Cukup intuitif bagi yang mau mencoba.

Beberapa catatan yang saya lakukan setelah sebentar mencoba BlankOn:

  1. Synaptic tidak ada. Synaptic memiliki fitur untuk membuat berkas teks yang berisi berkas-berkas yang perlu diunduh untuk memasang suatu aplikasi. Fitur daftar unduhan ini perlu agar dapat mengunduh berkas-berkas paket Debian yang diperlukan dari komputer lain (Warnet misalnya). Kalau Warsi menyediakan fitur ini, saya dan banyak orang yang punya koneksi terbatas sangat berterima kasih.
  2. Dokumentasi penggunaan aplikasi belum tersedia. Biasanya saya memberitahukan kepada rekan-rekan untuk membaca dokumentasi yang bagus tersebut. Namun, kali ini BlankOn Suroboyo belum memilikinya.
  3. Tidak ada pemulai aplikasi (runner). Fitur ini sangat diperlukan untuk memulai aplikasi tanpa harus dari menu. Yah, memang ini untuk pengguna lanjutan. Tapi, ini membuat kerja lebih cepat.
  4. Manokwari sepertinya masih belum mengimplementasi Pintasan papan ketik. Saya masih harus menggunakan tetikus untuk mengakses menu. Alangkah baiknya bila bisa menggunakan pintasan papan ketik seperti beberapa versi sebelum Suroboyo.
  5. Tematik yang streamlined sangat solid, nampak sekali bahwa pengembang BlankOn menggunakan waktu mereka untuk membuat sebuah produk solid. Kudos untuk pengembang BlankOn.
  6. Saya menjalankan GIMP dan menjalankan aplikasi yang saya tangkap secara bersamaan hanya dengan komputer 512MB. WOW!

Yak, begitulah kira-kira. Saya menyarankan untuk para pengguna pemula untuk masuk ke BlankOn Suroboyo. Saya sendiri mau mengambil laptop dan memasang BlankOn 9. 🙂

Booting My Lucid on ACER M3710

Booting My Lucid on ACER M3710

My old workstation is being used as a server. As a replacement, I was offered with a new desktop PC (ACER Aspire M3710).

Because this is not an advertorial, I would like to emphasis on the flaw first, which:

  • My SCSI card and the on-board SATA controller is incompatible. When I plugged the SCSI controller, the on-board SATA controller not detected.
  • No IDE controller! There goes my 250 GB data…. [sarcasm] No big deal, I only miss couple big data gathered in years. [/sarcasm]
  • BIOS aren’t made with many custom options. (Which I think normal for branded PC)
  • It by default bundled with Vista. (The most flaw, hehehe… :D)

When I booted into USB, I found out that GNU/Linux can detect both controller just fine. Yay! My SCSI and my SATA can be used together. So, I need to install Ubuntu into my SCSI drive.

After installing, I realized that not all of my 4 GB memory available. This is because 32-bit Lucid needs to install PAE (linux-image-generic-pae). So, I went and use that version.

There is a problem, as in time of writing, when installing the proprietary driver. It doesn’t work with current NVIDIA driver provided by Ubuntu. To tackle it, I’m downloading from NVIDIA site and the installation went well. Btw, installing it requiring the X server to stop and run the installer from virtual terminal (CTRL + ALT +F[1..6]).

Apart from the storage controller, everything works. I like this new desktop PC. Fast and quite. I’m thinking of reinstalling it with Kubuntu64, thought. That’s another story. Bye.

Lucid From Debootstrap

Lucid From Debootstrap

What scenarios does this would likely involved you in? Well, for instance:

  • Creating an Ubuntu system on your USB stick because your lack of faith to trust all of your system to GNU/Linux.
  • Creating new system from your Ubuntu stick because you have become the enlightened.
  • Creating a customized *buntu flavour because you have become one.
  • Killing time because you have insomnia. 😀

Most likely I’m in reason #4. This scenario is tested on GNU/Linux Debian and Ubuntu. I played with Unstable/Experimental and Lucid.

#0 Backup your data on USB stick.

Don’t tell me that I didn’t warn you! 😀

#1 Set the partition

Stick your USB and seek what is the node file it representated.

$ dmesg | tail

Now, it would come up something like

 /dev/sdb1

or

/dev/sdc1

depending how funky your system is.

#2 Format the USB stick

$ sudo mkfs.reiserfs /dev/sdb1 -l "KEREN DEH"

I’m used to label the filesystem. This label is important that you may prevent from accidentally formatting that particular partition. (Been there, done that) Oh, before the holy war begin, let me warn you that my flavour on ReiserFS is subjective, stick with whatever your fave filesystem. Here the change: EXT3: mkfs.ext3, XFS: mkfs.xfs, JFS: mkfs.jfs

#3 Mount the filesystem

$ sudo mount /dev/sdb1 /mnt

#4 Debootstraping begins

$ sudo debootstrap lucid /mnt http://kambing.ui.ac.id/ubuntu/

The “

--arch amd64

” before “lucid” parameter is optional. It would come in handy if you are trying to make 64bit Ubuntu from 32bit system, vice versa. See the manpage for more information.

#5 Setup before chrooted to there

Mount all the important directory.

$ sudo mount /proc /mnt/proc -t proc

$ sudo mount /dev /mnt/dev -o bind

Optionally copy these files:

$ sudo cp /etc/hosts /mnt/etc

$ sudo cp /etc/resolv.conf

resolv.conf

is deprecated on desktop because of the

modem-manager

being. But, it won’t hurt you if you still use it.

$ sudo cp /etc/fstab /mnt/etc

Don’t forget to edit the /mnt/etc/fstab and delete the root directory entry (find “/” and delete it) because we are using USB stick.

#6 Chrooted there

$ sudo chroot /mnt

#7 Add a user

This is important! Don’t let your system userless…

# adduser user

Make him/her an admin.

# addgroup user sudo

By default Lucid is making everybody in the sudo group to be an admin. If you are using another, you could add yourself a group:

# addgroup penguasa

echo “%penguasa ALL=(ALL):ALL” >> /etc/sudoers

(Or just type

visudo

to edit the file properly)

#8 Install kernel

There are few flavours of the kernel. Desktop user usually stick with generic.

# apt-get install linux-image-generic

This virtual package will install

linux-image-generic-2.6.32-13

in time this writing. If you want, you could search for another linux kernel with

# apt-cache search linux image

#9 Install grub

# apt-get install grub2

Usually, it would let you choose where it would like to install. Install it into USB stick’s Master Boot Record/MBR (/dev/sdb). If later you would like to install it, the sane way to install is:

# dpkg-reconfigure grub-pc

Or, if you’re the rock star:

# grub-install /dev/sdb

To have GRUB reconfigured, i.e. generates the GRUB menu, do:

# update-grub

#10 Install your flavour

# apt-get install kubuntu-desktop

#11 Get some sleep!

It’s already morning and you have a life? No? Well, you could go on and try your new system by restart to the system.

~hiddenCurcolCrouchingDeadline