Oracle Cloud (OCI)
Proč Oracle Cloud, co se v účtu nastavilo (rozpočet, compartment, IAM, kvóta) a jak vypadá síť a VM.
Na této stránce
V jedné větě: MiniShop běží v Oracle Cloud Infrastructure (region Frankfurt) na virtuálním stroji Ampere A1 (ARM, 2 OCPU, 12 GB RAM) z bezplatného tarifu Always Free – za 0 Kč měsíčně.
Proč Oracle Cloud
MiniShop potřebuje trvale běžící procesy (RabbitMQ, consumery, outbox worker) a aspoň ~2 GB RAM. Služby, které se při nečinnosti uspí (serverless), nejsou vhodné.
| Poskytovatel | Co dostanu | Cena / měsíc | Verdikt |
|---|---|---|---|
| Oracle Cloud Always Free | VM ARM 2 OCPU / 12 GB, 200 GB disk, Object Storage 20 GB | 0 Kč | zvoleno |
| Hetzner, OVH, Netcup (VPS) | 2–4 vCPU / 4 GB | ~120–180 Kč | nad rozpočet, jen „holý server“ |
| Azure Container Apps | nativní cíl Aspire | odhadem 300–600 Kč | nad rozpočet |
| AWS / Google free tier | 1 GB RAM nebo dočasné kredity | 0 Kč jen dočasně | málo paměti |
Výhoda navíc: OCI je skutečný cloud – tenancy, compartmenty, IAM politiky, virtuální sítě, objektové úložiště, rozpočty. Tyto pojmy platí stejně v AWS i Azure.
Co se v účtu nastavilo a proč
Přirovnání: Tenancy je nájemní smlouva na celou budovu. Compartment je jedna kancelář pro projekt. Technický uživatel je řemeslník s klíčem jen od té kanceláře. Rozpočet je hlídač elektroměru.
| Nastavení | Hodnota | Proč |
|---|---|---|
| Domovský region | Frankfurt (eu-frankfurt-1) |
nejblíž ČR, 3 availability domains (víc šancí na volnou A1 kapacitu). Nejde později změnit. |
| Administrátor + MFA | váš login | hlavní klíč od všeho – jen na správu, chráněný druhým faktorem |
Rozpočet minishop-budget |
4 € měsíčně, upozornění při 1 % skutečné útraty a 100 % předpovědi | plán stojí 0 Kč, takže každá útrata je signál chyby |
Compartment minishop |
vše MiniShopu na jednom místě | oddělení od ostatního; práva i kvóty jdou omezit na něj |
Skupina minishop-admins + politika |
manage all-resources in compartment minishop |
nástroje nesmí mimo compartment ani omylem |
Technický uživatel minishop-automation |
jen API klíč, žádné heslo do konzole | OCI CLI a OpenTofu nikdy nepracují pod administrátorem |
Kvóta minishop-quota |
v compartmentu jen A1 do 2 OCPU / 12 GB | pojistka – placený tvar VM se v compartmentu vůbec nedá vytvořit |
| Pay As You Go | účet převedený z Free Tier | nečinnou free VM by Oracle mohl po 7 dnech zastavit; PAYG má lepší kapacitu. Free limity platí dál. |
| OCI CLI | z Docker image, ne instalace | bez Pythonu na PC; stejný ~/.oci/config použije OpenTofu |
Síť a VM
flowchart LR
internet(("Internet")) --> igw["Internet Gateway<br/>minishop-igw"]
igw --> rt["Route table<br/>0.0.0.0/0 → IGW"]
rt --> sl{{"Security list<br/>dovnitř jen 80, 443 (+ ICMP)"}}
sl --> subnet["Veřejný subnet 10.0.0.0/24"]
subnet --> vm["VM minishop-vm<br/>VM.Standard.A1.Flex<br/>Ubuntu 24.04 ARM"]
rip["Reserved IP<br/>141.144.255.238"] --> vm
ts["Tailscale (soukromá síť)<br/>SSH jen tudy"] -.-> vm
click sl "/Docs/nasazeni/https-a-pristup"
click ts "/Docs/nasazeni/https-a-pristup"
| Prvek | Nastavení | Proč |
|---|---|---|
VCN minishop-vcn |
10.0.0.0/16, jen veřejný subnet |
jen to, co MiniShop opravdu používá (žádný NAT ani privátní subnet) |
| Security list (cloudový firewall) | dovnitř TCP 80 a 443 z internetu, ICMP pro MTU; 22 zavřený | 80 kvůli ověření Let's Encrypt, 443 pro HTTPS. SSH chodí jen přes Tailscale. |
| Firewall na VM (iptables) | povolené 80/443 před závěrečným REJECT |
obraz Ubuntu od Oracle odmítá vše kromě SSH – druhá vrstva ochrany |
| Reserved IP | 141.144.255.238, prevent_destroy |
na ni ukazuje DNS; přežije i nové vytvoření VM (jinak nová IP, nový DNS záznam, nový certifikát) |
| Tvar VM | VM.Standard.A1.Flex 2 OCPU / 12 GB |
maximum Always Free v roce 2026; MiniShop potřebuje ~1 GB |
| Obraz | Ubuntu 24.04 aarch64 (ne Minimal) | Minimal nemá balíčky z přípravy serveru (netfilter-persistent…) |
| Oracle Cloud Agent | předinstalovaný | posílá metriky CPU a paměti pro alarmy (Monitoring) |
Kód: network.tf, compute.tf. Původně se vše naklikalo ručně v konzoli (na pochopení), pak se popsalo kódem a ruční zdroje se smazaly – viz Infrastruktura jako kód.
Příprava nové VM (cloud-init)
Při prvním startu VM provede cloud-init.yaml.tftpl a skript
bootstrap.sh.tftpl (log /var/log/minishop-bootstrap.log):
- povolí 80/443 ve firewallu VM,
- nainstaluje Docker,
- připojí VM do Tailscale (jednorázový auth key),
- založí uživatele
deploys klíčem, který smí spustit jenminishop-deploy(CD), - zapíše systemd jednotky noční zálohy (Zálohy).
Aplikaci cloud-init nespouští – VM nedostane žádné secrets. Konfiguraci a první start udělá až workflow Deploy z GitHubu.
Známá omezení a rizika
- VM je ARM – image se proto stavějí pro obě architektury.
- Při zakládání A1 VM může přijít Out of host capacity – pomůže jiná availability domain nebo počkat.
- Jedna VM = žádná vysoká dostupnost. Pro výukový projekt přijatelné; havárie se řeší obnovou ze zálohy.