TAVP Box — Dev Environment All-in-One
TAVP Box adalah dev environment lokal ala Lando, tapi berbasis LXC bukan Docker. Hasilnya: jauh lebih irit RAM, dan Phalcon tidak perlu di-compile ulang tiap kali laptop mati/restart.
1 laptop = banyak "VPS mini". Tiap project = 1 box LXC terisolasi.| Lando (Docker) | TAVP Box (LXC) | |
|---|---|---|
| RAM / 20 project | ~40 GB | ~700 MB (Windows) · ~600 MB (Linux) |
| Phalcon reinstall? | Sering | Sekali (di-bake ke box) |
| Auto domain | *.lndo.site | *.tavp.local |
| Mail per-project | mail.*.lndo.site | mail.*.tavp.local |
| Multi-distro | ✗ | ✓ (Ubuntu/Alpine/Debian/...) |
| Multi-stack | ✓ | ✓ (TAVP/Laravel/Python/Node/Go/...) |
| Production | ✗ | ✓ (banyak site di 1 VPS) |
Prasyarat
- Linux: distro apa pun (Ubuntu/Debian/Fedora/Arch/...).
- Windows: Windows 10/11 64-bit, WSL2 aktif.
- macOS: Homebrew terpasang.
- Tidak perlu paham nginx/docker/LXC.
1. Install
Linux (native)
sudo bash install/install-linux.shWindows (WSL2)
Buka PowerShell sebagai Administrator:
powershell -ExecutionPolicy Bypass -File install/install-wsl.ps1Kalau WSL baru di-install, reboot lalu jalankan installer lagi.
macOS (Lima)
bash install/install-mac.shInstaller memasang LXD, whiptail (TUI), jq, dan menyalin CLI tavpbox ke PATH.
2. Inisialisasi (tavpbox init)
Jalankan sekali. TUI akan muncul:
Pilih base distro:
⮞ Ubuntu 24.04 (default, stabil, LXD resmi)
Alpine 3.20 (paling irit RAM)
Debian 12 / Fedora / Arch / Rocky / openSUSE / Mint / Manjaro / Void
Lainnya... (ketik nama distro)
Domain suffix: tavp.local
RAM max/box: 512MB
CPU max/box: 1- Distro: 10 populer + "lainnya". Box dibuat dari image distro ini.
- Domain: tiap box dapat subdomain otomatis
namabox.tavp.local. - RAM/CPU: limit per box agar 1 box tidak memakan semua resource.
Setelah init, Caddy (reverse proxy) dan DNS wildcard sudah jalan.
3. Buat Box (tavpbox create)
Tanpa argumen → TUI interaktif:
Nama box : project1
Stack : tavp
Phalcon : 5.16 (kosong = tanpa Phalcon)
Folder : /path/ke/project (jadi webroot box)
Services : [✓] mariadb [✓] redis [✓] mailpit [✓] phpmyadminAtau dari file (alak .lando.yml):
tavpbox create --from tavpbox.ymlYang dilakukan tavpbox:
lxc launchimage distro pilihan.- Pasang limit RAM/CPU.
- Map folder lo →
/var/www/htmldi box (persis seperti Lando memetakan webroot). - Pasang stack (PHP + nginx + composer, atau Python/Node/Go/...).
- Bake Phalcon kalau dipilih — sekali saja, persist across restart.
- Pasang services yang dipilih.
- Daftarkan domain + mail ke Caddy/DNS.
Contoh tavpbox.yml
name: project1
stack: tavp
phalcon: "5.16"
path: /home/user/projects/cms
services:
- mariadb
- redis
- mailpit
- phpmyadmin4. Jalankan & Akses
tavpbox start project1Buka browser:
- App :
http://project1.tavp.local - Mail:
http://mail.project1.tavp.local← OTP/email per-project - DB UI:
http://pma.project1.tavp.local(kalau pilih phpmyadmin)
Perintah harian:
tavpbox list # semua box + status
tavpbox stop project1 # matikan → RAM balik 0
tavpbox start project1 # nyalakan (detik, Phalcon tetap ada)
tavpbox rebuild project1 # recreate container, data tetap
tavpbox ssh project1 # masuk terminal box
tavpbox mail project1 # buka mailpit
tavpbox destroy project1 # hapus box
tavpbox snapshot project1 # backup (production)5. Multi-Project (20 box sekaligus)
Karena tiap box cuma ~30 MB, 20 project aman:
tavpbox create # project1
tavpbox create # project2
tavpbox create # project3
...
tavpbox listMasing-masing dapat domain sendiri:
http://project1.tavp.local + mail.project1.tavp.local
http://project2.tavp.local + mail.project2.tavp.local
http://project3.tavp.local + mail.project3.tavp.localEmail tidak tercampur karena tiap box punya mailpit sendiri.
6. Service Plugin (tambah sendiri)
Tiap service = 1 file *.tavp.sh di ~/.tavpbox/services/. Contoh solr.tavp.sh:
TVP_NAME="solr"
TVP_DESC="Apache Solr search"
TVP_CATEGORY="search"
TVP_PORTS=(8983)
TVP_UI_PORT="8983"
TVP_UI_SUBDOMAIN="solr"
TVP_INSTALL_apt='apt-get install -y solr-tomcat && service solr start'
TVP_INSTALL_apk='apk add solr && rc-service solr start'
# ... per distro: dnf / zypper / pacman / xbpsTaruh file → langsung muncul di TUI create. Lando punya ~30 plugin; TAVP Box bisa unlimited karena definisinya terbuka.
Service bawaan: mariadb mysql postgres mongodb redis memcached elasticsearch solr varnish mailpit mailhog phpmyadmin adminer nginx apache.
Stack bawaan: tavp laravel symfony wordpress python node go ruby blank.
7. Production & TAVP Cloud
TAVP Box dipakai juga di VPS production: banyak website, 1 VPS, tiap box terisolasi + resource limit. Untuk jual hosting ke orang asing (untrusted tenant), pakai mode VM (LXD --vm) — evolusi ke tavp-cloud.
8. Troubleshooting
- Domain tidak resolve (Windows): IP WSL2 bisa berubah tiap reboot. Jalankan lagi
install/install-wsl.ps1. - Caddy gagal: pastikan port 80/443 bebas. Cek log Caddy.
- dnsmasq bentrok systemd-resolved: arahkan
/etc/resolv.confke dnsmasq. - Folder Windows tak kelihatan di box: pakai path WSL (
/mnt/c/Users/...), bukanC:\....
Lisensi: MIT
