Files
felhom.eu/website/index.html
T
2026-02-11 08:50:08 +01:00

1043 lines
40 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Professzionális otthoni szerver telepítés és üzemeltetés. Google Drive és iCloud alternatíva: saját szervered, saját adataid, teljes kontroll. 45+ nyílt forráskódú alkalmazás.">
<title>Felhom.eu — Saját felhőd, saját szabályaid | Otthoni szerver szolgáltatás</title>
<!-- SEO meta -->
<meta name="keywords" content="otthoni szerver, saját felhő, self-hosting, Google Drive alternatíva, iCloud alternatíva, adatvédelem, nyílt forráskódú, szerver telepítés, szerver üzemeltetés, Nextcloud, Immich, Magyarország">
<meta name="author" content="Felhom.eu">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://felhom.eu/">
<!-- Open Graph (Facebook, LinkedIn) -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://felhom.eu/">
<meta property="og:title" content="Felhom.eu — Saját felhőd, saját szabályaid">
<meta property="og:description" content="Professzionális otthoni szerver telepítés és üzemeltetés. Google Drive és iCloud alternatíva: saját szervered, saját adataid, teljes kontroll.">
<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">
<!-- Twitter/X Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Felhom.eu — Saját felhőd, saját szabályaid">
<meta name="twitter:description" content="Professzionális otthoni szerver telepítés és üzemeltetés. Saját szervered, saját adataid.">
<meta name="twitter:image" content="https://felhom.eu/assets/og-image.png">
<!-- Structured Data (JSON-LD) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Felhom.eu",
"description": "Professzionális otthoni szerver telepítés és üzemeltetés Magyarországon.",
"url": "https://felhom.eu",
"logo": "https://felhom.eu/assets/logo.png",
"email": "info@felhom.eu",
"areaServed": {
"@type": "Country",
"name": "Magyarország"
},
"serviceType": ["Szerver telepítés", "Szerver üzemeltetés", "Self-hosting"],
"knowsLanguage": "hu",
"sameAs": []
}
</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="icon" type="image/png" href="/assets/logo.png">
<script defer src="https://stats.felhom.eu/script.js" data-website-id="d419db57-5e1c-48df-bdb3-c29f25fb1661"></script>
<style>
/* ============================================
UNIFIED CSS - felhom.eu
============================================ */
/* --- CSS Variables --- */
:root {
--bg-primary: #0d1117;
--bg-secondary: #161b22;
--bg-card: #1c2128;
--text-primary: #e6edf3;
--text-secondary: #8b949e;
--text-muted: #6e7681;
--accent-blue: #0088cc;
--accent-light: #00aaff;
--accent-glow: rgba(0, 136, 204, 0.3);
--border-color: #30363d;
--success-green: #238636;
--warning-orange: #d29922;
}
/* --- Reset & Base --- */
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.6;
min-height: 100vh;
}
/* Grid background */
body::before {
content: '';
position: fixed;
top: 0; left: 0;
width: 100%; height: 100%;
background-image:
linear-gradient(rgba(0, 136, 204, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(0, 136, 204, 0.03) 1px, transparent 1px);
background-size: 50px 50px;
pointer-events: none;
z-index: -1;
}
/* --- Layout --- */
.container { max-width: 1100px; margin: 0 auto; padding: 0 24px; }
/* --- Navigation --- */
nav {
position: fixed;
top: 0; left: 0; right: 0;
padding: 20px 0;
background: rgba(13, 17, 23, 0.9);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border-color);
z-index: 200;
}
nav .container { display: flex; justify-content: space-between; align-items: center; }
.logo { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.logo img { height: 40px; width: auto; }
.logo-text { font-size: 1.5rem; font-weight: 700; color: var(--accent-light); letter-spacing: -0.02em; }
.nav-links { display: flex; gap: 32px; list-style: none; }
.nav-links a {
color: var(--text-secondary);
text-decoration: none;
font-weight: 500;
font-size: 0.95rem;
transition: color 0.2s ease;
}
.nav-links a:hover,
.nav-links a.active { color: var(--accent-light); }
/* --- Typography with gradient span support --- */
h1 span, h2 span, h3 span, h4 span {
background: linear-gradient(135deg, var(--accent-light), var(--accent-blue));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* --- Section Headers --- */
.section-header { text-align: center; margin-bottom: 60px; }
.section-header h2 { font-size: 2.2rem; font-weight: 700; margin-bottom: 16px; letter-spacing: -0.02em; }
.section-header p { color: var(--text-secondary); font-size: 1.1rem; max-width: 600px; margin: 0 auto; }
/* --- Content Sections --- */
.content-section { padding: 100px 0; }
.content-section.alt-bg { background: var(--bg-secondary); }
/* --- Buttons --- */
.cta-button {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, var(--accent-blue), var(--accent-light));
color: white;
padding: 16px 32px;
border-radius: 8px;
text-decoration: none;
font-weight: 600;
font-size: 1rem;
transition: transform 0.2s ease, box-shadow 0.2s ease;
box-shadow: 0 4px 20px var(--accent-glow);
}
.cta-button:hover { transform: translateY(-2px); box-shadow: 0 8px 30px var(--accent-glow); }
.cta-button-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
background: transparent;
color: var(--accent-light);
padding: 14px 28px;
border: 2px solid var(--accent-blue);
border-radius: 8px;
text-decoration: none;
font-weight: 600;
font-size: 1rem;
transition: all 0.2s ease;
}
.cta-button-secondary:hover { background: var(--accent-blue); color: white; }
/* --- Cards --- */
.card {
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 32px;
transition: border-color 0.3s ease, transform 0.3s ease;
}
.card:hover { border-color: var(--accent-blue); transform: translateY(-4px); }
/* --- Footer --- */
footer {
padding: 40px 0;
border-top: 1px solid var(--border-color);
text-align: center;
}
footer p { color: var(--text-secondary); font-size: 0.9rem; }
/* --- Hero Section --- */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
padding: 120px 0 80px;
}
.hero-content { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
.hero-text h1 {
font-size: clamp(2.5rem, 5vw, 3.5rem);
font-weight: 700;
line-height: 1.1;
margin-bottom: 24px;
letter-spacing: -0.03em;
}
.hero-text p { font-size: 1.2rem; color: var(--text-secondary); margin-bottom: 32px; max-width: 500px; }
.hero-visual { display: flex; justify-content: center; align-items: center; }
.hero-visual img {
max-width: 380px;
width: 100%;
height: auto;
filter: drop-shadow(0 0 60px var(--accent-glow));
animation: float 6s ease-in-out infinite;
}
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-15px); }
}
.beta-badge {
display: inline-block;
background: rgba(0, 136, 204, 0.2);
color: var(--accent-light);
padding: 6px 12px;
border-radius: 20px;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 16px;
}
/* --- Problem Section --- */
.problem-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.problem-card {
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 32px;
transition: border-color 0.3s ease, transform 0.3s ease;
}
.problem-card:hover { border-color: var(--accent-blue); transform: translateY(-4px); }
.problem-icon { font-size: 2.5rem; margin-bottom: 20px; }
.problem-card h3 { font-size: 1.2rem; margin-bottom: 12px; color: var(--text-primary); }
.problem-card p { color: var(--text-secondary); font-size: 0.95rem; }
/* --- Services Section --- */
.service-list { display: grid; gap: 20px; }
.service-item {
display: grid;
grid-template-columns: auto 1fr auto;
gap: 24px;
align-items: center;
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 28px 32px;
transition: border-color 0.3s ease;
}
.service-item:hover { border-color: var(--accent-blue); }
.service-number {
font-family: 'JetBrains Mono', monospace;
font-size: 0.9rem;
color: var(--accent-light);
background: rgba(0, 136, 204, 0.15);
padding: 8px 14px;
border-radius: 6px;
font-weight: 500;
}
.service-content h3 { font-size: 1.15rem; margin-bottom: 6px; }
.service-content p { color: var(--text-secondary); font-size: 0.95rem; }
.service-icon { font-size: 1.8rem; }
/* --- Why Section --- */
.why-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 40px; }
.why-card {
padding: 40px;
background: linear-gradient(135deg, var(--bg-card), var(--bg-primary));
border: 1px solid var(--border-color);
border-radius: 16px;
position: relative;
overflow: hidden;
}
.why-card::before {
content: '';
position: absolute;
top: 0; left: 0;
width: 4px; height: 100%;
background: linear-gradient(180deg, var(--accent-light), var(--accent-blue));
}
.why-card h3 { font-size: 1.3rem; margin-bottom: 16px; display: flex; align-items: center; gap: 12px; }
.why-card p { color: var(--text-secondary); font-size: 1rem; line-height: 1.7; }
/* --- Apps Preview Section --- */
.apps-showcase {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 20px;
margin-bottom: 48px;
}
.app-category-preview {
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 24px;
text-align: center;
transition: all 0.3s ease;
}
.app-category-preview:hover { border-color: var(--accent-blue); transform: translateY(-4px); }
.app-category-preview .cat-icon { font-size: 2rem; display: block; margin-bottom: 12px; }
.app-category-preview h3 { font-size: 1rem; font-weight: 600; margin-bottom: 8px; color: var(--text-primary); }
.app-category-preview p { font-size: 0.8rem; color: var(--text-secondary); line-height: 1.4; }
.apps-cta { text-align: center; }
.apps-cta .apps-count { font-size: 1.1rem; color: var(--text-secondary); margin-bottom: 24px; }
.apps-cta .apps-count strong { color: var(--accent-light); }
/* --- Backup Preview Section --- */
.backup-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}
.backup-text h2 {
font-size: 2.2rem;
font-weight: 700;
margin-bottom: 20px;
letter-spacing: -0.02em;
}
.backup-text p {
color: var(--text-secondary);
font-size: 1.1rem;
line-height: 1.7;
margin-bottom: 24px;
}
.backup-visual { display: flex; flex-direction: column; gap: 16px; }
.backup-rule-mini {
display: flex;
align-items: center;
gap: 20px;
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 20px 24px;
transition: border-color 0.3s ease;
}
.backup-rule-mini:hover { border-color: var(--accent-blue); }
.backup-rule-mini .number {
font-family: 'JetBrains Mono', monospace;
font-size: 2rem;
font-weight: 700;
background: linear-gradient(135deg, var(--accent-light), var(--accent-blue));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
min-width: 50px;
}
.backup-rule-mini .rule-text h4 { font-size: 1rem; margin-bottom: 4px; color: var(--text-primary); }
.backup-rule-mini .rule-text p { font-size: 0.85rem; color: var(--text-secondary); margin: 0; }
/* --- Contact Section --- */
.contact { padding: 100px 0; text-align: center; }
.contact-box {
max-width: 600px;
margin: 0 auto;
background: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 48px;
}
.contact-box h2 { font-size: 2rem; margin-bottom: 16px; }
.contact-box p { color: var(--text-secondary); margin-bottom: 32px; }
.contact-methods { display: flex; flex-direction: column; gap: 16px; }
.contact-link {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
padding: 16px 24px;
background: var(--bg-secondary);
border: 1px solid var(--border-color);
border-radius: 8px;
color: var(--text-primary);
text-decoration: none;
font-weight: 500;
transition: border-color 0.2s ease, background 0.2s ease;
}
.contact-link:hover { border-color: var(--accent-blue); background: rgba(0, 136, 204, 0.1); }
/* --- Process Steps Section --- */
.process-steps {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 32px;
position: relative;
}
.process-step {
text-align: center;
position: relative;
}
.step-number {
display: inline-flex;
align-items: center;
justify-content: center;
width: 56px;
height: 56px;
border-radius: 50%;
background: rgba(0, 136, 204, 0.15);
border: 2px solid var(--accent-blue);
font-family: 'JetBrains Mono', monospace;
font-size: 1.2rem;
font-weight: 700;
color: var(--accent-light);
margin-bottom: 20px;
}
.process-step h3 {
font-size: 1.1rem;
margin-bottom: 10px;
color: var(--text-primary);
}
.process-step p {
color: var(--text-secondary);
font-size: 0.9rem;
line-height: 1.6;
}
.process-connector {
display: none;
}
@media (min-width: 901px) {
.process-connector {
display: block;
position: absolute;
top: 28px;
right: -20px;
color: var(--accent-blue);
font-size: 1.2rem;
z-index: 1;
}
.process-step:last-child .process-connector {
display: none;
}
}
/* --- Responsive --- */
@media (max-width: 900px) {
.hero-content { grid-template-columns: 1fr; text-align: center; }
.hero-text p { margin-left: auto; margin-right: auto; }
.hero-visual { order: -1; }
.hero-visual img { max-width: 280px; }
.why-grid { grid-template-columns: 1fr; }
.service-item { grid-template-columns: 1fr; text-align: center; gap: 16px; }
.backup-content { grid-template-columns: 1fr; gap: 40px; }
.backup-text { text-align: center; }
}
@media (max-width: 600px) {
.hero { padding: 100px 0 60px; }
.section-header h2 { font-size: 1.8rem; }
.contact-box { padding: 32px 24px; }
.content-section { padding: 60px 0; }
}
/* --- Hamburger Button --- */
.hamburger {
display: none;
background: none;
border: none;
cursor: pointer;
padding: 8px;
z-index: 200;
-webkit-tap-highlight-color: transparent;
}
.hamburger-box {
width: 28px;
height: 20px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.hamburger-line {
display: block;
width: 100%;
height: 2px;
background: var(--text-primary);
border-radius: 2px;
transition: transform 0.3s ease, opacity 0.3s ease;
transform-origin: center;
}
/* Hamburger → X animation */
.hamburger.is-active .hamburger-line:nth-child(1) {
transform: translateY(9px) rotate(45deg);
}
.hamburger.is-active .hamburger-line:nth-child(2) {
opacity: 0;
}
.hamburger.is-active .hamburger-line:nth-child(3) {
transform: translateY(-9px) rotate(-45deg);
}
/* --- Mobile Menu Overlay --- */
.mobile-overlay {
display: none;
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 140;
opacity: 0;
transition: opacity 0.3s ease;
}
.mobile-overlay.is-visible {
opacity: 1;
}
/* --- Mobile Nav Styles --- */
@media (max-width: 900px) {
.hamburger {
display: block;
}
.nav-links {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: -280px;
width: 280px;
height: 100vh;
height: 100dvh;
background: var(--bg-secondary);
border-left: 1px solid var(--border-color);
padding: 80px 32px 32px;
gap: 0;
z-index: 150;
transition: right 0.3s ease;
overflow-y: auto;
}
.nav-links.is-open {
right: 0;
}
.nav-links li {
border-bottom: 1px solid var(--border-color);
}
.nav-links a {
display: block;
padding: 16px 0;
font-size: 1.05rem;
}
.mobile-overlay {
display: block;
pointer-events: none;
}
.mobile-overlay.is-visible {
pointer-events: auto;
}
/* Prevent body scroll when menu is open */
body.menu-open {
overflow: hidden;
}
}
</style>
</head>
<body>
<nav>
<div class="container">
<a href="/" class="logo">
<img src="/assets/logo.png" alt="Felhom.eu logo">
<span class="logo-text">felhom.eu</span>
</a>
<ul class="nav-links">
<li><a href="#szolgaltatasok">Szolgáltatások</a></li>
<li><a href="/alkalmazasok">Alkalmazások</a></li>
<li><a href="/technologiak">Technológiák</a></li>
<li><a href="/biztonsagimentes">Mentések</a></li>
<li><a href="/gyik">GYIK</a></li>
<li><a href="/kapcsolat">Kapcsolat</a></li>
</ul>
<button class="hamburger" id="hamburger" aria-label="Menü megnyitása" aria-expanded="false">
<span class="hamburger-box">
<span class="hamburger-line"></span>
<span class="hamburger-line"></span>
<span class="hamburger-line"></span>
</span>
</button>
</div>
</nav>
<div class="mobile-overlay" id="mobileOverlay"></div>
<section class="hero">
<div class="container">
<div class="hero-content">
<div class="hero-text">
<h1>Saját felhőd,<br><span>saját szabályaid</span></h1>
<p>Professzionális otthoni szerver telepítés és üzemeltetés. Te irányítasz, mi segítünk.</p>
<a href="/kapcsolat" class="cta-button">Érdekel →</a>
</div>
<div class="hero-visual">
<img src="/assets/logo.png" alt="Felhom.eu - Otthoni szerver szolgáltatás">
</div>
</div>
</div>
</section>
<section class="content-section alt-bg">
<div class="container">
<div class="section-header">
<h2>Miért ne a <span>felhőszolgáltatók?</span></h2>
<p>A nagy techcégek kényelmes megoldásokat kínálnak, de van néhány hátrány...</p>
</div>
<div class="problem-grid">
<div class="problem-card">
<div class="problem-icon">💸</div>
<h3>Folyamatos költségek</h3>
<p>Havonta fizetsz a tárhelyért, a prémium funkciókért, és az árak csak nőnek idővel.</p>
</div>
<div class="problem-card">
<div class="problem-icon">👁️</div>
<h3>Adataid másé</h3>
<p>A fotóid, dokumentumaid, személyes adataid idegen szervereken vannak, idegen kezekben.</p>
</div>
<div class="problem-card">
<div class="problem-icon">🔒</div>
<h3>Korlátozott kontroll</h3>
<p>Nem te döntöd el, milyen szolgáltatásokat használsz, és mikor szűnnek meg.</p>
</div>
</div>
</div>
</section>
<section class="content-section" id="miert">
<div class="container">
<div class="section-header">
<h2>Miért válaszd a <span>saját szervered?</span></h2>
<p>Az előnyök, amik miatt megéri</p>
</div>
<div class="why-grid">
<div class="why-card">
<h3>🔐 Teljes adatvédelem</h3>
<p>Az adataid a te otthonodban maradnak. Senki más nem fér hozzájuk - sem a Google, sem a Microsoft, sem senki más.</p>
</div>
<div class="why-card">
<h3>💰 Egyszeri befektetés</h3>
<p>Nincs havi előfizetés, nincs rejtett költség. A szerver a tiéd, örökre. Csak az áramért fizetsz.</p>
</div>
<div class="why-card">
<h3>⚡ Korlátlan kapacitás</h3>
<p>Nincs 15GB-os limit. Bővítheted ahogy nőnek az igényeid - TB-okkal, ha kell.</p>
</div>
<div class="why-card">
<h3>🎛️ Teljes kontroll</h3>
<p>Te döntöd el, milyen szolgáltatásokat futtatsz. Te vagy a főnök, nem a szolgáltató.</p>
</div>
</div>
</div>
</section>
<section class="content-section alt-bg" id="hogyan-mukodik">
<div class="container">
<div class="section-header">
<h2>Hogyan <span>működik?</span></h2>
<p>5 egyszerű lépés az indulástól a működő rendszerig</p>
</div>
<div class="process-steps">
<div class="process-step">
<div class="step-number">1</div>
<span class="process-connector"></span>
<h3>Egyeztetés</h3>
<p>Megbeszéljük az igényeidet: milyen alkalmazásokra van szükséged, és mekkora tárhelyet szeretnél.</p>
</div>
<div class="process-step">
<div class="step-number">2</div>
<span class="process-connector"></span>
<h3>Hardver kiválasztás</h3>
<p>Segítünk megtalálni a legjobb ár-érték arányú gépet, ami az igényeidnek megfelel.</p>
</div>
<div class="process-step">
<div class="step-number">3</div>
<span class="process-connector"></span>
<h3>Telepítés</h3>
<p>Feltelepítjük és bekonfiguráljuk az alkalmazásokat, a mentéseket, és a monitoringot.</p>
</div>
<div class="process-step">
<div class="step-number">4</div>
<span class="process-connector"></span>
<h3>Átadás</h3>
<p>Bemutatjuk a rendszert, segítünk áthozni a meglévő adataidat, és válaszolunk minden kérdésedre.</p>
</div>
<div class="process-step">
<div class="step-number">5</div>
<h3>Üzemeltetés</h3>
<p>Figyeljük a rendszert, frissítünk, mentéseket ellenőrzünk. Te csak használod.</p>
</div>
</div>
</div>
</section>
<section class="content-section" id="szolgaltatasok">
<div class="container">
<div class="section-header">
<h2>Mit kapsz <span>tőlünk?</span></h2>
<p>Kulcsrakész megoldások, professzionális kivitelezéssel</p>
</div>
<div class="service-list">
<div class="service-item">
<span class="service-number">01</span>
<div class="service-content">
<h3>Szerver beszerzés és beüzemelés</h3>
<p>Segítünk kiválasztani az igényeidnek megfelelő hardvert, és mindent beállítunk.</p>
</div>
<span class="service-icon">🖥️</span>
</div>
<div class="service-item">
<span class="service-number">02</span>
<div class="service-content">
<h3>Alkalmazás telepítés</h3>
<p>Nextcloud, Plex, Jellyfin, Home Assistant, és még sok más - amit csak szeretnél.</p>
</div>
<span class="service-icon">📦</span>
</div>
<div class="service-item">
<span class="service-number">03</span>
<div class="service-content">
<h3>Biztonságos távoli elérés</h3>
<p>Bárhonnan elérheted a szervereidet, biztonságosan, titkosított kapcsolaton keresztül.</p>
</div>
<span class="service-icon">🌐</span>
</div>
<div class="service-item">
<span class="service-number">04</span>
<div class="service-content">
<h3>Automatikus mentések</h3>
<p>Soha többé nem veszíted el az adataidat - rendszeres, automatikus mentések.</p>
</div>
<span class="service-icon">💾</span>
</div>
<div class="service-item">
<span class="service-number">05</span>
<div class="service-content">
<h3>Támogatás és karbantartás</h3>
<p>Ha bármi gond van, itt vagyunk. Rendszeres frissítések, proaktív monitoring.</p>
</div>
<span class="service-icon">🛠️</span>
</div>
</div>
</div>
</section>
<section class="content-section alt-bg" id="alkalmazasok">
<div class="container">
<div class="section-header">
<h2>Telepíthető <span>Alkalmazások</span></h2>
<p>Nyílt forráskódú szoftverek, amiket a saját szervereden futtathatsz</p>
</div>
<div class="apps-showcase">
<div class="app-category-preview">
<span class="cat-icon">📁</span>
<h3>Fájlkezelés</h3>
<p>Nextcloud, FileBrowser, Gokapi, Zipline</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">📷</span>
<h3>Fotók & Média</h3>
<p>Immich, Jellyfin, Plex, Audiobookshelf</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🎬</span>
<h3>Média Automatizáció</h3>
<p>Sonarr, Radarr, Seerr</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">📄</span>
<h3>Dokumentumok</h3>
<p>Paperless-ngx, BookStack, Outline</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🔐</span>
<h3>Biztonság</h3>
<p>Vaultwarden, PrivateBin</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🏠</span>
<h3>Otthon & Életmód</h3>
<p>Tandoor, Plant-it, wger, Actual Budget</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🗺️</span>
<h3>Utazás & Szabadidő</h3>
<p>AdventureLog, Wanderer, Cal.com</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">📊</span>
<h3>Dashboard</h3>
<p>Homepage, Glance, Uptime Kuma</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🎮</span>
<h3>Játékok</h3>
<p>RoMM, Crafty Controller</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">👨‍💻</span>
<h3>Fejlesztőknek</h3>
<p>Gitea, Code-Server, OpenGist</p>
</div>
</div>
<div class="apps-cta">
<p class="apps-count">
<strong>45+</strong> alkalmazás — mind <strong>100% nyílt forráskódú</strong>
</p>
<a href="/alkalmazasok" class="cta-button-secondary">
Összes alkalmazás megtekintése →
</a>
</div>
</div>
</section>
<section class="content-section" id="technologiak">
<div class="container">
<div class="section-header">
<h2>Professzionális <span>Technológiák</span></h2>
<p>Ipari szintű megoldások, otthoni környezetben</p>
</div>
<div class="apps-showcase">
<div class="app-category-preview">
<span class="cat-icon">🐳</span>
<h3>Konténerek</h3>
<p>Docker alapú, izolált alkalmazás futtatás</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🎯</span>
<h3>Portainer</h3>
<p>Vizuális webes kezelőfelület</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🔮</span>
<h3>Proxmox</h3>
<p>Virtualizáció haladóknak</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">☸️</span>
<h3>Kubernetes</h3>
<p>Magas rendelkezésre állás</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🌐</span>
<h3>Hálózat</h3>
<p>SSL, tűzfal, VPN védelem</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">💾</span>
<h3>Tárolás</h3>
<p>SSD + HDD, RAID védelem</p>
</div>
<div class="app-category-preview">
<span class="cat-icon">🖥️</span>
<h3>Hardver</h3>
<p>Mini PC-től rack szerverig</p>
</div>
</div>
<div class="apps-cta">
<p class="apps-count">
Az igényeidhez igazítjuk — a <strong style="color: var(--text-primary);">legegyszerűbbtől</strong> a <strong>legkomolyabbig</strong>
</p>
<a href="/technologiak" class="cta-button-secondary">
Technológiákról bővebben →
</a>
</div>
</div>
</section>
<section class="content-section alt-bg" id="mentesek">
<div class="container">
<div class="backup-content">
<div class="backup-text">
<h2>Adataid <span>biztonságban</span></h2>
<p>A nagy felhőszolgáltatók milliókat költenek arra, hogy az adataid ne vesszenek el. De tudtad, hogy ugyanezt az otthoni szerveredről is elérheted?</p>
<p>A 3-2-1 mentési szabályt követve professzionális szintű adatbiztonságot építünk fel semmi sem vész el, még katasztrófa esetén sem.</p>
<a href="/biztonsagimentes" class="cta-button-secondary">
Mentési stratégia részletei →
</a>
</div>
<div class="backup-visual">
<div class="backup-rule-mini">
<span class="number">3</span>
<div class="rule-text">
<h4>Három másolat</h4>
<p>Eredeti + két biztonsági mentés</p>
</div>
</div>
<div class="backup-rule-mini">
<span class="number">2</span>
<div class="rule-text">
<h4>Két tárolótípus</h4>
<p>Különböző eszközökön tárolva</p>
</div>
</div>
<div class="backup-rule-mini">
<span class="number">1</span>
<div class="rule-text">
<h4>Egy távoli helyen</h4>
<p>Offsite backup a biztonság érdekében</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="contact" id="kapcsolat">
<div class="container">
<div class="contact-box">
<h2>Érdekel? <span>Beszéljünk!</span></h2>
<div class="contact-methods">
<a href="/kapcsolat" class="contact-link">📝 Kapcsolatfelvételi űrlap</a>
<a href="mailto:info@felhom.eu" class="contact-link">✉️ info@felhom.eu</a>
</div>
</div>
</div>
</section>
<footer>
<div class="container">
<p>© 2026 felhom.eu — Saját felhőd, saját szabályaid</p>
</div>
</footer>
<script>
(function() {
const hamburger = document.getElementById('hamburger');
const navLinks = document.querySelector('.nav-links');
const overlay = document.getElementById('mobileOverlay');
const body = document.body;
if (!hamburger || !navLinks || !overlay) {
console.warn('[mobile-menu] Missing elements:', {
hamburger: !!hamburger,
navLinks: !!navLinks,
overlay: !!overlay
});
return;
}
function openMenu() {
hamburger.classList.add('is-active');
navLinks.classList.add('is-open');
overlay.classList.add('is-visible');
body.classList.add('menu-open');
hamburger.setAttribute('aria-expanded', 'true');
hamburger.setAttribute('aria-label', 'Menü bezárása');
}
function closeMenu() {
hamburger.classList.remove('is-active');
navLinks.classList.remove('is-open');
overlay.classList.remove('is-visible');
body.classList.remove('menu-open');
hamburger.setAttribute('aria-expanded', 'false');
hamburger.setAttribute('aria-label', 'Menü megnyitása');
}
hamburger.addEventListener('click', function() {
if (navLinks.classList.contains('is-open')) {
closeMenu();
} else {
openMenu();
}
});
// Close on overlay click
overlay.addEventListener('click', closeMenu);
// Close on nav link click
navLinks.querySelectorAll('a').forEach(function(link) {
link.addEventListener('click', closeMenu);
});
// Close on Escape key
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape' && navLinks.classList.contains('is-open')) {
closeMenu();
}
});
// Close on resize if open (e.g., rotating device)
window.addEventListener('resize', function() {
if (window.innerWidth > 900 && navLinks.classList.contains('is-open')) {
closeMenu();
}
});
})();
</script>
</body>
</html>