---
title: 'TTG Wiki BBS'
url: 'https://wiki.teletypegames.org/hu/services/wiki-bbs'
markdown: 'https://wiki.teletypegames.org/hu/services/wiki-bbs.md'
lang: hu
date: '2026-11-01'
description: 'A Teletype Games wikije telneten: élőben böngészi ezt a wikit a JSON API-ján át, az oldalakat lapozható, kereshető BBS-menükbe rendezi. Szupervizor-belépéssel a privát oldalak is megnyílnak. Elérhető: teletypegames.org:2325, böngészőben a bbsweb-en, és a TTG Gate BBS-en át Áttekintés Ruby alkalma…'
taxonomy:
  tag:
    - howto
---

# TTG Wiki BBS

> A Teletype Games wikije telneten: élőben böngészi ezt a wikit a JSON API-ján át, az oldalakat lapozható, kereshető BBS-menükbe rendezi. Szupervizor-belépéssel a privát oldalak is megnyílnak.
> 
> **Elérhető: `teletypegames.org:2325`**, böngészőben a [bbsweb](https://bbsweb.teletypegames.org)-en, és a [TTG Gate BBS](https://wiki.teletypegames.org/hu/services/ttg-gate-bbs)-en át

# Áttekintés

Ruby alkalmazás a [**rubbs**](https://git.teletypegames.org/engines/rubbs) gemre építve, mint a [Teletype BBS](https://wiki.teletypegames.org/hu/services/teletype-bbs). Saját repója (`bbs/wiki-bbs`) és saját stackje van, a [wikit](https://wiki.teletypegames.org/hu/services/wiki-site) az `interstack` hálózaton olvassa. Egy porton két arca van. A hívás a rubbs `BBS::Terminal` kérdésével indul: a board legfeljebb 1,5 másodpercig várja a telnetválaszokat, és a 40 oszlopnál szélesebb ablak modern terminál; a 40 oszlop vagy a válasz hiánya (a WiFi-modem mögötti C64 sima TCP-t beszél) Commodore-nak számít. Az `1` a modern arcot, a `2` a C64-et választja, a RETURN elfogadja a tippet.

# A modern arc

Teljes képernyős, Norton Commander-stílusú kétpaneles böngésző: balra az oldalfa (útvonal-mélység szerint behúzva), jobbra a kiválasztott oldal ANSI-markdownként. A böngésző maximalizálva nyílik; az F5 / Alt-Enter ablakká alakítja és vissza.

| Billentyű | Művelet |
|---|---|
| Fel / Le | Oldal választása (a jobb panel újratöltődik) |
| Tab | A fókusz az olvasópanelre |
| PgUp / PgDn / Home / End | Az olvasó görgetése |
| F2 | A böngésző újranyitása |
| F5 / Alt-Enter | Ablak / teljes képernyő |
| F8 | A wiki-index frissítése (az oldal-cache-t is üríti) |
| F10 | Menüsor |
| Alt-X / Esc | Kilépés / ablak bezárása |

A `*`-gal jelölt oldalak privátok (a wikin belépéshez kötöttek); a **Wiki > Supervisor login** feloldja őket, ugyanez a menüpont zárja vissza. Az egér is működik (xterm SGR), a görgővel együtt.

# A C64-es arc

PETSCII 40×25-ön. Ugyanaz az oldalfa, képernyőnként egy szint, a rubbs számozott kurzoros menüjeként (`BBS::Selector`): az aloldalas oldal jele `>`, a privát oldalé `*`. A CRSR mozgatja a sávot (balra-jobbra lapoz), a beírt szám kijelöl egy oldalt, a RETURN megnyitja vagy egy szinttel lejjebb visz, a `Q` (vagy ←) visszalép. Egy oldal képernyőnként jelenik meg (RETURN: tovább, `Q`: vissza), a végén a nyilvános címével. A legfelső szinten az `S` a szupervizor-belépés, az `R` újraolvassa az indexet.

# Adatforrás

A wiki két végpontja (sablonok a `themes/ttgwiki2/templates/*.json.twig`-ben, oldalak a `pages/custom/`-ban):

- `GET /custom/sitemap.json` — minden routolható oldal: `route`, `title`, `modified`, `updatedAt`, `tags` és `private` (igaz, ha az oldalnak vagy egy ősének `access: site.login` van a frontmatterében). Törzs nélkül.
- `GET /custom/page.json?route=/platforms/tic80` — egy oldal a `markdown`-jával és a `html`-jével. Privát oldalhoz a wiki `SUPERVISOR_PASSWORD`-jével egyező `token=` kell, különben a válasz `{"error": "forbidden"}`; ismeretlen útvonalra `{"error": "not_found"}`.

Az oldalindex induláskor egyszer töltődik be, és minden munkamenet közösen használja; az F8 (C64-en `R`) mindenkinek újraolvassa. Ha induláskor a wiki nem válaszol (egy stack-deploy a Gravot is újraindítja), a board akkor is elindul, és 10 másodpercenként újrapróbálja az indexet. Az oldaltörzsek 5 percig cache-ben maradnak.

A zárat a wiki oldala kényszeríti ki: a Grav entrypointja a `SUPERVISOR_PASSWORD`-öt a site configjába teszi, és a JSON API egyező token nélkül nem adja ki a privát törzseket. A board a `WIKI_BBS_SUPERVISOR_PASSWORD`-öt küldi tokenként, ezért a kettőnek egyeznie kell; a compose egy változóból köti be mindkettőt.

# A motorháztető alatt

| Változó | Alapérték | Mire való |
|---|---|---|
| `BBS_PORT` | `2323` | Telnetport a konténerben |
| `BBS_MAX_SESSIONS` | `100` | Egyszerre hány hívó (a compose 50-et állít) |
| `BBS_IDLE` | `900` | Tétlenségi bontás, másodpercben |
| `WIKI_BBS_URL` | `http://localhost:9120` | A wiki alap-URL-je (a szerveren `http://wiki-grav` az interstack hálózaton) |
| `WIKI_BBS_SUPERVISOR_PASSWORD` | üres | Feloldja a privát oldalakat, és API-tokenként megy a wikinek; üresen zárva maradnak |

A kód a házi szerkezetet követi: `lib/domain/` (`PageModel`, `WikiRepository`, `WikiService`, `SupervisorService`, és a `WikiBBS`, a környezetet olvasó kompozíciós gyökér) és `lib/ui/` (`UI::Modern`, a kétpaneles böngésző; `UI::Petscii` a `Browser`-ével). A teljes leírás a repó [README-je](https://git.teletypegames.org/bbs/wiki-bbs/src/branch/master/README.md).

A szolgáltatás és a konténer neve `wiki-bbs`, a helye `/srv/stacks/wiki-bbs`, nyilvános portja 2325. A masterre pusholás a Woodpeckerből élesít (RuboCop, compose-ellenőrzés, `ci-deploy wiki-bbs`); a Grav-ot `http://wiki-grav` néven éri el, ez a wiki konténerének neve az `interstack`-en. Az entrypoint induláskor frissíti a rubbs-t. A többi board a [BBS-hálózat](https://wiki.teletypegames.org/hu/services/bbs-network) oldalon van.

'; 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: [WarpEngine BBS](https://wiki.teletypegames.org/hu/services/warp-engine-bbs.md)
- Next: [Wiki oldal](https://wiki.teletypegames.org/hu/services/wiki-site.md)
