Add Swap Space on Ubuntu 16.04

Before begin, please check if the system already has swap space available. Even though it’s possible to have multiple swap files or swap partitions, one should be enough.

free -h

Output
total used free shared buff/cache available
Mem: 488M 36M 104M 652K 348M 426M
Swap: 0B 0B 0B

As we can see no swap is active on the system. We will create a 1 Gigabyte file in this guide. Adjust this to meet the needs of your own server:

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

We can check the output of the “free” command again to verify the swap:

free -h

Output
total used free shared buff/cache available
Mem: 488M 37M 96M 652K 354M 425M
Swap: 1.0G 0B 1.0G

The swap space has been set up successfully and our operating system will begin to use it.

Now let’s make the swap space used permanently:

cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Done!

Setup 3proxy Anonymous Proxy on Ubuntu or Debian

The instruction suitable for all Unix distributions, because we are gonna compile it from source code. Compiling from source code is preferred, that way we will get the latest version. In this case I’m using Ubuntu/Debian.

To compile 3proxy from source code you need to install git, make, and gcc. Just type into your terminal:

apt-get install gcc make git -y

Next, browse to home directory

cd ~
git clone https://github.com/z3APA3A/3proxy.git

This will download latest version of 3proxy to your machine. Next step to compile and setup:

cd 3proxy
make -f Makefile.Linux

Now we put files into correct path and setup auto start of the service

mkdir -p /usr/local/etc/3proxy/bin
cp src/3proxy /usr/local/etc/3proxy/bin
cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy

Before we add 3proxy service to autostart, we need to do some adjustment to the default init script because it’s missing some LSB tags or else you’ll get some insserv warning.

vi /etc/init.d/3proxy

Change all the lines started with “#” with these lines:

#!/bin/sh
### BEGIN INIT INFO
# Provides: 3proxy
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Stop/start 3proxy
### END INIT INFO

Make the service auto start on boot

update-rc.d 3proxy defaults

Now let’s create the config file.

vi /usr/local/etc/3proxy/3proxy.cfg

You can RTFM for all the parameters or options, but to make it short, these are my config for anonymous proxy:
Continue reading “Setup 3proxy Anonymous Proxy on Ubuntu or Debian”

Completely Disable IPv6

Kemarin saya udah buat tutorial dengan tujuan yang sama, untuk disable IPv6 di CentOS. Tapi kali ini saya akan kasih tau dengan cara yang lain, yaitu via GRUB2. Jadi seharusnya bisa untuk CentOS, Ubuntu, atau Debian.

Buka /etc/default/grub dengan editor, lalu tambahkan “ipv6.disable=1” pada direktif GRUB_CMDLINE_LINUX. Ini contoh di server Ubuntu 16.04 saya:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="ipv6.disable=1 elevator=noop"

Setelah itu jangan lupa untuk update GRUB, kalau Ubuntu/Debian;

update-grub

sedangkan CentOS;

grub2-mkconfig -o /boot/grub2/grub.cfg

atau

grubby --update-kernel=ALL --args=ipv6.disable=1

Enjoy!

MySQL: "Access denied for user 'debian-sys-maint'@'localhost'"

Pengguna Ubuntu mungkin pernah sering ketemu error kayak gini:

[email protected]:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

“debian-sys-maint” adalah MySQL user yang dibuat supaya Ubuntu bisa start / stop database dan melakukan operasi2 maintenance lain. Terus knapa ada error “access denied”?

Masalah ini terjadi biasanya karena ketika update MySQL, password user debian-sys-maint ngga ikut terupdate bersamaan dengan file konfigurasi yang baru. Tapi ternyata solusinya cukup simple:

Pertama, liat isi file /etc/mysql/debian.cnf

[email protected]:~$ sudo cat /etc/mysql/debian.cnf

Isinya kurang lebih akan seperti ini:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
 
[mysql_upgrade]
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock basedir = /usr

Perhatikan pada direktif password, itu adalah password user debian-sys-main yang kita cari. Selanjutnya, execute perintah MySQL untuk update password user debian-sys-maint sekaligus memberikan privilege yang diperlukan. Login kedalam MySQL server menggunakan root:

[email protected]:~$ mysql -uroot -p

Issue perintah GRANT untuk memberikan privilege:

mysql> GRANT ALL PRIVILEGES ON . TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';

Selesai! Dan sekarang kalau kita restart MySQL, seharusnya ngga bakalan ada lagi error “access denied”.

[email protected]:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.

Install PowerDNS & Poweradmin Pada Debian Squeeze

Artikel ini akan menunjukkan cara menginstall PowerDNS authoritative name server dengan backend MySQL sebagai record database, dan Poweradmin sebagai web interface atau control panel-nya. Dalam contoh ini, saya menggunakan Debian Squeeze sebagai server, dengan hostname ns1.andi.life dan IP address 192.168.1.100. Saya hanya akan setup 1 server master aja, dan kalau Anda ingin menambahkan 1 server tambahan (sebagai slave) akan sangat mudah dengan melakukan replikasi database MySQL.

Install MySQL Server
Untuk menginstall MySQL, perintah di terminal:

apt-get install mysql-server mysql-client

Anda akan diminta memasukkan password baru untuk user root MySQL – password ini bukan password root system Linux.

New password for the MySQL "root" user:
Repeat password for the MySQL "root" user:

Kita akan membuat MySQL server listen di semua interface (bukan hanya localhost / 127.0.0.1), hal ini penting untuk database replication. Untuk itu edit file /etc/mysql/my.cnf dan beri komen (tanda #) pada baris bind-address = 127.0.0.1: vi /etc/mysql/my.cnf

#bind-address = 127.0.0.1

Selanjutnya restart MySQL:

/etc/init.d/mysql restart

Install PowerDNS
Untuk Install PowerDNS perintahnya adalah:

apt-get install pdns-server pens-backend-mysql

Konfigurasi PowerDNS berlokasi di direktori /etc/powerdns/. Tapi sebelumnya kita akan membuat user dan database dulu di MySQL:

mysql -u root -p

Masukkan root password, lalu di MySQL shell kita buat dabase untuk PowerDNS:

CREATE DATABASE powerdns;

Selanjutnya kita buat user (poweradmin) untuk PowerDNS:

GRANT ALL ON powerdns.* TO 'poweradmin'@'localhost' IDENTIFIED BY 'poweradminpassword';
GRANT ALL ON powerdns.* TO 'poweradmin'@'localhost.localdomain' IDENTIFIED BY 'poweradmin_password';
FLUSH PRIVILEGES;

(Ganti “poweradminpassword” dengan password yang diinginkan) Sekarang kita buat tables yang diperlukan PowerDNS

USE powerdns;
CREATE TABLE domains ( id INT autoincrement, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, lastcheck INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) DEFAULT NULL, primary key (id) );
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records ( id INT autoincrement, domainid INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(6) DEFAULT NULL, content VARCHAR(255) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, primary key(id) );
CREATE INDEX recnameindex ON records(name); CREATE INDEX nametypeindex ON records(name,type); CREATE INDEX domainid ON records(domain_id);
CREATE TABLE supermasters ( ip VARCHAR(25) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) DEFAULT NULL );
quit;

Dan sekarang kita konfigurasi PowerDNS agar menggunakan backend MySQL:

vi /etc/powerdns/pdns.conf

Tambahkan direktif launch = gmysql di pdns.conf:

[...]
# # launch Which backends to launch and order to query them in # #
launch= launch=gmysql
[...]

Selanjutnya buka /etc/powerdns/pdns.d/pdns.local dan buat agar isinya seperti ini:

# Here come the local changes the user made, like configuration of # the several backends that exist.
gmysql-host=127.0.0.1
gmysql-user=poweradmin
gmysql-password=poweradmin_password
gmysql-dbname=powerdns

Restart servce pdns:

/etc/init.d/pdns restart

Sampai sini instalasi PowerDNS authoritative name server udah selesai dan bisa digunakan. Untuk belajar gimana cara menggunakannya tanpa bantuan control panel bisa merujuk ke halaman ini: http://downloads.powerdns.com/documentation/html/index/

Install Poweradmin
Sekarang mari install Poweradmin, control panel berbasis web untuk PowerDNS. Karena Poweradmin ditulis dalam PHP, jadi kita harus menginstall web server (dalam contoh ini Apache) dan PHP:

apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-ming php5-mysql php5-xmlrpc gettext php-db php-mdb2 php-mdb2-driver-mysql

Kemudian restart Apache web server:

/etc/init.d/apache2 restart

Semua persyaratan Poweradmin sudah terinstall, jadi kita bisa lanjut ke proses instalasi Poweradmin (saya akan install di direktori /var/www, /var/www adalah document root default web server Apache di Debian, kalau Anda ingin document root di lokasi lain silahkan disesuaikan aja). Kunjungi halaman http://www.poweradmin.org/trac/wiki/GettingPoweradmin dan download release terakhir Poweradmin:

cd /tmp/
wget http://www.poweradmin.org/download/poweradmin-2.1.5.tgz

Lalu install di direktori /var/www/poweradmin/ seperti ini:

tar xvfz poweradmin-2.1.5.tgz
mv poweradmin-2.1.5 /var/www/poweradmin
touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/

Sekarang menggunakan browser buka halaman Poweradmin installer (http://ns1.andi.life/poweradmin/install/index.php atau http://192.168.1.100/poweradmin/install/index.php): dan isi detail database. Disarankan untuk menggunakan user root atau yang selevel dengan itu. Isikan juga password user admin yang akan kita gunakan untuk login ke web interface Poweradmin nanti.

Di halaman berikutnya, isi detail untuk MySQL user poweradmin yang udah kita buat di langkah sebelumnya. Dan juga isikan dua default nameserver yang akan digunakan ketika membuat zona domain. Lalu di halaman berikutnya kita akan diminta untuk meng-execute beberapa perintah MySQL. Langkah ini ngga perlu dilakukan lagi karena tadi udah kita lakukan.

Sekarang Anda bisa langsung membuka halaman http://ns1.andi.life/poweradmin/ atau http://192.168.1.100/poweradmin/ dan login dengan username admin dan password yang tadi dibuat.

Setelah login kita bisa langsung membuat zona domain. Tentu harus udah ada pemahaman tentang DNS server sebelumnya, apa itu SOA, NS, A, PTR, dan sebagainya. Mungkin pemahaman tentang DNS akan saya jelaskan di posting berikutnya. Happy exploring!