Apt-get update schlägt fehl, Container yarn repo nicht signiert

Ich habe eine GitHub-Aktion, die Images erstellt, und sie schlägt fehl, wenn sie versucht, ein apt-get update auszuführen. Ich untersuche noch, was damit los ist, aber bei einer Installation vor 2 Stunden erhalte ich diese Fehlermeldung, wenn ich innerhalb des Containers ein apt-get update ausführe.

root@monstera-web-only:/# apt-get update
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:3 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:4 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:5 http://deb.debian.org/debian bullseye-backports InRelease [49.0 kB]
Get:6 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease [91.7 kB]
Get:7 http://deb.debian.org/debian bullseye/main amd64 Packages [8.183 kB]
Err:2 https://dl.yarnpkg.com/debian stable InRelease
  Die folgenden Signaturen waren ungültig: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 kB]
Get:9 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [14.6 kB]
Get:10 http://deb.debian.org/debian bullseye-backports/main amd64 Packages [384 kB]
Get:11 https://deb.nodesource.com/node_18.x bullseye InRelease [4.586 B]
Get:12 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Get:13 https://deb.nodesource.com/node_18.x bullseye/main amd64 Packages [774 B]
Reading package lists... Done
W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: Die folgenden Signaturen waren ungültig: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
E: The repository 'https://dl.yarnpkg.com/debian stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
1 „Gefällt mir“

Ich sehe keine Fehler in unserem täglichen Image-Build-CI. Können Sie die Ausgabe von cat /VERSION aus dem Container teilen?

Ich schwöre, das ist eine Standardinstallation. . .

# cat /VERSION 
2.0.20230116

Ich schaue immer noch in meine CI, ob ich dort etwas Dummes habe (was absolut möglich ist). Mir ist nicht klar, was überhaupt ein apt-get update macht.

EDIT: Meine CI hat eine Vorlage, die vim installiert. Sie führt ein apt-get update aus. Nichts bei einer normalen Installation führt meiner Meinung nach ein apt-get update aus, daher erklärt das, warum Ihre CI nicht fehlschlägt.

Viele der Importvorlagen und die Postgres-Upgrade-Vorlagen (unten aufgelistet) führen ein apt-get update aus, daher wird dies irgendwann ein Problem sein.

root@monstera:/var/discourse# grep -lr 'apt-get update'
templates/postgres.9.5.template.yml
templates/postgres.13.template.yml
templates/postgres.template.yml
templates/import/mbox.template.yml
templates/import/mysql-dep.template.yml
templates/import/vanilla.template.yml
templates/import/chrome-dep.template.yml
templates/import/phpbb3.template.yml
templates/postgres.10.template.yml
templates/postgres.12.template.yml
image/base/slim.Dockerfile
1 „Gefällt mir“

Ja, das wäre meine nächste Frage, da die Ausführung eines solchen Updates nicht standardmäßig erfolgt und zu schwer zu verfolgenden Abweichungen führt, da die meisten Websites ein statisches Betriebssystem verwenden und sich auf ein neues Image verlassen, um Betriebssystemebenen-Elemente zu aktualisieren.

Wenn das Yarn-Apt-Repository fehlschlägt, gehe ich davon aus, dass dies auch unsere CI beeinträchtigen wird.

Das kann ich nächste Woche überprüfen. Vielleicht müssen wir dafür ein neues Basis-Image veröffentlichen.

1 „Gefällt mir“

Klingt gut. Nur zur Bestätigung, ich muss einen neuen phpbb3-Import-Container erstellen und kann es nicht. Hier ist, wie man es repariert.

Hier ist das:

Aber es empfiehlt die Verwendung von curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -, aber apt-key ist veraltet.

Wenn ich das im Container mache:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /usr/share/keyrings/yarn-keyring.asc \
    && sed -i '1s;^deb;deb [signed-by=/usr/share/keyrings/yarn-keyring.asc];' /etc/apt/sources.list.d/yarn.list

Dann kann ich Folgendes tun:

root@monstera-web-only:/# apt-get update
Hit:1 https://deb.nodesource.com/node_18.x bullseye InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Get:3 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:4 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Hit:5 http://deb.debian.org/debian bullseye-updates InRelease
Hit:6 http://deb.debian.org/debian bullseye-backports InRelease
Get:7 https://dl.yarnpkg.com/debian stable/main all Packages [10.9 kB]
Get:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 kB]
Hit:9 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease
Get:10 https://dl.yarnpkg.com/debian stable/main amd64 Packages [10.9 kB]
Fetched 286 kB in 0s (849 kB/s)
Reading package lists... Done

Ähnlich, wenn ich hinzufüge

          - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /usr/share/keyrings/yarn-keyring.asc && sed -i '1s;^deb;deb [signed-by=/usr/share/keyrings/yarn-keyring.asc];' /etc/apt/sources.list.d/yarn.list

vor dem apt-get update in templates/import/phpbb3.template.yml kann ich einen neuen Container erstellen.

3 „Gefällt mir“

@Falco Entschuldigung für meinen doppelten Beitrag!

@pfaffman Vielen Dank! Ich bestätige, dass dieser Workaround auch mit der mysql-dep.template.yml funktioniert.

2 „Gefällt mir“

Ich erhalte bei einem Update ähnliche Fehlermeldungen.

Err:7 https://dl.yarnpkg.com/debian stable InRelease
  Die folgenden Signaturen waren ungültig: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:13 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Reading package lists...
FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev failed with return #<Process::Status: pid 532 exit 100>

Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'

exec failed with the params {"cd"=>"$home", "cmd"=>["apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev", "echo \"gem 'sqlite3'\" >> Gemfile", "su discourse -`Preformatted text`c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'"]}

Von discourse-doctor erhalte ich:

Checking your domain name . . .

Connection to xxx succeeded.

You should probably remove any non-standard plugins and rebuild.

Attempting to restart existing container. . .

x86_64 arch detected.

WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml

starting up existing container

+ /usr/bin/docker start app

Error response from daemon: driver failed programming external connectivity on endpoint app (c143632e34e1ae05e48759bdf163b4bbe5dc9aaf895f1fb7521f7e3784c26577): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use

Error: failed to start containers: app

Failed to restart the container.

Gibt es außer einer Neuinstallation noch etwas, das ich tun könnte?

Ich habe das zu diesem Thema verschoben, @fidelio, damit die Berichte zusammengefasst werden. :+1:

2 „Gefällt mir“

Als ‘ehrgeiziger Amateur’ eine schnelle Frage:
Wie führe ich den Curl-Befehl ‘innerhalb des Containers’ aus?

In einem Beitrag oben habe ich erwähnt, dass der Curl-Befehl in die Vorlage aufgenommen werden kann, die apt-get ausführt. Apt-get update fails inside container yarn repo not signed - #6 by rahim123

@fidelio Hallo, müssen Sie von Ihrer Discourse-Instanz aus eine Verbindung zu einer anderen Datenbank wie SQLite herstellen, d. h. führen Sie einen Datenimport aus einem anderen Forum durch? Andernfalls können Sie diese Funktionalität deaktivieren, und der normale Discourse-App-Container wird problemlos neu erstellt.

Meine Vermutung ist, dass er nicht auf PG 13 aktualisiert hat und die pg12-Vorlage verwendet? Das ist ein Problem, das sowieso gelöst werden sollte. Und es ist eine gute Vermutung, dass das Betriebssystem aktualisiert werden muss und der Umzug auf eine neue VM das Richtige ist.

1 „Gefällt mir“

Hallo @rahim123. Nein, ich muss keines von beiden zu diesem Zeitpunkt tun. Wie deaktiviere ich die Funktionalität?

@pfaffman Ah, es schien mir nur seltsam, dass sein Fehlerprotok darüber beschwerte, libsqlite3-dev zu installieren, oder verwendet Discourse das normalerweise für etwas?

@fidelio Könnten Sie hier den Abschnitt templates: Ihrer Datei /var/discourse/containers/app.yml einfügen? Stellen Sie sicher, dass keine Passwörter enthalten sind, die weiter unten in der Datei vorhanden sind. Sie können auch /var/discourse/discourse-doctor ausführen, und es wird Ihnen helfen, einen öffentlich teilbaren Bericht darüber zu erstellen, wie Ihr System konfiguriert ist.

1 „Gefällt mir“

@rahim123 Sicher, hier ist der discourse-doctor-Bericht:

Found containers/app.yml
==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=community.bfs-filmeditor.de
SMTP_ADDRESS=in-v3.mailjet.com
DEVELOPER_EMAILS=xxx
SMTP_PASSWORD=xxx
SMTP_PORT=25
SMTP_USER_NAME=xxx
LETSENCRYPT_ACCOUNT_EMAIL=xxx

==================== DOCKER INFO ====================
DOCKER VERSION: Docker version 18.06.1-ce, build e68fc7a

DOCKER PROCESSES (docker ps -a)

CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS                                      NAMES
ce58652241d9        local_discourse/app             “/sbin/boot”        2 weeks ago         Up 14 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
8e6b8ec432b4        local_discourse/mail-receiver   “/sbin/boot”        11 months ago       Up 11 months        0.0.0.0:25->25/tcp                         mail-receiver

ce58652241d9        local_discourse/app             “/sbin/boot”        2 weeks ago         Up 14 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app

Discourse container app is running

==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone  https://github.com/davidtaylorhq/discourse-whos-online.git
          - git clone https://github.com/gdpelican/babble.git
          - git clone https://github.com/angusmcleod/discourse-quick-messages.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/davidtaylorhq/discourse-telegram-notifications.git

WARNING:
You have what appear to be non-official plugins.
If you are having trouble, you should disable them and try rebuilding again.

See https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb for the official list.

========================================
Discourse version at community.bfs-filmeditor.de: TYPO3 CMS
Discourse version at localhost: TYPO3 CMS

==================== MEMORY INFORMATION ====================
RAM (MB): 4039

              total        used        free      shared  buff/cache   available
Mem:           3944        1272        1236        1067        1436        1364
Swap:             0           0           0

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        78G   60G   18G  78% /

---------- Container Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
overlay          78G   60G   18G  78% /
/dev/vda1        78G   60G   18G  78% /shared
/dev/vda1        78G   60G   18G  78% /var/log

==================== DISK INFORMATION ====================
Disk /dev/vda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C1F9A1FE-534C-4DAC-9299-5CC180C29DCE

Device      Start       End   Sectors  Size Type
/dev/vda1  227328 167772126 167544799 79.9G Linux filesystem
/dev/vda14   2048     10239      8192    4M BIOS boot
/dev/vda15  10240    227327    217088  106M Microsoft basic data

Partition table entries are not in disk order.

==================== END DISK INFORMATION ====================

Ich habe „quick messages“ deaktiviert, aber noch nicht entfernt.

FWIW, ich glaube, Babble ist schon seit einiger Zeit kaputt:

3 „Gefällt mir“

Ich dachte, discourse-doctor würde zeigen, welche Vorlagen aktiviert sind, aber das scheint nicht der Fall zu sein. Könnten Sie das auch posten?

1 „Gefällt mir“

Das tut es nicht. Obwohl es eine gute Idee zu sein scheint, ist dies das erste Mal, dass ich mich erinnere, dass es wichtig war.

1 „Gefällt mir“

Hier ist es:

 GNU nano 2.9.3                                                                         containers/app.yml                                                                                   
 
 
 ## Dies ist die All-in-One, eigenständige Discourse Docker Container-Vorlage
 ##
 ## Nach Änderungen an dieser Datei MÜSSEN Sie neu erstellen
 ## /var/discourse/launcher rebuild app
 ##
 ## SEIEN SIE *SEHR* VORSICHTIG BEIM BEARBEITEN!
 ## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGEN FEHLER BEI LEERZEICHEN ODER AUSRICHTUNG!
 ## Besuchen Sie http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren
 
 templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
 ## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/import/mbox.template.yml"
 ## Welche TCP/IP-Ports soll dieser Container verfügbar machen?
 ## Wenn Sie möchten, dass Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilt,
 ## siehe https://meta.discourse.org/t/17247 für Details
 expose:
  - "80:80"   # http
  - "443:443" # https
 
 params:
  db_default_text_search_config: "pg_catalog.english"
 
  ## Setzen Sie db_shared_buffers auf maximal 25% des Gesamtspeichers.
  ## wird automatisch von bootstrap basierend auf dem erkannten RAM gesetzt, oder Sie können überschreiben
  db_shared_buffers: "1024MB"
 
  ## kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
  #db_work_mem: "40MB"
 
  ## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
  #version: tests-passed
 
 env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
 
  ## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Speicher und CPU-Kernen ab.
  ## wird automatisch von bootstrap basierend auf den erkannten CPUs gesetzt, oder Sie können überschreiben
  UNICORN_WORKERS: 4

Das ist meiner Meinung nach das Problem. Versuchen Sie, ein # davor zu setzen und führen Sie ./launcher rebuild app aus.

2 „Gefällt mir“