Developing Discourse on GitHub Codespaces

GitHub Codespaces is a very fast way to get started with Discourse development. Their free tier is good for 30 hours per month of a 4-core machine.

Getting Started

  1. Navigate to the github repository

  2. Press the , (comma) key on your keyboard, to open GitHub codespaces

  3. Use ‘change options’ to customize the machine. Technically, the 2-core machine will work, but we recommend using at least 4-core for a better experience.

  4. Click “Create Codespace”

  5. Wait for the container to download and start. When it’s done, the README will appear, and you’ll see the Discourse filesystem in the sidebar.

  6. Run the default build task using Ctrl + Shift + B (Cmd + Shift + B on mac).

    This will install dependencies, migrate the database, and start the server. It’ll take a few minutes, especially on the lower-end machines. You’ll see “Build successful” in the terminal when it’s done.

  7. Visit the “Ports” tab, and click the :globe_with_meridians: button for port 4200. This will open a new tab showing your development copy of Discourse

  8. All done! You can now make changes in the codespace and see them reflected in the preview.

The VSCode environment will automatically be configured with our recommended settings and extensions, including automatic linting and formatting.

To minimize usage, make sure to run “Codespaces: Stop Current Codespace” from the command palette (Ctrl + Shift + P or Cmd + Shift + P) when you’re finished. If you forget to do this, the Codespace should be shut down automatically after your account’s configured idle time (default 30 mins). But, there are some situations where the codespace will not be detected as idle, so it’s best to stop it deliberately.

Tips

  • You can launch a codespace from specific branches/PRs - just visit it, and press ,

  • You can manage all your codespaces at Sign in to GitHub · GitHub

  • Discourse’s sample vscode .vscode/settings.json and .vscode/tasks.json will be copied when you first boot the codespace. From that point forward, if you want to use the latest sample config, you’ll need to manually copy .vscode/settings.json.sample to .vscode/settings.json.


This document is version controlled - suggest changes on github.

12 „Gefällt mir“

Ich habe ein Problem gefunden: Beim Starten werden folgende Kategorien erstellt:
Allgemein, Personal, Personal67d17c71d8026b365c4c6657a9a9b5eb und Allgemein (gefolgt von zufälliger Zeichenfolge und Zahlen).
Können die mit der zufälligen Zeichenfolge und Zahlen nicht erstellt werden? Ich könnte den Klon von Allgemein löschen, aber nicht den Klon von Personal, da dieser das FAQ-Thema enthält (dies ist auch in der regulären Personal-Kategorie vorhanden, daher macht es keinen Sinn).

Bearbeiten: Site Feedbackee4d95d3ac0267109c01ed5438943e6c wird ebenfalls erstellt, obwohl bereits ein Site feedback vorhanden ist. Uncategorized hat ebenfalls einen Klon.

1 „Gefällt mir“

Das erinnert mich an Random string in category name

2 „Gefällt mir“

Beim Sichern der Datenbank erhalte ich diesen Fehler:

[2024-12-12 10:31:26] [STARTED]
[2024-12-12 10:31:26] 'system' hat mit dem Backup begonnen!
[2024-12-12 10:31:26] Markiere Backup als laufend...
[2024-12-12 10:31:26] Stelle sicher, dass '/workspace/discourse/tmp/backups/default/2024-12-12-103126' existiert...
[2024-12-12 10:31:26] Stelle sicher, dass '/workspace/discourse/public/backups/default' existiert...
[2024-12-12 10:31:26] Metadaten werden aktualisiert...
[2024-12-12 10:31:27] Das öffentliche Schema der Datenbank wird gedumpt...
[2024-12-12 10:31:28] pg_dump: Fehler: Verbindung zur Datenbank „discourse_development“ fehlgeschlagen: Verbindung zum Server über Socket „/var/run/postgresql/.s.PGSQL.5432“ fehlgeschlagen: FATAL: Peer-Authentifizierung für Benutzer „postgres“ fehlgeschlagen
[2024-12-12 10:31:28] EXCEPTION: pg_dump fehlgeschlagen
[2024-12-12 10:31:28] /workspace/discourse/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/workspace/discourse/lib/backup_restore/backuper.rb:36:in `run'
/workspace/discourse/lib/backup_restore.rb:13:in `backup!'
/workspace/discourse/app/jobs/regular/create_backup.rb:10:in `execute'
/workspace/discourse/app/jobs/base.rb:322:in `block (2 levels) in perform'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/workspace/discourse/app/jobs/base.rb:309:in `block in perform'
/workspace/discourse/app/jobs/base.rb:305:in `each'
/workspace/discourse/app/jobs/base.rb:305:in `perform'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/workspace/discourse/lib/sidekiq/pausable.rb:132:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
[2024-12-12 10:31:28] Räume auf...
[2024-12-12 10:31:28] Entferne '.tar' Reste...
[2024-12-12 10:31:28] Markiere Backup als beendet...
[2024-12-12 10:31:28] Benachrichtige 'system' über das Ende des Backups...

Dies geschieht jedes Mal, wenn ich das Forum mit bin/ember-cli-u starte.

Wenn ich im Admin-Panel auf Backup klicke, erhalte ich:

[2024-12-12 10:34:57] [STARTED]
[2024-12-12 10:34:57] 'NateDhaliwal' hat mit dem Backup begonnen!
[2024-12-12 10:34:57] Markiere Backup als laufend...
[2024-12-12 10:34:57] Stelle sicher, dass '/workspace/discourse/tmp/backups/default/2024-12-12-103457' existiert...
[2024-12-12 10:34:57] Stelle sicher, dass '/workspace/discourse/public/backups/default' existiert...
[2024-12-12 10:34:57] Metadaten werden aktualisiert...
[2024-12-12 10:34:57] Das öffentliche Schema der Datenbank wird gedumpt...
[2024-12-12 10:34:57] pg_dump: Fehler: Verbindung zur Datenbank „discourse_development“ fehlgeschlagen: Verbindung zum Server über Socket „/var/run/postgresql/.s.PGSQL.5432“ fehlgeschlagen: FATAL: Peer-Authentifizierung für Benutzer „postgres“ fehlgeschlagen
[2024-12-12 10:34:57] EXCEPTION: pg_dump fehlgeschlagen
[2024-12-12 10:34:57] /workspace/discourse/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/workspace/discourse/lib/backup_restore/backuper.rb:36:in `run'
/workspace/discourse/script/spawn_backup_restore.rb:9:in `backup'
/workspace/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/workspace/discourse/script/spawn_backup_restore.rb:4:in `fork'
/workspace/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2024-12-12 10:34:57] Räume auf...
[2024-12-12 10:34:57] Entferne '.tar' Reste...
[2024-12-12 10:34:57] Markiere Backup als beendet...
[2024-12-12 10:34:57] Benachrichtige 'NateDhaliwal' über das Ende des Backups...

Wenn ich versuche, es von Main auf Devcontainer zu ändern, wie das Bild zeigt, bekomme ich nichts, es sagt keine Ergebnisse.

Wenn Sie sich auf den ‘devcontainer’-Branch beziehen, der in der Fußzeile des zweiten Bildes gezeigt wird, dann sollten Sie ihn ignorieren. Die Screenshots wurden aufgenommen, bevor die devcontainer-Konfiguration im main-Branch verfügbar war.

Danke David

Bevor Sie darauf klicken, müssen Sie jedoch ein Administratorkonto im Code erstellen. Kann mir jemand Bilder schicken, die zeigen, wie das geht, denn ich habe endlich eine Möglichkeit, mein eigenes Discourse zu nutzen, kann es aber ohne die Einrichtung nicht tun. Kann mir jemand Bilder geben, damit ich sehe, wie es geht?

Sie können die Schritte verwenden, die in den anderen nicht Docker-basierten Installationen beschrieben werden, wie z. B. Install Discourse on Ubuntu or Debian for Development

Der Befehl zum Erstellen eines Admin-Kontos lautet bin/rails admin:create und dann folgen Sie den Anweisungen

3 „Gefällt mir“

Es hat funktioniert, vielen Dank, ich habe jetzt mein eigenes Forum

@david, irgendwelche Ideen dazu? Ich bekomme immer noch diesen Fehler.

Funktioniert dieses System mit Discourse-Plugins? Kann es das?

Ja, ich habe es versucht und Plugins funktionieren damit.
Es kann installiert werden unter:

Ich habe Post Voting, Topic Voting und Gamification installiert, und sie funktionieren bisher.

3 „Gefällt mir“

Ja, es läuft einfach nur unser Standard-Docker-Container in der Cloud, sodass du im Verzeichnis der Plugins cd eingeben und alles klonen kannst, was du möchtest.

Eines Tages wäre es vielleicht schön, wenn wir eine Konfiguration in den einzelnen Plugin-Repositories hätten, sodass die Codespaces-Umgebung direkt aus ihren Repositories gestartet werden kann.

6 „Gefällt mir“

Ich bin mir nicht sicher, ob dies mit Codespaces oder nur mit einer Linux-Umgebung zusammenhängt, aber wenn ich mich abmelde und wieder anmelde, während ich Benutzer imitiere und zwischen ihnen wechsle, wird bin/ember-cli -u einfach beendet, ohne Protokolle, die auf Fehler hinweisen, die dies verursacht haben könnten. Und der Codespace ist mit dem Discourse-Repository auf dem neuesten Stand.