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 Mi Piace

Ho trovato un problema: all’avvio crea le seguenti categorie:
Generale, Staff, Staff67d17c71d8026b365c4c6657a9a9b5eb e Generale (seguito da stringa casuale e numeri).
Non si potrebbero creare quelle con la stringa casuale e i numeri? Potrei eliminare il clone di Generale, ma non il clone di Staff, poiché contiene l’argomento FAQ (questo è anche nella normale categoria Staff, quindi è inutile).

Modifica: Viene creato anche Site Feedbackee4d95d3ac0267109c01ed5438943e6c, sebbene esista già un Site feedback. Anche Uncategorized ha un clone.

1 Mi Piace

Questo mi ricorda Random string in category name

2 Mi Piace

Quando faccio il backup del database, ricevo questo errore:

[2024-12-12 10:31:26] [STARTED]
[2024-12-12 10:31:26] 'system' ha avviato il backup!
[2024-12-12 10:31:26] Marcatura del backup come in esecuzione...
[2024-12-12 10:31:26] Assicurazione che '/workspace/discourse/tmp/backups/default/2024-12-12-103126' esista...
[2024-12-12 10:31:26] Assicurazione che '/workspace/discourse/public/backups/default' esista...
[2024-12-12 10:31:26] Aggiornamento dei metadati...
[2024-12-12 10:31:27] Dumping dello schema pubblico del database...
[2024-12-12 10:31:28] pg_dump: errore: connessione al database "discourse_development" fallita: connessione al server sul socket "/var/run/postgresql/.s.PGSQL.5432" fallita: FATAL:  Peer authentication failed for user "postgres"
[2024-12-12 10:31:28] EXCEPTION: pg_dump fallito
[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] Pulizia in corso...
[2024-12-12 10:31:28] Rimozione dei residui di '.tar'...
[2024-12-12 10:31:28] Marcatura del backup come completato...
[2024-12-12 10:31:28] Notifica a 'system' della fine del backup...

Questo accade ogni volta che avvio il forum con bin/ember-cli-u.

Quando si fa clic su Backup nel pannello Admin, si ottiene:

[2024-12-12 10:34:57] [STARTED]
[2024-12-12 10:34:57] 'NateDhaliwal' ha avviato il backup!
[2024-12-12 10:34:57] Marcatura del backup come in esecuzione...
[2024-12-12 10:34:57] Assicurazione che '/workspace/discourse/tmp/backups/default/2024-12-12-103457' esista...
[2024-12-12 10:34:57] Assicurazione che '/workspace/discourse/public/backups/default' esista...
[2024-12-12 10:34:57] Aggiornamento dei metadati...
[2024-12-12 10:34:57] Dumping dello schema pubblico del database...
[2024-12-12 10:34:57] pg_dump: errore: connessione al database "discourse_development" fallita: connessione al server sul socket "/var/run/postgresql/.s.PGSQL.5432" fallita: FATAL:  Peer authentication failed for user "postgres"
[2024-12-12 10:34:57] EXCEPTION: pg_dump fallito
[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] Pulizia in corso...
[2024-12-12 10:34:57] Rimozione dei residui di '.tar'...
[2024-12-12 10:34:57] Marcatura del backup come completato...
[2024-12-12 10:34:57] Notifica a 'NateDhaliwal' della fine del backup...

quando provo a cambiarlo da main a devcontainer come mostra l’immagine non ottengo nulla, dice nessun risultato

Se ti riferisci al branch ‘devcontainer’ mostrato nel footer della seconda immagine, allora dovresti ignorarlo. Gli screenshot sono stati acquisiti prima che la configurazione devcontainer fosse disponibile sul branch main.

Grazie David

prima di premerlo però devi creare un account amministratore nel codice qualcuno può mandarmi delle immagini che mostrano come farlo perché finalmente ho un modo per avere il mio discourse ma non posso farlo senza sapere come configurarlo quindi qualcuno può darmi delle immagini in modo che possa vedere come farlo

Puoi usare i passaggi descritti nelle altre installazioni non basate su Docker, come Install Discourse on Ubuntu or Debian for Development

Il comando per creare un account amministratore è bin/rails admin:create e poi segui le istruzioni

3 Mi Piace

ha funzionato grazie mille ora ho il mio forum

@david hai qualche idea per questo? Ricevo ancora questo errore.

Questo sistema funziona con plugin di discourse? Può farlo?

Sì, ho provato e i plugin funzionano anche con questo.
Può essere installato tramite:

Ho installato il voto ai post, il voto agli argomenti e la gamification, e finora funzionano.

3 Mi Piace

Sì, si tratta semplicemente di eseguire il nostro contenitore Docker standard nel cloud, quindi puoi cd nella directory dei plugin e clonare quello che preferisci.

Un giorno potrebbe essere bello se potessimo avere una configurazione nei singoli repository dei plugin, così da poter avviare l’ambiente dei codici direttamente dai loro repository.

6 Mi Piace

Non sono sicuro se sia correlato a Codespaces o solo a un ambiente Linux, ma quando accedo ed esco impersonando e passando da un utente all’altro, bin/ember-cli -u termina semplicemente, senza log che indichino eventuali errori che potrebbero averlo causato. E il codespace è aggiornato con il repository Discourse.