---
title: FTP-szerver
url: 'https://wiki.teletypegames.org/hu/infrastructure/ftp-server'
markdown: 'https://wiki.teletypegames.org/hu/infrastructure/ftp-server.md'
lang: hu
date: '2026-10-14'
description: 'A DOS-os és Windows 9x-es eszközök nem tudnak HTTPS-t, ezért FTP-t olvasnak. Egyetlen szerver kínál nekik mindent: anonim, csak olvasható, csak passzív mód, a 21-es porton. Bármely FTP-kliensnek a portál WarpEngine-játékfájljait is kínálja. Önálló stackként fut. Akik írnak bele, máshol futnak. R…'
taxonomy:
  tag:
    - howto
---

# FTP-szerver

> A DOS-os és Windows 9x-es eszközök nem tudnak HTTPS-t, ezért FTP-t olvasnak. Egyetlen szerver kínál nekik mindent: anonim, csak olvasható, csak passzív mód, a 21-es porton. Bármely FTP-kliensnek a portál WarpEngine-játékfájljait is kínálja. Önálló stackként fut. Akik írnak bele, máshol futnak.

- **Repó:** [git.teletypegames.org/infra/ftp-server](https://git.teletypegames.org/infra/ftp-server)
- **Cím:** `ftp://ftp.teletypegames.org` (21-es port, passzív adat: 30000–30019)

# A mappák

```
/
  APPS/           a DOSINST programtára, a DOS-polc: programonként egy mappa, mindegyikben INFO.INI és FILES.LST
  C64/            a C64-polc: minden C64-játék legfrissebb buildje, verzió nélküli néven, INDEX.TXT
  PLUS4/          a Plus/4-polc, ugyanígy
  WARP/           a teletypegames.org WarpEngine-fájljai: minden játék minden buildje
  WIKI/           a TTGWIKI exportja: WIKI.INI, FILES.LST, EN/, HU/
```

| Mappa | Ki olvassa | Ki írja |
|---|---|---|
| `APPS` | [DOSINST](https://wiki.teletypegames.org/hu/dos/dosinst) (`PATH=/APPS`) | a teletypegames.org [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine)-je: a DOS-polca (`layout: "folders"`), a DOSINST, a [GMENU](https://wiki.teletypegames.org/hu/dos/gmenu), a [BMAGIC](https://wiki.teletypegames.org/hu/dos/bmagic) és a [TTGWIKI](https://wiki.teletypegames.org/hu/dos/ttgwiki) minden publikálásakor újraépítve |
| `C64` | a [WARP64U](https://wiki.teletypegames.org/hu/stores/warp64u) HTTP-n, és bármely FTP-kliens | a WarpEngine: a C64-polca, minden publikáláskor újraépítve |
| `PLUS4` | bármely FTP- vagy HTTP-kliens | a WarpEngine: a Plus/4-polca |
| `WARP` | bármely FTP-kliens (a nevek nem DOS-os 8.3-as nevek) | minden [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine)-build, ami a teletypegames.org-ra kerül: ugyanazok a fájlok, mint a `https://teletypegames.org/file/...` alatt |
| `WIKI` | [TTGWIKI](https://wiki.teletypegames.org/hu/dos/ttgwiki) (`PATH=/WIKI`) | a `ttgwiki` stack exportere, 15 percenként |

**A `WARP` nem másolat.** A portál tároló mappája (`/srv/stacks/teletype-games/data/softwares`), csak olvashatóan csatolva, így egy új build azonnal megjelenik benne. A régi verziók is benne vannak, és a katalógusból törölt szoftverek fájljai is, amíg a mappában maradnak.

**Az `APPS`, a `C64` és a `PLUS4` sem másolat.** A WarpEngine által ugyanebben a mappában tartott polcok (`shelves/APPS`, `shelves/C64`, `shelves/PLUS4`) csak olvasható csatolásai; lásd a *Polcok* részt a [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine) oldalán. A WarpEngine 1.7 óta egyetlen pipeline sem írja SSH-n az `APPS`-ot: az engine minden publikáláskor a katalógusból építi újra, a programok beállításfájljai nélkül, így egy a katalógusban elrejtett vagy törölt program kikerül a programtárból. Egy kézzel odatett mappa (például egy tesztprogram) megmarad: a `/srv/stacks/teletype-games/data/softwares/shelves/APPS/` alá kell másolni, és lefuttatni rá a DOSINST `server/mkfiles.sh`-ját.

**Ugyanez a fa sima HTTP-n is elérhető** a `http://archive.teletypegames.org/` címen (HTTPS-re irányítás nélkül), a TLS-t nem beszélő gépeknek: `http://archive.teletypegames.org/C64`, `/PLUS4`, `/APPS`.

**A gyökérben csak ez az öt mappa van.** A 0.6.0 előtti DOSINST `DOSINST.CFG`-jében `PATH=/` áll, és a frissítés ezt a fájlt sosem írja át: a gyökérben nem talál programot, ezért kézzel kell `PATH=/APPS`-ra átírni. 2026-10-15-ig a szerver az ilyen DOSINST kedvéért az `APPS` mappáit a gyökérben is mutatta.

# A szerver

`/srv/stacks/ftp-server` a vps.teletype.hu-n. A szerver egyetlen konténer: [pyftpdlib](https://github.com/giampaolo/pyftpdlib) 2.2.0, root nélkül és csak olvasható fájlrendszerrel.

- Az aktív módra (`PORT`/`EPRT`) 502 a válasz, így a konténer nem nyit kimenő kapcsolatot.
- A feltöltésre és a törlésre 550 a válasz.
- Legfeljebb 50 kapcsolat összesen, egy IP-ről 5.
- A PASV válasz a `.env` `FTP_MASQUERADE`-jét jelenti be. A DOS-os kliensek ezt nem használják, a szerver saját címére kapcsolódnak.

A stack mappája nem git checkout. A master ágra pusholt, a szervert érintő változást a pipeline telepíti, pontosabban csak megkéri rá a szervert: a `deploy` lépés SSH-n hívja a szerver `deploy` felhasználóját (`deploy-ssh` image, digest szerint), akinek a kulcsa egyetlen rögzített parancshoz, a `ci-deploy ftp-server`-hez kötött (`infra/host-config`). A szerver maga klónozza a mastert a Giteáról, egy szabályzat szerint ellenőrzi a `compose.yaml`-t (nincs privileged mód, extra capability vagy hoszt-névtér, docker socket; bind mount csak a stacken belül és a csak olvasható WarpEngine-mappára; nyilvános port csak a 21 és a 30000–30019), bemásolja a `compose.yaml`-t és a `server/`-t, aztán `docker compose up -d --build`; trusted volume-ok nem kellenek. A teszt lépés a Gitea-registry `pyftpdlib` image-ében fut (`git.teletypegames.org/build/pyftpdlib:3.13`, a szerver Pythonja a pyftpdlib 2.2.0-val), és csak akkor telepíti a pyftpdlib-et, ha az image-ben más verzió van. A `root/WIKI` és a `.env` nem változik; a `root/APPS`, a `root/C64`, a `root/PLUS4` és a `root/WARP` csak üres csatolási pont.

2026-10-14-ig a DOSINST-nek (21-es port, `dosinst` stack) és a TTGWIKI-nek (2121-es port) külön FTP-szervere volt.

'; 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: [Infrastruktúra](https://wiki.teletypegames.org/hu/infrastructure.md)
- Previous: [Üzembe helyezés](https://wiki.teletypegames.org/hu/infrastructure/deployment.md)
- Next: [Gitea](https://wiki.teletypegames.org/hu/infrastructure/gitea.md)
