replaced portainer with controller
This commit is contained in:
@@ -0,0 +1,229 @@
|
||||
# felhom.eu
|
||||
|
||||
Website, manifests, and infrastructure for **Felhőm.eu** — a managed home-server service for Hungarian households.
|
||||
|
||||
## Overview
|
||||
|
||||
This repository contains:
|
||||
- **Website** (`website/`) — Static HTML pages served at [felhom.eu](https://felhom.eu)
|
||||
- **Kubernetes manifests** (`manifests/`) — All k3s deployments for the felhom.eu ecosystem
|
||||
- **Assets** (`website/assets/`) — Logo, images, OG images
|
||||
|
||||
The website runs on a single-node k3s cluster alongside the rest of the Felhőm management infrastructure (Healthchecks, Umami analytics, contact mailer).
|
||||
|
||||
## Branding
|
||||
|
||||
| Aspect | Value |
|
||||
|--------|-------|
|
||||
| **Brand name** | Felhőm.eu (with accent: ő) |
|
||||
| **Domain** | felhom.eu (without accent — domain limitation) |
|
||||
| **Tagline** | „Saját felhőd, saját szabályaid" |
|
||||
| **Controller product** | Felhő Felügyelő (customer-facing name) |
|
||||
| **Controller code name** | felhom-controller (backend/repo/container) |
|
||||
| **Language** | Hungarian throughout all customer-facing content |
|
||||
| **Contact email** | info@felhom.eu |
|
||||
| **Admin email** | admin@felhom.eu |
|
||||
|
||||
### Why "Felhőm"?
|
||||
"Felhő" means "cloud" in Hungarian. The "m" suffix makes it possessive — "my cloud" (felhőm). The `.eu` domain is part of the brand identity and appears in the logo. The double meaning of "felhő" (tech cloud + weather cloud) is intentional and used in product naming (e.g., Felhő Felügyelő = "Cloud Supervisor/Inspector").
|
||||
|
||||
## Website Pages
|
||||
|
||||
| File | URL | Purpose |
|
||||
|------|-----|---------|
|
||||
| `index.html` | `/` | Landing page — hero, services, app preview, backup intro, contact |
|
||||
| `alkalmazasok.html` | `/alkalmazasok` | Full application catalog (45+ apps with categories) |
|
||||
| `technologiak.html` | `/technologiak` | Technology stack explanation (Docker, Felhő Felügyelő, Proxmox, Kubernetes) |
|
||||
| `biztonsagimentes.html` | `/biztonsagimentes` | Backup strategy — 3-2-1 rule, monitoring, restore procedures |
|
||||
| `gyik.html` | `/gyik` | FAQ — structured Q&A with JSON-LD schema |
|
||||
| `kapcsolat.html` | `/kapcsolat` | Contact form + email, sends via contact-mailer API |
|
||||
| `szolgaltatasok-nonpublic.html` | `/szolgaltatasok-nonpublic` | Pricing/services page (not linked in nav, robots disallowed) |
|
||||
|
||||
All pages use:
|
||||
- **Clean URLs** — nginx serves `.html` files without extension (`/gyik` → `gyik.html`)
|
||||
- **Unified CSS** — each page contains the full CSS (no external stylesheet, for simplicity)
|
||||
- **Responsive design** — mobile hamburger menu, responsive grids
|
||||
- **UTF-8 with BOM** — all HTML files are saved as UTF-8-BOM for Hungarian character support
|
||||
- **Umami analytics** — privacy-friendly tracking script on every page
|
||||
|
||||
## Infrastructure
|
||||
|
||||
### Architecture
|
||||
|
||||
```
|
||||
Internet
|
||||
│
|
||||
▼
|
||||
Cloudflare (DNS only, no proxy)
|
||||
│
|
||||
▼ CNAME → dooplex.hopto.org
|
||||
│
|
||||
Home network (dynamic IP via No-IP DynDNS)
|
||||
│
|
||||
▼ Port forward 80/443
|
||||
│
|
||||
k3s cluster (single node)
|
||||
├── nginx-ingress (TLS termination via cert-manager + Let's Encrypt)
|
||||
│
|
||||
├── felhom-system namespace:
|
||||
│ ├── felhom-webpage (nginx + git-sync sidecar)
|
||||
│ ├── filebrowser (files.felhom.eu — website file management)
|
||||
│ ├── contact-mailer (Go app — /api/contact endpoint)
|
||||
│ ├── umami + umami-db (stats.felhom.eu — web analytics)
|
||||
│ └── healthchecks (status.felhom.eu — monitoring)
|
||||
│
|
||||
└── cert-manager (letsencrypt-prod cluster issuer)
|
||||
```
|
||||
|
||||
### Kubernetes Manifests
|
||||
|
||||
| Manifest | Services | Subdomains |
|
||||
|----------|----------|------------|
|
||||
| `webpage.yaml` | nginx (website), FileBrowser, git-sync | felhom.eu, www.felhom.eu, files.felhom.eu |
|
||||
| `contact-mailer.yaml` | Go HTTP server for contact form | felhom.eu/api/* (path-based routing) |
|
||||
| `umami.yaml` | Umami v3 + PostgreSQL | stats.felhom.eu |
|
||||
| `healthchecks.yaml` | Healthchecks | status.felhom.eu |
|
||||
|
||||
### Website Deployment
|
||||
|
||||
The website uses a **git-sync sidecar** pattern:
|
||||
|
||||
1. `git-sync` container polls this repository (sparse checkout: `/website/` only)
|
||||
2. Syncs to a shared `emptyDir` volume
|
||||
3. `nginx` container serves from the synced content
|
||||
4. Changes pushed to this repo are live within minutes (no manual deployment)
|
||||
|
||||
**FileBrowser** at `files.felhom.eu` provides a web UI for quick edits to website files (emergency fixes, asset uploads) without needing git. It writes to a Longhorn PVC that the website nginx also reads from.
|
||||
|
||||
### Storage
|
||||
|
||||
All persistent data uses **Longhorn** distributed storage:
|
||||
- `filebrowser-files` (1Gi, ReadWriteMany) — website files
|
||||
- `filebrowser-db` (100Mi) — FileBrowser SQLite database
|
||||
- `umami-db-data` (2Gi) — Umami PostgreSQL data
|
||||
- `healthchecks-data` (1Gi) — Healthchecks SQLite data
|
||||
|
||||
## DNS Configuration (Cloudflare)
|
||||
|
||||
Domain: `felhom.eu` — Cloudflare DNS (free plan), **DNS only mode** (no proxy/orange cloud).
|
||||
|
||||
### Records
|
||||
|
||||
| Type | Name | Content | Notes |
|
||||
|------|------|---------|-------|
|
||||
| CNAME | `felhom.eu` | dooplex.hopto.org | Main website |
|
||||
| CNAME | `www` | dooplex.hopto.org | www redirect |
|
||||
| CNAME | `files` | dooplex.hopto.org | FileBrowser |
|
||||
| CNAME | `stats` | dooplex.hopto.org | Umami analytics |
|
||||
| CNAME | `status` | dooplex.hopto.org | Healthchecks |
|
||||
| CNAME | `ntfy` | dooplex.hopto.org | Push notifications |
|
||||
| MX | `felhom.eu` | route{1,2,3}.mx.cloudflare.net | Incoming email → Cloudflare Email Routing |
|
||||
| MX | `send` | feedback-smtp.eu-west-1.amazonses.com | Resend sending domain |
|
||||
| TXT | `felhom.eu` | `v=spf1 include:_spf.mx.clo...` | SPF for Cloudflare |
|
||||
| TXT | `send` | `v=spf1 include:amazonses...` | SPF for Resend |
|
||||
| TXT | `cf2024-1._domainkey` | DKIM for Cloudflare Email Routing | |
|
||||
| TXT | `resend._domainkey` | DKIM for Resend | |
|
||||
| TXT | `_dmarc` | `v=DMARC1; p=none;` | DMARC policy |
|
||||
| TXT | `felhom.eu` | `google-site-verification=...` | Google Search Console |
|
||||
|
||||
## Email
|
||||
|
||||
### Incoming Email
|
||||
|
||||
**Cloudflare Email Routing** (free) handles all incoming mail:
|
||||
- `info@felhom.eu` → forwarded to personal Gmail
|
||||
- `admin@felhom.eu` → forwarded to personal Gmail
|
||||
- Catch-all → not configured
|
||||
|
||||
### Outgoing Email (Transactional)
|
||||
|
||||
**Resend** (free tier) handles outgoing email via API:
|
||||
- Contact form submissions → sends formatted email to `info@felhom.eu`
|
||||
- Healthchecks alerts → sends to `admin@felhom.eu`
|
||||
- Sending domain: `send.felhom.eu` (verified with SPF, DKIM)
|
||||
- From address: `Felhom.eu <info@felhom.eu>`
|
||||
|
||||
### Contact Form Flow
|
||||
|
||||
1. User fills form on `/kapcsolat`
|
||||
2. JavaScript POST to `/api/contact`
|
||||
3. `contact-mailer` (Go, in k3s) validates + calls Resend API
|
||||
4. Email delivered to `info@felhom.eu` via Resend → Cloudflare Email Routing → Gmail
|
||||
|
||||
## SEO
|
||||
|
||||
### Google Search Console
|
||||
|
||||
- Property: `https://felhom.eu`
|
||||
- Verified via DNS TXT record
|
||||
- Sitemap submitted: `https://felhom.eu/sitemap.xml`
|
||||
- 7 pages indexed (all public pages)
|
||||
|
||||
### On-Page SEO
|
||||
|
||||
Every page includes:
|
||||
- `<title>` with Hungarian keywords + brand
|
||||
- `<meta name="description">` with unique content per page
|
||||
- `<meta name="keywords">` with relevant Hungarian terms
|
||||
- `<link rel="canonical">` to prevent duplicate content
|
||||
- **Open Graph** tags (og:title, og:description, og:image, og:locale=hu_HU)
|
||||
- **Twitter Card** tags (summary_large_image)
|
||||
- **JSON-LD** structured data (LocalBusiness on index, Article on technologiak, FAQPage on gyik)
|
||||
|
||||
### Technical SEO
|
||||
|
||||
- `robots.txt` — allows all, disallows `/szolgaltatasok-nonpublic`, includes sitemap URL
|
||||
- `sitemap.xml` — lists all 6 public pages with priority + changefreq
|
||||
- Clean URLs (no `.html` extensions)
|
||||
- Static asset caching (7 day expiry for CSS/JS/images)
|
||||
- Security headers (X-Frame-Options, X-Content-Type-Options)
|
||||
|
||||
## Analytics
|
||||
|
||||
**Umami v3** (self-hosted, privacy-focused):
|
||||
- Dashboard: `https://stats.felhom.eu`
|
||||
- Tracking script: `<script defer src="https://stats.felhom.eu/script.js" data-website-id="d419db57-...">`
|
||||
- Cookie-free, GDPR compliant — no consent banner needed
|
||||
- Backend: dedicated PostgreSQL instance in k3s
|
||||
|
||||
## Monitoring
|
||||
|
||||
**Healthchecks** (self-hosted):
|
||||
- Dashboard: `https://status.felhom.eu`
|
||||
- Monitors backup jobs, service health
|
||||
- Sends email alerts via Resend when checks fail
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Quick content edits
|
||||
1. Log into FileBrowser at `https://files.felhom.eu`
|
||||
2. Edit HTML files directly
|
||||
3. Changes are live immediately
|
||||
|
||||
### Standard workflow
|
||||
1. Clone this repo from Gitea (`gitea.dooplex.hu`)
|
||||
2. Edit files locally
|
||||
3. Push to `main` branch
|
||||
4. `git-sync` sidecar picks up changes automatically (~1-2 min)
|
||||
|
||||
### Adding a new page
|
||||
1. Create `website/newpage.html` (copy structure from existing page)
|
||||
2. Add to navigation in all pages' `<nav>` section
|
||||
3. Add to `sitemap.xml` with appropriate priority
|
||||
4. Push — clean URLs handle `/newpage` automatically
|
||||
|
||||
## Related Repositories
|
||||
|
||||
| Repository | Purpose |
|
||||
|------------|---------|
|
||||
| [app-catalog-felhom.eu](https://gitea.dooplex.hu/admin/app-catalog-felhom.eu) | Docker Compose templates + .felhom.yml metadata for 45+ apps |
|
||||
| [deploy-felhom-compose](https://gitea.dooplex.hu/admin/deploy-felhom-compose) | felhom-controller Go app + customer deploy scripts |
|
||||
| [deploy-portainer](https://gitea.dooplex.hu/admin/deploy-portainer) | Legacy — Portainer-based deploy scripts (deprecated) |
|
||||
| [homelab-manifests](https://gitea.dooplex.hu/admin/homelab-manifests) | k3s cluster manifests for dooplex.hu services |
|
||||
| [misc-scripts](https://gitea.dooplex.hu/admin/misc-scripts) | Utility scripts (collect-repos.sh, etc.) |
|
||||
|
||||
## File Encoding
|
||||
|
||||
All HTML files in `website/` are **UTF-8 with BOM** (byte order mark). This ensures proper Hungarian character rendering (á, é, í, ó, ö, ő, ú, ü, ű) across all tools and platforms. The BOM is the 3-byte sequence `EF BB BF` at the start of each file.
|
||||
|
||||
When editing files, ensure your editor preserves UTF-8-BOM encoding. VS Code: check "UTF-8 with BOM" in the bottom status bar.
|
||||
+2
-2
@@ -878,8 +878,8 @@
|
||||
</div>
|
||||
<div class="app-category-preview">
|
||||
<span class="cat-icon">🎯</span>
|
||||
<h3>Portainer</h3>
|
||||
<p>Vizuális webes kezelőfelület</p>
|
||||
<h3>Felhő Felügyelő</h3>
|
||||
<p>Magyar nyelvű kezelőfelület</p>
|
||||
</div>
|
||||
<div class="app-category-preview">
|
||||
<span class="cat-icon">🔮</span>
|
||||
|
||||
+25
-20
@@ -3,24 +3,24 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Technológiák — Docker, Portainer, Proxmox, Kubernetes otthoni szerverhez | Felhom.eu</title>
|
||||
<meta name="description" content="Ipari szintű technológiák otthon: Docker konténerek, Portainer kezelőfelület, Proxmox virtualizáció, Kubernetes. SSL, tűzfal, VPN — professzionális biztonság."> <link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<title>Technológiák — Docker, Felhő Felügyelő, Proxmox, Kubernetes otthoni szerverhez | Felhom.eu</title>
|
||||
<meta name="description" content="Ipari szintű technológiák otthon: Docker konténerek, Felhő Felügyelő, Proxmox virtualizáció, Kubernetes. SSL, tűzfal, VPN — professzionális biztonság."> <link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
|
||||
<meta name="keywords" content="Docker, Portainer, Proxmox, Kubernetes, k3s, konténer, virtualizáció, reverse proxy, SSL, tűzfal, VPN, otthoni szerver technológia">
|
||||
<meta name="keywords" content="Docker, Felhő Felügyelő, Proxmox, Kubernetes, k3s, konténer, virtualizáció, reverse proxy, SSL, tűzfal, VPN, otthoni szerver technológia">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="canonical" href="https://felhom.eu/technologiak">
|
||||
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://felhom.eu/technologiak">
|
||||
<meta property="og:title" content="Professzionális technológiák otthoni szerverhez">
|
||||
<meta property="og:description" content="Docker, Portainer, Proxmox, Kubernetes — ipari szintű megoldások otthoni környezetben.">
|
||||
<meta property="og:description" content="Docker, Felhő Felügyelő, Proxmox, Kubernetes — ipari szintű megoldások otthoni környezetben.">
|
||||
<meta property="og:image" content="https://felhom.eu/assets/og-image.png">
|
||||
<meta property="og:locale" content="hu_HU">
|
||||
<meta property="og:site_name" content="Felhom.eu">
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Professzionális technológiák otthoni szerverhez">
|
||||
<meta name="twitter:description" content="Docker, Portainer, Proxmox, Kubernetes — ipari megoldások, otthoni környezetben.">
|
||||
<meta name="twitter:description" content="Docker, Felhő Felügyelő, Proxmox, Kubernetes — ipari megoldások, otthoni környezetben.">
|
||||
<meta name="twitter:image" content="https://felhom.eu/assets/og-image.png">
|
||||
|
||||
<script type="application/ld+json">
|
||||
@@ -28,7 +28,7 @@
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "Alkalmazott technológiák otthoni szerverekhez",
|
||||
"description": "Docker konténerek, Portainer, Proxmox virtualizáció és Kubernetes megoldások otthoni szerverre.",
|
||||
"description": "Docker konténerek, Felhő Felügyelő, Proxmox virtualizáció és Kubernetes megoldások otthoni szerverre.",
|
||||
"author": {"@type": "Organization", "name": "Felhom.eu"},
|
||||
"publisher": {"@type": "Organization", "name": "Felhom.eu", "logo": {"@type": "ImageObject", "url": "https://felhom.eu/assets/logo.png"}},
|
||||
"mainEntityOfPage": "https://felhom.eu/technologiak"
|
||||
@@ -613,7 +613,7 @@
|
||||
<h3>Tartalom</h3>
|
||||
<ul class="toc-links">
|
||||
<li><a href="#kontenerek">Miért konténerek?</a></li>
|
||||
<li><a href="#single-node">Egyszerű telepítés (Portainer)</a></li>
|
||||
<li><a href="#single-node">Egyszerű telepítés (Felhő Felügyelő)</a></li>
|
||||
<li><a href="#proxmox">Virtualizáció (Proxmox)</a></li>
|
||||
<li><a href="#kubernetes">Magas rendelkezésre állás (Kubernetes)</a></li>
|
||||
<li><a href="#halozat">Hálózat és biztonság</a></li>
|
||||
@@ -672,24 +672,25 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Single Node - Portainer -->
|
||||
<!-- Single Node - Felhő Felügyelő -->
|
||||
<section class="content-section" id="single-node">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<h2>Egyszerű telepítés: <span>Portainer</span></h2>
|
||||
<h2>Egyszerű telepítés: <span>Felhő Felügyelő</span></h2>
|
||||
<p>A legtöbb otthoni felhasználónak ez a tökéletes választás</p>
|
||||
</div>
|
||||
|
||||
<div class="info-card">
|
||||
<h3><span class="icon">🎯</span> Mikor válaszd ezt?</h3>
|
||||
<p>Ha egy szervered van és egyszerű, vizuális felületet szeretnél a konténerek kezeléséhez. A Portainer egy webes felület, ahol pár kattintással telepíthetsz alkalmazásokat.</p>
|
||||
<p>Ha egy szervered van és egyszerű, vizuális felületet szeretnél a konténerek kezeléséhez. A Felhő Felügyelő egy kimondottan otthoni szerverekre tervezett, magyar nyelvű webes felület, ahol pár kattintással telepíthetsz alkalmazásokat.</p>
|
||||
|
||||
<ul class="feature-list">
|
||||
<li>Intuitív webes felület – nincs szükség parancssor ismeretre</li>
|
||||
<li>Alkalmazás „sablonok" – népszerű appok egy kattintással</li>
|
||||
<li>Erőforrás figyelés – CPU, memória, hálózat</li>
|
||||
<li>Log megtekintés és hibakeresés</li>
|
||||
<li>Docker Compose támogatás – összetett alkalmazásokhoz</li>
|
||||
<li>Magyar nyelvű webes felület – nincs szükség parancssor ismeretre</li>
|
||||
<li>Alkalmazás katalógus – 45+ app telepíthető pár kattintással</li>
|
||||
<li>Erőforrás figyelés – memória és tárhely használat valós időben</li>
|
||||
<li>Automatikus mentések – adatbázis és fájl backup, állapotfigyeléssel</li>
|
||||
<li>Alkalmazás frissítések – egy kattintással, naplózással</li>
|
||||
<li>Rendszer monitoring – folyamatos egészségfigyelés, riasztások</li>
|
||||
</ul>
|
||||
|
||||
<div class="highlight-box">
|
||||
@@ -710,8 +711,8 @@
|
||||
<div class="stack-layer">
|
||||
<div class="layer-label">Menedzsment</div>
|
||||
<div class="layer-content highlight">
|
||||
<div class="layer-name">Portainer</div>
|
||||
<div class="layer-tech">Webes konténer kezelő</div>
|
||||
<div class="layer-name">Felhő Felügyelő</div>
|
||||
<div class="layer-tech">Magyar nyelvű kezelő, mentés, monitoring</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stack-layer">
|
||||
@@ -746,7 +747,7 @@
|
||||
<p>A Proxmox egy ingyenes, professzionális virtualizációs platform. Lehetővé teszi, hogy egyetlen fizikai gépen több „virtuális gépet" (VM) futtass – mintha több külön számítógéped lenne.</p>
|
||||
|
||||
<div class="warning-box">
|
||||
<p>⚠️ <strong>Fontos:</strong> A legtöbb otthoni felhasználónak nincs szüksége Proxmoxra. A konténerek (Docker + Portainer) általában elegendőek és egyszerűbbek.</p>
|
||||
<p>⚠️ <strong>Fontos:</strong> A legtöbb otthoni felhasználónak nincs szüksége Proxmoxra. A konténerek (Docker + Felhő Felügyelő) általában elegendőek és egyszerűbbek.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -776,7 +777,7 @@
|
||||
<p>A Kubernetes (k8s) egy konténer „orkesztrátor" – automatikusan kezeli, hogy hol és hogyan fussanak az alkalmazásaid. Ha egy szerver meghibásodik, automatikusan áthelyezi a szolgáltatásokat egy másikra.</p>
|
||||
|
||||
<div class="highlight-box">
|
||||
<p><strong>Egyszerűen:</strong> Ha a Portainer egy „kézi sebességváltó", akkor a Kubernetes egy „automata" – te csak megmondod mit szeretnél, és a rendszer megoldja a többit.</p>
|
||||
<p><strong>Egyszerűen:</strong> Ha a Felhő Felügyelő egy „kézi sebességváltó", akkor a Kubernetes egy „automata" – te csak megmondod mit szeretnél, és a rendszer megoldja a többit.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1092,4 +1093,8 @@
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
================================================================================
|
||||
Summary: 13 files included, 218 skipped
|
||||
================================================================================
|
||||
Reference in New Issue
Block a user