Setelah sukses ubah Android jadi PC desktop, sekarang kita upgrade HP kamu jadi infrastruktur server yang beneran pro. Kita bakal pasang WordPress dan bikin website kamu bisa diakses dari mana aja tanpa sewa VPS. Cukup pake HP yang ada di kantong aja!
Instalasi LEMP Stack & Cloudflared ARM64
Kita butuh Nginx, MariaDB, PHP 8.4, dan Cloudflared. Untuk Cloudflared, kita pake paket .deb biar terkelola rapi sama sistem Ubuntu ARM64 kamu.
Jalankan perintah ini di terminal:
sudo apt update && sudo apt install nginx mariadb-server cron php8.4-fpm php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl -y
Lalu instal Cloudflared ARM64:
sudo wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb && sudo dpkg -i cloudflared-linux-arm64.deb && rm cloudflared-linux-arm64.deb
Jangan lupa aktifin layanannya biar semuanya jalan:
sudo service nginx start && sudo service mariadb start && sudo service php8.4-fpm start && sudo service cron start
Setting MariaDB Database
Jalankan perintah ini buat setup awal:
sudo mysql_secure_installation
Kalo gak bisa atau error Command Not Found. Kamu bisa coba ini.
sudo mysql-secure-installation
terus ikutin kaya dibawah ini:
- Enter current password for root: Langsung tekan Enter.
- Switch to unix_socket authentication?: Ketik
Y. - Change the root password?: Ketik
Y. masukin password database yang kuat. - Remove anonymous users?: Ketik
Y. - Disallow root login remotely?: Ketik
Y. - Remove test database & Reload?: Ketik
Y.
Kalo udah selesai, login ke MySQL pake user root buat bikin database WordPress:
Terus masukin perintah SQL ini satu-satu:
CREATE DATABASE wordpress_db;
CREATE USER 'nama_user'@'localhost' IDENTIFIED BY 'password_kamu';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'nama_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Instalasi WordPress & Set Permissions
Bikin direktori baru di /var biar struktur file kamu rapih:
sudo mkdir -p /var/namadomain/wordpress && cd /var/namadomain/wordpress
Setelah direktori dibuat dan masuk ke direktori itu selanjutnya unduh WordPress dari sumber aslinya menggunakan wget dan ekstrak.
https://wordpress.org/latest.tar.gz && sudo tar -xzvf latest.tar.gz --strip-components=1 && sudo rm latest.tar.gz
Oh iya, biar gak error pas proses instalasinya, jangan lupa kamu harus atur permissionnya dulu. Karena kalo gak diubah pas mau install bakalan error atau gak jalan.
sudo chown -R www-data:www-data /var/namadomain/wordpress
sudo find /var/namadomain/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/namadomain/wordpress/ -type f -exec chmod 644 {} \;
Konfigurasi Nginx Hardening Simpel & Gzip
Bikin file config baru:
sudo nano /etc/nginx/sites-available/web-pro
Masukin kode ini biar server kamu aman, kalo kamu mau lebih advance lagi kamu bisa ngulik sendiri atau cari-cari di google ya:
server {
listen 80;
server_name www.webkamu.com;
root /var/namadomain/wordpress;
index index.php index.html;
gzip on;
gzip_static on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_min_length 100;
gzip_buffers 16 8k;
gzip_types
text/plain
text/css
text/javascript
text/xml
text/x-component
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
application/atom+xml
application/vnd.ms-fontobject
application/x-font-ttf
application/x-font-opentype
application/x-font-truetype
application/wasm application/x-web-app-manifest+json
image/svg+xml
image/x-icon
image/vnd.microsoft.icon
font/ttf
font/eot
font/otf
font/opentype;
location ~* \.(svn|hg|bzr|sh|git|json|env|php_bak|sql|yaml|bak|swp|dist|passwd)$ {
deny all;
access_log off;
error_log off;
log_not_found off;
}
location ~* /(wp-config|wp-config-sample|config|stripe) {
deny all;
access_log off;
error_log off;
log_not_found off;
}
location ~* ^/swagger {
location ~* \.(json|yaml|yml|xml|txt)$ {
deny all;
access_log off;
error_log off;
log_not_found off;
}
allow all;
access_log off;
error_log off;
log_not_found off;
}
location ~* /(node_modules|backup|db|logs)/.*\.php$ {
deny all;
access_log off;
error_log off;
log_not_found off;
}
location / {
try_files $uri $uri/ /index.php?$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $realip_remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port 443;
access_log off;
error_log off;
log_not_found off;
}
location ~ \.php$ {
access_log off;
error_log off;
log_not_found off;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
}
}
Aktifkan:
sudo rm /etc/nginx/sites-enabled/default && sudo ln -s /etc/nginx/sites-available/web-pro /etc/nginx/sites-enabled/ && sudo service nginx restart
Hubungkan ke Cloudflare
Biar website online secara profesional, ikutin langkah dashboard dan terminal ini:
A. Otorisasi & Dashboard Setup
- Jalankan
cloudflared tunnel login di terminal, terus klik link otorisasi domain kamu. - Jalankan
cloudflared tunnel create nama-tunnel terus catet ID Tunnel-nya. - Login ke Cloudflare dashboard, pilih sidebar Zero Trust.
- Pilih Networks > Connectors > klik titik tiga pada tunnel kamu > Configure.
- Di tab Public Hostname, klik Add a public hostname:
1. Hostname: Pilih domain kamu (Subdomain opsional). 2. Service: Type HTTP, URL 127.0.0.1:80. 3. Save.
B. Konfigurasi & Eksekusi Background Service
Biar gak mati pas kamu tekan CTRL+C, kamu jalankan sebagai Service. Buat file /root/.cloudflared/config.yml terus isi kaya gini.
Terus jalanin perintah ini:
tunnel: <ID_TUNNEL_KAMU>
credentials-file: /root/.cloudflared/<ID_TUNNEL_KAMU>.json
metrics: 127.0.0.1:4444
ingress:
- hostname: domainkamu.com
service: http://127.0.0.1:80
- service: http_status:404
cloudflared service install
service cloudflared start
service cloudflared status
Setup Akhir wp-config
Ini bagian paling penting buat ngubungin WordPress kamu sama database-nya. Edit wp-config.php kamu dan sesuaikan bagian ini:
define( 'DB_NAME', 'wordpress_db' );
define( 'DB_USER', 'nama_user' );
define( 'DB_PASSWORD', 'password_kamu' );
define( 'DB_HOST', 'localhost' );
define('WP_HOME','https://www.webkamu.com');
define('WP_SITEURL','https://www.webkamu.com');
define('FS_METHOD', 'direct');
define('WP_CRON_URL', 'http://127.0.0.1/wp-cron.php');
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS'] = 'on'; }
Modul Magisk & KSUN
Biar server otomatis nyala pas HP reboot, gunain tiga file ini di folder modul Magisk kamu:
module.prop
id=ikymomo_server
name=Ikymomo Web Server By Liaviora
version=v2.7
versionCode=2
author=Liaviora
description=Layanan Start Otomatis, (Nginx|PHP-FPM|MariaDB|Cron|Cloudflared) & Remount suid /data
post-fs-data.sh
#!/system/bin/sh
MODDIR=${0%/*}
UBUNTU_PATH="/data/local/os/ubuntu"
mkdir -p $UBUNTU_PATH/dev
mkdir -p $UBUNTU_PATH/dev/pts
mkdir -p $UBUNTU_PATH/proc
mkdir -p $UBUNTU_PATH/sys
mount -o bind /dev $UBUNTU_PATH/dev
mount -o bind /dev/pts $UBUNTU_PATH/dev/pts
mount -o bind /proc $UBUNTU_PATH/proc
mount -o bind /sys $UBUNTU_PATH/sys
mount -o remount,suid /data
service.sh
#!/system/bin/sh
MODDIR=${0%/*}
CHROOT_PATH="/data/local/os/ubuntu"
sleep 30
chroot $CHROOT_PATH /usr/bin/env -i HOME=/root TERM=xterm PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c "
# KONFIGURASI ULIMIT
ulimit -n 46080
echo 'Starting MariaDB...'; service mariadb start;
echo 'Starting PHP-FPM...'; service php8.4-fpm start;
echo 'Starting Nginx...'; service nginx start;
echo 'Starting Cron...'; service cron start;
echo 'Starting Cloudflared...'; service cloudflared start;
"
setprop dalvik.vm.dex2oat-Xms 56m
setprop dalvik.vm.dex2oat-Xmx 112m
setprop dalvik.vm.heapgrowthlimit 112m
setprop dalvik.vm.heapmaxfree 28m
setprop dalvik.vm.heapsize 112m
setprop dalvik.vm.heapstartsize 14m
setprop dalvik.vm.image-dex2oat-Xms 56m
setprop dalvik.vm.image-dex2oat-Xmx 56m
sysctl -w net.ipv4.tcp_fin_timeout=15
sysctl -w net.ipv4.tcp_keepalive_time=60
sysctl -w net.ipv4.tcp_keepalive_intvl=10
sysctl -w net.ipv4.tcp_keepalive_probes=6
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
sysctl -w net.ipv4.tcp_fastopen=3
sysctl -w vm.swappiness=10
sysctl -w vm.dirty_background_ratio=5
sysctl -w vm.dirty_ratio=10
sysctl -w fs.file-max=650000
sysctl -w vm.vfs_cache_pressure=125
sysctl -w net.core.netdev_max_backlog=5000
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.ipv4.tcp_max_tw_buckets=2000000
Disclaimer
Aku ingetin, segala resiko yang terjadi pas kamu ngikutin tutorial ini ditanggung sendiri ya. Pastiin kamu udah backup data penting sebelum eksekusi kode-kode di atas.
Gimana? Gak nyangka kan kalau HP yang biasanya cuma buat scrolling medsos sekarang udah bertransformasi jadi server WordPress yang pro dan bisa diakses dari seluruh dunia? Dengan kombinasi LEMP Stack, Cloudflare Tunnel, dan modul Magisk & KSUN, kamu udah selangkah lebih maju dalam dunia self-hosting.
Kalau ada yang bingung atau mau pamer hasil deploy website kamu, langsung aja mampir ke kolom komentar ya. Kapalia tunggu cerita seru kamu!