---
title: 'Teletype BBS'
url: 'https://wiki.teletypegames.org/hu/services/teletype-bbs'
markdown: 'https://wiki.teletypegames.org/hu/services/teletype-bbs.md'
lang: hu
date: '2026-06-03'
description: 'A Teletype BBS a Teletype Games BBS-hálózatának klubháza: telnetes, Synchronet-stílusú hirdetőtábla üzenőfalakkal, levelezéssel, chattel és azokkal a doorokkal, amelyek csak itt élnek. Elérhető: teletypegames.org:2323 Áttekintés Ruby alkalmazás a rubbs gemre építve, ami a saját BBS-keretrendszerü…'
taxonomy:
  tag:
    - howto
---

# Teletype BBS

> A Teletype BBS a Teletype Games BBS-hálózatának klubháza: telnetes, Synchronet-stílusú hirdetőtábla üzenőfalakkal, levelezéssel, chattel és azokkal a doorokkal, amelyek csak itt élnek.
> 
> **Elérhető: `teletypegames.org:2323`**

# Áttekintés

Ruby alkalmazás a [**rubbs**](https://git.teletypegames.org/engines/rubbs) gemre építve, ami a saját BBS-keretrendszerünk — ez adja az ANSI-felületet, a menüsort, az egymásra tornyozott modális ablakokat, a Telnet-szervert és az xterm egértámogatást. A `teletype-bbs` repóban csak a Teletype-specifikus részek vannak: a domain (a tárolóikhoz kötött szolgáltatások), a modern arc ablakai és menüi, a PETSCII-arc, a doorok és a karakterek.

A hálózat első boardja volt, ezért egykor minden Teletype Games-tartalom belekerült. 2026-11-01 óta a **közösség** és a **csak itt élő doorok** maradtak benne; amit egy másik board visz, azt nem ismétli meg, csak megmutatja, hol van:

| Ha ezt keresed | Itt van |
|---|---|
| a játékaink és fájljaink (C64, Plus/4; ZMODEM, XMODEM) | [WarpEngine BBS](https://wiki.teletypegames.org/hu/services/warp-engine-bbs), `teletypegames.org:2329` |
| a wiki: útmutatók, how-tok, a DOS-sarok | [TTG Wiki BBS](https://wiki.teletypegames.org/hu/services/wiki-bbs), `teletypegames.org:2325` |
| a blog | [TTG Blog BBS](https://wiki.teletypegames.org/hu/services/ttg-blog-bbs), `teletypegames.org:2328` |
| ANSI- és PETSCII-art | [Pixelia BBS](https://wiki.teletypegames.org/hu/services/pixelia-bbs), `teletypegames.org:2332` |
| a *Definitely not an Impostor* játék utáni terminálja | [Impostor BBS](https://wiki.teletypegames.org/hu/services/impostor-bbs), `teletypegames.org:2324` |
| Wikipédia, hírcsatornák, könyvek, a C64-es játéklexikon | [Alexandria BBS](https://wiki.teletypegames.org/hu/services/alexandria-bbs) 2326, [Feedia BBS](https://wiki.teletypegames.org/hu/services/feedia-bbs) 2327, [Scriptorium BBS](https://wiki.teletypegames.org/hu/services/scriptorium-bbs) 2330, [Commodex BBS](https://wiki.teletypegames.org/hu/services/commodex-bbs) 2331 |
| mindegyik egyetlen portról | [TTG Gate BBS](https://wiki.teletypegames.org/hu/services/ttg-gate-bbs), `teletypegames.org:2399` |
| az FTP-fa régi gépeknek | `ftp.teletypegames.org`, sima HTTP-n pedig `archive.teletypegames.org` |

A **Board > BBS Network** (és a Help > *Where are the games, files, wiki?*, C64-en az `N`) ezeket a klubház falán lógó várostérképen mutatja, és a TTG Master is ugyanezt válaszolja.

2026-11-01 óta a board úgy is néz ki, ami: **klubház** (lásd lent: *A klubház*). A hívás a régi módon indul: a modem tárcsáz és kapcsol (`CONNECT 38400/ARQ/V42BIS`), utána a hívó a **bejáratnál** áll: az ajtó a lámpája alatt, a csengő, a fogason a bent lévők kabátjai, és a nyitott vendégkönyv a legutóbbi három vendéggel és a bejegyzés sorszámával (a hívó sorszáma). A nevet (üresen hagyva Anonymous) és a regisztrált név jelszavát a vendégkönyvbe írja; minden más név vendég. Utána jön a **belépési szekvencia**: *Welcome back*, a hívó sorszáma, a korábbi hívásaid (első, utolsó, összes idő), és a régi BBS-ek ellenőrzései — új levelek, új üzenetek falanként az utolsó olvasásod óta, a szavazásaid —, végül a nap idézete, egy csapattag mottója. Az ENTER nyitja a teljes képernyős felületet az **irányítópulttal** (dashboard), a klubházzal az utcáról: kivilágított ablak minden bent lévő hívónak, füst a kéményből, amíg az élő chatben beszélnek, zászló a postaládán a leveleidnek, alatta ki van bent, a hirdetőtábla és a falfirka; pár másodpercenként frissül. A **Board > Dashboard** minden ablakot bezár, és visszahozza. Nyitott menünél az alsó sor elmondja, mit csinál a kijelölt menüpont. Minden ablak a menüje színét és ikonját viseli: Board halvány türkiz ☼, Messages zöld ✉, People rózsaszín ☺, Doors lazac ♫, You szürke ♥, Help sárga ¿. A **Board > Log off** (Alt-X) egyenként lekapcsolja a klubház lámpáit, a kabátjeggyel (a hívó sorszáma és a hívás hossza), egy tagline-nal, `+++`, `ATH0`, `NO CARRIER`.

Az állapotsor jobb oldalán a node, az óra és a bent töltött idő látszik.

# Funkciók

**A board**

- **Irányítópult (Dashboard, Board)** — a klubház az utcáról, élőben: az ablakok, a füst, a postaláda; az **Inside now** (a node-ok és a vendégkönyv, az utolsó hívók), az **On the notice board** (a közelgő események egy sávval, amely a nap közeledtével telik, az új cédulák a parafatáblán, a leveleid) és a oneliner-ekből álló falfirka. Annak a helyiségnek a kártyája, amelynek az ablaka nyitva van, a ház tetején ül.
- **Bulletins** (Board > Bulletins…, Help > New to BBSes?) — számozott hirdetmények: a belépési hirdetőtábla (a board számokban, a legújabb posztok, mi jön, az utolsó hívók, a fal), *About Teletype Games*, *Coming up*, a BBS szabályai, *New to BBSes?* és a BBS-hálózat.
- **Dev Log** (Board) — a [git.teletypegames.org](https://git.teletypegames.org) összes szervezetének nyilvános aktivitása: pushok a commit-üzenetekkel, tagek, release-ek és új repók, a legújabb elöl. A Gitea API-ból anonim módon olvassa, így a privát repók sosem jelennek meg.
- **BBS Network** (Board) — a várostérkép: a hálózat minden boardja egy épület a bbsweb-színében a klubház körül; a nyilak épületről épületre lépnek, a térkép alatt az, amit a kiválasztott visz, és hogy hogyan lehet átsétálni. A lista a bbsweb-bel és a sima HTTP-s FTP-fával egy hirdetmény. Gateway-doorja nincs: egy másik boardra úgy jut el a hívó, hogy felhívja, vagy a TTG Gate BBS-en át.
- **TTG Master** (`F1`, a gomb az asztal sarkában, Help) — a sysop, aki a hívók kérdéseire válaszol a BBS-ről: mi hol van, mi jön, és a hálózat melyik boardja viszi azt, ami ebben nincs. A tényeket a kód keresi ki (a menük és a többi board tudástára, a legutóbbi kiadások, az események, a játékok), a modell csak megfogalmazza őket, és a kód ellenőrzi, hogy a válasz megtartotta-e a tényeket, és nem talált-e ki menüt; ha igen, a hívó magát a tényt kapja.

**Közösség**

- **Több üzenőfal** — General / Tech / Off-Topic / Sysop, falanként egy CSV a `data/boards/` alatt. Az új hozzászólások többsoros `TextArea`-ban készülnek, legfeljebb 1000 karakterrel. Regisztrált név esetén minden fal mellett ott az olvasatlan üzenetek száma.
- **Levelezés (Mail)** (Messages > Mail…, `F7`) — privát levelek regisztrált nevek között: Write, Reply, Delete. A **Feedback to the Sysop…** levél a sysopnak, bárki írhatja, akinek van neve; minden sysop olvassa. A hívás közben érkező levél csenget. A Discord-csatornára csak az kerül, hogy visszajelzés jött, a tartalma soha.
- **Oneliners** (Messages) — egysoros üzenetek fala, legfeljebb 64 karakterrel; névvel lehet írni, Anonymousként nem. A legújabbak az irányítópult alján futnak.
- **Élő chat** — broadcast-csomópont, kb. 1 Hz-es lekérdezéssel, belépéskor előzményvisszajátszással; a C64-es hívók is benne vannak.
- **IRC #teletypegames** — csak olvasható ablak a Libera.Chat-en lévő csatornánkra, azzal, hogyan lehet belépni.
- **Voting Booth** (Messages) — a `lib/content/polls.yml` szavazásai; egyet a katalógus tölt fel (a kedvenc Teletype Games-címed), egyet a doorok. Az eredmény sávdiagram; névvel lehet szavazni, és a szavazat módosítható.
- **Page the Sysop** — hívásonként egyszer: csengő, egy sor az élő chatben és a Discordon; ha nincs bent sysop, levélírást ajánl.
- **Regisztrált nevek** — a **You > Register…** jelszóhoz köti azt a nevet, amellyel beléptél; onnantól ez a név jelszót kér. Profil (aláírás / hely / honlap / jegyzetek) csak regisztrált névhez tartozhat.
- **Node-ok** — minden hívó a legkisebb szabad node-ot kapja; a **People > Who is Online** mutatja a node-ot, a nevet, hogy mit csinál a hívó (a legfelső ablak vagy a door), és mióta van bent.
- **Hall of Fame**, **User Listing**, **Team** (People), **Your Stats** (You) — a trófeás vitrin (arany-, ezüst- és bronzkupa a top hívóknak, posztolóknak és a Trivia-pontszámoknak, a többiek a vitrin alatt); a regisztrált nevek a hívásaikkal; a Teletype Games tagjai a mottójukkal; a saját számaid.
- **Utolsó betelefonálók** — lásd lent: *A botok kizárása*.
- **Sysop-konzol** — statisztikák és broadcast, a `TELETYPE_BBS_SYSOPS` listában szereplő, jelszóval belépett neveknek.
- **Discord-csatorna** — az új faliposztok és a sysop-broadcastok a `TELETYPE_BBS_DISCORD_WEBHOOK` webhookra mennek, megemlítések (mention) nélkül.

**Doorok** — programok, amelyeknek a BBS átadja a telnetvonalat, és kilépéskor visszaveszi (a [rubbs](https://wiki.teletypegames.org/hu/engines/rubbs) `BBS::Door`-ja). Csak az itt élő programok doorok. A **Doors > Games Room…** a klubház hátsó játéktermének öt állomásaként mutatja őket, egy lámpa ég afölött, amelyikben valaki bent van; a **Doors > Door Lobby…** mindet felsorolja: mi az, milyen képernyő kell hozzá, és ki van bent.

- A **SERMO** egy SERMO-t futtató kettős gép a Neumatronic-univerzumból (a [sermo-bbs](https://git.teletypegames.org/bbs/sermo-bbs) repóból, `sermo` gemként): adj ki parancsot, vagy csak beszélgess vele; az `EXIT` visszavisz a BBS-be. Amit szavakkal mondasz, az a Lapis-ACP-hez megy: egy kis helyi modell (Qwen3.5 0.8B) az 1977-es kánon personájával. Lassú, szűkszavú, és néha téved, részben szándékosan.
- **Commodore 64** és **Commodore Plus/4** — a gép a `READY.` promptnál (kék C64-, szürke Plus/4-képernyő, 40 oszlop), egy kis BASIC V2-vel: a `10 PRINT CHR$(205.5+RND(1)); : GOTO 10` kirajzolja a labirintust, bármelyik billentyű RUN/STOP. A lemezen az adott gépre készült játékaink vannak: a `LOAD"$",8` és a `LIST` megmutatja a directoryt (a blokkszám a valódi `.prg`-méretből, az FTP-szerver `/WARP` mappájából, mert a katalógus-API nem ad méretet), a `LOAD"NÉV",8` (joker karakterrel is) betölt egy játékot, a `LIST` megmutatja, a `RUN` kiírja az adatlapját a katalóguslinkkel. A Plus/4 a `DIRECTORY`-t és a `DLOAD`-ot is ismeri; a `SYS 64738` újraindítja a C64-et; az `EXIT` visszavisz a BBS-be.
- **Chat of Ra** — te vagy a *Blessing of Ra* piramisába zárt munkás, és a napisten felülről válaszol. A szabad szöveg a modellhez megy Ra szerepében; a `RIDDLE` a piramis egy talányát adja fel, amit a kód ellenőriz (`HINT`, `SKIP`); három megfejtés után Ra megáld. A `GAME` megmondja, hol a játék.
- **TTG Trivia** — a régi fajta door-játék: tíz kérdés a Teletype Gamesről és a régi időkről, kérdésenként 20 másodperc, A–D; a gyors válasz többet ér, három jó egymás után sorozatbónuszt hoz. A kérdések egy része a katalógusból és a csapatból készül, a többi a `lib/content/trivia.yml`-ből; a legjobb tíz játék a dicsőségtáblája.

**Technikai**

- **xterm egér** — kattintható menük, gombok és listaelemek, görgethető listák.
- **Tétlenségi bontás** 10 perc után.
- **Perzisztens állapot** — az üzenőfalak, a betelefonálási napló, a profilok, a fiókok, a levelek, az olvasási jelzők, a szavazatok és a Trivia-pontszámok CSV-fájlok a `data/` alatt, ami Docker-kötet, így túlélik az újraindítást.

## A C64-es arc

A Commodore 64 (CCGMS, StrikeTerm, C64-módú SyncTERM, vagy WiFi-modem mögötti C64) PETSCII-ben kapja a boardot, 40×25-ön. A **képek** (a bejárat, a főmenü, a várostérkép, a játékterem, a vitrin, a helyiség-kártyák, a távozás) a C64 nagybetűs/grafikus karakterkészletében készülnek, egyszer az egész képernyő, utána csak ami változik; az **olvasó képernyők** (posztok, levelek, chat, hirdetmények, a Master) a kisbetűs készletben maradnak. A főmenü a klubház: fent a ház, ugyanabból a jelenetből kivilágítva, mint a modern arcon, alatta ki hív és mi jön, és a helyiségek kurzoros menüként: `M` Cork board, `E` Mailbox, `O` Graffiti wall, `L` Sofa chat, `I` Radio (IRC), `P` Ring the bell, `U` Notice board, `D` Workshop, `C` Guestbook, `H` Trophies, `V` Ballot box, `S` You, `R` Games room, `N` Town map, `T` Ask the bar (a TTG Master), `Q` Leave; `?` súgó, `Y` rendszerinfó. Egy olvasó helyiség hívásonként egyszer megmutatja a kártyáját. A játékteremben a C64 és a Plus/4 nyitható; a SERMO, a Chat of Ra és a TTG Trivia 80 oszlopot kér, ezek a modern arcon vannak. A játékaink XMODEM-mel jutnak C64-re a [WarpEngine BBS](https://wiki.teletypegames.org/hu/services/warp-engine-bbs)-ről.

A `*` a képek helyett a régi, sima szöveges menüt adja, és vissza; akinek a neve csupa nagybetűvel érkezik, az rögtön ezt kapja, mert az UltimateTerm (a C64 Ultimate terminálja) ANSI-módban felcseréli a kis- és nagybetűt, és a grafikát sem tudja megjeleníteni.

## A klubház

A board a hálózat klubháza: nem könyvtár és nem raktár — azok a város többi épülete —, hanem ahová az ember beül, beírja a nevét a vendégkönyvbe, megnézi, ki van bent, üzen a többieknek, és hátul játszik egyet. Minden nagy képen van valami a board saját adataiból (a node-ok, a chat, a levelek, az új posztok, a foglalt doorok, a vendégkönyv, az események, a fal), mindkét arcon ugyanaz; külső lekérdezés nincs, a várostérkép statikus.

| Menü (modern) | Helyiség (C64-billentyű) | Élő elem a képen |
|---|---|---|
| a belépés | a bejárat: ajtó, lámpa, csengő, vendégkönyv | az utolsó három vendég, a bejegyzés sorszáma, a kabátok a fogason (a node-ok) |
| Board > Dashboard | a klubház az utcáról | kivilágított ablak node-onként, az ajtó és a lámpa, füst a kéményből (chatsor az utolsó percben), a postaláda zászlaja és a levelek száma |
| Messages > Boards… | a parafatábla (`M`) | az új cédulák |
| Messages > Mail… | a postarekeszek (`E`) | a zászló a postaládán |
| Messages > Oneliners | a falfirka (`O`) | a fal a ház alatt |
| Messages > Live Chat | a kanapésarok (`L`) | a füst |
| People > Who is Online, Last Callers | a vendégkönyv (`C`) | — |
| People > Hall of Fame | a trófeás vitrin (`H`) | a nevek a kupákon |
| Board > Bulletins…, Dev Log | a hirdetőtábla (`U`), a műhely (`D`) | — |
| Board > BBS Network | a várostérkép (`N`) | statikus |
| Doors > Games Room… | a játékterem (`R`) | lámpa a foglalt állomások fölött |
| Help > Ask the TTG Master | a pult (`T`) | — |
| Log off | távozás (`Q`) | kialvó lámpák, a kabátjegy |

A ház Budapest napszakát követi (hajnal, nappal, alkony, éjjel) és az évszakot: hó decembertől februárig, tök október utolsó hetében, tűzijáték szilveszterkor, zászlófüzér a game jam napjain.

![Az irányítópult: a klubház az utcáról](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-dashboard.png)

![A bejárat a vendégkönyvvel](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-entrance.png)

![A várostérkép: Board > BBS Network](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-town-map.png)

![A játékterem: Doors > Games Room](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-games-room.png)

![A trófeás vitrin: People > Hall of Fame](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-trophies.png)

![Távozás: kialszanak a lámpák](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-leaving.png)

![Az évszakok a házon: hó, tök, tűzijáték, zászlófüzér](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-seasons.png)

C64-en ugyanezek a helyiségek, külön PETSCII-ben rajzolva:

![A C64-es főmenü](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-menu.png)

![A C64-es bejárat](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-entrance.png)

![A C64-es várostérkép](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-town-map.png)

![A C64-es játékterem](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-games-room.png)

![A C64-es trófeás vitrin](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-trophies.png)

![Távozás C64-en](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-leaving.png)

![Az évszakok a C64-es házon](https://wiki.teletypegames.org/wiki-assets/teletype-bbs/clubhouse-c64-seasons.png)

**A képek** a [rubbs](https://wiki.teletypegames.org/hu/engines/rubbs) `BBS::Art` YAML-formátumában vannak a `lib/content/art/` alatt, kétszer, gépenként külön rajzolva: a `modern/` 437-es kódlappal és 256 színnel, a `c64/` a C64 nagybetűs/grafikus készletével. Azok a cellák, amelyeket a board az adataiból tölt ki, a kép hotspotjai; az évszakok rétegek, napszakonként egy. A rubbs `art-preview`-ja rajzolás közben ellenőrzi a képet (ANSI a terminálon, a PETSCII-bájtok, C64-es képernyőkép). **A várostérkép** a `lib/content/network.yml`-ből dolgozik: minden board a nevével, portjával, épületével, színeivel és az épülete helyével; új board = egy új sor és a két épülete (`building_ID.yml`, 12×4 és 3×3).

**A C64-es vonal lassú**, ezért a képeknek bájtkeretük van, a `bin/c64-bytes` méri: a főmenü minden napszakban és évszakban 1105–1123 bájt (legfeljebb 1,2 KB), a sáv egy lépése 146–205, egy füstpamacs kb. 60, a bejárat kb. 1,1 KB, a várostérkép 1000 (egy lépés 161–209), a játékterem 770, a vitrin 609, egy helyiség-kártya 231–265, a távozás 570, a lámpák egyenként 29–78 bájt alatt alszanak ki.

## A botok kizárása

A 2323-as port nyitva van az internet felé, ezért a telnetes jelszópróbálgató botok másodpercenként hívják, és `root`, `admin` és hasonló neveket gépelnek be. 2026-10-20-ig mind bekerült az utolsó betelefonálók közé. Most:

- egy hívás csak akkor látszik online-nak, és csak akkor kerül a naplóba, ha a terminál elküldte az ablakméretét (telnet NAWS) — a valódi kliensek és a bbsweb ezt megteszik, a botok nem;
- a hívás a végén kerül a naplóba, és csak ha legalább 10 másodpercig tartott;
- a név betűvel vagy számjeggyel kezdődik, és csak betűt, számjegyet, szóközt, `.`, `_` és `-` jelet tartalmazhat; minden más (`GET / HTTP/1.1`) Anonymous lesz.

# Menük és billentyűk

| Menü | Elemek |
|---|---|
| **Board** | Dashboard · Bulletins… · Dev Log · System Info · BBS Network · Log off |
| **Messages** | Boards… · New Post… · Mail… · Oneliners · Live Chat · IRC #teletypegames · Voting Booth · Feedback to the Sysop… · Page the Sysop |
| **People** | Who is Online · Last Callers · User Listing · Hall of Fame · Team |
| **Doors** | Games Room… · Door Lobby… · SERMO · Commodore 64 · Commodore Plus/4 · Chat of Ra · TTG Trivia |
| **You** | Your Stats · Profile… · Register… · Sysop Console (csak jelszóval belépett sysopoknak) |
| **Help** | Ask the TTG Master… · What is coming up? · Where do I start? · Where are the games, files, wiki? · Which doors are there? · New to BBSes? · Keys · About |

Minden menüpontnak van súgója: amíg ki van jelölve, az alsó sor elmondja, mit csinál.

| Billentyű | Művelet |
|---|---|
| `Alt+betű` | A megfelelő felső menü megnyitása |
| `F10` | A legbaloldalibb menü megnyitása |
| `F1` | Kérdés a TTG Masternek |
| `F2` | Üzenőfalak |
| `F3` | Gyors hozzászólás |
| `F4` | Chat |
| `F7` | Levelezés (Mail) |
| `Alt-X` | Kilépés (Log off) |
| `Tab` / `Shift-Tab` | Fókuszléptetés az ablakon belül |
| `Enter` | A fókuszált gomb aktiválása / beküldés |
| `F5` / `Alt-Enter` | Teljes képernyő és vissza a sok tartalmú ablakoknál; ugyanezt teszi a címsor `[↑]` / `[↕]` gombja vagy a dupla kattintás a címsoron |
| `F6` / `Shift-F6` | A következő / előző ablak előrehozása; egy ablakra kattintás is előrehozza |
| `Alt-1` … `Alt-9` | Az adott számú ablak előrehozása (a szám a felső keret jobb oldalán) |
| `Ctrl-F5` | Ablak mozgatása a nyilakkal, méretezése Shift+nyilakkal (a Tab vált), az Enter befejezi (az F6 is, amíg ez az egyetlen ablak); egérrel a címsort vagy a `┘` sarkot kell húzni |
| betű / `Alt+betű` | Megnyomja az ablak azzal a gyorsbillentyűvel jelölt gombját (szövegmezőben Alttal) |
| `Esc` | A legfelső ablak vagy menü bezárása |

# Konfiguráció

Másold az `env-example` fájlt `.env` néven:

| Változó | Alapérték | Leírás |
|---|---|---|
| `BBS_PORT` | `2323` | TCP-port. |
| `TELETYPE_BBS_SYSOPS` | üres | Sysop-nevek vesszővel elválasztva. A fiókjuk csak a `bin/account`-tal hozható létre. |
| `TELETYPE_BBS_DISCORD_WEBHOOK` | üres | Discord-webhook az új posztokhoz és a sysop-broadcastokhoz; üresen kikapcsolva. |
| `TELETYPE_BBS_ACCOUNTS_PATH` | `data/accounts.csv` | Regisztrált nevek sózott PBKDF2-SHA256 hash-sel, 600-as fájlmóddal. |
| `TELETYPE_BBS_BOARDS_PATH` | `data/boards` | Falankénti CSV-fájlok. |
| `TELETYPE_BBS_MESSAGES_PATH` | `data/messages.dat` | Örökölt, egyfalas fájl; az első futáskor átkerül a General falra. |
| `TELETYPE_BBS_LAST_CALLERS_PATH` | `data/last_callers.csv` | Befejezett hívások. |
| `TELETYPE_BBS_PROFILE_PATH` | `data/profiles.csv` | Felhasználói profilok. |
| `TELETYPE_BBS_ONELINERS_PATH` | `data/oneliners.csv` | Az oneliners fal. |
| `TELETYPE_BBS_MAIL_PATH` | `data/mail.csv` | Privát levelek és visszajelzések, 600-as fájlmóddal. |
| `TELETYPE_BBS_LAST_READ_PATH` | `data/last_read.csv` | Melyik regisztrált név meddig olvasta az egyes falakat. |
| `TELETYPE_BBS_VOTES_PATH` | `data/votes.csv` | A Voting Booth szavazatai. |
| `TELETYPE_BBS_TRIVIA_SCORES_PATH` | `data/trivia_scores.csv` | A TTG Trivia játszmái. |
| `TELETYPE_BBS_FTP_HOST` | `ftp.teletypegames.org` | Az FTP-szerver, amelynek `/WARP` mappájából a Commodore-doorok a játékok blokkszámát veszik. |
| `TELETYPE_BBS_IRC_SERVER` | `irc.libera.chat` | A csak olvasható csatornaablak IRC-szervere (TLS); üres = kikapcsolva. |
| `TELETYPE_BBS_IRC_PORT` | `6697` | A TLS-portja. |
| `TELETYPE_BBS_IRC_CHANNEL` | `#teletypegames` | A csatorna, amit a board hallgat. |
| `TELETYPE_BBS_IRC_NICK` | `ttgbbs` | A board nickje ott; ha foglalt, `ttgbbs_`. |
| `TELETYPE_BBS_IRC_PASSWORD` | üres | A nick NickServ-jelszava (SASL PLAIN); üres = nincs bejelentkezés. |
| `SERMO_LLM_URL` | a compose állítja | A SERMO modellje, `http://llm:8080`; üresen csak beégetett válaszok. |
| `SERMO_LLM_MODEL` | a compose állítja | A modell neve a [modellszolgáltatásban](https://wiki.teletypegames.org/hu/infrastructure/llm), `qwen3.5-0.8b`. |
| `SERMO_LLM_API_KEY` | üres | A SERMO kulcsa a [modellszolgáltatáshoz](https://wiki.teletypegames.org/hu/infrastructure/llm); nélküle a SERMO beégetett válaszokat ad. |
| `TELETYPE_BBS_LLM_URL` / `_MODEL` / `_API_KEY` | a SERMO-é | Ra és a TTG Master modellje; ha nincs megadva vagy üres, a `SERMO_LLM_*` értéket használja. |

## Sysop-fiókok

A `TELETYPE_BBS_SYSOPS` listában szereplő nevet telneten nem lehet regisztrálni, így senki nem foglalhatja le elsőként. A fiókot — vagy bármelyik jelszó visszaállítását — a szerver shelljéből kell elvégezni:

```bash
docker exec -it teletype-bbs bin/account Tasi
```

# Futtatás

```bash
docker compose up --build     # vagy Ruby 3.x-szel: bundle install && ruby bbs.rb
telnet localhost 2323
```

A compose egy konténert indít, a `teletype-bbs`-t. A SERMO mögötti modell, a Qwen3.5 0.8B, a szerver közös [modellszolgáltatásában](https://wiki.teletypegames.org/hu/infrastructure/llm) fut, az `interstack` hálózaton `http://llm:8080`-ként; amíg nem válaszol, a SERMO beégetett válaszokat ad. A `docker-compose.dev.yaml` ehelyett a BBS mellett tartja a modellt: egy `teletype-bbs-acp` konténer a llama.cpp `llama-server`-ével, kulcs nélkül.

## Doorok

Egy door a `TeletypeBBS#doors` egy eleme (`lib/domain/teletype_bbs.rb`): a neve, a program, a címke a gyorsbillentyűjével, a legkeskenyebb képernyő, amire rajzol, és három szöveg (`tag` a C64-es listához, `hint` az állapotsorhoz, `about` a Door Lobbyhoz). A modern arc mindet deklarálja, és a Doors menüje magától felsorolja őket; a PETSCII-arc a 40 oszloposakat kínálja.

```ruby
Door.new(name: :c64, program: Commodore.os(Commodore::C64, games: @games, sizes: @warp_sizes),
         label: '&Commodore 64', cols: 40, tag: 'c64 + our games',
         hint: 'A Commodore 64 at READY., with our C64 games on its disk: LOAD"$",8 lists them',
         about: 'A Commodore 64 at its READY. prompt, with a small BASIC V2. …')
```

Egy door lehet `BBS::FakeOS`-definíció (SERMO, a Commodore-ok) vagy hívható objektum. A `sermo` gem egy revízióra van rögzítve a `Gemfile.lock`-ban; az entrypoint induláskor csak a rubbs-t frissíti. A sermo-bbs változása után emeld meg a `bundle lock --update sermo` paranccsal, és élesíts újra.

## Karakterek

Ra és a TTG Master a [modellszolgáltatás](https://wiki.teletypegames.org/hu/infrastructure/llm) Qwen3.5 0.8B modelljén fut, a [rubbs](https://wiki.teletypegames.org/hu/engines/rubbs) `BBS::AI`-ján át. Egy ilyen kis modell jó egy rövid, karakteres válaszban, de rossz a tényekben, ezért a tényeket a kód tartja: Ra talányait és a játék címét a kód adja, a `deflect` szabályok megválaszolják, amit a modell bárhogy kérdezve elrontana (kód, vers, „bot vagy?”), a Master megfogalmazását pedig a kód a tényekhez méri, mielőtt megjelenik. A Master tudástára (`lib/characters/master_knowledge.yml`, a C64-es archoz `master_knowledge_c64.yml`) csak az ezen a boardon lévő dolgokhoz ad menüutat; amit egy másik board visz, ahhoz a board nevét és portját.

A personákat méréssel hangoljuk, nem egy-egy válasz alapján: a `bin/persona-eval ra|master|master_c64 3` többször felteszi a mérőkérdéseket (`lib/characters/eval/`), és megszámolja a hibákat: szerepből kiesés, markdown, túl hosszú válasz, a Masternél tévesztés (rossz menüút vagy elveszett tény).

```bash
docker exec teletype-bbs bin/persona-eval master 3
```

# Projektszerkezet

```text
bbs.rb                       belépési pont: a terminál-kérdés, utána az egyik arc
bin/account                  fiók létrehozása / jelszó visszaállítása
bin/persona-eval             egy karakter hibáinak számolása sok futáson át
bin/c64-bytes                a C64-es képek bájtjai a vonalon
lib/
  domain/teletype_bbs.rb     a board: a tárolóikhoz kötött szolgáltatások, a doorok,
                             a hálózat listája, amit egy hívás több szolgáltatáson át tesz
  domain/
    repository/              node-ok, falak, katalógus, site (események, tagok), fiókok,
                             utolsó betelefonálók, profilok, oneliners, FTP (fájlméretek),
                             Gitea, levelek, olvasási jelzők, szavazatok, a hálózat
                             (várostérkép); http_json (GET + 5 perces cache)
    service/                 online, fal, játékok, site, fiók, chat, IRC, utolsó betelefonálók,
                             profil, oneliner, WARP-méretek, dev log, discord_notifier,
                             levelezés, szavazás, tagline-ok, hálózat, jelenet (amit
                             a klubház képei mutatnak, mindkét arcnak)
    model/                   értékobjektumok (MessageModel, GameModel, …)
  doors/commodore.rb         a C64- és a Plus/4-door; a commodore/basic.rb a BASIC-jük
  doors/ra.rb                Chat of Ra
  doors/trivia.rb            TTG Trivia
  content/                   szavazások, Trivia-kérdések, tagline-ok, hirdetmények, network.yml
  content/art/               a klubház képei: modern/ (cp437) és c64/ (PETSCII)
  characters/                Ra és a TTG Master: personák, talányok, tudástár, mérőkérdések
  ui/arts.rb                 a képek betöltése és tárolása
  ui/modern.rb               a modern arc: modem, bejárat, ablakok, menük, doorok
  ui/modern/                 az irányítópult, a kép-helyiségek (várostérkép, játékterem),
                             a bejárat, a távozás, a kártyák, a vitrin, a formázók
  ui/petscii.rb, ui/petscii/ a C64-es arc: bejárat, a klubház képei
                             (petscii/clubhouse.rb), az olvasó szekciók
data/
  boards/<id>.csv            falankénti üzenetek (automatikusan jön létre)
  last_callers.csv           befejezett hívások
  profiles.csv               felhasználói profilok
  accounts.csv               regisztrált nevek
  oneliners.csv              az oneliners fal
  mail.csv, last_read.csv,
  votes.csv, trivia_scores.csv
```

## Repó

https://git.teletypegames.org/bbs/teletype-bbs

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [Szolgáltatások](https://wiki.teletypegames.org/hu/services.md)
- Previous: [Discord szálütemező](https://wiki.teletypegames.org/hu/services/statusbot.md)
- Next: [Teletype Orbit](https://wiki.teletypegames.org/hu/services/teletype-orbit.md)
