Laravel Forge je postao default odgovor na pitanje "gdje deployati Laravel aplikaciju". Klikneš, spojiš Git repo, dobiješ SSL i queue worker — magija. Ali Forge je samo provisioning layer: $12/mjesec za upravljanje, plus zaseban server koji moraš platiti negdje drugdje. Za solo developera ili agenciju s desetak manjih projekata, to brzo postane $40-60/mjesec po aplikaciji.
Druga strana priče: moderni cPanel + LiteSpeed + CloudLinux stack 2026. godine radi praktički sve što Forge radi — Git deploy, SSL automatizacija, queue workers, scheduler, izolacija po useru. Razlika je u tome što ne plaćaš zaseban control panel layer, jer je već ukomponiran u hosting paket.
U ovom članku idemo tehnički kroz cijeli životni ciklus Laravel aplikacije na shared hostingu — od git clone do produkcijskog artisan migrate — i jasno povući granicu kad TI stvarno treba VPS, a kad je shared dovoljan i pametniji izbor.
Što Laravel zapravo treba od hostinga
Prije bilo kakve usporedbe, treba znati što je minimalni tehnički zahtjev za Laravel 11/12:
- PHP 8.2+ (Laravel 11), PHP 8.3+ za novije pakete
- PHP ekstenzije:
ctype,curl,dom,fileinfo,filter,hash,mbstring,openssl,pcre,pdo,session,tokenizer,xml - Composer 2.x dostupan kroz SSH
- MySQL 8.0+ ili MariaDB 10.5+
- Node.js 18+ za asset building (Vite, Mix)
- Cache driver: file/database radi out-of-the-box, Redis ili Memcached za heavy load
- Cron access za scheduler
- SSH access za artisan komande i Composer
Sve gore navedeno cPanel + CloudLinux pokriva kroz standardne UI alate i SSH. PHP verzija se mijenja kroz jedan klik (vidi upute za promjenu PHP verzije u cPanelu), Composer je preinstaliran, Node.js ide kroz "Setup Node.js App" modul.
Forge vs cPanel: feature comparison
Hajdemo iskreno usporediti, feature po feature:
| Feature | Laravel Forge | cPanel + LiteSpeed |
|---|---|---|
| Provisioning | Auto, klikom na server | Već provisioned, samo dodaš domenu |
| Git deploy | Webhook na push | Git Version Control + deploy hook |
| SSL (Let's Encrypt) | Auto, klikom | Auto-SSL svakih 24h, bez intervencije |
| Queue workers | Supervisor managed | Cron-based queue:work ili Supervisor uz dogovor |
| Scheduler | Auto-konfiguriran cron | Jedan cron line u cPanelu |
| Database management | Forge UI, MySQL | phpMyAdmin + MySQL/MariaDB native |
| Backups | Custom, vanjska usluga | JetBackup 4x dnevno, ukomponirano |
| PHP verzija | CLI komandom | UI klik, per-domena |
| Izolacija | Per-server | CloudLinux LVE per-user |
| Monitoring | Vanjska usluga | cPanel resource graphs + error logs |
| Cijena (mjesečno) | $12 Forge + $20-40 server = ~$35/mj | Od ~3,3 €/mj za BLOG paket |
| Support | Forge support, server zaseban | 24/7, jedan kontakt |
Bottom line: Forge ima eleganciju "kliknem i imam server", ali ti to plaćaš i u novcu i u činjenici da imaš dva entiteta za upravljati (Forge + server provider + DNS). cPanel ti daje jednu tačku kontakta, ali nije tako glamurozan UI za Laravel-specifične stvari.
Git deploy preko cPanela — step by step
Detaljan vodič imamo u uputama o Git Version Controlu u cPanelu, ali evo sažetka za Laravel specifično.
1. Generiraj SSH ključ u cPanelu
cPanel → SSH Access → Manage SSH Keys → Generate. Kopiraj public key u svoj GitHub/GitLab repo kao Deploy Key (read-only je dovoljan).
2. Kloniraj repo kroz Git Version Control
cPanel → Git Version Control → Create. Clone URL u formatu git@github.com:user/repo.git, repository path npr. /home/user/laravel-app.
3. Postavi document root
Laravel public folder mora biti document root domene. Subdomain → root postavi na /home/user/laravel-app/public. Nikad nemoj public_html nalijepiti preko cijelog repo-a.
4. Deploy hook (.cpanel.yml)
U root repo-a kreiraj .cpanel.yml koji se izvršava nakon "Deploy HEAD Commit" klika:
---
deployment:
tasks:
- export DEPLOYPATH=/home/user/laravel-app
- /bin/cp -R public/* /home/user/public_html/
- cd $DEPLOYPATH && /usr/local/bin/composer install --no-dev --optimize-autoloader
- cd $DEPLOYPATH && php artisan migrate --force
- cd $DEPLOYPATH && php artisan config:cache
- cd $DEPLOYPATH && php artisan route:cache
- cd $DEPLOYPATH && php artisan view:cache
- cd $DEPLOYPATH && php artisan queue:restart
5. .env management
Nikad ne commitaj .env. Stavi ga ručno preko File Managera ili SSH-a u root projekta. Postavi chmod 600 .env da samo tvoj user može čitati.
6. Webhook za auto-deploy (opcionalno)
cPanel generira webhook URL koji možeš zalijepiti u GitHub Settings → Webhooks. Na push na main branch, deploy se automatski pokreće.
Queue workers bez Horizon-a
Ovo je tema oko koje se najviše lome koplja. Horizon je sjajan, ali traži Redis i Supervisor daemon — što na čistom shared hostingu nije dostupno bez dogovora sa supportom.
Realnost je: velika većina Laravel aplikacija ne treba Horizon. Treba poslati email, generirati PDF, obraditi upload — to su sve poslovi koji se odlično rješavaju s database queue driverom i cron-based workerom.
Database queue driver
U .env:
QUEUE_CONNECTION=database
Kreiraj jobs tablicu:
php artisan queue:table
php artisan migrate
Cron-based queue:work
U cPanel Cron Jobs (vidi upute za upravljanje cronjobovima), dodaj cron koji svake minute pokreće worker s timeoutom:
* * * * * cd /home/user/laravel-app && timeout 50 php artisan queue:work --stop-when-empty --tries=3 --timeout=45 >> /dev/null 2>&1
Kako ovo radi: svake minute se pokreće worker koji radi 50 sekundi, obradi sve što ima u redu i ugasi se. Cron ga ponovno pokrene sljedeću minutu. Učinkovito imaš non-stop worker bez Supervisor-a.
Supervisor alternativa
Ako trebaš persistent daemon (ne samo cron), kod nas se to rješava kroz support tiket — postavimo ti Supervisor proces na PRO paketu uz dogovor o LVE limitima. Za 90% slučajeva, cron-based pristup je dovoljan i robustniji.
Scheduler — jedan cron line, gotovo
Laravel scheduler je elegantan: definiraš sve poslove u app/Console/Kernel.php, a OS treba pokrenuti samo jedan cron:
* * * * * cd /home/user/laravel-app && php artisan schedule:run >> /dev/null 2>&1
To je to. Forge ti ovo doda automatski, ali to je jedan red u cPanel UI-u. Ne treba ti za to dodatni servis.
Cache layer — kad Redis stvarno treba
Laravel cache drivers po prioritetu kompleksnosti:
- file — default, radi out-of-the-box, OK do ~100 concurrent korisnika
- database — bolje za multi-server, OK do ~500 concurrent
- memcached — dostupan na cPanelu, dobar za session/cache, brz
- redis — najbolji za queue + cache + sessions, ali traži Redis daemon
Naša preporuka: za 80% projekata file ili database driver je dovoljan. Ako ti latencija postane usko grlo, prvo optimiziraj baze (vidi vodič za MySQL/MariaDB optimizaciju i InnoDB vs MyISAM), pa onda razmisli o Redis-u — što obično znači prelazak na VPS.
Asset building i Vite/Mix deployment
Najveći wtf moment za nove Laravel devove na shared hostingu: "gdje da pokrenem npm run build?"
Pristup 1: build lokalno, commit dist
U .gitignore ukloni public/build/, lokalno radiš npm run build i commitaš generirane fajlove. Najlakše, najbrže za deploy, jedini minus: veće commit-e.
Pristup 2: build na serveru
cPanel → Setup Node.js App → kreiraš Node.js aplikaciju, pokreneš npm install && npm run build kroz SSH ili dodaš u deploy hook:
- cd $DEPLOYPATH && npm ci
- cd $DEPLOYPATH && npm run build
Node verzije 18, 20 i 22 su dostupne.
SSL i HTTPS — Auto-SSL pokriva sve
cPanel ima ugrađen Auto-SSL koji svakih 24 sata provjerava sve domene i automatski generira/produžava Let's Encrypt certifikate. Forge to radi isto.
Force HTTPS u .htaccess
U public/.htaccess dodaj prije Laravel rewrite bloka:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Database migracije u produkciji
Za kreiranje baze koristi cPanel MySQL Databases (vidi upute za MySQL bazu) i postavi user s all privileges na bazu.
Migracije kroz SSH
cd /home/user/laravel-app
php artisan migrate --force
php artisan db:seed --force
Uvijek koristi --force u produkciji jer artisan inače pita za potvrdu i visi.
Rollback strategija
- Napravi snapshot baze (cPanel → JetBackup → Generate Backup, ili
mysqldumppreko SSH-a) - Pokreni migraciju na staging environmentu prvo
- Ako migracija pukne,
php artisan migrate:rollback --step=1 - Ako rollback ne radi (npr. data loss), restore iz JetBackup-a
Zero-downtime migracije
Pravilo: nikad ne kombiniraj data i schema migracije u istom deployu. Prvo deployaj kod koji radi sa starim i novim schema (npr. dodaj column, deploy, popuni, drop stari u sljedećem deployu).
Backup i recovery — JetBackup 4x dnevno
Ovo je gdje cPanel realno tuče Forge bez previše rasprave. JetBackup radi 4 backupa dnevno, čuva ih 30 dana, i možeš restore-ati:
- Cijeli account
- Samo bazu (pojedinačno)
- Samo home directory
- Pojedinačni fajl
- Email accounte
Sve to kroz UI klikom. Forge te tjera da konfiguriraš external backup servis i platiš zasebno. Ovdje je ukomponirano u sve WMD hosting pakete.
Što WMD specifično nudi za Laravel
CloudLinux LVE izolacija po useru
Tvoja Laravel aplikacija ima garantirane resurse (CPU cores, RAM, I/O throughput, entry processes) koji se ne dijele s drugim korisnicima na serveru.
LiteSpeed Web Server s LSAPI za PHP
LiteSpeed je 2-5x brži od Apache + mod_php za PHP aplikacije, i potpuno kompatibilan s .htaccess sintaksom.
NVMe SSD storage
Composer install koji na običnom SSD-u traje 90 sekundi, na NVMe je gotov za 25-30. Migracije, log writes, cache writes — sve direktno bolje.
Paketi i cijene
- BLOG NVMe SSD+ — 39,15 €+PDV/godina. Za solo developer sa 1-2 Laravel projekta.
- START NVMe SSD+ — 58,66 €+PDV/godina. Sweet spot za freelance developera.
- PRO NVMe SSD+ — 93,97 €+PDV/godina. Manja agencija.
Trenutno aktivna akcija 1+1 na stranici akcije.
Kad ti TI treba VPS, a ne shared
Iskreni razgovor — shared hosting nije rješenje za sve. Idi na VPS ako imaš:
- Production e-commerce s queue-heavy backgroundom gdje treba 5+ persistent workera
- Real-time features — websockets, Soketi, Pusher selfhost, Reverb
- Microservices architecture s vlastitim Redis-om, Elasticsearch
- Laravel Octane (Swoole/RoadRunner) s persistent app stateom
- Heavy SaaS s 1000+ concurrent users
FAQ
Mogu li pokrenuti Laravel Horizon na shared hostingu?
Tehnički, ne preporučamo. Horizon traži Redis i persistent Supervisor proces. Ako baš trebaš Horizon UI, idi na VPS. Ako trebaš samo funkcionalnost (queue obrada), cron-based queue:work radi 95% istog posla.
Što ako mi stvarno treba Redis?
Na shared paketima nudimo Memcached kao alternativu — pokriva 90% use case-a Redis-a (cache, sessions).
Kako sa websockets / Laravel Reverb?
Websockets traže persistent TCP konekciju, što na shared hostingu nije izvedivo. Opcije: 1) managed Pusher servis, 2) prebaci se na VPS za Reverb selfhost.
Mogu li koristiti Laravel Telescope u produkciji?
Ne. Telescope je debug alat i u produkciji ti puni bazu s detaljima svake requesta. Drži ga u local i staging environmentu.
Što s Laravel Octane?
Octane traži persistent PHP procese — fundamentalno nekompatibilno s LSAPI/FPM modelom shared hostinga. Octane = VPS, kraj priče.
Cijena vs Forge $12/mjesec + server $20-40 godišnje?
Forge minimum: $12 × 12 = $144/god za Forge, plus server cca $240-480/god = ~$380-620 godišnje po projektu. WMD START paket: 58,66 €/god. Razlika je oko 5-10x.
Kako prebaciti postojeću Forge aplikaciju na cPanel?
Tipičan flow: 1) git push kompletnog koda u svoj Git repo, 2) kloniraš preko Git Version Controla u cPanel, 3) restore baze iz dumpa kroz phpMyAdmin, 4) postaviš .env ručno, 5) deploy hook s composer install i artisan komandama, 6) update DNS-a. Migracija realno traje 30-60 minuta — naš support ti može asistirati.
Zaključak — koji put izabrati
Laravel Forge je odličan alat. Ali za solo developera, freelancera, manju agenciju ili B2B/marketing site — cPanel + LiteSpeed + CloudLinux daje 90% iste funkcionalnosti uz 5-10x nižu cijenu.
Pravi engineering izbor nije onaj koji koristi najnovije tehnologije, nego onaj koji rješava problem klijenta s najmanje moving parts.
Ako želiš provjeriti uklapa li se tvoj projekt u shared model, javi se sa specifikacijama (broj korisnika, queue volumen, asset size) — reći ćemo iskreno trebaš li VPS ili je shared dovoljan.