No se puede iniciar Mercure Hub en Debian 11 con supervisor, fuera de la imagen de Docker

No se puede iniciar Mercure Hub en Debian 11 con supervisor, fuera de la imagen de Docker

Estoy intentando ejecutar Mercure Hub desde el supervisor, pero no me es posible. Mercure está en la misma máquina del servidor web con el servidor virtual SSL para pami54.localel dominio.

[program:mercure]
environment=JWT_KEY="m3rcu353cr37pa55pra53DEV"; CORS_ALLOWED_ORIGINS="https://pami54.local"; PUBLISH_ALLOWED_ORIGINS="*"; ADDR="pami54.local:3000"
command=/home/frizquierdo/mercureLinux/mercure run -config /home/frizquierdo/mercureLinux/Caddyfile
process_name=%(program_name)s_$(process_num)s
numprocs=1
autostart=true
#directory=/tmp
autorestart=true
startsecs=5
startretries=10
redirect_stderr=false
stdout_capture_maxbytes=1MB
stderr_capture_maxbytes=1MB
stdout_logfile=/var/log/supervisor/mercureout.log
stderr_logfile=/var/log/supervisor/mercureerror.log

EDITAR:

He encontrado una solución parcial. En Caddyfile desactivé el servidor caddy en el puerto 80, configurando la directiva auto_https en 'disable_redirects', manteniendo Caddyfile de esta manera:

# Learn how to configure the Mercure.rocks Hub on https://mercure.rocks/docs/hub/config
{
   {$GLOBAL_OPTIONS}
   auto_https disable_redirects
}

pami54.local:3000

log

tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key

route {
    encode zstd gzip

    mercure {
        # Transport to use (default to Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
        # Publisher JWT key
        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # Subscriber JWT key
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Extra directives
        cors_origins https://pami54.local
        publish_origins *
        {$MERCURE_EXTRA_DIRECTIVES}
    }

    respond /healthz 200

    respond "Not Found" 404
}

Su configuración de host virtual:

<IfModule mod_ssl.c>
 #SSLStaplingCache "shmcb:${SRVROOT}/logs/ssl_stapling(32768)"
 <VirtualHost *:443>
   ServerName pami54.local
   ServerAlias wwww.pami54.local

   DocumentRoot "/var/www/html/pami54.local/public"
   DirectoryIndex index.php

   <Directory "/var/www/html/pami54.local/public/">
    AllowOverride All
    Order Allow,Deny
    Allow from All
    #Require local
    Require all granted

    <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
   </Directory>

   SSLEngine on
   SSLProtocol all -SSLv3 -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
   SSLCertificateFile "/etc/apache2/ssl-cert/pami54.local.crt"
   SSLCertificateKeyFile "/etc/apache2/ssl-cert/pami54.local.key"
   SSLUseStapling off

   <FilesMatch "\.(cgi|shtml|pl|asp|php)$">
    SSLOptions +StdEnvVars
   </FilesMatch>

   BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

   SSLProxyEngine On
   ProxyRequests Off
   ProxyPreserveHost On
   #ProxyPass '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure' connectiontimeout=300 timeout=300
   ProxyPass '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure'
   ProxyPassReverse '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure'
 </VirtualHost>
</IfModule>

De esta manera, los clientes pueden conectarse a Mercure https://pami54.local/.well-known/mercure, incluso cuando se produce una desconexión, el cliente se vuelve a conectar exitosamente al hub, pero cuando el servidor (aplicación web) intenta publicar una notificación en el hub, aparece un error de registro del cliente http de Symfony:

[2022-04-27T19:29:40.857698-04:00] http_client.INFO: Request: "POST https://pami54.local/.well-known/mercure" [] []
[2022-04-27T19:29:40.871491-04:00] messenger.WARNING: Error thrown while handling message App\Message\NotificacionMarcarComoLeidaMessage. Sending for retry #1 using 1000 ms delay. Error: "Handling "App\Message\NotificacionMarcarComoLeidaMessage" failed: Failed to send an update." {"message":{"App\\Message\\NotificacionMarcarComoLeidaMessage":[]},"class":"App\\Message\\NotificacionMarcarComoLeidaMessage","retryCount":1,"delay":1000,"error":"Handling \"App\\Message\\NotificacionMarcarComoLeidaMessage\" failed: Failed to send an update.","exception":"[object] (Symfony\\Component\\Messenger\\Exception\\HandlerFailedException(code: 0): Handling \"App\\Message\\NotificacionMarcarComoLeidaMessage\" failed: Failed to send an update. at /var/www/html/pami54.local/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php:129)\n[previous exception] [object] (Symfony\\Component\\Mercure\\Exception\\RuntimeException(code: 0): Failed to send an update. at /var/www/html/pami54.local/vendor/symfony/mercure/src/Hub.php:104)\n[previous exception] [object] (Symfony\\Component\\HttpClient\\Exception\\TransportException(code: 0): The request was not processed and can be safely retried at /var/www/html/pami54.local/vendor/symfony/http-client/Response/CommonResponseTrait.php:148)\n[previous exception] [object] (Symfony\\Component\\HttpClient\\Exception\\TransportException(code: 0): The request was not processed and can be safely retried at /var/www/html/pami54.local/vendor/symfony/http-client/Chunk/ErrorChunk.php:65)\n[previous exception] [object] (Amp\\Http\\Client\\Connection\\UnprocessedRequestException(code: 0): The request was not processed and can be safely retried at /var/www/html/pami54.local/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php:117)\n[previous exception] [object] (Amp\\Http\\Client\\SocketException(code: 0): Connection to 'pami54.local:443' failed at /var/www/html/pami54.local/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php:118)\n[previous exception] [object] (Amp\\Socket\\ConnectException(code: 111): Connection to tcp://pami54.local:443 refused at /var/www/html/pami54.local/vendor/amphp/socket/src/DnsConnector.php:108)"} []

¿Qué significa este error que arroja el componente CLIENTE HTTP de Symfony? Pensé que había resuelto el problema. Al menos los clientes se conectan y se vuelven a conectar al centro, ahora el problema es cuando la aplicación web intenta publicar en el centro Mercure.

Debo decir que mi entorno local no tiene un servidor DNS, todo es con virtualhost local y nombre de dominio declarado en /etc/hostname.confla máquina virtual Debian:

#/etc/hostname.conf     
debiandev
pami54.local

Respuesta1

Tengo solución. En el Caddyfile desactivé el servidor caddy en el puerto 80 asignando cualquier otro puerto, por ejemplo 8081, y estableciendo auto_httpsla directiva en 'disable_redirects', quedándome Caddyfilede esta manera:

# Learn how to configure the Mercure.rocks Hub on https://mercure.rocks/docs/hub/config
{
   {$GLOBAL_OPTIONS}
   http_port 8081
   auto_https disable_redirects
}

pami54.local:3000

log

tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key

route {
    encode zstd gzip

    mercure {
        # Transport to use (default to Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
        # Publisher JWT key
        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # Subscriber JWT key
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Extra directives
        cors_origins https://pami54.local
        publish_origins *
        {$MERCURE_EXTRA_DIRECTIVES}
    }

    respond /healthz 200

    respond "Not Found" 404
}

Ahora es posible que los clientes se conecten al hub, pero la aplicación web no puede publicar en él.

He actualizado la publicación.

información relacionada