Shared hosting je odličan dok jednog dana nije. CPU limit, memory limit, neighbour problem, nemoguće instalirat custom software — sajt zna kad je prerast je shared. Ovo je vodič kada migrirat na VPS, kako bez downtimea, i koje su tipične greške.
Kad shared hosting više nije dovoljan
Tehnički signali
- Sajt postaje spor u peak satima (3-5 popodne, večer) — neighbouri overload-aju server.
- cPanel pokazuje recurring CPU/IO/EP limit hit-ove.
- Visit count 5000+ dnevno za WP, 1000+ za WooCommerce.
- Treba ti software koji shared ne nudi — npr. specifična PHP ekstenzija, custom cron više od 1/min, Redis, ElasticSearch.
- Treba ti SSH s root pristupom za debugging.
- Treba ti više od jedne MariaDB instance ili Postgres umjesto MySQL.
Business signali
- Sajt ti je glavni prihod — downtime je gubitak novca.
- Klijenti traže SLA garancije koje shared ne može dat.
- Treba ti PCI compliance za handling kartica (shared ne može SAQ-D).
- Imaš više sajtova za istog klijenta — VPS jeftiniji per sajt.
Kad shared još NIJE problem
- WP blog s 1000 visits/dan i lakim caching-om.
- Brochure sajt za malu firmu, malo trafica.
- Klijent još nije sigurno da posao opstaje.
- Tim nema sysadmin vještine i ne želi managed VPS.
Migracija prerano = nepotreban trošak + sysadmin overhead.
Tipovi VPS-a
Unmanaged VPS
Provider ti da gol server. Ti instaliraš OS, web server, MariaDB, postavi cPanel ili konfiguracijaš nginx ručno, security patches, backupi — sve ti.
Cijena: 5-50 EUR/mj.
Naj za: tehnički timovi, developeri koji znaju Linux.
Managed VPS
Provider hosts hardware + održava software stack (security patches, backupi, monitoring, OS upgrades). Ti samo deployaš sajt.
Cijena: 30-200 EUR/mj.
Naj za: agencije i klijenti koji žele performance bez DevOps overhead-a.
Dedicated server
Cijeli fizički server samo za tebe. Najveći resource, najveća kontrola.
Cijena: 100-500+ EUR/mj.
Naj za: enterprise apps, agencije s 20+ klijenata na istom serveru.
Kako sizing — resource estimacija
| Sajt tip | vCPU | RAM | NVMe | Mjesečno EUR |
|---|---|---|---|---|
| WP blog do 10k visits/dan | 2 | 4GB | 40GB | 15-30 |
| WP korp + WooCommerce mali | 4 | 8GB | 80GB | 30-60 |
| WooCommerce mid (1k orders/mj) | 6 | 16GB | 160GB | 60-100 |
| WooCommerce large + multisite | 8 | 32GB | 320GB | 100-200 |
| Laravel app + Redis + queue | 4 | 8GB | 80GB | 30-60 |
| Multi-tenant SaaS / agency | 16 | 64GB | 500GB+ | 200-400 |
Migration plan — 7 koraka bez downtime-a
Korak 1 — Audit i sizing (Day -14)
- List sve sajtove, baze, email accounte, cron jobove na shared.
- Provjeri custom PHP config, .htaccess rules, hidden plugin-e.
- Snimi sve DNS zapise (A, MX, TXT, CNAME).
- Audit Resource Usage u cPanelu zadnjih 30 dana — vidiš peak load.
- Sizing VPS-a temeljem peak × 2 za buffer.
Korak 2 — Postavi VPS (Day -10)
- Provision VPS, OS, cPanel/WHM (ili nginx/Apache direkt ako managed bez panela).
- Sistem patch + security (UFW firewall, fail2ban, SSH ključ only).
- PHP version match shared (npr. PHP 8.2), iste ekstenzije.
- MariaDB/MySQL instaliran, optimiziran (innodb_buffer_pool_size = 50% RAM-a).
- SSL Let's Encrypt setup (AutoSSL).
Korak 3 — Smanji TTL na DNS-u (Day -3)
Default TTL je obično 3600 (1h) ili 86400 (1 dan). Smanji na 300 (5 min) dan-dva prije migracije. Kad promijeniš A record, propagacija je brza.
Korak 4 — Migrate fajlove i bazu (Day -1 noć)
- Tar gzip
public_html+ email accounti na shared, scp na VPS, untar. - mysqldump baze na shared, import na VPS.
- Update
wp-config.php(DB host, user, pass) ili.env(Laravel). - Test sajt preko
hostsfajla (mapiraj domenu na novi IP lokalno).
Korak 5 — Final sync (Day 0)
Tijekom prebacivanja DNS-a, novi orders/posts mogu pasti i na stari i na novi server. Strategija:
- Read-only mode na starom sajtu nekoliko sati (WP plugin za read-only).
- Final rsync fajlova + final mysqldump u trenutku DNS switcha.
- Promijeni A record na novi IP.
- Čekaj propagation (s TTL 300, gotovo 30 min).
Korak 6 — Verify + monitor (Day 0+1)
- Test sve kritične flow-ove: login, checkout, kontakt forma, email send.
- Monitor server load — htop, MySQL connections, error log.
- Cron jobs aktivirani na novom serveru, deaktivirani na starom.
- Email migrate — IMAP sync ili imapsync alat.
Korak 7 — Cleanup (Day 7)
- Vrati TTL na 3600+.
- Cancel shared hosting (čekaj 7 dana za sigurnost — možeš se vratit ako problem).
- Update backup strategiju za novi server.
- Update monitoring (Uptime, Sentry, Better Stack).
Zero-downtime alternative — proxy method
Za critical sajt (webshop, news portal):
- Postavi nginx reverse proxy na novi server koji proxy-a stari server.
- Promijeni DNS na novi server. Sav traffic ide kroz proxy → stari sajt.
- Migrate fajlove + bazu, test interno.
- Kad si spreman, switch proxy config — sad serve lokalno umjesto proxy starom.
- Cancel stari hosting.
Bez DNS downtime window-a, ali kompliciraniji setup.
Email migracija — najteža stvar
Email je obično najveći problem migracije jer:
- Korisnici imaju puno staraj emails (10+ GB nije rijetkost).
- IMAP sync sporiji od fajl rsync-a.
- MX promjena propagira sporije od web DNS-a.
Tool: imapsync — Perl skripta koja sync-a između dva IMAP servera. imapsync --host1 old.server.com --user1 user --password1 pass --host2 new.server.com --user2 user --password2 pass.
Stage:
- Postavi nove email accounte na VPS.
- Imapsync svih starih maila → nove (može trajat 6-24h za velike accounte).
- Switch MX zapis.
- Final imapsync za bilo koji mail koji je stigao između stage 2 i 3.
cPanel-to-cPanel migration (najlakše)
Ako prelaziš sa shared cPanel na VPS s cPanel, WHM ima built-in transfer tool. Cijeli account (sajt + baze + email + DNS + cron) se kopira jednom komandom.
# U WHM novog servera:
Transfers → Copy Account → SSH na stari server
Trajanje 30 min - 4h ovisno o veličini.
Tipične greške
- Zaboravio update
wp-config.phpnakon migracije — sajt down jer pokušava se spojit na staru bazu. - Stari DNS u tema-i (hardkodirano
https://example.comumjesto relative URL-ova). - File permissions wrong nakon migracije —
chown -R user:user /home/user/public_html. - SELinux blokira nginx ako koristiš RHEL/Alma — provjeri
setenforce 0ili pravilno postavi contexts. - Mail i web na istom IP-u za WP sajt iza Cloudflare-a — origin IP leakne kroz mail.
- Cron jobs aktivni na oba servera istovremeno → dvostruki email send, dvostruka naplata.
WMD i VPS migracija
WMD radi managed VPS migracije iz shared hostinga (drugog providera ili našeg) — full plan, zero-downtime za critical sajtove, email IMAP sync, DNS i SSL setup, post-migration monitoring 7 dana. Email migracija imapsync-om uključena. cPanel-to-cPanel transfer kad je moguć (najbrže). Custom Laravel/Craft deploy s queue worker setup, Redis, monitoring. Fixed price quote po veličini sajta, downtime quote 0-15 min za standardni WP.
FAQ
Koliko traje migracija? Mali sajt (WP blog) 2-4h. Mid (WooCommerce 5k orders) 8-12h. Large s emails 24-48h ali sa zero downtime.
Mogu li sam migrirat ako nemam sysadmin iskustva? Tehnički da kroz Softaculous Backup + Restore, ali rizik je velik. Managed migracija od hosting providera je tipično 100-300 EUR jednokratno.
Što ako nešto pukne tijekom migracije? Imaj backup starog sajta. Stari hosting ne brišeš odmah — drži 7-14 dana paralelno za rollback.
SEO impact? Nula ako sajt ostane na istoj domeni, isti URL struktura, isti content. Google ne vidi razliku.
Treba li novi SSL certifikat? Da, izda se nov za novi server (Let's Encrypt automatski). Stari SSL na starom serveru je nebitan nakon migracije.
Razmišljaš o migraciji s shared na VPS? WMD radi full managed migracije s zero-downtime planom + 30-dana post-migration support. Javi se preko kontakt forme.