Membangun ISP Sederhana dalam Sehari


Membangun ISP Sederhana dalam Sehari

Berikut ini adalah tutorial membangun ISP sederhana dalam waktu
singkat. Secara sederhana, layanan yang diberikan cukup komprehensif, antara
lain: DNS, Mail, Web, FTP, Database, dll.
Baiklah kita mulai dari kebutuhan sistem yang nantinya akan dibangun:
• Ubuntu Server 9.10 CD:
http://releases.ubuntu.com/releases/9.10/ubuntu-9.10-server-i386.iso
(i386) atau http://releases.ubuntu.com/releases/9.10/ubuntu-9.10-server-
amd64.iso (x86_64)
• Koneksi Internet yang cepat dan stabil.
Pada tutorial ini kita akan menggunakan serverX.stimata.net sebagai
hostname dimana X adalah nomer dari workstation anda. Sedangkan alamat IP
yang dipergunakan adalah 172.31.X.100 dan gateway yang dipergunakan adalah
172.31.254.1
Langkah-langkahnya sebagai berikut:
• Download dan install Ubuntu Server 9.10 CD dengan modus minimal.
• Setelah reboot anda dapat login dengan username (e.g. administrator)
yang telah anda buat sebelumnya. Karena kita harus melakukan semua
langkah-langkah dalam tutorial ini dengan perintah root, maka kita
dapat menambahkan di setiap perintah dengan perintah sudo, atau dapat
langsung menjalankan perintah root dengan mengetikkan:
$ sudo su
Anda dapat juga menjalankan perintah root dengan cara:
$ sudo passwd root
lalu masukkan password root. Maka anda dapat login dengan
43
kemampuan root.
• Mengkonfigurasi Jaringan
• Lakukan perintah berikut:
# nano /etc/network/interfaces
• Kemudian isi file tersebut sesuai dengan di bawah ini:
# This file describes the network interfaces available on
your system
# and how to activate them. For more information, see
interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.31.X.100
netmask 255.255.0.0
network 172.31.0.0
broadcast 172.31.255.255
gateway 172.31.254.1
• Lalu restart layanan jaringan anda:
# /etc/init.d/networking restart
• Lalu edit /etc/hosts.
# nano /etc/hosts
• Dan buat seperti di bawah ini:
127.0.0.1 localhost.localdomain localhost
172.31.X.100 serverX.stimata.net serverX
44
• Sekarang jalankan
# echo serverX.stimata.net > /etc/hostname
• … dan reboot server anda:
# reboot
• Setelah itu, lakukan
# hostname
# hostname -f
• Keduanya seharusnya menampilkan serverX.stimata.net
• Edit /etc/apt/sources.list. Pastikan seperti di bawah ini:
# nano /etc/apt/sources.list
#
# deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ – Release
amd64 (20091027.2)]/ karmic main restricted
#deb cdrom:[Ubuntu-Server 9.10 _Karmic Koala_ – Release
amd64 (20091027.2)]/ karmic main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how
to upgrade to
# newer versions of the distribution.
deb http://id.archive.ubuntu.com/ubuntu/ karmic main
restricted
deb-src http://id.archive.ubuntu.com/ubuntu/ karmic main
restricted
## Major bug fix updates produced after the final release of
the
## distribution.
deb http://id.archive.ubuntu.com/ubuntu/ karmic-updates main
restricted
deb-src http://id.archive.ubuntu.com/ubuntu/ karmic-updates
main restricted
## N.B. software from this repository is ENTIRELY
UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL
45
NOT receive any
## review or updates from the Ubuntu security team.
deb http://id.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://id.archive.ubuntu.com/ubuntu/ karmic universe
deb http://id.archive.ubuntu.com/ubuntu/ karmic-updates
universe
deb-src http://id.archive.ubuntu.com/ubuntu/ karmic-updates
universe
## N.B. software from this repository is ENTIRELY
UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy
yourself as to
## your rights to use the software. Also, please note that
software in
## multiverse WILL NOT receive any review or updates from
the Ubuntu
## security team.
deb http://id.archive.ubuntu.com/ubuntu/ karmic multiverse
deb-src http://id.archive.ubuntu.com/ubuntu/ karmic
multiverse
deb http://id.archive.ubuntu.com/ubuntu/ karmic-updates
multiverse
deb-src http://id.archive.ubuntu.com/ubuntu/ karmic-updates
multiverse
## Uncomment the following two lines to add software from
the ‘backports’
## repository.
## N.B. software from this repository may not have been
tested as
## extensively as that contained in the main release,
although it includes
## newer versions of some applications which may provide
useful features.
## Also, please note that software in backports WILL NOT
receive any review
## or updates from the Ubuntu security team.
# deb http://de.archive.ubuntu.com/ubuntu/ karmic-backports
main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ karmic-
backports main restricted universe multiverse
## Uncomment the following two lines to add software from
Canonical’s
## ‘partner’ repository.
## This software is not part of Ubuntu, but is offered by
Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu karmic partner
# deb-src http://archive.canonical.com/ubuntu karmic partner
46
deb http://security.ubuntu.com/ubuntu karmic-security main
restricted
deb-src http://security.ubuntu.com/ubuntu karmic-security
main restricted
deb http://security.ubuntu.com/ubuntu karmic-security
universe
deb-src http://security.ubuntu.com/ubuntu karmic-security
universe
deb http://security.ubuntu.com/ubuntu karmic-security
multiverse
deb-src http://security.ubuntu.com/ubuntu karmic-security
multiverse
• Lalu jalankan
# aptitude update
• Mengganti default shell
• /bin/sh adalah symlink ke /bin/dash, namun kita membutuhkan
/bin/bash, bukan /bin/dash. Oleh karena itu lakukan perintah berikut:
# dpkg-reconfigure dash
Install dash as /bin/sh? <– No
• Jika anda tidak melakukan ini, maka instalasi ISPConfig akan gagal.
• Nonaktifkan AppArmor
• Kita dapat menonaktifkannya dengan cara:
# /etc/init.d/apparmor stop
# update-rc.d -f apparmor remove
# aptitude remove apparmor apparmor-utils
• Sinkronisasi jam sistem
• Agar jam sistem mengikuti jam sistem dunia maka kita dapat
menjalankan perintah berikut:
# aptitude install ntp ntpdate
• dan jam sistem anda selalu sinkron.
47
• Install Postfix, Courier, Saslauthd, MySQL, rkhunter, binutils:
# aptitude install postfix postfix-mysql postfix-doc mysql-
client mysql-server courier-authdaemon courier-authlib-mysql
courier-pop courier-pop-ssl courier-imap courier-imap-ssl
libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin
libpam-mysql openssl getmail4 rkhunter binutils
• Anda akan ditanya dengan pertanyaan berikut:
New password for the MySQL “root” user: <–
yourrootsqlpassword
Repeat password for the MySQL “root” user: <–
yourrootsqlpassword
Create directories for web-based administration? <– No
General type of mail configuration: <– Internet Site
System mail name: <– server1.example.com
SSL certificate required <– Ok
• Berikutnya kita install maildrop:
# update-alternatives –remove-all maildir.5
# update-alternatives –remove-all maildirquota.7
# aptitude install maildrop
• Kita menginginkan MySQL untuk listen ke seluruh interface, bukan
hanya localhost, untuk itu kita edit /etc/mysql/my.cnf dan komentari
baris bind-address = 127.0.0.1:
# nano /etc/mysql/my.cnf
[…]
# Instead of skip-networking the default is now to listen
only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[…]
• Lalu restart MySQL:
# /etc/init.d/mysql restart
• Sekarang periksa apakah MySQL telah terbuka. Lakukan
# netstat -tap | grep mysql
48
• Output-nya akan terlihat seperti di bawah ini:
tcp 0 0 *:mysql *:*
LISTEN 6267/mysqld
• Selama instalasi, SSL certificates untuk IMAP-SSL dan POP3-SSL
dibuat dengan hostname localhost. Untuk mengubahnya ke hostname
yang benar (dalam hal ini serverX.stimata.net), hapus sertifikatnya…
# cd /etc/courier
# rm -f /etc/courier/imapd.pem
# rm -f /etc/courier/pop3d.pem
• … dan modifikasi 2 file berikut; ganti CN=localhost dengan
CN=serverX.stimata.net
# nano /etc/courier/imapd.cnf
[…]
CN=serverX.stimata.net
[…]
# nano /etc/courier/pop3d.cnf
[…]
CN=serverX.stimata.net
[…]
• Lalu buat kembali sertifikatnya…
# mkimapdcert
# mkpop3dcert
• … dan restart Courier-IMAP-SSL dan Courier-POP3-SSL:
# /etc/init.d/courier-imap-ssl restart
# /etc/init.d/courier-pop-ssl restart
49
• Install Amavisd-new, SpamAssassin, dan Clamav
• Lakukan perintah berikut:
# aptitude install amavisd-new spamassassin clamav clamav-
daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-
listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs
daemon libio-string-perl libio-socket-ssl-perl libnet-ident-
perl zip libnet-dns-perl
• Install Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, dan mcrypt
• Lakukan perintah berikut:
# aptitude install apache2 apache2.2-common apache2-doc
apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
libapache2-mod-php5 php5 php5-common php5-gd php5-mysql
php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid
apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-
imagick imagemagick libapache2-mod-suphp
• Anda akan ditanya beberapa hal berikut:
Web server to reconfigure automatically: <– apache2
Configure database for phpmyadmin with dbconfig-common? <–
No
• lalu jalankan perintah berikut untuk mengaktifkan modul Apache
suexec, rewrite, ssl, actions, dan include:
# a2enmod suexec rewrite ssl actions include
• Restart Apache:
# /etc/init.d/apache2 restart
• Install PureFTPd dan Quota
• Lakukan perintah berikut:
# aptitude install pure-ftpd-common pure-ftpd-mysql quota
quotatool
50
• Edit file /etc/default/pure-ftpd-common…
# nano /etc/default/pure-ftpd-common
• … dan pastikan start mode di set ke standalone dan set
VIRTUALCHROOT=true:
[…]
STANDALONE_OR_INETD=standalone
[…]
VIRTUALCHROOT=true
[…]
• Then restart PureFTPd:
# /etc/init.d/pure-ftpd-mysql restart
• Edit /etc/fstab. Tambahkan
,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 ke partisi
dengan mount point /):
# nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use ‘blkid -o value -s UUID’ to print the universally
unique identifier
# for a device; this may be used with UUID= as a more robust
way to name
# devices that works even if disks are added and removed.
See fstab(5).
#
#

proc /proc proc defaults 0
0
/dev/sda1 / ext4 errors=remount-
ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0
0 1
# /boot was on /dev/sda5 during installation
UUID=9ea34148-31b7-4d5c-baee-c2e2022562ea /boot
ext2 defaults 0 2
/dev/sda6 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660
user,noauto,exec,utf8 0 0
/dev/fd0 /media/floppy0 auto
rw,user,noauto,exec,utf8 0 0
51
• Untuk mengaktifkan quota, jalankan perintah berikut:
# touch /aquota.user /aquota.group
# chmod 600 /aquota.*
# mount -o remount /
# quotacheck -avugm
# quotaon -avug
• Install MyDNS
• Sebelum menginstal MyDNS, kita membutuhkan beberapa aplikasi
tambahan untuk menkompilasinya :
# aptitude install g++ libc6 gcc gawk make texinfo
libmysqlclient15-dev
• MyDNS tidak tersedia di Ubuntu 9.10 repositories, untuk itu kita butuh
membangunnya dari source sebagaimana di bawah ini:
# cd /tmp
# wget http://heanet.dl.sourceforge.net/sourceforge/mydns-
ng/mydns-1.2.8.27.tar.gz
# tar xvfz mydns-1.2.8.27.tar.gz
# cd mydns-1.2.8
# ./configure
# make
# make install
• Berikutnya kita buat start/stop script untuk MyDNS:
# nano /etc/init.d/mydns
#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern
.
# Based upon skeleton 1.9.4 by Miquel van
Smoorenburg
# and Ian Murdock
.
#
set -e
52
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/us
r/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC=”DNS server”
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
case “$1” in
start)
echo -n “Starting $DESC: $NAME”
start-stop-daemon –start –quiet \
–exec $DAEMON — -b
echo “.”
;;
stop)
echo -n “Stopping $DESC: $NAME”
start-stop-daemon –stop –oknodo –quiet \
–exec $DAEMON
echo “.”
;;
reload|force-reload)
echo -n “Reloading $DESC configuration…”
start-stop-daemon –stop –signal HUP –quiet \
–exec $DAEMON
echo “done.”
;;
restart)
echo -n “Restarting $DESC: $NAME”
start-stop-daemon –stop –quiet –oknodo \
–exec $DAEMON
sleep 1
start-stop-daemon –start –quiet \
–exec $DAEMON — -b
echo “.”
;;
*)
echo “Usage: $SCRIPTNAME {start|stop|restart|reload|
force-reload}” >&2
exit 1
;;
esac
exit 0
• Lalu kita buat script tersebut menjadi executable dan buat system startup
links sebagaimana berikut:
53
# chmod +x /etc/init.d/mydns
# update-rc.d mydns defaults
• Install Vlogger And Webalizer
• Lakukan perintah berikut:
# aptitude install vlogger webalizer
• Install Jailkit
• Jailkit dibutuhkan hanya jika menghendaki chroot SSH users. Dapat
diinstal dengan cara berikut ini (penting: Jailkit harus diinstal sebelum
ISPConfig – tidak dapat diinstall setelahnya!):
# aptitude install build-essential autoconf automake1.9
libtool flex bison
# cd /tmp
# wget http://olivier.sessink.nl/jailkit/jailkit-2.10.tar.gz
# tar xvfz jailkit-2.10.tar.gz
# cd jailkit-2.10
# ./configure
# make
# make install
# cd ..
# rm -rf jailkit-2.10*
• Install fail2ban
• Aplikasi ini optional namun sangat disarankan, karena ISPConfig
monitor mencoba untuk menampilkan fail2ban log:
# aptitude install fail2ban
• Install SquirrelMail
# aptitude install squirrelmail
• Lalu buat symlink berikut…
# ln -s /usr/share/squirrelmail/ /var/www/webmail
54
• … dan konfigurasikan SquirrelMail:
# squirrelmail-configure
• Kita harus memberitahu SquirrelMail kalau kita menggunakan Courier-
IMAP/-POP3:
SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >> <– D SquirrelMail Configuration : Read: config.php ——————————————————— While we have been building SquirrelMail, we have discovered some preferences that work better with some servers that don’t work so well with others. If you select your IMAP server, this option will set some pre-defined settings for that server. Please note that you will still need to go through and make sure everything is correct. This does not change everything. There are only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server 55 courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington’s IMAP server quit = Do not change anything Command >> <– courier SquirrelMail Configuration : Read: config.php ——————————————————— While we have been building SquirrelMail, we have discovered some preferences that work better with some servers that don’t work so well with others. If you select your IMAP server, this option will set some pre-defined settings for that server. Please note that you will still need to go through and make sure everything is correct. This does not change everything. There are only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington’s IMAP server quit = Do not change anything Command >> courier
imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
56
delete_folder = true
Press any key to continue… <– ENTER SquirrelMail Configuration : Read: config.php (1.4.0) ——————————————————— Main Menu — 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> <– S SquirrelMail Configuration : Read: config.php (1.4.0) ——————————————————— Main Menu — 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> S
Data saved in config.php
Press enter to continue… <– ENTER 57 SquirrelMail Configuration : Read: config.php (1.4.0) ——————————————————— Main Menu — 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> <– Q • Setelah itu anda dapat mengakses SquirrelMail lewat http://serverX.stimata.net/webmail atau http://172.31.X.100/webmail: • Install ISPConfig 3 • Lakukan perintah berikut ini: # cd /tmp # wget http://downloads.sourceforge.net/ispconfig/ISPConfig- 3.0.1.6.tar.gz?use_mirror= # tar xvfz ISPConfig-3.0.1.6.tar.gz # cd ispconfig3_install/install/ • (Ganti ISPConfig-3.0.1.6.tar.gz dengan versi terakhir) • Langkah berikutnya lakukan perintah berikut: # php -q install.php • Hal ini akan menjalankan ISPConfig 3 installer: 58 ———————————————————— ——————– _____ ___________ _____ __ _ |_ _/ ___| ___ \ / __ \ / _(_) | | \ `–.| |_/ / | / \/ ___ _ __ | |_ _ __ _ | | `–. \ __/ | | / _ \| ‘_ \| _| |/ _` | _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | __/ | |___/ ———————————————————— ——————– >> Initial configuration
Operating System: Debian or compatible, unknown version.
Following will be a few questions for primary
configuration so be careful.
Default values are in [brackets] and can be accepted
with .
Tap in “quit” (without the quotes) to stop the
installer.
Select language (en,de) [en]: <– ENTER
Installation mode (standard,expert) [standard]: <– ENTER
Full qualified hostname (FQDN) of the server, eg
server1.domain.tld [serverX.stimata.net]: <– ENTER
MySQL server hostname [localhost]: <– ENTER
MySQL root username [root]: <– ENTER
MySQL root password []: <– yourrootsqlpassword
MySQL database to create [dbispconfig]: <– ENTER
MySQL charset [utf8]: <– ENTER
Generating a 2048 bit RSA private key
…….+++
…+++
writing new private key to ‘smtpd.key’
—–
You are about to be asked to enter information that will be
incorporated
59
into your certificate request.
What you are about to enter is what is called a
Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]: <– ENTER
State or Province Name (full name) [Some-State]: <– ENTER
Locality Name (eg, city) []: <– ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
<– ENTER
Organizational Unit Name (eg, section) []: <– ENTER
Common Name (eg, YOUR name) []: <– ENTER
Email Address []: <– ENTER
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring MyDNS
Configuring Apache
Configuring vlogger
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]: <– ENTER
Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services …
* Stopping MySQL database server mysqld
…done.
* Starting MySQL database server mysqld
…done.
* Checking for corrupt, not cleanly closed and upgrade
needing tables.
* Stopping Postfix Mail Transport Agent postfix
…done.
* Starting Postfix Mail Transport Agent postfix
…done.
* Stopping SASL Authentication Daemon saslauthd
…done.
* Starting SASL Authentication Daemon saslauthd
…done.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
* Stopping ClamAV daemon clamd
60
…done.
* Starting ClamAV daemon clamd
LibClamAV Warning:
***********************************************************
LibClamAV Warning: *** This version of the ClamAV engine is
outdated. ***
LibClamAV Warning: *** DON’T PANIC! Read
http://www.clamav.net/support/faq ***
LibClamAV Warning:
***********************************************************
…done.
* Stopping Courier authentication services authdaemond
…done.
* Starting Courier authentication services authdaemond
…done.
* Stopping Courier IMAP server…
…done.
* Starting Courier IMAP server…
…done.
* Stopping Courier IMAP-SSL server…
…done.
* Starting Courier IMAP-SSL server…
…done.
* Stopping Courier POP3 server…
…done.
* Starting Courier POP3 server…
…done.
* Stopping Courier POP3-SSL server…
…done.
* Starting Courier POP3-SSL server…
…done.
* Restarting web server apache2
… waiting …done.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-
virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam –
A -b -O clf:/var/log/pure-ftpd/transfer.log -8 UTF-8 -u 1000
-E -B
Installation completed.
• Installer secara otomatis mengatur semua layanan yang dibutuhkannya,
jadi tidak memerlukan konfigurasi manual.
• Setelah itu anda dapat mengakses ISPConfig 3 pada
http://serverX.stimata.net:8080/ atau http://172.31.X.100:8080/. Log in
dengan username admin dan password admin (anda sebaiknya
mengganti password segera setelah anda login):
• Sistem siap digunakan. Selamat mencoba!

Syukron untuk Ahk Nuzli Latief

7 thoughts on “Membangun ISP Sederhana dalam Sehari

  1. mas…saya blm pernah sama sekali menggunakan ubuntu. perintah/command2 nya saya gak mengerti fungsinya untuk apa…mas mohon bantuannya kalau memiliki tutorial tentang ubuntu server bisa dishare mas ke email saya. tks banyak sebelumnya 🙂

Leave a comment