Self-hosted OpenResiApp cez Docker — sprievodca inštaláciou

Self-hosted znamená: vaše dáta, váš server, žiadny mesačný poplatok. OpenResiApp je open-source pod MIT licenciou — Docker image ipk0/open-resiapp je verejne dostupný a obsahuje plnú funkcionalitu. Tento sprievodca prevedie postupom od stiahnutia setup skriptu po prvé prihlásenie. Pri normálnom serveri trvá kompletná inštalácia ~10 minút.

Čo budete potrebovať

Doménu môžete obstarať za ~10 €/rok napr. cez Websupport, GoDaddy, Namecheap. Ak nechcete vlastnú doménu, môžete využiť DuckDNS (zadarmo) — bytovka.duckdns.org funguje rovnako dobre.

Rýchla inštalácia cez setup.sh (odporúčané)

Pripravený jednoriadkový script automatizuje takmer všetko. Pripojte sa SSH-om na server a spustite:

curl -fsSL https://get.open-resi.app -o setup.sh
chmod +x setup.sh
./setup.sh

Čo script urobí:

  1. Detekuje OS (Linux distribúcia alebo macOS).
  2. Ak chýba Docker, doinštaluje ho cez package manager (apt/yum/dnf/brew).
  3. Ak chýba openssl, doinštaluje.
  4. Vytvorí adresár /opt/openresi s konfiguráciou.
  5. Vygeneruje bezpečné heslá pre databázu a session secret (cez openssl rand).
  6. Interaktívne pýta:
    • Vašu doménu (napr. bytovka.example.sk)
    • Email pre admin účet
    • (Voliteľne) SMTP server pre odosielanie emailov, alebo necháte default Brevo s API kľúčom, ktorý si nastavíte neskôr
  7. Stiahne docker-compose.yml a Docker image.
  8. Spustí kontajnery: PostgreSQL, OpenResiApp web, Caddy reverse proxy.
  9. Caddy automaticky získa Let's Encrypt certifikát pre vašu doménu.
  10. Vytvorí admin účet a vypíše prvé heslo do konzoly.

Script je idempotentný — môžete ho spustiť opakovane, zachová existujúce dáta a heslá, opraví len to čo treba.

Prvé prihlásenie

Po dokončení skriptu otvorte v prehliadači:

https://vasa-domena.sk

Caddy automaticky presmeruje HTTP → HTTPS, certifikát je platný od prvej sekundy. Uvítací screen vyzve na zadanie:

Po prihlásení vás čaká wizard pre vytvorenie prvej bytovky. Môžete:

Manuálna inštalácia cez docker-compose

Ak preferujete manuálny postup pre väčšiu kontrolu, alebo upravený setup (napr. external PostgreSQL, vlastný reverse proxy), stiahnite docker-compose.yml a upravte:

# Vytvorenie adresára
mkdir -p /opt/openresi && cd /opt/openresi

# Stiahnutie docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/open-resiapp/open-resiapp/main/docker-compose.yml \
  -o docker-compose.yml

# Vytvorenie .env súboru
cp .env.example .env
nano .env  # upraviť heslá, doménu, SMTP

# Spustenie
docker compose up -d

# Sledovanie logov
docker compose logs -f openresi

Minimálne hodnoty, ktoré musíte v .env upraviť:

Zálohovanie

Setup script vytvorí cron job, ktorý každú noc o 3:00 spustí backup script:

0 3 * * * /opt/openresi/backup.sh

Script vyrobí:

Retencia 30 dní — staršie zálohy sa automaticky mažú. Toto je local backup; odporúčame nakonfigurovať aj off-site backup na inú lokalitu (S3, Backblaze B2, alebo vlastný NAS) cez rsync alebo restic. Ukážková restic konfigurácia je v docs/backups.md.

Aktualizácie na novú verziu

Aktualizácia je jednoduchá:

cd /opt/openresi
./backup.sh                    # manuálna záloha pred aktualizáciou
docker compose pull            # stiahne novú verziu image-u
docker compose up -d           # reštart s novou verziou
docker compose logs -f openresi  # sledovanie migrácií

Migrácie PostgreSQL databázy sa spustia automaticky pri štarte. Pred aktualizáciou si pozrite CHANGELOG.md — breaking changes sú vždy explicitne označené sekciou „⚠️ Breaking changes" a obsahujú migračné inštrukcie.

Časté problémy a riešenia

Caddy nedokáže získať SSL certifikát

Najčastejšia príčina: porty 80/443 nie sú dostupné z internetu, alebo DNS A záznam ešte nepropagoval. Skontrolujte:

dig vasa-domena.sk +short
# Má vrátiť IP vášho servera

curl -I http://vasa-domena.sk
# Má vrátiť odpoveď zo servera, nie timeout

Ak DNS ešte nepropagoval, Caddy bude skúšať každých 5 minút; nechajte bežať a počkajte. Logy: docker compose logs caddy.

OpenResiApp kontajner sa neštartuje

Najčastejšie: chyba v .env súbore (chýbajúce povinné premenné) alebo databáza nedostupná. Pozrite:

docker compose logs openresi --tail 50

Riadky obsahujúce „missing required env" alebo „connection refused" ukážu konkrétny problém.

Emaily sa neodosielajú

Skontrolujte SMTP konfiguráciu v .env. Najčastejšia chyba: použitie SendGrid/Brevo bez správneho API kľúča, alebo firewall blokuje port 587. Testujte priamo:

docker exec -it openresi node -e "require('./scripts/test-email.js')()"

Časté otázky — self-hosted inštalácia

Aké sú minimálne požiadavky na server pre OpenResiApp?

Minimálne: 1 GB RAM, 10 GB disku, 1 vCPU. Odporúčané pre bytovku do 50 bytov: 2 GB RAM, 20 GB SSD, 2 vCPU. Postačujúce: VPS od 5 €/mes (Hetzner, Contabo, DigitalOcean), Raspberry Pi 4 s 2GB RAM (musí mať verejnú IP cez router port-forward alebo Cloudflare Tunnel), alebo Synology / QNAP NAS s podporou Docker.

Funguje setup.sh aj na macOS?

Áno. Setup script auto-detekuje OS (macOS / Linux) a použije zodpovedajúce inštalátory — Homebrew na macOS, apt/yum/dnf na Linuxe. Pri macOS bude pravdepodobne pýtať heslo pre sudo na inštaláciu Docker Desktop. Pre produkčné nasadenie odporúčame Linux server, nie macOS.

Ako funguje automatické HTTPS cez Caddy?

Docker compose obsahuje Caddy server, ktorý pri spustení automaticky vystaví Let's Encrypt certifikát pre zadanú doménu. Predpokladom je, že porty 80 a 443 sú dostupné z internetu a doména ukazuje DNS A/AAAA záznamom na váš server. Obnova certifikátov je automatická — Caddy ich obnoví ~30 dní pred expiráciou. Nepotrebujete Certbot ani manuálnu konfiguráciu.

Ako sa robia zálohy v self-hosted verzii?

Setup script vytvorí cron job, ktorý každý deň vyrobí dump PostgreSQL databázy + tar archív súborových príloh (PDF zápisnice, foto papierových hlasov). Zálohy sa ukladajú do /var/openresi/backups s 30-dňovou retenciou (staršie sa automaticky mažú). Odporúčame ich tiež syncovať na off-site úložisko cez rsync alebo restic — toto si nastavíte sami podľa preferovaného poskytovateľa.

Ako aktualizujem self-hosted inštanciu na novú verziu?

Príkazom docker compose pull && docker compose up -d v adresári inštalácie. Migrácie databázy sa spustia automaticky pri štarte novej verzie. Pred aktualizáciou odporúčame manuálnu zálohu cez ./backup.sh script. Pre kontrolu novej verzie pozrite CHANGELOG.md v GitHub repe. Breaking changes sú vždy explicitne označené.

Spustite vlastnú inštanciu

Open-source pod MIT licenciou. Docker image ipk0/open-resiapp verejný na Docker Hub. Bez registrácie, bez licenčných poplatkov.