Prije 5 godina, self-hosting je zahtijevao sysadmin znanje, statičke IP-ove, port forwarding, i sate debugiranja firewall-a. Danas, sa Docker Compose-om, Cloudflare Tunnel-om i dobrim VPS provajderima, bilo ko sa osnovnim Linux znanjem može imati produkcijski server za 1-2 sata setup-a.
Ovo je moj vodič nakon 8 godina self-hosting iskustva. Pokrivam sve — od izbora hardvera do backup strategije i sigurnosti.
Šta je self-hosting i zašto se isplati
Self-hosting = hostujete vlastite aplikacije na vlastitom hardveru (ili VPS-u) umjesto da plaćate SaaS.
Isplati se za:
- Lični blog (Ghost, WordPress) — €5/mj vs €25/mj Medium
- Photo backup (Nextcloud) — €5/mj za 1TB vs €10/mj Google One
- Email (Stalwart, Mailcow) — €0-3/mj vs €7-12/mj Fastmail
- VPN (WireGuard) — €0 vs €5-12/mj NordVPN
- Password manager (Vaultwarden) — €0 vs $36/god 1Password
- Home Assistant za pametnu kuću — €0 vs €10/mj Nabu Casa
- Git (Forgejo) — €0 vs $44/koris/mj GitHub
- Analytics (Plausible) — €0 vs $9/mj Google Analytics 360
Ukupno: ako koristite 5+ ovih servisa, self-hosting štedi €30-80/mj.
Ne isplati se za:
- Aplikacije koje zahtijevaju milione korisnika (Netflix, Spotify)
- Aplikacije sa strogo licenciranim modelom (Adobe Creative Cloud)
- Aplikacije koje trebaju enterprise infrastrukturu (bankarski sistemi)
Hardverske opcije
A) VPS (Virtual Private Server) — preporučeno za početnike
Šta je: Virtuelna mašina u data centru, pristupaš preko SSH-a.
Najbolji provajderi (2026):
- Hetzner (DE/FI): €3.79/mj za 2 GB RAM, €5.39/mj za 4 GB (CX22, najbolji odnos cijene/kvaliteta)
- Netcup (DE): €4.50/mj za 4 GB
- OVH (FR): €6/mj za 4 GB
- Contabo (DE): €5.50/mj za 6 GB (veći resursi, manja pouzdanost)
- DigitalOcean (US): $6/mj za 1 GB, $12/mj za 2 GB
- Vultr (US): $6/mj za 1 GB, $12/mj za 2 GB
Za dijasporu: Hetzner (Njemačka) je geografski najbliži, latencija 5-15 ms iz BiH/HR/SR/AT/CH.
Preporuka: Hetzner CX22 (4 GB RAM, 2 vCPU, 40 GB SSD) za €5.39/mj. Pokreće 10-20 self-hosted aplikacija bez problema.
B) Raspberry Pi 4/5
Prednosti: Tih, mali, troši 5-10W, jednokratna investicija €60-150.
Mane: ARM arhitektura, neke Docker slike nisu optimizirane, sporije od VPS-a, nema redundantne napajanja.
Za koga: Hobby entuzijasti, ljudi koji žele učiti. Ne za produkciju.
Setup: Raspberry Pi OS Lite 64-bit + Docker + Portainer (za GUI).
C) Stari laptop/desktop
Prednosti: Besplatan, imate ga već.
Mane: Veći, bučan, troši 50-150W (3-5x više od VPS-a ili RPi).
Preporuka: Samo ako imate stari hardver i želite testirati. Za produkciju, VPS je jeftiniji nakon 6 mjeseci (račun za struju).
D) Mini PC (N100, N305)
Prednosti: Kompaktan, tih, troši 10-25W, dovoljno moćan.
Najbolje opcije:
- Beelink EQ12 (Intel N100, 16 GB RAM, 500 GB SSD) = €200
- MinisForum UM580 (AMD, 16 GB) = €280
- Intel NUC 13 (i5, 16 GB) = €450
Isplati se za: 24/7 rad bez cloud lock-in-a, privatnost, dugoročnu uštedu.
Povrat investicije: Ako plaćate €30/mj za cloud servise, ušteda od €360/god pokriva €200 mini PC za 7 mjeseci.
Moja preporuka za dijasporu
Hetzner CX22 (€5.39/mj) + Cloudflare (besplatan) + Hetzner Storage Box (€3.50/mj za backup).
Ukupno: €9/mj. Pokreće 10+ aplikacija.
Ako želite full privatnost (bez third-party Cloudflare): Dodajte još €5/mj za drugi VPS kao backup, ili koristite WireGuard za remote pristup.
Setup: Hetzner VPS sa Docker-om
Korak 1: Naručite VPS
Na hetzner.com/cloud → izaberite CX22 → Ubuntu 24.04 LTS → Setup:
- SSH key (preporučeno) ili password
- Firewall: dozvolite samo port 22 (SSH), sve ostalo zatvoreno
- Location: Falkenstein (Nürnberg) ili Helsinki
Cijena: €5.39/mj + €0.50 setup = €5.89 prvi mjesec.
Korak 2: Inicijalni setup
SSH pristup:
ssh root@<server-ip>
Update sistema:
apt update && apt upgrade -y
Kreirajte non-root korisnika:
adduser admin
usermod -aG sudo admin
Prebacite SSH ključ:
mkdir -p /home/admin/.ssh
cp ~/.ssh/authorized_keys /home/admin/.ssh/
chown -R admin:admin /home/admin/.ssh
chmod 700 /home/admin/.ssh
chmod 600 /home/admin/.ssh/authorized_keys
Onemogućite root login:
sudo nano /etc/ssh/sshd_config
# PermintRootLogin no
# PasswordAuthentication no
sudo systemctl restart sshd
Firewall:
sudo ufw allow 22/tcp
sudo ufw enable
Korak 3: Instalacija Docker-a
# Instalacija Docker-a
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Dodajte korisnika u docker grupu
sudo usermod -aG docker admin
newgrp docker
# Provjerite
docker --version
docker run hello-world
Korak 4: Instalacija Portainer (Docker GUI)
docker volume create portainer_data
docker run -d -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Sada imate GUI na https://<server-ip>:9443. Ulogirajte se i kreirajte admin account.
Korak 5: Reverse proxy sa Caddy (besplatan HTTPS)
# Caddy za automatski HTTPS
docker run -d \
--name caddy \
--network host \
-v caddy_data:/data \
-v caddy_config:/config \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
caddy:2
Kreirajte Caddyfile:
blog.tvojadomena.com {
reverse_proxy localhost:2368
}
photos.tvojadomena.com {
reverse_proxy localhost:11000
}
Restart: docker restart caddy.
Caddy automatski dobavlja Let’s Encrypt SSL certifikate. Besplatno.
Korak 6: Cloudflare Tunnel (bez otvaranja portova!)
Ako ne želite otvarati port 80/443 na ruteru (preporučeno za kućne instalacije):
# Instalacija cloudflared
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared focal main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update
sudo apt install cloudflared
# Login
cloudflared tunnel login
# Kreirajte tunnel
cloudflared tunnel create techbalkans
# Konfig
mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.yml
config.yml:
tunnel: <tunnel-id>
credentials-file: /home/admin/.cloudflared/<tunnel-id>.json
ingress:
- hostname: blog.tvojadomena.com
service: http://localhost:2368
- hostname: photos.tvojadomena.com
service: http://localhost:11000
- service: http_status:404
DNS:
cloudflared tunnel route dns techbalkans blog.tvojadomena.com
cloudflared tunnel route dns techbalkans photos.tvojadomena.com
Pokretanje:
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
Prednost: Nema otvorenih portova na ruteru, sve preko Cloudflare mreže. DDoS zaštita uključena.
Konkretni self-hosted setup
Ovo je moj docker-compose.yml za moj server:
version: "3.8"
services:
ghost:
image: ghost:5
restart: always
environment:
url: https://blog.tvojadomena.com
volumes:
- ghost_data:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: <secret>
MYSQL_DATABASE: ghost
volumes:
- mysql_data:/var/lib/mysql
nextcloud:
image: nextcloud:28
restart: always
volumes:
- nextcloud_data:/var/www/html
- photos_data:/var/www/html/data/admin/files
vaultwarden:
image: vaultwarden/server:latest
restart: always
environment:
SIGNUPS_ALLOWED: "false" # Onemogućite javne registracije
INVITATION_TOKEN: <secret>
volumes:
- vaultwarden_data:/data
uptime-kuma:
image: louislam/uptime-kuma:1
restart: always
volumes:
- uptime_data:/app/data
portainer:
image: portainer/portainer-ce:latest
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
ghost_data:
mysql_data:
nextcloud_data:
photos_data:
vaultwarden_data:
uptime_data:
portainer_data:
Start:
docker compose up -d
Backup strategija
Pravilo 3-2-1:
- 3 kopije vaših podataka
- 2 različita medija (lokalni + remote)
- 1 off-site backup
Moja setup:
- Lokalni backup:
/backup/docker-volumes/na serveru, automatski sacron-om - Off-site backup: Hetzner Storage Box (€3.50/mj za 1TB) sa
rclone-om - Backup script:
#!/bin/bash
# /usr/local/bin/backup.sh
set -e
BACKUP_DIR=/backup
STORAGE_BOX=storagebox-user:backups
DATE=$(date +%Y%m%d-%H%M%S)
# Dump baze
docker exec $(docker ps -qf "name=db") mysqldump -u root -p<secret> ghost > $BACKUP_DIR/db-$DATE.sql
# Backup Docker volumena
docker run --rm -v ghost_data:/source:ro -v $BACKUP_DIR:/backup alpine tar czf /backup/ghost-$DATE.tar.gz -C /source .
docker run --rm -v nextcloud_data:/source:ro -v $BACKUP_DIR:/backup alpine tar czf /backup/nextcloud-$DATE.tar.gz -C /source .
# Push na Storage Box
rclone copy $BACKUP_DIR $STORAGE_BOX --progress
# Obriši lokalne starije od 7 dana
find $BACKUP_DIR -type f -mtime +7 -delete
crontab -e:
0 3 * * * /usr/local/bin/backup.sh
Sigurnost
Minimum za produkcijski server:
- SSH ključ umjesto password-a
- Firewall (ufw) sa samo port 22 otvorenim
- Fail2ban za SSH brute-force zaštitu
- Auto security updates (
unattended-upgrades) - Cloudflare Tunnel za servise (bez otvorenih portova)
- HTTPS everywhere (Caddy ili Traefik)
- Docker security — ne pokrećite kontejnere kao root
- Backup off-site sa testiranom restore procedurom
- Monitoring (Uptime Kuma) — znate kad nešto padne
- Logging (ili cloud log servis)
Konkretna preporuka za početnike
Prvi mjesec:
- Hetzner CX22 (€5.39/mj) — WordPress blog + Nextcloud za fotke
- Hetzner Storage Box (€3.50/mj) — backup
- Cloudflare (besplatan) — DNS + Tunnel
- Ukupno: €9/mj
Drugi mjesec (kad se uhodate):
- Dodajte Vaultwarden (besplatno)
- Dodajte Uptime Kuma (besplatno)
- Dodajte Glances (monitoring resursa)
Treći mjesec (za naprednije):
- WireGuard VPN
- Paperless-ngx (dokumenti)
- Immich (Google Photos alternativa)
- Stirling PDF (PDF alat)
Šesti mjesec (kad shvatite šta vam treba):
- Vlastiti mail server (Stalwart) — napredno
- Vikunja ili Cal.com za kalendar
- Focalboard za project management
Konačni sud
Self-hosting u 2026. nije više “samo za entuzijaste”. Sa Docker Compose-om, Cloudflare Tunnel-om i dobrim VPS provajderom, bilo ko sa 4 sata vremena i €10/mj budžetom može imati full setup.
Prednosti:
- Privatnost (vaši podaci su vaši)
- Ušteda (dugoročno 50-70% jeftinije od SaaS-a)
- Fleksibilnost (radite šta hoćete sa serverom)
- Učenje (razumijete kako internet funkcionira)
Mane:
- Vrijeme (setup traje sate, troubleshooting dane)
- Odgovornost (ako pukne, vi ste krivi)
- Sigurnost (morate paziti, vaš server je vaša briga)
Za dijasporu u EU, preporučujem Hetzner + Cloudflare. Latencija 5-15 ms, GDPR compliant, cijena €5-10/mj za full setup.
Ako imate pitanja o specifičnom setup-u, pišite u komentare. Postoji i naš HomeLab za programere vodič za naprednije.
Prijavi se da ostavi komentar.
Registracija je besplatna putem Google računa.