Install Kutt URL Shortener di NAT VPS


NATVPS.id – Kutt adalah sebuah layanan URL shortener modern dan open-source yang memungkinkan pengguna untuk memperpendek URL panjang menjadi tautan singkat, mengelola tautan tersebut, dan melihat statistik. Kutt mendukung penggunaan domain kustom, memungkinkan pengelolaan pengguna, dan dapat di-self-host sendiri.

Artikel ini membahas mengenai langkah-langkah install Kutt di NAT VPS menggunakan Docker, beserta konfigurasi NGINX untuk reverse-proxy. Artikel ini menggunakan Ubuntu 22.04 sebagai acuan, namun Anda dapat menggunakan distribusi lain seperti Debian dan CentOS. Pastikan OS yang digunakan mendukung Docker.

Konfigurasi Port Forwarding

Mengingat kita menggunakan NAT, kita perlu menambahkan 2 konfigurasi port forwarding pada panel Virtualizor (atau panel VPS lain sesuai provider), yaitu port forwarding HTTP dan HTTPS untuk domain Kutt.

Sebagai contoh, pada artikel ini akan menggunakan domain kutt.tutorial.mdinata.my.id untuk mengakses Kutt. Anda bebas mengganti domain sesuai pilihan Anda. Catat port dan domain ini, karena kita akan menggunakannya lagi pada proses instalasi.

blank

Jangan lupa untuk menambahkan DNS record yang menuju ke IP publik NAT VPS Anda, seperti ini:

blank

Jika bingung, silahkan membaca artikel kami mengenai domain forwarding di sini: Penjelasan Domain Forwarding di NAT VPS.

Install Docker

Kita akan menggunakan Docker dan Docker Compose untuk deploy Kutt.

Pertama, Install curl menggunakan perintah:

apt update && apt install curl -y

blank

Kemudian, jalankan script instalasi otomatis dari Docker dengan memasukkan:

curl -fsSL get.docker.com | sh

Tunggu hingga proses instalasi selesai.

blank

Install Kutt

Pertama, clone repositori Kutt.

git clone --depth 1 /opt/kutt
 cd /opt/kutt

blank

Salin konfigurasi .env terlebih dahulu sebelum memulai Kutt:

apt install nano -y # Jika belum
 cp .example.env .env
 nano .env

Beberapa konfigurasi yang perlu diperhatikan:

  • JWT_SECRET: Private key sepanjang >= 32 karakter untuk autentikasi. Untuk membuatnya, masukkan perintah pwgen -s 40 1. WAJIB DIISI.
  • DEFAULT_DOMAIN: Alamat server Kutt Anda. Sesuaikan dengan domain Anda, contoh: kutt.tutorial.mdinata.my.id
# Optional - App port to run on
 PORT=3000
 
 # Optional - The name of the site where Kutt is hosted
 SITE_NAME=Kutt
 
 # Optional - The domain that this website is on
 DEFAULT_DOMAIN=kutt.tutorial.mdinata.my.id
 
 # Required - A passphrase to encrypt JWT. Use a random long string
 JWT_SECRET=
 
 # Optional - Database client. Available clients for the supported databases:
 # pg | better-sqlite3 | mysql2
 # other supported drivers that you can use but you have to manually install them with npm:
 # pg-native | sqlite3 | mysql
 DB_CLIENT=better-sqlite3
 
 # Optional - SQLite database file path
 # Only if you're using SQLite
 DB_FILENAME=db/data
 
 # Optional - SQL database credential details
 # Only if you're using Postgres or MySQL
 DB_HOST=localhost
 DB_PORT=5432
 DB_NAME=kutt
 DB_USER=postgres
 DB_PASSWORD=
 DB_SSL=false
 DB_POOL_MIN=0
 DB_POOL_MAX=10
 
 # Optional - Generated link length
 LINK_LENGTH=6
 
 # Optional - Alphabet used to generate custom addresses
 # Default value omits o, O, 0, i, I, l, 1, and j to avoid confusion when reading the URL
 LINK_CUSTOM_ALPHABET=abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789
 
 # Optional - Tells the app that it's running behind a proxy server
 # and that it should get the IP address from that proxy server
 # if you're not using a proxy server then set this to false, otherwise users can override their IP address
 TRUST_PROXY=true
 
 # Optional - Redis host and port
 REDIS_ENABLED=false
 REDIS_HOST=127.0.0.1
 REDIS_PORT=6379
 REDIS_PASSWORD=
 # The number for Redis database, between 0 and 15. Defaults to 0.
 # If you don't know what this is, then you probably don't need to change it.
 REDIS_DB=0
 
 # Optional - Disable registration. Default is true.
 DISALLOW_REGISTRATION=true
 
 # Optional - Disable anonymous link creation. Default is true.
 DISALLOW_ANONYMOUS_LINKS=true
 
 # Optional - This would be shown to the user on the settings page
 # It's only for display purposes and has no other use
 SERVER_IP_ADDRESS=
 SERVER_CNAME_ADDRESS=
 
 # Optional - Use HTTPS for links with custom domain
 # It's on you to generate SSL certificates for those domains manually, at least on this version for now
 CUSTOM_DOMAIN_USE_HTTPS=false
 
 # Optional - Email is used to verify or change email address, reset password, and send reports.
 # If it's disabled, all the above functionality would be disabled as well.
 # MAIL_FROM example: "Kutt <[email protected]>". Leave it empty to use MAIL_USER.
 # More info on the configuration on MAIL_ENABLED=false
 MAIL_HOST=
 MAIL_PORT=587
 MAIL_SECURE=true
 MAIL_USER=
 MAIL_FROM=
 MAIL_PASSWORD=
 
 # Optional - Enable rate limitting for some API routes
 ENABLE_RATE_LIMIT=false
 
 # Optional - The email address that will receive submitted reports
 REPORT_EMAIL=
 
 # Optional - Support email to show on the app
 CONTACT_EMAIL=

blank

Simpan file tersebut dengan Ctrl-X, y, kemudian Enter.

Terakhir, jalankan Kutt:

docker compose up -d

Tunggu hingga proses deploy selesai. Deploy pertama kali dapat memakan waktu beberapa menit karena harus mengunduh seluruh image Kutt dan mengonfigurasi container dari awal.

blank

Konfigurasi NGINX (Reverse Proxy)

Agar kita dapat mengakses URL melalui domain seperti kutt.tutorial.mdinata.my.id, kita dapat menggunakan reverse proxy seperti NGINX.

Pertama, install NGINX melalui perintah:

# Hapus Apache2 dan pendukungnya (biasanya terpasang secara bawaan di VPS OpenVZ)
 apt purge apache2* -y
 
 # Install NGINX
 apt install nginx -y

blank

Buat konfigurasi host baru khusus untuk Kutt:

nano /etc/nginx/sites-available/kutt

Kemudian tempelkan konfigurasi berikut:

# 
 proxy_cache_path /root/.nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g 
 inactive=60m use_temp_path=off;
 server {
 server_name kutt.tutorial.mdinata.my.id;
 listen 80;
 listen [::]:80;
 
 location / {
 proxy_cache my_cache;
 proxy_cache_revalidate on;
 proxy_cache_min_uses 3;
 proxy_cache_background_update on;
 proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
 proxy_cache_lock on;
 proxy_pass proxy_http_version 1.1;
 }
 
 location /api/url/sharex {
 proxy_pass proxy_redirect off;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header Content-Type application/json;
 proxy_set_body $http_target;
 }
 }

Ganti kutt.tutorial.mdinata.my.id dengan domain Anda.

blank

Aktifkan konfigurasi tersebut dengan:

ln -sf /etc/nginx/sites-available/kutt /etc/nginx/sites-enabled/kutt
 
 systemctl restart nginx # Restart NGINX

Generate Sertifikat SSL (Let’s Encrypt)

Agar domain kita dapat diakses melalui HTTPS, kita perlu membuat sertifikat SSL. Kita dapat menggunakan sertifikat SSL gratis dari Let’s Encrypt melalui Certbot.

Install Certbot dan plugin NGINX nya menggunakan perintah:

apt install python3-certbot python3-certbot-nginx

blank

Lalu, generate sertifikat melalui Certbot dengan perintah

certbot --nginx -d kutt.tutorial.mdinata.my.id

Ganti kutt.tutorial.mdinata.my.id dengan domain Anda.

blank

Selamat! Domain Anda saat ini dapat diakses melalui koneksi aman HTTPS.

Mengakses Kutt

Kutt dapat diakses melalui domain Anda sebelumnya. Contoh: https://kutt.tutorial.mdinata.my.id.

blank

Buat akun admin untuk login pertama kali.

blank

Selamat, Kutt siap digunakan!

Penutup

Demikianlah artikel ini mengenai langkah-langkah install Kutt di NAT VPS. Jika bingung atau ragu, jangan sungkan untuk bertanya di grup Telegram @IPv6Indonesia. Terima kasih!



Hiburan

Berita Olahraga

News

Berita Terkini

Berita Terbaru

Berita Teknologi

Seputar Teknologi

Drama Korea

Resep Masakan

Pendidikan

Berita Terbaru

Berita Terbaru

Berita Terbaru

Lifestyle

Leave a Reply

Your email address will not be published. Required fields are marked *