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:
Lalu instal Cloudflared ARM64:
Jangan lupa bangunin layanannya biar gak ada yang tidur:
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:
Kalo udah selesai, login ke MySQL pake user root buat bikin database WordPress: sudo mysql -u root -p
Terus masukin perintah SQL ini satu-satu:
Instalasi WordPress & Set Permissions
Bikin direktori baru di /var biar struktur file kamu rapih:
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:
Aktifkan:
Hubungkan ke Cloudflare
Biar website online secara profesional, ikutin langkah dashboard dan terminal ini:
A. Otorisasi & Dashboard Setup
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:
Setup Akhir wp-config
Ini bagian paling penting buat ngubungin WordPress kamu sama database-nya. Edit wp-config.php kamu dan sesuaikan bagian ini:
Modul Magisk & KSUN
Biar server otomatis nyala pas HP reboot, gunain tiga file ini di folder modul Magisk kamu:
module.prop
post-fs-data.sh
service.sh
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. Oprek dengan teliti biar gak rungkad!
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!







SSL aktif?
Aktif
Thanks👍
Biar enggak semua IP cloudflare gimana kak? Ko saya kaya buta IP ya gak bisa bedain mana pengunjung mana cloudflare 🤣🤣🤣🤣
Buka ip resmi cloudflare
http {...}set_real_ip_from 103.21.244.0/22; real_ip_header CF-Connecting-IP;sudo nginx -tsudo service nginx reloadThanks 👍
Aktifkan brotli gimana?
Kak minta konfigurasi yang di blok dong apa aja
Biar support brotli gimana? Modul apa yang di install?
ID tunnelnya dapet darimana kak?
What theme are you using?
ID tunnelnya dong dapet darimana?
Dari akun cloudflare kamu
Cara buat tunnel baru gimana?
cloudflared login cloudflared tunnel create nama-tunnel-kamu cloudflared service install cloudflared service startIzin buat referensi ya kak?
Cara aktifin kompresi brotli bagaimana?
Cara install php cli sama php imagick gimana? Terus sama install php opcache bcmatch? Tolong dong…..
sudo apt install php-cli php-imagickSama itu, atur memori imagick sama thread-nya bagaimana?
Blokir themes, plugins dan uploads lewat nginx untuk php bagaimana? Tolong solusinya. Soalnya di log 404 Rank Match banyak sekali
location ~* /(themes|plugins|uploads)/ {location ~* \.(png|jpg|jpeg|gif|ico|css|js|woff|woff2|ttf|svg)$ {
allow all;
access_log off;
error_log off;
log_not_found off;
}
location ~* \.(php|txt|md|bak|sh)$ {
deny all;
access_log off;
error_log off;
log_not_found off;
}
}
Kalo kamu mau nginx ghosting pake ini
return 444;😘🎀🎀🎀
Aktifin brotli & gzip compression bagaimana? Apa harus kompilasi nginx atau ada modul yang di install?
Install ini
sudo apt install libnginx-mod-http-brotli-filtersudo apt install libnginx-mod-http-brotli-staticCek gzip
nginx -V 2>&1 | grep --color -o with-http_gzip_static_moduleCek brotli
ls -l /etc/nginx/modules-enabled/ | grep brotliBuka
sudo vi /etc/nginx/nginx.conf<- Kamu bisa cari digoogle Terussudo nginx -tdansudo service nginx restartKode gzip on; dan seterusnya harus di server { … }?
Terus yang buat brotli mana?
Bagi lah, gw setengah jalan nih
Disini juga bisa
sudo vi /etc/nginx/nginx.confhttp { ... }Brotlinya?
Maksudnya gimana?
Kode brotli
Cara bikin file json yang ini gimana “ID_TUNNEL_KAMU.json”? Di saya kok enggak bisa konek ya pas cloudflared start status enggak healty. Tolong bantuannya kak, semoga dibaca terimakasih.
nano ~/.cloudflared/"ID_TUNNEL_KAMU".jsoncloudflared tunnel list<- Copy id tunnel nya teruscloudflared tunnel token “ID_TUNNEL_KAMU”Nanti kalo tokennya udah muncul kamu copy terus decode
echo -n "PASTE_TOKEN_KAMU" | base64 -dNanti ada 3 token kamu paste ke dalam file
Isi filenya begini:
"AccountTag": "PASTE_DISINI",
"TunnelSecret": "PASTE_DISINI",
"TunnelID": "PASTE_DISINI"
“a” -> Account tag
“s” -> Tunnel secret
“t” -> TunnelID
Hasil dari decode yang ada di “echo -n” tadi.
Maaf maksudnya bagaimana?
Yang mana?
Dapat tokennya dari cloudflare? Di dashboard sebelah mananya?
Cara ganti password user yang sudah ada di mysql bagaimana kak?
mysql -u root -pSELECT user, host FROM mysql.user;ALTER USER 'nama_user'@'localhost' IDENTIFIED BY 'password_baru';FLUSH PRIVILEGES;exitSaya sudah ada web yang jalan di vps, kalo pake cloudflared bisa enggak ya? Rencana saya ingin hidden biar nginx pake soket tanpa port.
Pake vps mau tanpa port dan cuma jalur socket unix susah bwang
Tapi bisa enggak?
Di saya tidak stabil
Gak stabil apanya?
Cara backup Ubuntu tarball gimana? Saya rencana mau pindah device
Sama bingung
Ada solusi?
Tunnel saya kenapa kagak mau konek ya??
Gak koneknya gimana? Token dan id tunnel bener gak? Terus kamu udah buat
config.yml? Samaid_tunnel.json?Update module please
Iya nanti ya
Mana??
Update
Mana kak?
Mana???
Update modul di gw kadang jalan kadang kagak jadi kudu manual
Update modul
Besok ya
Kalo looping terus gimana fixnya?
Looping gimana?
Di saya lopping semenit itu kenapa?
Looping? Redirect?
Pas buka https://namadomain.com/wp-admin itu enggak mau masuk redirect error gitu. Cara benerinnya gimana?
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {$_SERVER['HTTPS'] = 'on';
}
Tambahin itu di
wp-config.phppaling atasMakasih
Nginx gagal running gimana cara fixnya?
sudo killall -9 nginxsudo rm /etc/nginx.pidsudo service nginx startCek udah running apa belum
sudo service nginx statusBantu please
Di gw kenapa membeku ya? Kalo ngerubah tampilan harus purge di cloudflare. Terus sessions login juga nyangkut udah logout masih login haram banget. Tolong fix-nya gimana??
Di gw sama
Di saya enggak jalan
Di aku gak bisa update artikel
Coba bypass cache di cloudflare buat cookie wordpress
"wordpress_logged_in_" , "wordpress_sec_" , "comment_author_"Di dashboard cloudflare, Cache Rulesitemap Rank Match blank putih
Cara fix sitemap Rank Match blank putih gimana?
location ~* ([^/]*)sitemap(.*)\.x(m|s)l$ {rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
rewrite ^/([a-z]+)?-sitemap\.xml$ /index.php?sitemap=$1 last;
}
Masih blank putih ya, apa cara lain?
location ~* ([^/]*)sitemap(.*)\.x(m|s)l$ {add_header Cache-Control "no-store, no-cache, must-revalidate" always;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
Coba kamu ganti itu, buat cache-nya kamu atur juga di dashboard cloudflare bypass buat sitemap supaya sinkron sama header kamu.
Terimakasih kak sudah bisa sekarang thankyou
Pake try_files $uri $uri/ /index.php?args; bisa enggak?
Header Cache-Control dobel, cara fix gimana? Bagian sitemap
Sudah tambah itu tapi masih blank. Cara fix-nya pliss kak
Kamu liat dikomentar ya 😊
Kadang web suka 502 kenapa
Nginx or php-fpm crash maybe, coba cek apa running? Kalo kamu pake tunnel cloudflare cek apa cloudflared running?
Sering crash
Cache-Control di header kenapa gak muncul ya? Udah purge cache juga di cloudflare tapi masih nihil
Di saya ada tapi waktunya beda sama yang di setting di nginx masih bawaan default dari cloudflare.
Coba atur di dashboard cloudflare, cari menu “Rules” -> “Page Rules”
domain.com/* Cache Level: Cache Everything, Origin Cache Control: OnCache buat file statis kaya css, js, png dsb 30 (hari) itu bagaimana? Apa harus buat settingan beda lagi?
Iya, kalo mau simpel langsung ke dashboard cloudflare aja bagian menu Caching Rule. Buat rules baru terus isi bagian Expressions
(lower(http.request.uri.path) contains "/wp-content/" or lower(http.request.uri.path) contains "/wp-includes/" or lower(http.request.uri.path) contains "/wp-admin/")and (http.request.uri.path.extension in {"css" "js" "jpg" "jpeg" "png" "gif" "webp" "avif" "svg" "ico" "woff" "woff2"})
ThenEdge TTL 1 mounthBrowser TTL 1 mounthsave.Di header lu ko detik cache bisa beda-beda? Lempar sini konfigurasi nya
Setting di dashboard cloudflare
Udah konfigurasi di nginx belum headernya?
add_header Cache-Control “public, max-age=3600, s-maxage=3600”;
Taruh itu didalam server { … } or http { … }
Konfigurasi cache nginx gimana?
sudo mkdir -p /var/cache/nginxsudo chown www-data:www-data /var/cache/nginxfastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:100m max_size=1g inactive=150m use_temp_path=off;fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache CACHE;
fastcgi_cache_valid 200 301 404 150m;
Permisi, hallo mau tanya di saya kenapa tidak bisa buat postingan baru ya? Padahal semua sudah berjalan lancar tapi pas mau buat postingan terus di simpan tidak bisa. Ada solusi?
Pesan errornya apa? Coba cek pake curl
curl -I https://namadomain.com/wp-json/Kalo status error atau 403 berarti kena blokir. Biasanya karena api itu bermasalah kamu jadi gak bisa simpan postingan.
Blokir berdasarkan string kueri di nginx bagaimana untuk string tertentu?
Tunnel sering putus nyambung
Cloudflare sering stop sendiri kenapa? Di start lagi kadang bisa kadang enggak.
Stop gimana?
Saya blokir page wordpress dengan cara ini “~*^/page(/.*|\d+|$)” dan fitur pencarian seperti domain.com/page/2?s=Bintang kena blokir. Cara yang benar seperti apa?
"~*^/page(/\d+)?(\:|$)"yang kena apa aja?domain.com/pagekenadomain.com/page/2kenadomain.com/page/3dan seterusnyadomain.com/page/2?s=Bintangamandomain.com/page/2?s=Bintang+amanThanks 👍
😉
Atur rate limiting bagaimana?
Buat apa?
https://domain.com/page/2 block
https://domain.com/page/2?s=Test aman sesuai
Supaya ini kena juga bagaimana https://domain.com/page/2/ ?
Soalnya yang itu 301 redirect location ke https://domain.com/page/2/
"~*^/page(/\d+/?)?(\:|$)"Pake inidomain.com/page/2Kena dan penambahan tanda / kena karena sifatnya opsional/? <-Makasih
😉
Idealnya berapa children pm PHP buat website yang berjalan menggunakan server android?
4-8 udah cukup, tapi kalo ram hpnya banyak kasih aja 10 udah lebih dari cukup buat WP blog biasa.
Di saya kenapa 405 ya?
405 pas lagi ngapain?
Pas ngetes ke file statis kaya begini
name.com/folder/images.png atau ke file css dan js. Dia 405 metode POST sedangkan GET or HEAD aman.
Kamu pake nginx? Kalo pake nginx iya kalo nembak file statis emang 405 kecuali di akalin.
Nginx
Biar tidak 405 gimana?
Cara blokir ekstensi sampah kecuali ekstensi yang diperlukan untuk website bagaimana?
Ekstensi sampah yang gimana? Maksud kamu regexnya?
Iya betul itu maksud saya
"~*\.((?!(php|js|css|woff|woff2|ttf|html|txt|xml|json|jpg|jpeg|png|svg|webp|avif|ico|gif|zip)($|\?))[a-z0-9\.\-\_]+)(\?.*|$)"Di nginx blok location?
Map or location bisa
Mau tanya kok di anda itu bisa 410 ekstensi random aneh itu gimana?
Maksudnya gimana?
Tunnel sering putus dan gagal start kenapa ya? Selalu dapet 502 terus.
Udah install service-nya belum buat cloudflared-nya? Terus gagal startnya pas lagi gimana?
Sudah kadang masih suka 502 dan buka dashboard loading terus
Ganti DNS lain dicoba dulu
Kalo pas buka dashboard wordpress itu loading terus kenapa?
Disaya juga sama, malah sampe reload 3 kali kadang bisa kadang enggak.
Jaringannya pake apa? Wifi atau Data? Coba pake DNS cloudflare atau DNS yang lain. Kalo kamu udah install service cloudflared, kamu coba edit
sudo vi /etc/init.d/cloudflared. Terus masukin parameter initunnel --overwrite-dns --retries 5 --grace-period 30s --protocol auto run --token "TOKEN TUNNEL KAMU". Kalo kamu pake config.yml kamu sesuaikan aja ya.Bagaimana cara blokir url encoding?
Up
Mau tanya di saya kenapa saat Cache-Control di hilangkan statusnya malah bypass atau cache permanen? Apa ada konfigurasi lain?
Coba di page rule aktifin
Origin Cache Control. Dan Cache RuleRespect Existing Headers.Saya sudah seperti itu tapi hasilnya masih sama
Kok aneh ya? Kamu pake vps apa shared hosting? Kadang kalo pake shared hosting aturan cachenya suka tabrakan sama penyedia. Contoh, kaya kamu mau pake SWR tapi gak jalan karena aturan dari penyedia hosting nya.
Shared hosting
Cara benerinnya gimana?
Page Rule:
Cache Level: Cache Everything, Edge Cache TTL: 2 jam, Browser Cache TTL: 2 jamTes dulu coba begitu hasilnya apa? Bypass, Dynamic atau Hit?
Bisa statusnya EXPIRED bukan UPDATING meskipun disaya sudah pasang di header
Berarti ada tabrakan di sisi penyedia
Saya sudah menyertakan stale-while-revalidate tapi seperti tidak berfungsi
Coba kamu kirim tiket ke penyedia tempat kamu hosting, siapa tau mereka bisa menyelesaikan masalah kamu.
Masih enggak bisa dan selalu EXPIRED, kalaupun suntik di header itu enggak jalan dan age terlampau jauh dari durasi header yang di tentukan.
Terima jasa jadi enggak?
Modul itu bisa di pasang untuk magisk? Apa harus KSUN or KSU?
Bisa di magisk
Ok👌
Permisi apa anda terima jasa?
Boleh minta file nginx.conf nya?
Buat apa?
Saya punya satu folder bernama “backup”, tapi saya ingin folder “admin” di dalam folder backup itu tidak terkena block 403. Bagaimana caranya?
"~*^/backup(/(?!(admin))|$)"Map directive nginx konfigurasi blokir akses memggunakan cookie gimana dah? Di saya malah blokir semua meskipun cookie benar.