≡ Menu

Membangun Torrent Box Murah dengan Transmission dan OpenVPN

Kalau anda sering mengunduh file dari torrent, maka tentunya anda sudah familiar dengan berbagai layanan torrent leecher yang tersedia di internet. Yup, urusan unduh mengunduh torrent menjadi jauh lebih mudah dan cepat karena file yang anda inginkan akan diunduh oleh server torrent leecher tersebut yang notabene menggunakan jaringan internet server berkecepatan tinggi. Dan nantinya anda tinggal mengunduh file yang sudah tersimpan di server torrent leecher menggunakan file downloader favorit anda seperti Internet Download Manager.

Layanan torrent leecher tersebut ada yang gratis maupun yang berbayar. Masalahnya, kalau gratis biasanya servernya lambat karena digunakan oleh banyak orang dan ada batasan-batasan tertentu. Misalnya file yang kita unduh ukurannya tidak melebihi dari 1 GB, hanya tersimpan dalam kurun waktu 1 jam kemudian terhapus dengan sendirinya. Sedangkan yang berbayar tentunya lebih bebas, namun anda harus menyiapkan dana yang tidak sedikit setiap bulannya untuk berlangganan layanan tersebut.

Pada umumnya, orang-orang yang aktif sekali melakukan torrenting ini membeli atau menyewa server / torrent box. Selain punya akses penuh ke file torrent yang diunduh, mereka juga bisa melakukan aktifitas seeding. Kalau anda bergabung di salah satu grup private torrent misalnya, aktivitas seeding ini adalah hal wajib. Jika seed ratio anda rendah, maka siap-siap aja dicap sebagai torrent leecher atau istilah bagi orang yang maunya download tapi tidak mau berbagi dengan upload file yang sudah diunduh tadi. Yup, torrenting pada dasarnya adalah wadah untuk berbagi file bersama-sama.

Layanan torrent box umumnya harganya cukup tinggi bagi sebagian orang mengingat si penyedia juga mencari untung dari layanan ini. Psst, anda bisa mendapatkan harga yang sangat murah dengan menyewa server-server low-end di LowEndBox. Namun yang perlu diketahui, pada umumnya para penjual server ini tidak mengijinkan penggunaan server untuk traffic torrent atau kalaupun boleh maka file yang diunduh tidak boleh berkonten hak cipta. Di negara sana, masalah hak cipta adalah masalah serius. Kalaupun anda terpaksa mengunduh konten tersebut jangan lupa dihapus secara rutin setelah dinduh ke komputer anda. Nah, masalah traffic torrent ini kita bisa mengakalinya dengan OpenVPN sehingga IP server kita tidak terekspos ke publik sekaligus melindungi server utama kita.

Di tutorial ini saya menggunakan kombinasi torrent client Transmission dan OpenVPN. Mengapa Transmission? yang pasti torrent client yang satu ini sudah sangat umum digunakan bahkan sudah terinstall secara default di distro-distro Linux favorit kita. Dan juga konfigurasinya cukup mudah untuk disandingkan dengan penggunaan OpenVPN. Berikut informasi singkat layanan maupun tool yang saya gunakan di tutorial ini:

  1. Operating System: Debian 8;
  2. Torrent Client: Transmission;
  3. Layanan VPN: Windscribe, kebetulan saya dulu beli yang lifetime. Banyak penyedia layanan VPN yang support torrent atau P2P. Hanya saja pastikan VPN tersebut punya OpenVPN config;
  4. Beberapa shell script linux, bisa anda lihat disini.

Langkah Awal

Sebelum memulai proses instalasi, pastikan fitur TUN/TAP pada control panel VPS anda sudah aktif.

Update terlebih dahulu OS dan repositori Debian anda dengan mengetikkan perintah berikut:

apt-get update

Tool yang Diperlukan

Install screen:

apt-get install screen

Selanjutnya install editor nano:

apt-get install nano

Instalasi Nginx

Install webserver Nginx. Jika sebelumnya pernah install webserver Apache, pastikan sudah diuninstall. Mengenai cara uninstall Apache, silahkan googling tutorialnya. Contoh tutorialnya dalam bahasa inggris seperti ini.

apt-get install nginx

Jika sudah terinstall, maka ketika anda mengakses http://{IP-ANDA}, tampilannya akan seperti ini. Bisa saja berbeda tergantung versi Nginx yang anda install.

nginx-front-page

Buat direktori “downloads” di /var/www/html. Direktori ini fungsinya untuk menyimpan file-file hasil unduhan torrent anda yang bisa diakses di http://{IP-ANDA}/downloads.

mkdir /var/www/html/downloads

Berikan hak akses penuh untuk Nginx dan publik:

chown -R www-data:www-data /var/www/html/downloads

chmod -R 0777 /var/www/html/downloads

Melindungi Direktori Downloads Anda

Supaya tidak ada yang bisa mengakses file hasil unduhan anda maupun mencuri bandwith, direktori downloads bisa anda proteksi dengan teknik htpasswd sederhana. Untuk membuat file htpasswd tersebut, unduh scriptnya dan simpan di direktori /usr/local/bin dengan perintah:

cd /usr/local/bin

wget https://raw.githubusercontent.com/centminmod/centminmod/master/config/htpasswdgen/htpasswd.py

chmod +x htpasswd.py

Kemudian buat file htpasswd anda dan simpan dengan nama .htpasswd. Saya sendiri menyimpannya di direktori /home. Berikut perintahnya:

htpasswd.py -c -b /home/.htpasswd USERNAME PASSWORD

Ganti USERNAME dan PASSWORD dengan yang anda inginkan. File .htpasswd ini akan kita gunakan di konfigurasi Nginx.

Konfigurasi Nginx

Untuk menuju ke direktori konfigurasi Nginx, ketikkan perintah berikut:

cd /etc/nginx/sites-available

nano default

Akan muncul tampilan konfigurasi situs Nginx default seperti ini:

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
  listen 80 default_server;
  listen [::]:80 default_server;

  # SSL configuration
  #
  # listen 443 ssl default_server;
  # listen [::]:443 ssl default_server;
  #
  # Self signed certs generated by the ssl-cert package
  # Don't use them in a production server!
  #
  # include snippets/snakeoil.conf;

  root /var/www/html;

  # Add index.php to the list if you are using PHP
  index index.html index.htm index.nginx-debian.html;

  server_name _;

  location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
  }

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  #location ~ \.php$ {
  # include snippets/fastcgi-php.conf;
  #
  # # With php5-cgi alone:
  # fastcgi_pass 127.0.0.1:9000;
  # # With php5-fpm:
  # fastcgi_pass unix:/var/run/php5-fpm.sock;
  #}

  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  # deny all;
  #}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#  listen 80;
#  listen [::]:80;
#
#  server_name example.com;
#
#  root /var/www/example.com;
#  index index.html;
#
#  location / {
#      try_files $uri $uri/ =404;
#  }
#}

Tepat di bawah kode:

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
  }

Tambahkan kode berikut:

location /downloads {
        autoindex on;
        auth_basic "Dilarang Masuk kecuali Admin!!!";
        auth_basic_user_file /home/.htpasswd;
    }

Kemudian reload Nginx anda dengan perintah berikut:

service nginx reload

Sekarang buka http://{IP-ANDA}/downloads. Pastinya anda akan diminta untuk memasukkan username dan password.

Instalasi Transmission

Sekarang kita akan menginstall torrent client, Transmission. Ketikkan perintah berikut:

apt-get install transmission-daemon

Edit konfigurasi Transmission menggunakan editor nano dengan perintah berikut:

nano /etc/transmission-daemon/settings.json

Maka akan muncul tampilan seperti berikut ini:

{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/var/lib/transmission-daemon/downloads",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/var/lib/transmission-daemon/Downloads",
"incomplete-dir-enabled": false,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": false,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{ea78312d699ed8ef464182f6a3865dbab2387a93K8XZz1Z0",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": true,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}

Selanjutnya ganti baris berikut:

  • “download-dir”: “/var/www/html/downloads”,
  • “rpc-password”: “{PASSWORD-ANDA}”,
  • “rpc-url”: “/{NAMA-URL-TRANSMISSION WEBUI}/”,
  • “rpc-username”: “{USERNAME-LOGIN-WEBUI-TRANSMISSION}”,
  • “rpc-whitelist-enabled”: false,

Contoh punya saya:

  • “download-dir”: “/var/www/html/downloads”,
  • “rpc-password”: “12341234”,
  • “rpc-url”: “/sedot/”,
  • “rpc-username”: “tukangdonlot”,
  • “rpc-whitelist-enabled”: false,

SImpan konfigurasinya, kemudian ketikkan perintah berikut:

service transmission-daemon reload

Sekarang anda coba akses http://{IP-ANDA}:9091/sedot/, maka anda akan diminta memasukkan username dan password. Masukkan yang sudah anda buat tadi di konfigurasi. Halaman webui Transmission akan terlihat seperti ini:

transmission-webui

Sampai disini anda sudah berhasil menginstall torrent client, Transmission. Konfigurasi lebih lanjut bisa anda lakukan dengan mengedit file /etc/transmission-daemon/settings.json. Contohnya anda ingin mengurangi upload speed, mematikan fitur seeding setelah seed ratio tertentu dicapai. Saya tidak jelaskan disini karena saya asumsikan yang membaca artikel disini sudah paham masalah torrent dan linux atau mungkin akan saya tulis di tutorial yang akan datang. Oh ya, pengaturan ini juga bisa dilakukan lewat web-GUI Transmission anda.

Instalasi OpenVPN

OpenVPN disini fungsinya adalah untuk melindungi dan menyembunyikan IP asli dari server anda. Ibaratnya VPN ini pintu gerbang rumah anda sebelum keluar. Jadi yang dilihat orang adalah pintu gerbang anda tapi isinya di dalam seperti apa, orang tidak tahu. Ilustrasi gambarnya seperti ini:

Ilustrasi VPN

Untuk menginstall OpenVPN, ketikkan perintah berikut:

apt-get install openvp

Sudah selesai? tentu saja belum. Apa yang terjadi kalau sekarang anda menghubungkan server anda dengan server VPN? Koneksi SSH anda saat ini dengan server akan terputus karena jaringan internet anda ke server akan dipindahkan lewat jalur VPN. Anda tidak bisa mengakses server anda lagi. Satu-satunya jalan anda harus masuk ke server lewat console yang tersedia di control panel VPS anda dan mematikan layanan OpenVPN. Oleh karena itu sangat tidak saya sarankan anda menghidupkan OpenVPN terlebih dahulu. Ikuti tutorial selanjutnya di bawah. Kita akan mengubah cara kerja OpenVPN ini. Jadi hanya Transmission yang menggunakan jaringan OpenVPN sementara lainnya tetap lewat jalur internet biasa sehingga koneksi yang lain tidak terganggu.

Konfigurasi OpenVPN untuk Transmission

Sebelum anda melakukan konfigurasi, pastikan anda berada di direktori root terlebih dahulu karena di tutorial ini, saya bekerja melalui direktori root. Anda bisa mengubahnya di tempat lain tapi mungkin akan ada pengaturan path/lokasi file lagi dan file permissionnya. Terserah anda.

Untuk kembali ke direktori root, ketikkan perintah berikut:

cd ~

Unduh file config dari penyedia layanan VPN anda. Disini saya menggunakan layanan Windscribe dan server yang saya gunakan lokasinya di Perancis. Maka file config yang saya dapatkan adalah Windscribe-France.ovpn. Perlu diketahui, file config VPN selalu berekstensi .ovpn. Contoh isi file confignya akan seperti ini:

client
dev tun
proto udp
remote fr.windscribe.com 443

nobind
auth-user-pass

resolv-retry infinite

auth SHA512
cipher AES-256-CBC
keysize 256
comp-lzo
verb 2
mute-replay-warnings
ns-cert-type server
persist-key
persist-tun

key-direction 1

-----BEGIN CERTIFICATE-----
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
ZYGQgrLt+ot8MbLhJlkp4Q==
-----END CERTIFICATE-----

-----BEGIN OpenVPN Static key V1-----
5801926a57ac2ce27e3dfd1dd6ef8204
2d82bd4f3f0021296f57734f6f1ea714
a6623845541c4b0c3dea0a050fe6746c
b66dfab14cda27e5ae09d7c155aa554f
399fa4a863f0e8c1af787e5c602a801d
3a2ec41e395a978d56729457fe6102d7
d9e9119aa83643210b33c678f9d4109e
3154ac9c759e490cb309b319cf708cae
83ddadc3060a7a26564d1a24411cd552
fe6620ea16b755697a4fc5e6e9d0cfc0
c5c4a1874685429046a424c026db672e
4c2c492898052ba59128d46200b40f88
0027a8b6610a4d559bdc9346d33a0a6b
08e75c7fd43192b162bfd0aef0c716b3
1584827693f676f9a5047123466f0654
eade34972586b31c6ce7e395f4b478cb
-----END OpenVPN Static key V1-----

Edit file config diatas menjadi seperti dibawah ini:

client
dev tun
proto udp
remote fr.windscribe.com 443

script-security 3
route-noexec
route-up /root/route_up.sh

nobind
auth-user-pass /root/auth.txt
reneg-sec 432000
resolv-retry infinite

auth SHA512
cipher AES-256-CBC
keysize 256
comp-lzo
verb 2
ns-cert-type server
persist-key
persist-tun

key-direction 1

-----BEGIN CERTIFICATE-----
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
ZYGQgrLt+ot8MbLhJlkp4Q==
-----END CERTIFICATE-----

-----BEGIN OpenVPN Static key V1-----
5801926a57ac2ce27e3dfd1dd6ef8204
2d82bd4f3f0021296f57734f6f1ea714
a6623845541c4b0c3dea0a050fe6746c
b66dfab14cda27e5ae09d7c155aa554f
399fa4a863f0e8c1af787e5c602a801d
3a2ec41e395a978d56729457fe6102d7
d9e9119aa83643210b33c678f9d4109e
3154ac9c759e490cb309b319cf708cae
83ddadc3060a7a26564d1a24411cd552
fe6620ea16b755697a4fc5e6e9d0cfc0
c5c4a1874685429046a424c026db672e
4c2c492898052ba59128d46200b40f88
0027a8b6610a4d559bdc9346d33a0a6b
08e75c7fd43192b162bfd0aef0c716b3
1584827693f676f9a5047123466f0654
eade34972586b31c6ce7e395f4b478cb
-----END OpenVPN Static key V1-----

Saya jelaskan sedikit kode shell script diatas. Kuncinya ada pada dua baris di bawah ini:

route-noexec
route-up /root/route_up.sh

Fungsi route-noexec ini agar ketika OpenVPN dihidupkan maka ia tidak serta merta mengubah jalur internet server anda lewat VPN secara keseluruhan. Melainkan OpenVPN akan mengikuti aturan jalur yang kita buat lewat file route_up.sh dimana OpenVPN hanya digunakan untuk Transmission.

Selanjutnya, buat file teks kosong kemudian isikan username dan password VPN anda per baris, contoh:

uservpnsaya
pass1234saya

Simpan file tersebut dengan nama auth.txt.

Buat file teks kosong dan simpan dengan nama ips.txt.

Konfigurasi Routing OpenVPN

Torrent client seperti Transmission sudah memiliki fitur bind IP. Anda tinggal mengetikkan perintah berikut untuk pengaturan routing table server anda:

echo "10 custom_table" >> /etc/iproute2/rt_tables

INGAT! perintah di atas hanya dijalankan cukup sekali saja, terlepas anda mau menjalankan OpenVPN berkali-kali.

Seperti yang sudah saya jelaskan sebelumnya, agar OpenVPN tidak mengubah jalur internet server anda maka kita harus menambahkan file route_up.sh untuk pengaturan routing OpenVPN hanya digunakan oleh Transmission. Berikut kode shell script-nya:

#!/bin/bash
echo "$dev : $ifconfig_local -> $ifconfig_remote gw: $route_vpn_gateway"

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
if [ -f $DIR/ips.txt ]
then
IPgateway=$(sed -n '1p' $DIR/ips.txt)
IPinternal=$(sed -n '2p' $DIR/ips.txt)
/bin/ip route del default via $IPgateway dev tun0 table custom_table
/bin/ip rule del from $IPinternal/32 table custom_table
/bin/ip rule del to $IPgateway/32 table custom_table
/bin/ip route flush cache
rm $DIR/ips.txt
fi

/bin/ip route add default via $route_vpn_gateway dev tun0 table custom_table
/bin/ip rule add from $ifconfig_local/32 table custom_table
/bin/ip rule add to $route_vpn_gateway/32 table custom_table
/bin/ip route flush cache
echo $route_vpn_gateway >> $DIR/ips.txt
echo $ifconfig_local >> $DIR/ips.txt

/etc/init.d/transmission-daemon stop
sed -i '/ipv4/c\ "bind-address-ipv4": "'$ifconfig_local'",' /var/lib/transmission-daemon/info/settings.json
sed -i '/ipv6/c\ "bind-address-ipv6": "::1",' /var/lib/transmission-daemon/info/settings.json
sed -i '/blocklist-enabled/c\ "blocklist-enabled": true,' /var/lib/transmission-daemon/info/settings.json
sed -i '/blocklist-url/c\ "blocklist-url": "http://john.bitsurge.net/public/biglist.p2p.gz",' /var/lib/transmission-daemon/info/settings.json

/etc/init.d/transmission-daemon start

exit 0


Simpan file tersebut dengan nama route_up.sh.

Auto Restart OpenVPN jika Koneksi Terputus

Kode shell script di atas sudah termasuk mencegah Transmission tetap mengunduh file torrent ketika koneksi VPN anda terputus. Jika terputus apakah anda harus me-restart OpenVPN kembali? Tentunya anda tidak mau memantau di depan komputer secara terus menerus, bukan? Anda bisa menggunakan shell script di bawah ini:

#!/bin/bash
if ping -c 1 -I tun0 8.8.8.8 &> /dev/null;
then
exit
else
if /usr/bin/screen -list | /bin/grep "torrentvpn";
then
/usr/bin/screen -S torrentvpn -X quit
fi
/usr/bin/pkill -9 openvpn
/usr/bin/screen -AdmS torrentvpn
/usr/sbin/openvpn /etc/openvpn/Windscribe-France.ovpn
fi

Simpan dengan nama check_restart.sh.

Catatan:

  • tun0 adalah network adapter OpenVPN anda pada umumnya. Anda bisa mengeceknya dengan mengetikkan perintah ifconfig.
  • torrentvpn adalah nama Screen yang anda jalankan. Akan saya jelaskan lebih lanjut ketika kita mulai menjalankan OpenVPN. Kalau anda mengikuti tutorial ini step-by-step, nama Screen ini jangan diubah.

Memberikan Akses untuk Eksekusi File Shell Script

Agar seluruh shell script anda bisa dieksekusi tanpa error maka anda harus memberikan hak akses global ke file-file tersebut yang beekstensi .sh. Pastikan anda masih di direktori root, kemudian ketikkan perintah berikut:

chmod +x *.sh

Memulai Menjalankan OpenVPN

Saat yang ditunggu-tunggu sudah tiba. Sekarang kita akan menjalankan OpenVPN. Ketikkan perintah berikut:

screen -S torrentvpn

Perintah di atas untuk menjalankan sesi Screen dengan nama “torrentvpn”. Kemudian anda bisa menjalankan config OpenVPN dengan perintah berikut:

openvpn Windscribe-France.ovpn

Selanjutnya proses penyambungan VPN akan tampil. Jika masih gagal, perhatikan pesan errornya dan perbaiki kembali.

Kemudian anda keluar dari sesi Screen atau detach dengan Ctrl A+D. Anda bisa melihat daftar sesi screen yang sedang berjalan dengan perintah berikut:

screen -list

Perihal tutorial penggunaan Screen ini bisa anda googling. Yang jelas, sebagai orang yang sering berkutat di terminal Linux, Screen ini sangat membantu saya bekerja multi tasking tanpa harus membuka banyak terminal. Ibaratnya seperti punya multi monitor.

Mengecek IP Transmission dengan OpenVPN

Sekarang OpenVPN sudah jalan, tapi akan percuma kalau torrent client kita masih menggunakan IP server kita bukannya IP VPN. Untuk mengeceknya kita bisa menggunakan layanan gratis http://checkmytorrentip.upcoil.com.

Setelah saya melakukan pengecekan di https://www.ipburger.com, saya mendapatkan IP baru yang notabene IP server VPN Windscribe yang ada di Perancis seperti pada gambar di bawah berikut ini:

IP Torrent Baru

ipburger

Artinya, torrent client kita sukses terhubung dengan server VPN. Horee!!

Anda bisa melakukan tes download. Contohnya, dengan mengunduh file ISO Ubuntu Linux di https://www.ubuntu.com/download/alternative-downloads seperti gambar di bawah ini:

proses download torrent

Penjadwalan Script Auto Restart OpenVPN

Langkah terakhir adalah mengatur agar script auto restart OpenVPN dieksekusi setiap 15 menit untuk mengecek apakah koneksi VPN anda masih tersambung. Jika ternyata terputus, maka script ini secara otomatis akan merestart OpenVPN dan menyambungkannya kembali sehingga proses pengunduhan file Transmission anda bisa berlanjut. Untuk pengaturan jadwalnya kita bisa menggunakan cron. Ketikkan perintah berikut untuk instalasi:

apt-get install cron

Kemudian untuk menambahkan jadwal cron, ketikkan perintah berikut:

crontab -e

Pilih editor nano, kemudian tambahkan entri berikut di baris paling akhir:

*/15 * * * * /root/check_restart.sh >> /root/check_restart.log 2>&1

Artinya, script check_restart.sh akan dieksekusi setiap 15 menit sekali. Anda bisa merubah interval waktunya sesuka anda. Kalau anda tidak mau repot, anda bisa menggunakan layanan online cron generator.

Jika anda ingin mengecek status koneksi OpenVPN dan apakah script anda berhasil dieksekusi, anda bisa membuka file check_restart.log.

Yup, demikian tutorial yang cukup panjang saya buat. Semoga bermanfaat dan selamat mencoba!

{ 0 komentar… tambah }

Beri Komentar