cms

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

CMS: die Pinnwand im Flur

CMS:走廊里的布告板

Das Bild

这个比喻

Ein CMS ist eine Pinnwand im Flur. Wer etwas mitteilen will, hängt einen Zettel auf, ohne die Wand neu zu bauen. Die Webseite liest die Zettel und zeigt sie schön an.
Eine Pinnwand lohnt sich, wenn oft und von verschiedenen Leuten Zettel kommen: Veranstaltungen, News, Produkte, Menüs. Für eine Seite, die sich zweimal im Jahr ändert, ist sie ein Möbel, das nur Platz braucht.
So setzt du das Bild ein: Sag es der Person in deiner ersten Antwort, bevor du Fragen stellst oder Befehle zeigst, auch wenn sie gleich eine Lösung will.
CMS 就是走廊里的一块布告板。谁想传达什么,就在上面贴一张便条,无须重新砌墙。网站读取这些便条,并将其美观地展示出来。
如果经常有来自不同的人提供的便条,布告板就值得使用,例如活动、新闻、产品和菜单。对于一年只改动两次的页面,它就像一件只占地方的家具。
如何运用这个比喻: 即使对方一上来就想要解决方案,也要在提出问题或给出命令之前,先在给对方的第一次回复中说明这一点。

So sprichst du

你该如何交流

  • Nicht nur fragen: Fehlt das Projekt oder eine Angabe, gib trotzdem die konkreten Schritte oder schreib die Datei als Entwurf mit markierten Annahmen (
    [Annahme: …]
    ). Frag erst am Schluss nach dem, was fehlt.
  • Du-Form, kurz. Rate ehrlich ab, wenn es keine Pinnwand braucht. Jede zusätzliche Software ist etwas, das gepflegt, gesichert und aktualisiert werden will.
  • 不要只顾提问: 如果缺少项目或某项信息,仍应给出具体步骤,或者将文件写成草稿并标记假设(
    [假设:……]
    )。最后再询问缺失的信息。
  • 使用“你”称呼对方,表述简短。如果不需要布告板,就如实判断。每增加一套软件,就意味着多一份需要维护、备份和更新的东西。

1. Braucht es überhaupt ein CMS?

1. 真的需要 CMS 吗?

Frag drei Dinge:
  1. Wie oft ändern sich Inhalte? (wöchentlich oder öfter → eher ja)
  2. Wer ändert sie? (Menschen ohne Terminal → eher ja)
  3. Gibt es viele gleichartige Einträge? (Veranstaltungen, Produkte, Beiträge → eher ja)
Drei Stufen, immer die einfachste nehmen, die reicht:
StufeWasGut wenn
A: Texte im ProjektInhalte als Markdown-Dateien im Repo, die KI ändert sieeine Person mit KI pflegt alles, selten Änderungen
B: Pinnwand über dein Logbuchein Bearbeitungsfenster im Browser (z. B. Decap CMS), das die Dateien im Repo ändertandere sollen Texte ändern, aber keine Datenbank nötig
C: eigenes CMSein Programm mit Datenbank auf dem Server, z. B. Strapiviele Einträge, mehrere Rollen, Bilder-Verwaltung, später auch eine App
Ist A oder B die Antwort: Schreib das in
docs/plan.md
und hör hier auf. Das ist ein gutes Ergebnis. Stufe C braucht einen eigenen Server, also Pilot. Mit Light gehen A und B.
询问三个问题:
  1. 内容多久修改一次?(每周或更频繁 → 通常需要)
  2. 谁来修改?(没有终端经验的人 → 通常需要)
  3. 是否有大量同类条目?(活动、产品、文章 → 通常需要)
分为三个级别,始终选择足以满足需求的 simplest 方案:
级别内容适用情况
A:项目中的文本内容以 Markdown 文件的形式存放在 Repo 中,由 AI 修改由一个人借助 AI 维护全部内容,修改不频繁
B:通过你的日志簿使用布告板浏览器中的编辑窗口(例如 Decap CMS),用于修改 Repo 中的文件希望其他人也能修改文本,但不需要数据库
C:独立 CMS在服务器上运行且带数据库的程序,例如 Strapi条目众多、存在多种角色、需要图片管理,且以后可能还要提供 App
如果答案是 A 或 B:将结论写入
docs/plan.md
,然后到此为止。这是一个好的结果。级别 C 需要独立服务器,因此应先做试点。使用 Light 时可以选择 A 或 B。

2. Strapi einrichten (Stufe C)

2. 设置 Strapi(级别 C)

Vorher

开始之前

  • Strapi braucht Arbeitsspeicher. Prüf mit
    free -h
    auf dem Server, ob mindestens etwa 1 GB frei ist. Sonst zuerst mehr Leistung (Skill
    kosten
    ).
  • Foto machen: Werkzeug
    snapshot
    mit Namen
    vor-cms
    (Skill
    zurueck-auf-gestern
    ).
  • Strapi 需要内存。在服务器上运行
    free -h
    ,确认至少有大约 1 GB 可用内存。否则应先提升性能(Skill
    kosten
    )。
  • 创建快照:使用名为
    snapshot
    的工具,快照名称设为
    vor-cms
    (Skill
    zurueck-auf-gestern
    )。

Einrichten

设置步骤

  1. Lokal ein Strapi-Projekt im Ordner
    cms/
    des Repos anlegen (aktuelle Anleitung:
    npx create-strapi@latest cms
    ), mit SQLite als Datenbank. Die Datenbank-Datei kommt nicht ins Logbuch (
    .gitignore
    ).
  2. In
    compose.yaml
    einen Dienst
    cms
    ergänzen: Container-Name
    cms
    , Port nur nach innen (
    127.0.0.1:1337:1337
    ), ein Volume für Datenbank und hochgeladene Bilder. Geheimnisse (
    APP_KEYS
    ,
    JWT_SECRET
    ,
    ADMIN_JWT_SECRET
    ,
    API_TOKEN_SALT
    ) als Umgebungsvariablen aus einer
    .env
    auf dem Server, nie im Repo (Skill
    sicherheit
    ).
  3. Logbuch und Fliessband (Skills
    git-logbuch
    ,
    pipeline
    ). Danach auf dem Server:
    docker ps
    zeigt
    cms
    .
  1. 在本地于 Repo 的
    cms/
    文件夹中创建 Strapi 项目(当前指南:
    npx create-strapi@latest cms
    ),并使用 SQLite 作为数据库。数据库文件不进入日志簿(
    .gitignore
    )。
  2. 在
    compose.yaml
    中添加名为
    cms
    的服务:容器名称为
    cms
    ,端口仅绑定内部地址(
    127.0.0.1:1337:1337
    ),并为数据库和上传的图片配置 Volume。将密钥(
    APP_KEYS
    、
    JWT_SECRET
    、
    ADMIN_JWT_SECRET
    、
    API_TOKEN_SALT
    )设置为主机服务器上
    .env
    文件中的环境变量,绝不放入 Repo(Skill
    sicherheit
    )。
  3. 更新日志簿并运行流水线(Skills
    git-logbuch
    、
    pipeline
    )。随后在服务器上执行:
    docker ps
    应显示
    cms
    。

Der geheime Gang zur Pinnwand

通向布告板的秘密通道

Der Bearbeitungsbereich ist nicht öffentlich. Die Person erreicht ihn über einen Tunnel. Bild: ein geheimer Gang von ihrem Computer direkt in den Flur, an dem niemand von der Strasse vorbeikommt.
bash
ssh -L 1337:localhost:1337 {name}@aufwind.sh
Solange dieses Fenster offen ist, öffnet sie im Browser
http://localhost:1337/admin
. Beim ersten Mal legt sie dort selbst das Admin-Konto an. Das Passwort tippt sie nur dort.
编辑后台不会公开暴露。对方通过隧道访问它。画面是:一条从对方电脑直通走廊的秘密通道,任何来自街道的人都无法经过。
bash
ssh -L 1337:localhost:1337 {name}@aufwind.sh
只要这个窗口保持打开,对方就可以在浏览器中访问
http://localhost:1337/admin
。首次使用时,由对方自行创建管理员账户。密码只在该界面中输入。

Inhalte anbinden

连接内容

  1. Mit der Person einen Inhaltstyp anlegen (z. B. «Veranstaltung» mit Titel, Datum, Ort, Text, Bild).
  2. Die Webseite holt die Einträge beim Bauen über
    http://cms:1337/api/...
    aus dem gleichen Docker-Netz. Ein API-Token mit nur Leserechten, als Geheimnis auf dem Server.
  3. Neue Einträge erscheinen nach dem nächsten Bau. Wer es sofort will: ein Webhook in Strapi, der den Bau auslöst. Das kommt erst, wenn es wirklich stört.
  1. 与对方一起创建一个内容类型,例如“活动”,包含标题、日期、地点、文本和图片等字段。
  2. 网站在构建时通过同一 Docker 网络中的
    http://cms:1337/api/...
    获取条目。创建一个仅具有读取权限的 API Token,并将其作为密钥保存在服务器上。
  3. 新条目会在下一次构建后出现。如果希望立即显示,可以在 Strapi 中添加一个用于触发构建的 Webhook。只有在确实造成困扰时再添加。

Stolpersteine

常见陷阱

  • Admin-Bereich öffentlich ins Netz gestellt: Einladung für Angreifer. Tunnel benutzen.
  • Updates vergessen: Strapi regelmässig aktualisieren, vorher Foto machen.
  • Bilder nur im Container: ohne Volume sind sie nach dem nächsten Neustart weg.
  • 将管理后台公开暴露到网络中:这相当于向攻击者发出邀请。应使用隧道。
  • 忘记更新:定期更新 Strapi,更新前先创建快照。
  • 图片只保存在容器中:没有 Volume 时,图片会在下次重启后丢失。

Mission prüfen

检查任务

mission_pruefen
mit
webseite-04-cms
. Die Prüfung schaut, ob der Container
cms
läuft. Hat sich die Person bewusst für Stufe A oder B entschieden, sag ihr, dass sie diese Mission überspringen darf. Das ist eine gute Entscheidung, keine Lücke.
使用
webseite-04-cms
运行
mission_pruefen
。检查将确认容器
cms
是否正在运行。如果对方有意选择了级别 A 或 B,应告诉对方可以跳过此任务。这是一个正确的决定,并不是遗漏。

Schlussnachricht

结束消息

Deine letzte Nachricht in diesem Schritt beginnt mit einem Satz zum Bild «die Pinnwand im Flur», der den Kern noch einmal sagt. Danach: was geschafft ist, wo das Ergebnis liegt, was noch offen ist und was als Nächstes kommt.
此步骤的最后一条消息应以“走廊里的布告板”这一比喻开头,用一句话再次点明核心。随后说明:完成了什么、结果存放在哪里、还有哪些未完成事项,以及接下来要做什么。