xirixiz / dsmr-reader-docker

DSMR Reader in Docker.
https://hub.docker.com/r/xirixiz/dsmr-reader-docker
112 stars 33 forks source link

Postgresql client Upgrade (pg_dump) #351

Closed sanderdw closed 2 months ago

sanderdw commented 3 months ago

Request

Hey Bram, kan je in de volgende versie wellicht de Postgresql client versie upgraden? Op het het Home Assistant ecosysteem wordt vaak de Timescale addon gebruikt als de Postgres DB server en die zit op 16.2 waarmee de pg_dump tool in het image er niet meer mee werkt (15.6).

Additional information

https://community.home-assistant.io/t/dsmr-reader-add-on-for-home-assistant/279087/410

xirixiz commented 3 months ago

Hi Sander, als het beschikbaar is in de laatste Alpine image, dan kan ik dat zeker. Maar wanneer PG16 client nog niet in de 3.19 Alpine image beschikbaar is, dan kan ik het helaas niet aanpassen. Dan zal dat wss in Alpine 3.20 komen.

Ik ga er vandaag even mee aan de slag.

xirixiz commented 3 months ago

Ik weet het weer, ik moest even mijn geheugen opfrissen :)

Ik ben met een nieuwe release bezig, waarbij een aantal grote wijzigingen zullen worden doorgevoerd,

Alles werkt eingelijk, maar wanneer de container gestart wordt dan gaat het nog mis op S6 overlay. Wss zie ik iets over het hoofd en is het eenvoudig op te lossen. Ik zal er wat tijd aan spenderen. Ik kan zelf geen DSMR reader Docker gebruiken op dit moment. Kan ik jou vragen om te testen wanneer ik een nieuwe pre_release image gemaakt heb?

Source: https://github.com/xirixiz/dsmr-reader-docker/tree/pre_release

xirixiz commented 3 months ago

Deze docker image kan je testen @sanderdw or @Alfagek:

ghcr.io/xirixiz/dsmr-reader-docker:development

Mogelijk gaat er nog iets mis met het starten van de processen, dan graag proberen zo goed mogelijk te omschrijven wat er mis gaat, of wat er lijkt mis te gaan. Volgens mij moet het eenvoudig zijn op te lossen, maar mogelijk is het issue al opgelost door een aanpassing die ik nog heb doorgevoerd ;)

sanderdw commented 2 months ago
image

Bouwen ging goed maar kreeg deze fout, is dat ook wat je bedoelde?

xirixiz commented 2 months ago

Klopt, maar er was eerder een andere error. Ik heb zojuist de code bijgewerkt en de build pipeline gestart. Je hoeft dus niet zelf te bouwen, maar je kan gewoon de development image testen.

Wachten tot deze pipeline klaar is: https://github.com/xirixiz/dsmr-reader-docker/actions/runs/8633228373 En dan image ghcr.io/xirixiz/dsmr-reader-docker:development gebruiken.

sanderdw commented 2 months ago

Ik moet altijd een stukje bouwen omdat er specifieke Home Assistant Addon code nodig is.

Thanks, ik ga hem dan nog wel een keer aftrappen.

sanderdw commented 2 months ago

Helaas nog hetzelfde issue, kan het hier mee te maken hebben? https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2765

xirixiz commented 2 months ago

Hmm, dat is vreemd. Ik kreef de melding ook, maar nu niet meer. Ik krijg alleen een foutmelding daarna omdat mijn config niet compleet is. Weet je het zeker dat je de pre-release branch gebruikt?

image

Alfagek commented 2 months ago

IMG_9462 Komt het misschien door dat ik in Bram zijn screenshot S6-RC zie staan en ik bij de β€œoude” versie S6-INIT heb staan @sanderdw ?

Probeer alleen een beetje mee te denken. Jullie zijn beter in het programmeren dan dat ik ben πŸ˜‰

xirixiz commented 2 months ago

@Alfagek klopt, en het meedenken wordt zeker gewaardeerd πŸ˜„.

S6-overlay v2 is al vrij oud (s6-init) en ben daarom overgestapt op S6-overlay v3 (s6-rc). De config kent een andere structuur, en wellicht botst dat met HASS. Mogelijk zit HASS nog op S6-overlay v2.

@sanderdw Kan je mss wat meer details geven over de werking icm hassio? Ik kan morgen de boel hier wel even aan elkaar knopen en iig even checken of DSMR Reader Docker in pre_release mode werkt. Wanneer dat werkt, dan weten we iig dat het iets met s6-overlay te maken heeft (ook al is dat al vrij zeker). Maar omdat ik het nu niet standalone kan testen (dus zonder de integratie van sander), weet ik niet of de pre_release image naar behoren werkt.

sanderdw commented 2 months ago

Weet je zeker dat het image bijgewerkt is (tag :development)? Dat zie ik hier namelijk niet terug: https://github.com/xirixiz/dsmr-reader-docker/pkgs/container/dsmr-reader-docker

Verder moet ik dit even testen: https://developers.home-assistant.io/blog/2022/05/12/s6-overlay-base-images/#minimum

xirixiz commented 2 months ago

Dat is inderdaad ook bijzonder dat de tag niet is bijgewerkt. Check ik meteen even wat daar mis gaat. Uiteindelijk komen we er samen wel πŸ˜„

Alfagek commented 2 months ago

Jullie zijn gewoon goed bezig πŸ‘πŸ»

Alleen sorry dat ik jullie alle 2 aan het β€œwerk” zet 🀣

sanderdw commented 2 months ago

Oh en intussen (dus wel met de 'verouderde' tag) heeft de init optie het probleem oplost: image Echter moet ik wel de opzet veranderen zie ik (zie de error)

xirixiz commented 2 months ago

@sanderdw gelukkig! Ik denk dat ik de pipeline ook gefixt heb. Volgens mij had ik het zo gemaakt dat alleen de development branch ook een development tag maakt.... was ik even vergeten. Een nieuwe release is dus in de maak.

In de source code kan je de opbouw zien van de s6-overlay v3, dan heb je de error zo gefixt denk ik. https://github.com/xirixiz/dsmr-reader-docker/tree/main/rootfs

Edit: ik heb liggen slapen denk ik. Ik dacht echt dat ik de pre_release branch aan het bouwen was, maar ik heb alleen maar de main branch gebruikt om een nieuwe latest te bouwn πŸ˜–

xirixiz commented 2 months ago

https://github.com/xirixiz/dsmr-reader-docker/pkgs/container/dsmr-reader-docker is bijgewerkt nu (development tag)

xirixiz commented 2 months ago

Any update @sanderdw?

sanderdw commented 2 months ago

Moest even inlezen in de s6 veranderingen en gelijk maar de legacy variant (cont-init.d) omgezet naar de nieuwe manier (s6-rc). Heb nu een gek probleempje met https://github.com/sanderdw/hassio-addons/blob/reader-1.11.1/dsmr_reader/Dockerfile#L36 want als ik hem met chmod executable maak dan kan hij hem niet vinden en als ik de chmod weglaat dan zegt ie permissions denied.

image

Een linux cat van /etc/s6-overlay/s6-rc.d/set-hassio-vars/run laat wel gewoon zien dat ie er is. Dus dit moet ik nog verder onderzoeken.

xirixiz commented 2 months ago

@sanderdw ik heb de persmissies correct ingesteld alvorens het bouwen van een image, dat zou moeten werken. Dus dan wordt bij het bouwen van een image de file al met de juiste persmissies in de image gezet. Mss heb je dat al geprobeerd, maar ik weet dat het bij mij toen ik ermee aan de slag ging het issue verholpen heeft.

sanderdw commented 2 months ago

Weer een stukje verder, met https://github.com/sanderdw/hassio-addons/commit/3193e6813c895148f754caaf078955322daa9fc1

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service set-hassio-vars: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
Home Assistant DSMR Reader Add-on - Release: 1.11.1
Home Assistant DSMR Reader Add-on - Configuring addon settings
Home Assistant DSMR Reader Add-on - Ingress enabled
s6-rc: info: service set-hassio-vars successfully started
s6-rc: info: service docker-entrypoint: starting

[ INFO ] DSMR Reader Reader release: 5.11.0

[ INFO ] DSMR Reader Reader Docker release: 2024.02.03

    ───────────────────────────────────────────────────
     ___  ___ __  __ ___   ___             _
    |   \/ __|  \/  | _ \ | _ \___ __ _ __| |___ _ _
    | |) \__ \ |\/| |   / |   / -_) _` / _` / -_) '_|
    |___/|___/_|  |_|_|_\ |_|_\___\__,_\__,_\___|_|
                 __           _
                |   \ ___  __| |_____ _ _
                | |) / _ \/ _| / / -_) '_|
                |___/\___/\__|_\_\___|_|

    DSMR-protocol reader, telegram data storage and
            energy consumption visualizer.

    ───────────────────────────────────────────────────
    User UID: 0
    User GID: 0
    ───────────────────────────────────────────────────

[ INFO ] Ensure permissions...

[ INFO ] Setting architecture requirements...

[ INFO ] ARM Architecture

[ INFO ] Verifying if the DSMR Reader web credential variables have been set...

[ INFO ] Verifying database connectivity to host: 77b2833f-timescaledb with port: 5432...
Connection to 77b2833f-timescaledb (172.30.33.3) 5432 port [tcp/postgresql] succeeded!

[ INFO ] Database connectivity successfully verified!

[ INFO ] Enabling IFrame...

[ INFO ] Running post configuration...
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, dsmr_api, dsmr_backend, dsmr_backup, dsmr_consumption, dsmr_datalogger, dsmr_dropbox, dsmr_frontend, dsmr_influxdb, dsmr_mindergas, dsmr_mqtt, dsmr_notification, dsmr_pvoutput, dsmr_stats, dsmr_weather, sessions
Running migrations:
  No migrations to apply.

559 static files copied to '/var/www/dsmrreader/static'.
Updating password of superuser "admin"
Deactivating any other existing superusers

[ INFO ] Checking for CLIENT CERTIFICATE AUTHENTICATION configuration...

[ INFO ] ENABLE_CLIENTCERT_AUTH is disabled, nothing to see here. Continuing...

[ INFO ] Checking for NGINX SSL configuration...

[ INFO ] ENABLE_NGINX_SSL is disabled, nothing to see here. Continuing...

[ INFO ] Checking for HTTP AUTHENTICATION configuration...

[ INFO ] ENABLE_HTTP_AUTH is disabled, nothing to see here. Continuing...

[ INFO ] Configuring DSMR Reader to run without the datalogger process. A remote datalogger (api_client) is required...

[ INFO ] Adding DSMRREADER_REMOTE_DATALOGGER_SLEEP to the DSMR Reader remote datalogger configuration...

[ INFO ] Adding DSMRREADER_LOGLEVEL to the DSMR Reader configuration...
s6-rc: info: service docker-entrypoint successfully started
s6-rc: info: service svc-dsmr-webinterface: starting
s6-rc: info: service svc-dsmr-remote-datalogger: starting
s6-rc: info: service svc-dsmr-datalogger: starting
s6-rc: info: service svc-dsmr-backend: starting
s6-rc: info: service svc-dsmr-webinterface successfully started
s6-rc: info: service svc-dsmr-remote-datalogger successfully started
s6-rc: info: service svc-dsmr-datalogger successfully started
Starting DSMR Reader - webinterface...
s6-notifyoncheck: fatal: s6-supervise not running.
s6-rc: info: service svc-dsmr-backend successfully started
s6-rc: info: service legacy-services: starting
Starting DSMR Reader - backend...
s6-notifyoncheck: fatal: s6-supervise not running.

Mijn pre Home Assistant code wordt nu dus correct uitgevoerd. Nu dus kijken waar de "s6-notifyoncheck: fatal: s6-supervise not running." vandaan komt, of is dit nog een bug die jij ook hebt?

xirixiz commented 2 months ago

Mooi! Ik heb de "s6-notifyoncheck" er even uitgesloopt en een nieuwe build gestart voor development. Wanneer de build klaar is kan je testen met de nieuwe versie.

https://github.com/xirixiz/dsmr-reader-docker/actions/runs/8673537074

sanderdw commented 2 months ago
[ INFO ] Adding DSMRREADER_REMOTE_DATALOGGER_SLEEP to the DSMR Reader remote datalogger configuration...

[ INFO ] Adding DSMRREADER_LOGLEVEL to the DSMR Reader configuration...
s6-rc: info: service docker-entrypoint successfully started
s6-rc: info: service svc-dsmr-webinterface: starting
s6-rc: info: service svc-dsmr-remote-datalogger: starting
s6-rc: info: service svc-dsmr-datalogger: starting
s6-rc: info: service svc-dsmr-backend: starting
s6-rc: info: service svc-dsmr-webinterface successfully started
s6-rc: info: service svc-dsmr-remote-datalogger successfully started
Starting DSMR Reader - webinterface...
s6-rc: info: service svc-dsmr-backend successfully started
s6-rc: info: service svc-dsmr-datalogger successfully started
s6-rc: info: service legacy-services: starting
Starting DSMR Reader - backend...
s6-rc: info: service legacy-services successfully started
[2024-04-13 16:52:06 +0200] [284] [INFO] Starting gunicorn 20.1.0
[2024-04-13 16:52:06 +0200] [284] [INFO] Listening at: unix:/tmp/gunicorn--dsmr_webinterface.socket (284)
[2024-04-13 16:52:06 +0200] [284] [INFO] Using worker: sync
[2024-04-13 16:52:06 +0200] [310] [INFO] Booting worker with pid: 310
Current logging level set to "ERROR". More information can be found here: https://dsmr-reader.readthedocs.io/en/latest/how-to/troubleshooting/enabling-debug-logging.html
pg_dump: error: aborting because of server version mismatch
pg_dump: detail: server version: 16.2; pg_dump version: 15.6
2024-04-13 16:52:09,589 ERROR    schedule     execute_scheduled_processes      39 | (AttributeError) dsmr_backup.services.backup.run errored: 'NoneType' object has no attribute 'read' 

Hij komt iets verder, denk een probleem aan jou kant?

xirixiz commented 2 months ago

Klopt, ik zie dit:

pg_dump: error: aborting because of server version mismatch
pg_dump: detail: server version: 16.2; pg_dump version: 15.6

De client versie is nog 15.6. Ik kijk er even naar.

xirixiz commented 2 months ago

https://github.com/xirixiz/dsmr-reader-docker/blob/a301628c3254ff070b0c405c472caa3d09c670eb/Dockerfile#L77

Build pipeline loopt weer πŸ˜„

sanderdw commented 2 months ago

Loopt nu idd door.

[ INFO ] Adding DSMRREADER_LOGLEVEL to the DSMR Reader configuration...
s6-rc: info: service docker-entrypoint successfully started
s6-rc: info: service svc-dsmr-webinterface: starting
s6-rc: info: service svc-dsmr-remote-datalogger: starting
s6-rc: info: service svc-dsmr-datalogger: starting
s6-rc: info: service svc-dsmr-backend: starting
s6-rc: info: service svc-dsmr-webinterface successfully started
s6-rc: info: service svc-dsmr-remote-datalogger successfully started
s6-rc: info: service svc-dsmr-datalogger successfully started
s6-rc: info: service svc-dsmr-backend successfully started
s6-rc: info: service legacy-services: starting
Starting DSMR Reader - webinterface...
Starting DSMR Reader - backend...
s6-rc: info: service legacy-services successfully started
[2024-04-13 17:31:36 +0200] [285] [INFO] Starting gunicorn 20.1.0
[2024-04-13 17:31:36 +0200] [285] [INFO] Listening at: unix:/tmp/gunicorn--dsmr_webinterface.socket (285)
[2024-04-13 17:31:36 +0200] [285] [INFO] Using worker: sync
[2024-04-13 17:31:36 +0200] [310] [INFO] Booting worker with pid: 310
Current logging level set to "ERROR". More information can be found here: https://dsmr-reader.readthedocs.io/en/latest/how-to/troubleshooting/enabling-debug-logging.html

Werkt nog niet icm met Home Assistant maar moet daarvoor weer ff wat dieper graven. Of heb jij de DMSR code nog gewijzigd / op een andere plek gezet?

xirixiz commented 2 months ago

@sanderdw DSMR Reader lijkt niet te starten. Ik heb even een dummy setup gemaakt en de "latest" laat wel gewoon de webinsterface van DSMR zien, maar de development image niet, ondank ik geen fouten zie. Ik moet er dus even verder induiken wat S6-overlay betreft. Er lijkt in die hoek nog iets niet goed te starten.

xirixiz commented 2 months ago

Gefixt! https://github.com/xirixiz/dsmr-reader-docker/actions/runs/8675341679 ... is in de maak. Ik was onder andere vergeten nginx mee te starten.

xirixiz commented 2 months ago

Image ready for testing! ghcr.io/xirixiz/dsmr-reader-docker:development

Alfagek commented 2 months ago

Lekker bezig Bram en Sander!!! Hopelijk lukt het Sander daarmee om hem weer draaiend te krijgen in HA.

sanderdw commented 2 months ago

Top @xirixiz, hij werkt!

@Alfagek, kan jij eens testen? Gewoon de officiΓ«le addon via mijn repo even verwijderen en handmatig het mapje dsmr_reader uit deze branch https://github.com/sanderdw/hassio-addons/tree/reader-1.11.1 in de addons map zetten van je ha.

Na een refresh in ha moet hij zo verschijnen: Screenshot_20240413-210024

Ps, je kan altijd terug naar de stable release door die addon weer te verwijderen en weer de officiΓ«le via mijn HA repo te installeren, de dmsr reader versie is namelijk hetzelfde.

xirixiz commented 2 months ago

Draai het even een aantal dagen. Als er geen issues worden ontdekt, dan zal ik dinsdag a.s. alles naar de main branch mergen en een nieuwe stable release uitbrengen.

Alfagek commented 2 months ago

Goed gefixt Sander en Bram zoals het nu lijkt ;-)

image

Laat hem zo hier ook draaien hier in mijn hoofd HA systeem ;-). En eens kijken als er niks gebeurd aankomende dagen.

Alfagek commented 2 months ago

En de backups in DSMRREADER worden ook weer gevuld. Kijk er anders nooit naar, maar dit was wel het punt waar hij dus fout ging (ondekte de fout in de melding van DSMRREADER en de log van de addon). Maar lijkt dus te werken. En voor de rest draait hij hier nog steeds prima.

Top werk Bram/Sander

image

xirixiz commented 2 months ago

Thanks @Alfagek!

Morgen of dinsdag dan een nieuwe release voor de rest van de wereld!

xirixiz commented 2 months ago

Nieuwe release komt eraan! Heb ook nog Docker secrets toegevoegd.

xirixiz commented 2 months ago

Nieuwe latest tag is over 20 minuten beschikbaar.

sanderdw commented 2 months ago

Ga je ook nog een specifieke tag publiceren?

xirixiz commented 2 months ago

latest en development zijn nu gelijk. 2024.04.01 is de laatste tag.

image

sanderdw commented 2 months ago

Oh zag pas later dat je nog een wijziging had op een mapje, daardoor werkte de code dus niet meer. Anyway alles ziet er goed uit nu dus ook aan mijn kant zal de release morgen volgen.

xirixiz commented 2 months ago

Ah ja, excuses.... docker-entrypoint bedoel je zeker? Heb het wat meer in lijn gebracht met de structuur die linuxserver.io hanteert.

sanderdw commented 2 months ago

Release done!

https://community.home-assistant.io/t/dsmr-reader-add-on-for-home-assistant/279087/424?u=sanderdw

Mooie samenwerking weer @xirixiz !

carhukem commented 2 months ago

Release done!

https://community.home-assistant.io/t/dsmr-reader-add-on-for-home-assistant/279087/424?u=sanderdw

Mooie samenwerking weer @xirixiz !

Hello Sander, Even after all updates, re-install again ... after updating everything, the backup is broken again, same as last year... worked like a charm until latest updates again.

024-04-19 09:35:35,592 ERROR schedule execute_scheduled_processes 39 | (OSError) dsmr_backup.services.email.run errored: b'pg_dump: error: aborting because of server version mismatch\npg_dump: detail: server version: 16.2; pg_dump version: 15.6\n' pg_dump: error: aborting because of server version mismatch pg_dump: detail: server version: 16.2; pg_dump version: 15.6 2024-04-19 09:35:46,042 ERROR schedule execute_scheduled_processes 39 | (AttributeError) dsmr_backup.services.backup.run errored: 'NoneType' object has no attribute 'read'

Any idea where to look? HA is allways on latest versions ...

xirixiz commented 2 months ago

Release done! https://community.home-assistant.io/t/dsmr-reader-add-on-for-home-assistant/279087/424?u=sanderdw Mooie samenwerking weer @xirixiz !

Hello Sander, Even after all updates, re-install again ... after updating everything, the backup is broken again, same as last year... worked like a charm until latest updates again.

024-04-19 09:35:35,592 ERROR schedule execute_scheduled_processes 39 | (OSError) dsmr_backup.services.email.run errored: b'pg_dump: error: aborting because of server version mismatch\npg_dump: detail: server version: 16.2; pg_dump version: 15.6\n' pg_dump: error: aborting because of server version mismatch pg_dump: detail: server version: 16.2; pg_dump version: 15.6 2024-04-19 09:35:46,042 ERROR schedule execute_scheduled_processes 39 | (AttributeError) dsmr_backup.services.backup.run errored: 'NoneType' object has no attribute 'read'

Any idea where to look? HA is allways on latest versions ...

I believe you are using an old release. I just checked, but the latest development (and latest) release are using the postgres 16 client tools.

image

Alfagek commented 2 months ago

@xirixiz , maybe it’s because @sanderdw put the old version back this week because of the other problems (connection problems) that people had. And i didnt see a newer version pushed by Sander.

Pgdump good (version 1.11.1) Pgdump not good (version 1.11.2)

but its a guess from my side, because i ignored version 1.11.2 🫣

carhukem commented 2 months ago

I run the latest version and just use the update mechanism within the HA environment. Is there any change to fallback again to the 1.11.1 version? I can't find an option which make a selection of version install possible so I can opt for installing version 1.11.1 to try.

Alfagek commented 2 months ago

I run the latest version and just use the update mechanism within the HA environment. Is there any change to fallback again to the 1.11.1 version? I can't find an option which make a selection of version install possible so I can opt for installing version 1.11.1 to try.

Or just wait. @xirixiz released a new version. And if @sanderdw adapt it, there will be very quick a version 11.1.3.

it’s only a error in your logs and no backup right now in dsmr reader. But you have your backups in HA. So the data would be save ;-)

You can find a backup in HA if you have enabled the check box β€œmake backup” if you installed the addon.

carhukem commented 2 months ago

I can confirm that it seems to be an issue in the 1.11.2 version. I just removed that version and restored the 1.11.1 specific version back again from the add-on backup function within the HA backup part. After restore and a test no error is raising on version incompatibillity. The logs keep clean and the scheduled email distribution is also working again. I will wait on the new upcoming versions and read the notes carefully.

Thank you for your quick responses all of you! Thats making this platform so beautiful. Kind regards, Carlo.