solectrus / hosting

Step-by-stypes guides for installing and hosting Solectrus
9 stars 4 forks source link

Ruby-Fehler "urandom" bei Hosting auf Synology NAS #20

Closed noffycws closed 1 year ago

noffycws commented 1 year ago

Hallo, ich versuche seit einigen Tagen Solectrus auf meiner Synology NAS DS716+ mit DSM-Version DSM 7.1.1-42962 Update 4 und aktuellen Paketen in Docker genau nach Anleitung zu installieren.

Das Datensammeln und in die Datenbank schreiben scheint zu funktionieren, aber die App macht Probleme. Ich bekomme beim Start über docker-compose up immer folgende Fehlermeldung von der app_1:

app_1                 | Puma starting in single mode...
app_1                 | * Puma version: 6.1.1 (ruby 3.2.1-p31) ("The Way Up")
app_1                 | *  Min threads: 5
app_1                 | *  Max threads: 5
app_1                 | *  Environment: production
app_1                 | *          PID: 20
app_1                 | ! Unable to load application: Bundler::GemRequireError: There was an error while trying to load the gem 'vite_rails'.
app_1                 | Gem Load Error is: failed to get urandom
app_1                 | Backtrace for gem load error is:
app_1                 | /usr/local/lib/ruby/3.2.0/securerandom.rb:55:in `urandom'
app_1                 | /usr/local/lib/ruby/3.2.0/securerandom.rb:55:in `gen_random_openssl'
app_1                 | /usr/local/lib/ruby/3.2.0/random/formatter.rb:74:in `random_bytes'
app_1                 | /usr/local/lib/ruby/3.2.0/random/formatter.rb:94:in `hex'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/loader/config.rb:89:in `initialize'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/loader.rb:99:in `initialize'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/gem_loader.rb:18:in `initialize'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/gem_loader.rb:13:in `new'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/gem_loader.rb:13:in `_new'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/registry.rb:90:in `loader_for_gem'
app_1                 | /usr/local/bundle/gems/zeitwerk-2.6.7/lib/zeitwerk/loader.rb:287:in `for_gem'
app_1                 | /usr/local/bundle/gems/vite_ruby-3.3.0/lib/vite_ruby.rb:9:in `
' app_1 | :37:in `require' app_1 | :37:in `require' app_1 | /usr/local/bundle/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require' app_1 | /usr/local/bundle/gems/vite_rails-3.0.14/lib/vite_rails.rb:3:in `
' app_1 | :37:in `require' app_1 | :37:in `require' app_1 | /usr/local/bundle/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/runtime.rb:60:in `block (2 levels) in require' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/runtime.rb:55:in `each' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/runtime.rb:55:in `block in require' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/runtime.rb:44:in `each' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/runtime.rb:44:in `require' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler.rb:195:in `require' app_1 | /app/config/application.rb:19:in `' app_1 | /app/config/environment.rb:2:in `require_relative' app_1 | /app/config/environment.rb:2:in `' app_1 | config.ru:3:in `require_relative' app_1 | config.ru:3:in `block in
' app_1 | /usr/local/bundle/gems/rack-2.2.6.4/lib/rack/builder.rb:116:in `eval' app_1 | /usr/local/bundle/gems/rack-2.2.6.4/lib/rack/builder.rb:116:in `new_from_string' app_1 | /usr/local/bundle/gems/rack-2.2.6.4/lib/rack/builder.rb:105:in `load_file' app_1 | /usr/local/bundle/gems/rack-2.2.6.4/lib/rack/builder.rb:66:in `parse_file' app_1 | /usr/local/bundle/gems/puma-6.1.1/lib/puma/configuration.rb:365:in `load_rackup' app_1 | /usr/local/bundle/gems/puma-6.1.1/lib/puma/configuration.rb:287:in `app' app_1 | /usr/local/bundle/gems/puma-6.1.1/lib/puma/runner.rb:158:in `load_and_bind' app_1 | /usr/local/bundle/gems/puma-6.1.1/lib/puma/single.rb:44:in `run' app_1 | /usr/local/bundle/gems/puma-6.1.1/lib/puma/launcher.rb:192:in `run' app_1 | /usr/local/bundle/gems/puma-6.1.1/lib/puma/cli.rb:75:in `run' app_1 | /usr/local/bundle/gems/puma-6.1.1/bin/puma:10:in `' app_1 | /usr/local/bundle/bin/puma:25:in `load' app_1 | /usr/local/bundle/bin/puma:25:in `' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/cli/exec.rb:58:in `load' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/cli/exec.rb:58:in `kernel_load' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/cli/exec.rb:23:in `run' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/cli.rb:492:in `exec' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/cli.rb:34:in `dispatch' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/cli.rb:28:in `start' app_1 | /usr/local/bundle/gems/bundler-2.4.8/exe/bundle:45:in `block in ' app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors' app_1 | /usr/local/bundle/gems/bundler-2.4.8/exe/bundle:33:in `' app_1 | /usr/local/bundle/bin/bundle:25:in `load' app_1 | /usr/local/bundle/bin/bundle:25:in `
' app_1 | Bundler Error Backtrace: app_1 | app_1 | bundler: failed to load command: puma (/usr/local/bundle/bin/puma) app_1 | /usr/local/bundle/gems/bundler-2.4.8/lib/bundler/runtime.rb:63:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'vite_rails'. (Bundler::GemRequireError)

Daraufhin startet die App immer wieder neu und läuft auf die gleichen Fehler.

Ich habe schon von latest auf develop umgestellt. Gleiches Problem. Da ich nicht weiß, ob es an Solectrus selbst oder den Docker-Containern oder Konfiguration an meiner Synology liegt. Hab es mal hier gepostet. Vielleicht gehört es aber auch zum Solectrus-Paket.

Vielen Dank für eine Hilfestellung. Wenn noch mehr Informationen benötigt werden, dann bitte ich um ein paar Infos.

Viele Grüße Michael

ledermann commented 1 year ago

Interessant - das hatten wir schon mal, siehe #4. Eine Lösung wurde aber nicht wirklich gefunden, es hat nur den Anschein, als würde es an einem alten Kernel liegen. Bekannt ist, dass es mit Kernel-Versionen < 4 nicht funktioniert.

Welcher Kernel ist denn auf Deiner Synology installiert? Was genau liefert uname -a ?

noffycws commented 1 year ago

Hi, Danke für die schnelle Antwort. Ich habe folgenden Kernel:

Linux XXXXX 3.10.108 #42962 SMP Tue Oct 18 15:05:36 CST 2022 x86_64 GNU/Linux synology_braswell_716+

Scheint also kleiner 4 und vielleicht tatsächlich ein "Problem" zu sein. Ich schau mal, ob und wie ich den Kernel aktualisieren kann. Vielleicht ist das die Lösung.

ledermann commented 1 year ago

Ich befürchte, dass man einer Synology auf regulärem Wege kein Kernel-Update verpassen kann. Falls Du es dennoch schaffst, würde ich mich über einen Hinweis freuen.

noffycws commented 1 year ago

So. Es scheint tatsächlich an der Kernel-Version zu liegen. Ich habe es eben auf einer zweiten Synology NAS mit folgendem Kernel probiert:

Linux XXXXXX 4.4.180+ #42962 SMP Tue Jan 31 23:18:09 CST 2023 x86_64 GNU/Linux synology_geminilake_220+

Da funktioniert es einwandfrei.

Nun habe ich aber noch ein anderes Problem: Wenn ich Force-SSL auf true setze, dann kommt es zu einem Fehler: HTTP parse error, malformed request: #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Are you trying to open an SSL connection to a non-SSL Puma?>

Gibt es vielleicht noch eine Anleitung, wie ich die APP unter SSL laufen kann? Damit kann ich das in meine Haussteuerung integrieren und dort die Solaranlage schön anzeigen lassen.

Vielen Dank.

ledermann commented 1 year ago

Wohl dem, der noch eine zweite Synology in der Hinterhand hat :-) Ok, dann sehe ich die bisherige Annahme bestätigt, dass Kernel v4 (oder neuer) zwingend erforderlich ist.

Für die SSL-Frage lege ich ein neues Issue an und schreibe dort.