TechBalkans
Vodiči

Self-hosting za početnike — od prvog servera do produkcije (kompletan vodič 2026)

Self-hosting nije samo za tehničare. Sa Docker-om, Cloudflare Tunnel-om i dobrim backup-om možete imati produkcijski server za €5-10 mjesečno. Detaljan vodič sa konkretnim primjerima.

DK

Damir Kovačević

DevOps konzultant · 31. august 2026. · 13 min čitanja

Self-hosting za početnike — od prvog servera do produkcije (kompletan vodič 2026)

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 sa cron-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:

  1. SSH ključ umjesto password-a
  2. Firewall (ufw) sa samo port 22 otvorenim
  3. Fail2ban za SSH brute-force zaštitu
  4. Auto security updates (unattended-upgrades)
  5. Cloudflare Tunnel za servise (bez otvorenih portova)
  6. HTTPS everywhere (Caddy ili Traefik)
  7. Docker security — ne pokrećite kontejnere kao root
  8. Backup off-site sa testiranom restore procedurom
  9. Monitoring (Uptime Kuma) — znate kad nešto padne
  10. 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.

DK

Damir Kovačević

Damir Kovačević je član redakcije TechBalkans.

Svi članci od Damir →

Ne propusti nijedan vodič

Sedmični pregled u inbox.

Komentari

Svi mogu vidjeti komentare. Za komentiranje se prijavi.

    Učitavanje komentara...