Etherpad-lite: Los iconos de la barra de herramientas no se muestran después de la actualización (1.6.2 -> 1.8.3) cuando se exponen en un subdirectorio a través de un proxy inverso y minify = true

Creado en 28 abr. 2020  ·  110Comentarios  ·  Fuente: ether/etherpad-lite

image

Los íconos de la barra de herramientas no se muestran y me faltan errores de familia de fuentes, pero están todos en sus carpetas, no se cambió nada. ¿Me pueden ayudar a solucionar este problema?

OBTENER/static/font/Roboto-Regular.ttf net :: ERR_ABORTED 404 (No encontrado)

Consigo esto para todas las familias de fuentes.

Bug Special case Bug UI express server

Comentario más útil

Tenía exactamente el mismo problema.

Utilizo un proxy inverso y la instancia de Etherpad está en un subdirectorio (/ etherpad). Me las arreglé para hacerlo bien agregando lo siguiente a mi configuración de apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

No cambié nada en settings.json.

Todos 110 comentarios

Por favor proporcione detalles.

¿Está ejecutando un proxy inverso?
¿Está ejecutando en modo de desarrollo o producción?
Minificado?
Copia segura o su settings.json
Etc.

https://mclear.co.uk/2015/01/15/how-to-write-a-bug-report/

Se está ejecutando en modo de desarrollo, aunque el servicio systemd tiene "Environment = NODE_ENV = production", sin proxy inverso, el CSS está minimizado, settings.json apenas se toca (solo se cambia mysql y admin pw).

Parece que etherpad no puede cargar todas las fuentes porque mira/static/font/*.ttf en lugar de/ etherpad / src / static / font /

Intente convertir minify a falso y maxage a 0 en settings.json

Lo hice, nada cambió

En mi computadora portátil ahora, podría ayudar más. Lo más útil es obtener su settings.json (pero elimine las contraseñas). ¿Puede proporcionar eso por favor?

FWIW Probé 1.6. *> 1.8.3 y no experimenté esto, pero podría estar relacionado con que su settings.json tiene algún problema heredado en:!

Si no desea proporcionar configuraciones, una cosa que debe hacer es:

cp settings.json settings.backup.json
cp settings.json.template settings.json
Luego copie el host / usuario / pase de su base de datos de settings.backup.json a settings.json

Reinicie y vea si está arreglado.

/*
  This file must be valid JSON. But comments are allowed

  Please edit settings.json, not settings.json.template

  To still commit settings without credentials you can
  store any credential settings in credentials.json
*/
{
  // Name your instance!
  "title": "HelpMe-Etherpad",

  // favicon default name
  // alternatively, set up a fully specified Url to your own favicon
  "favicon": "favicon.ico",

  //IP and port which etherpad should bind at
  "ip": "0.0.0.0",
  "port" : 9001,

  // Option to hide/show the settings.json in admin page, default option is set to true
  "showSettingsInAdminPage" : true,

  /*
  // Node native SSL support
  // this is disabled by default
  //
  // make sure to have the minimum and correct file access permissions set
  // so that the Etherpad server can access them

  "ssl" : {
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt",
            "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
          },

  */

  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
  //You shouldn't use "dirty" for for anything else than testing or development
  /*"dbType" : "dirty",
  //the database specific settings
  "dbSettings" : {
                   "filename" : "var/dirty.db"
                 },

   An Example of MySQL Configuration*/
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "etherpad",
                    "host"    : "localhost",
                    "password": "",
                    "database": "etherpad",
                    "charset" : "utf8mb4"
                  },
   "users": {
    "admin": {
        "password": "",
        "is_admin": true
        }
            },

  //the default text of a pad
  "defaultPadText" : "Willkommen zum CN-Etherpad!\n\nDieses Dokument wird beim Tippen laufend aktualisiert, sodass jeder immer denselben Text sieht. So kann man nahtlos zusammen an Dokumenten arbeiten.\n",

  /* Default Pad behavior, users can override by changing */
  "padOptions": {
    "noColors": false,
    "showControls": true,
    "showChat": true,
    "showLineNumbers": true,
    "useMonospaceFont": false,
    "userName": false,
    "userColor": false,
    "rtl": false,
    "alwaysShowChat": false,
    "chatAndUsers": false,
    "lang": "de-de"
  },

  /* Should we suppress errors from being visible in the default Pad Text? */
  "suppressErrorsInPadText" : false,

  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
  "requireSession" : false,

  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
  "editOnly" : false,

  /* Users, who have a valid session, automatically get granted access to password protected pads */
  "sessionNoPassword" : false,

  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
     but makes it impossible to debug the javascript/css */
  "minify" : false,

  /* How long may clients use served javascript code (in seconds)? Without versioning this
     may cause problems during deployment. Set to 0 to disable caching */
  "maxAge" : 21600, // 60 * 60 * 6 = 6 hours

  /* This is the absolute path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to advanced import/export features of pads*/
  "abiword" : "/usr/local/bin/abiword",

  /* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
     LibreOffice can be used in lieu of Abiword to export pads */
  "soffice" : null,

  /* This is the path to the Tidy executable. Setting it to null, disables Tidy.
     Tidy is used to improve the quality of exported pads*/
  "tidyHtml" : "/usr/bin/tidy",

  /* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
  "allowUnknownFileEnds" : true,

  /* This setting is used if you require authentication of all users.
     Note: /admin always requires authentication. */
  "requireAuthentication" : false,

  /* Require authorization by a module, or a user with is_admin set, see below. */
  "requireAuthorization" : false,

  /*when you use NginX or another proxy/ load-balancer set this to true*/
  "trustProxy" : false,

  /* Privacy: disable IP logging */
  "disableIPlogging" : false,

  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */


  // restrict socket.io transport methods
  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],

  // Allow Load Testing tools to hit the Etherpad Instance.  Warning this will disable security on the instance.
  "loadTest": false,

  // Disable indentation on new line when previous line ends with some special chars (':', '[', '(', '{')
  /*
  "indentationOnNewLine": false,
  */

  /* The toolbar buttons configuration.
  "toolbar": {
    "left": [
      ["bold", "italic", "underline", "strikethrough"],
      ["orderedlist", "unorderedlist", "indent", "outdent"],
      ["undo", "redo"],
      ["clearauthorship"]
    ],
    "right": [
      ["importexport", "timeslider", "savedrevision"],
      ["settings", "embed"],
      ["showusers"]
    ],
    "timeslider": [
      ["timeslider_export", "timeslider_returnToPad"]
    ]
  },
*/
  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
  "loglevel": "INFO",

  //Logging configuration. See log4js documentation for further information
  // https://github.com/nomiddlename/log4js-node
  // You can add as many appenders as you want here:
  "logconfig" :
    { "appenders": [
        { "type": "console"
        //, "category": "access"// only logs pad access
        }
    /*
      , { "type": "file"
      , "filename": "your-log-file-here.log"
      , "maxLogSize": 1024
      , "backups": 3 // how many log files there're gonna be at max
      //, "category": "test" // only log a specific category
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "warn" // filters out all log messages that have a lower level than "error"
        , "appender":
          {  Use whatever appender you want here  }
        }*/
    /*
      , { "type": "logLevelFilter"
        , "level": "error" // filters out all log messages that have a lower level than "error"
        , "appender":
          { "type": "smtp"
          , "subject": "An error occurred in your EPL instance!"
          , "recipients": "[email protected], [email protected]"
          , "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
          , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
              "host": "smtp.example.com", "port": 465,
              "secureConnection": true,
              "auth": {
                  "user": "[email protected]",
                  "pass": "bar_foo"
              }
            }
          }
        }*/
      ]
    }
}

Está bien, dame 2 minutos.

No, eso no se replicó, los botones de la barra de herramientas existen para mí ...

¿Esta instancia es pública a la que puedo acceder? no dude en enviarme un correo electrónico URL [email protected]

Pregunta estúpida ...

  • [x] ¿Borrar la caché del navegador?
  • [x] Intento de ejecutar con bin/run.sh

¡Gracias!

Lamentablemente, no es una instancia pública.
Reemplacé settings.json con la nueva plantilla, también cambié la máscara a sin máscara. todavía no tengo éxito ..
Y sí, ejecuté run.sh, reinicié el servicio y borré el efectivo :)

Este es el servicio systemd por cierto:
[Unidad]
Descripción = Etherpad
Después = syslog.target network.target

[Servicio]
Tipo = simple
Usuario = etherpad
Grupo = etherpad
WorkingDirectory = / opt / etherpad
Entorno = NODE_ENV = producción
ExecStart = / opt / etherpad / bin / run.sh
Reiniciar = siempre

[Instalar en pc]
WantedBy = multi-user.target

¿Cómo lo instalaste? ¿Hiciste git clone o tomaste el .zip liberado y lo descomprimiste?

URL de solicitud: https://dev.com:9001/static/font/RobotoMono-Regular.ttf

jose<strong i="7">@server</strong>:~/develop$ locate RobotoMono | grep develop | grep Reg
/home/jose/develop/src/static/font/RobotoMono-Regular.ttf

Todo me parece bien.

Lo instalé a través de git clone, o más bien lo actualicé. Creo que fue instalado hace unos años (por otro administrador) a través de zip unpack. Usé rsync para actualizar todo

Ah, me pregunto si el último administrador puso algunos trucos. si git status ¿ve algún archivo modificado?

¿Qué sucede si clona un repositorio nuevo y luego copia su settings.json? Eso funcionará, pero obviamente no está solucionando el problema de que algo es extraño.

Voy a hacer eso ahora. sí, es muy extraño ... como si la carpeta raíz de las fuentes no fuera la misma que etherpad

El código es correcto por cierto. src / es la carpeta raíz.

Creo que el administrador anterior hackeó algo, no puedo decir qué sin ver un git diff. ¿Podemos cerrar esto ahora?

El administrador anterior no usó git (no se instaló), todavía no funciona después de la clonación limpia.

@skramsa lulwut. ¿Limpiar completamente el clon y ejecutarlo y no funciona? :! Tengo la sensación de que hay algo extraño en tu configuración. ¿Algún error o advertencia en el registro?

¿Qué pasa si haces un clon completamente limpio y no cambias ninguna configuración? ¿Todavía falla entonces?

¿Alguna posibilidad de que pueda hacerlo público temporalmente para que pueda depurarlo?

no, está en una intranet segura ... ¿podría tener algo que ver la actualización del nodo 6 al 12?

No estoy seguro ... No estoy realmente seguro de otros pasos de depuración aquí ...

La única pista que tengo es ...
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429

Pero dijiste que limpiaste todo el caché y realizaste una ejecución limpia ...

Desactivaste la minificación, ¿ rm -Rf src/node_modules && rm src/package-lock.json luego corriste bin/run.sh sí? Quiero decir que hiciste un clon limpio así; \

¿Cuáles son sus valores git sha , npm --version y nodejs version , por favor?

npm es 6.14.4 y el nodo -v es 12.16.2. pregunta estúpida, pero ¿qué quieres decir exactamente con "mi" git sha?

Volví a enrollar a 1.6.2 y configuré minify en falso y de repente funciona de nuevo (antes de eso ni siquiera funcionaban los iconos de la versión anterior). Es un alivio. Intentaré hacer otra configuración limpia la semana que viene con esta configuración, tal vez esta vez funcione: D ¡¡Muchas gracias por su ayuda !!

En su carpeta etherpad, escriba git rev-parse HEAD

Quiero ver en qué compromiso estás.

Hola
Tengo exactamente el mismo problema, excepto que estoy detrás de un proxy.
Hice una prueba guardando mi instalación y clonando el repositorio. Luego simplemente copié mi archivo de configuración y reinicié el servicio.
Sigo teniendo el mismo problema a pesar de la nueva instalación.

Pero :
Por otro lado, cosa interesante, cuando accedo al servicio sin usar el proxy y sin https, no hay problema, los iconos se muestran correctamente !!

La configuración del proxy de Apache proviene de la documentación, nada exótico de mi parte.

Tenía exactamente el mismo problema.

Utilizo un proxy inverso y la instancia de Etherpad está en un subdirectorio (/ etherpad). Me las arreglé para hacerlo bien agregando lo siguiente a mi configuración de apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font
    ProxyPassReverse http://localhost:9001/static/font
</Location>

No cambié nada en settings.json.

@skramsa no ha mencionado ningún proxy inverso, así que no creo que esté relacionado. Skramsa, confirme que no hay un proxy inverso en su configuración.

Tenía exactamente el mismo problema.

Utilizo un proxy inverso y la instancia de Etherpad está en un subdirectorio (/ etherpad). Me las arreglé para hacerlo bien agregando lo siguiente a mi configuración de apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

No cambié nada en settings.json.

¿Por qué la regla de reintento y tiempo de espera?

@skramsa no ha mencionado ningún proxy inverso, así que no creo que esté relacionado. Skramsa, confirme que no hay un proxy inverso en su configuración.

Sí, pero @julpec está detrás de un proxy, así que pensé que podría ser útil;)

Tenía exactamente el mismo problema.
Utilizo un proxy inverso y la instancia de Etherpad está en un subdirectorio (/ etherpad). Me las arreglé para hacerlo bien agregando lo siguiente a mi configuración de apache.

<Location /static/font>
    ProxyPass http://localhost:9001/static/font retry=0 timeout=30
    ProxyPassReverse http://localhost:9001/static/font
</Location>

No cambié nada en settings.json.

¿Por qué la regla de reintento y tiempo de espera?

Tienes razón, no creo que sea necesario, ayer hice esto apresuradamente después de la actualización;)

@skramsa no ha mencionado ningún proxy inverso, así que no creo que esté relacionado. Skramsa, confirme que no hay un proxy inverso en su configuración.

Sí, pero @julpec está detrás de un proxy, así que pensé que podría ser útil;)

Es gracias

Como recordatorio :

Por otro lado, cosa interesante, cuando accedo al servicio sin usar el proxy y sin https, no hay problema, los iconos se muestran correctamente !!

En mi caso, es obvio que está relacionado con el proxy.

Además, estoy en una situación de migración de mi instancia de Etherpad y migré mi base de datos y luego actualicé Etherpad. Tengo esto saliendo en los registros ahora:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads

No sé si puede causar errores ...

Como recordatorio :

Por otro lado, cosa interesante, cuando accedo al servicio sin usar el proxy y sin https, no hay problema, los iconos se muestran correctamente !!

En mi caso, es obvio que está relacionado con el proxy.

Además, estoy en una situación de migración de mi instancia de Etherpad y migré mi base de datos y luego actualicé Etherpad. Tengo esto saliendo en los registros ahora:

[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads
No sé si puede causar errores ...

Cree un problema separado para esto, por favor. Necesita ser abordado.

Tengo el mismo problema.
Estoy detrás de un proxy inverso (Apache) y estoy usando el último contenedor de Docker (actualmente) (saqué la imagen hace un minuto):

$ docker image ls
REPOSITORY           TAG            IMAGE ID            CREATED             SIZE
etherpad/etherpad    latest         878d71df1b8e        44 hours ago        273MB

La barra de herramientas se ve exactamente como en el informe original. Etherpad tiene proxy bajo /pad/ , pero las fuentes se cargan desde /static/ , lo que da como resultado errores 404.

Prefiero no usar la solución alternativa de @lucaguindani , porque /static/ es una ruta muy común que también utilizan otras aplicaciones.

De acuerdo, se ordenará lo antes posible. Debería ser hoy, sin embargo, podría no fusionarse esta semana, por lo que es posible que necesiten aplicar un parche.

Después de la semana del lanzamiento, todos intentamos pasar tiempo con la familia, etc.

No puedo replicar esto con mi configuración de apache. ¿Alguien puede pegar una configuración de apache ofensiva?

También probé nginx con la configuración wiki y no se puede replicar allí; /

image

image

Me hace pensar que todos ustedes están experimentando un extraño error de configuración / peculiaridad de Apache. ¿De dónde obtuvieron todos su configuración de subdirectorio de apache? No proporcionamos uno en el wiki afaik, así que creo que tal vez ustedes se volvieron pícaros. :PAGS

PD: estoy probando contra el desarrollo, que es prácticamente un cajero automático de lanzamiento y la configuración de nginx es:

server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad {
        rewrite                /pad/(.*) /$1 break;
        rewrite                ^/pad$ /pad/ permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/socket.io {
        rewrite /pad/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

Noté que las pruebas / frontend / index.html fallan, lo que parece extraño

También probé /pad/foo/p/blah solo para confirmar que no hay ningún error en el lado de Etherpad y que las cosas se ven bien ...

No puedo replicar esto con mi configuración de apache. ¿Alguien puede pegar una configuración de apache ofensiva?

Aquí esta el mio:

<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    AuthType Basic
    AuthName "authentification"
    AuthBasicProvider       ldap
    AuthLDAPURL "ldap://127.0.0.1:389/ou=****,dc=****,dc=****,dc=org"
    AuthLDAPGroupAttribute memberUid
    AuthLDAPGroupAttributeIsDN off
    require ldap-group cn=****,ou=***,dc=*****,dc=****,dc=org

    ProxyPass http://localhost:9002/ 
    ProxyPassReverse http://localhost:9002/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
    RequestHeader add X-Forwarded-User %{RU}e
</Location>

Impresionante gracias, dame una hora que intentaré esta noche.

Me hace pensar que todos ustedes están experimentando un extraño error de configuración / peculiaridad de Apache. ¿De dónde obtuvieron todos su configuración de subdirectorio de apache? No proporcionamos uno en el wiki afaik, así que creo que tal vez ustedes se volvieron pícaros. :PAGS

aquí

Me hace pensar que todos ustedes están experimentando un extraño error de configuración / peculiaridad de Apache. ¿De dónde obtuvieron todos su configuración de subdirectorio de apache? No proporcionamos uno en el wiki afaik, así que creo que tal vez ustedes se volvieron pícaros. :PAGS

aquí

Miré allí y los ejemplos no cubren poner Etherpad en un subdirectorio para Apache ...

image

Usando una versión ligeramente modificada de su recorte

<VirtualHost *:81>
<Location /pad/>
    Order allow,deny
    Allow from all
    Options All +MultiViews -ExecCGI
    ProxyPass http://localhost:9001/
    ProxyPassReverse http://localhost:9001/
    RewriteEngine On
    RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
    RewriteRule . - [E=RU:%1]
</Location>
</VirtualHost>

image

jose<strong i="5">@server</strong>:~/develop$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-03-13T12:26:16

Miré allí y los ejemplos no cubren poner Etherpad en un subdirectorio para Apache ...

no tiene sentido. Puede poner lo que quiera en la etiqueta de ubicación. Pero intentaré con tu configuración y sin "subdirectorio" ahora mismo.
Gracias por sus investigaciones por cierto

no tiene sentido. Puede poner lo que quiera en la etiqueta de ubicación. Pero intentaré con tu configuración y sin "subdirectorio" ahora mismo.

no tiene sentido ... en mi cerebro. ¡Pero en el mundo real eso es lo que está causando el problema!
Buen punto: +1:
Sin embargo, no entiendo por qué todo funcionaba tan bien antes, se ha estado ejecutando durante años detrás de un proxy inverso con esto como configuración.
Realmente necesito un subdirectorio ya que tengo diferentes servicios ejecutándose detrás de un "inicio de sesión único" de Apache.
¿Sería posible utilizar algo diferente a "/" como ubicación?

Gracias por trabajar en este problema

Copiar / pegar mi configuración de arriba, uso una ubicación diferente ...

No veo la diferencia con la mía, a excepción de la configuración de autenticación.
Voy a intentarlo ahora mismo

Copiar / pegar mi configuración de arriba, uso una ubicación diferente ...

sigue siendo el mismo problema: no se muestran los iconos

¿Versión de Apache?

Versión del servidor: Apache / 2.4.38 (Debian)
Servidor construido: 2019-10-15T19: 53: 42

Investigué con el inspector de elementos y esto es lo que me da como URL para las fuentes:

Request URL: https://example.org/static/font/RobotoMono-Regular.ttf

Debería ser:

Request URL: https://example.org/pad/static/font/RobotoMono-Regular.ttf

No puedo entender por qué no tengo el subdirectorio "pad".

Entonces, comencé desde cero en un nuevo host.

docker run --name etherpad -d \
    -e NODE_ENV=production -p 9001:9001 \
    --mount type=bind,src=/etc/localtime,dst=/etc/localtime \
    --restart=unless-stopped \
    etherpad/etherpad

Nada cambió en la configuración original.

Configuración de Apache:

<VirtualHost _default_:443>
    ServerName host
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass             /pad/     http://localhost:9001/
    ProxyPassReverse      /pad/     http://localhost:9001/
    SSLCertificateFile  /etc/apache2/ssl/host.example.com_cert_with_chain.pem
    SSLCertificateKeyFile /etc/apache2/ssl/host.example.com_sec_key.pem
    SSLCertificateChainFile /etc/apache2/ssl/chain.pem
</VirtualHost>

La versión de Apache es 2.4.29.

Borró el caché del navegador y el resultado:

image

Extraño. Intentaré usar la imagen de la ventana acoplable localmente para ver si eso cambia las cosas

@JohnMcLear es realmente increíble. Intenté exactamente con la misma configuración que usted, en el puerto 81, en un vhost separado, etc ... y el problema persiste.
Me aseguré de vaciar el caché cada vez.

Aquí están mis versiones de software:

node: v10.20.1
npm: 6.14.4
apache2: Apache/2.4.38 (Debian)
etherpad: 1.8.3 (6210114)

Tengo exactamente el mismo problema. Los íconos faltan cuando se ejecuta sobre el proxy (nginx) y minify se establece en verdadero. Tan pronto como configuro minify en falso y lo inicio con clearRun.sh y borro la caché del navegador, los íconos están funcionando. En la versión anterior que usamos durante bastante tiempo, estaba funcionando con minify: true y esta configuración de Nginx:

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                #proxy_pass        http://localhost:9001/;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }
}

Descubrí que cuando uso la configuración nginx de @JohnMcLear y uso reescribir, funcionará. Supongo que ese problema solo aparece cuando usamos una ubicación diferente (como / pad).

Configuración de Nginx que está funcionando:

server {
        listen          80;
        listen          443 ssl;
        include snippets/mortis2-ssl.conf;
        server_name     mortis2;
        location /pad/
        {
                rewrite                /pad/(.*) /$1 break;
                rewrite                ^/pad$ /pad/ permanent;
                proxy_pass        http://localhost:9001/;
                proxy_pass_header Server;
                proxy_set_header  Host $host;
                proxy_buffering   off;
        }

        location /pad/socket.io {
                rewrite /pad/socket.io/(.*) /socket.io/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_redirect         / /pad/;
                proxy_set_header Host $host;
                proxy_buffering off;
                proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
                proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
                proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
                proxy_set_header Host $host;  # pass the host header
                proxy_http_version 1.1;  # recommended with keepalive connections
                # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
                proxy_set_header Upgrade $http_upgrade;
                #proxy_set_header Connection $connection_upgrade;
        }

        location /static {
                rewrite /static/(.*) /static/$1 break;
                proxy_pass http://localhost:9001/;
                proxy_set_header Host $host;
                proxy_buffering off;
        }
}

Op dijo que minificar verdadero / falso no cambia el resultado. Op tampoco mencionó ningún proxy de rev ... Verificaré con minify true cuando llegue a casa.

Confirmado que es causado por minify.

https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150 reclamó minify false no hizo ninguna diferencia y debería haberme comprobado si ese fuera el caso ...

* palma de la mano.

Lo arreglará lo antes posible.

FWIW Nginx también sufre este error y el error está presente en todas las páginas (pad, índice, timelider, etc.).

El problema está en nuestra implementación de clean-css . CSS 3 a 4 eliminó la opción relativeTo y esta eliminación ha causado este error. Cambié a rebase y rebaseTo en mi ejemplo

https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 y es una solución semi-fija y https://github.com/JohnMcLear/etherpad-lite/commit/a8c66b3b8d513b022 . Aparecerán iconos, pero la fuente es incorrecta para algunos componentes internos de la almohadilla y probablemente para otros elementos.

¿Alguna sugerencia @jakubpawlowicz @seballot ?

@JohnMcLear Una forma de hacer que funcione para usted puede ser a través de transformaciones arbitrarias, consulte https://github.com/jakubpawlowicz/clean-css#how -to-apply-arbitrary-transformations-to-css-properties

La otra idea es pasar las opciones de entrada a clean-css a través de un hash, consulte https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 , por ejemplo

new CleanCSS().minify({"path/to/stylesheet/a.css": { styles: "/* source of a.css goes here */" }})

y use la opción rebaseTo , pero sin más información no puedo decir si funcionaría o no.

¡Buena suerte!

Cerrado De Verdad ?

OP cerrado ... No debe estar cerrado. OP FWIW puede hacer clic en dejar de seguir o cancelar la suscripción o algo si no desea ruido.

Esto aún no está resuelto, si no tiene un parche de EOW, intentaré parchear.

Realmente me gustaría ver un parche de la comunidad para esto, si alguien puede encontrar tiempo.

@JohnMcLear Realmente me gustaría poder ayudar y tomarme el tiempo en esto, pero no tengo habilidades de desarrollador y menos aún en nodejs. Espero que otros puedan hacerlo. Solo puedo apoyarte con mis pensamientos ...

Si bien lo agradezco, sus pensamientos no cambian los pañales;)

golpe @seballot

Hola, no tengo mucha idea sobre este lo siento ... ¿Hay alguna forma de reproducirlo localmente?

  1. git clon develop
  2. convierte minify en true
  3. Ejecute Etherpad y visite una plataforma (asegurándose de que todo funciona)
  4. instalar nginx
  5. Copie lo siguiente en / etc / nginx / sites-enabled / default
server {
        listen       80;
        server_name  pad.example.com;

        access_log  /var/log/nginx/eplite.access.log;
        error_log   /var/log/nginx/eplite.error.log;

    location /pad/foo {
        rewrite                /pad/foo/(.*) /$1 break;
        rewrite                ^/pad/foo$ /pad/foo permanent;
        proxy_pass             http://localhost:9001/;
        proxy_pass_header Server;
        proxy_redirect         / /pad/foo;
        proxy_set_header       Host $host;
        proxy_buffering off;
    }

    location /pad/foo/socket.io {
        rewrite /pad/foo/socket.io/(.*) /socket.io/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_redirect         / /pad/foo/;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;  # http://wiki.nginx.org/HttpProxyModule
        proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_set_header Host $host;  # pass the host header
        proxy_http_version 1.1;  # recommended with keepalive connections
        # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /static {
        rewrite /static/(.*) /static/$1 break;
        proxy_pass http://localhost:9001/;
        proxy_set_header Host $host;
        proxy_buffering off;
    }

}

# we're in the http context here
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}
  1. Reiniciar nginx
    http://127.0.0.1 : 9001 / p / blah se convierte en http://127.0.0.1/pad/foo/p/blah
  2. Abra http://127.0.0.1/pad/foo/p/blah en el navegador
  3. Haga clic en la pestaña de red en el navegador y observe que las fuentes internas del iframe 404. Esto se debe a que @import pasa la ruta correcta, pero cleanCSS reescribe (correctamente) a ../../../ - tengo entendido eso porque tanto el pad como el editor usan el mismo @ font.css y ambos tienen? diferentes basesPaths? luego uno trabaja y no lo hace al minificar. No puedo pensar en una solución elegante, pero creo que podrías hacerlo.

@seballot ¿ algún compañero de progreso?

No, lo siento, no puedo encontrar una solución ...

Yo tampoco, el cleanCSS está haciendo algo de magia que simplemente no entiendo (no soy un tipo de CSS) y ninguna de mis instancias se ejecuta en subdirecciones, por lo que tampoco es interesante para mí aprender

No quiero, pero es posible que deba reemplazar cleanCSS con csso porque puedo hacer que csso funcione, pero creo que, en última instancia, no estoy resolviendo el problema correctamente y csso no es tan eficaz como cleanCSS para nuestro caso de uso. .

Choqué con cleanCSS dev para ver si podemos colaborar para solucionarlo :)

bonito ! si funciona bien con csso, ¿por qué no hacerlo?

csso minimiza pero no reduce el número de cargas de página. También prefiero cleanCSS como proyecto / documentos, etc. y no me importa dedicar algunos recursos a un buen proyecto, significa que puedo concentrarme en empresas específicas de Ether

Estoy enfrentando el mismo problema que en este hilo.

  • Instalé etherpad desde el repositorio de git y cuando uso ./bin/run.sh y abro el puerto 9001 en localhost, la instalación es buena y los iconos se muestran correctamente.
  • Cuando ejecuto esto en el servidor nginx (que también ejecuta jitsi), no veo los iconos de la barra de herramientas. Todo lo demás parece funcionar muy bien.

¿Puede alguien guiarme sobre cómo puedo solucionar este problema? No hay cambios importantes en el archivo settings.json.

La solución es establecer minify en falso en settings.json

Intentaré echarle un vistazo esta noche.

Pude replicar el problema usando la configuración de nginx proporcionada por John en https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151 en este mismo problema.

Creo que hay un problema tanto en la configuración de Nginx publicada como en el código de Etherpad.

Más detalles más adelante.

Acabo de pasar 2 segundos mirando el código nginx y no debería tener configuración para /static como está en el copiar / pegar que hice, pero la raíz del problema está en lo profundo de cleanCSS ...

Tenemos varios problemas aquí.

  1. el archivo de configuración de prueba de Nginx tenía la redirección incorrecta para /static . Toda la sección location /static debe eliminarse de aquí . En la tormenta de correos electrónicos recibidos durante estos días, creo recordar que un usuario se quejó, de hecho, de que /static iba a chocar con muchas otras aplicaciones web . Probablemente fue engañado por un ejemplo similar a éste;

    Esto tiene que arreglarse revisando la documentación (¿la wiki? ¿Alguien más en Internet?) Y mejorando la calidad de los ejemplos .

  2. 4177b3f9434e movió las declaraciones font-face de src/static/css/pad.css a dos archivos importados ( src/static/css/pad/fonts.css y src/static/css/pad/toolbar.css ) en un directorio diferente, y URL en src son relativas a la ruta de la hoja de estilo ;

  3. Además de eso, después de fusionar 95fd5ce2a45e para el próximo 1.8.4 , tendríamos un problema de obsolescencia de caché que también necesita ser abordado.

Estoy haciendo algunas pruebas y preparando un PR.

Abierto # 4002 para solucionar este problema. Muchas gracias a @JohnMcLear por el trabajo preliminar.

@skramsa , @julpec , @lucaguindani , @ashishhari (y John, obviamente): ¿alguno de ustedes está en la posición de probar ese PR para ver si funciona para ellos? Me gustaría una validación independiente, si es posible.

Tenga en cuenta también que la configuración del proxy inverso no necesita una regla especial para "/ static".

Gracias por reconocer. Establecer minify en falso no resolvió el
problema para mi.
Estoy usando esto en una instalación de jitsi en una instancia AWS EC2, y allí
es un servidor nginx que se utiliza para alojar jitsi y también para iniciar el nodo
servidor para el servicio etherpad en la misma máquina en el puerto 9001.

¿Significa esto que es posible que deba modificar alguna otra configuración de nginx? (Yo no
entender el proxy inverso correctamente, pero ¿podría ser este el caso?), O
solo tiene que esperar a que la solución esté disponible.

El jueves 14 de mayo de 2020 a las 6:07 a. M. Muxator [email protected] escribió:

Tenemos varios problemas aquí.

1.

el archivo de configuración de prueba de Nginx tenía la redirección incorrecta para / static. los
toda la ubicación / sección estática debe eliminarse de aquí
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151 .
En la tormenta de correos electrónicos recibidos durante estos días, creo recordar que unusuario se quejó, de hecho, de que / static iba a chocar con muchosotras aplicaciones web . Probablemente fue engañado por un ejemplo similar
a este;

Esto tiene que arreglarse revisando la documentación (¿el wiki?
¿Había alguien más en Internet?) Y mejorando la calidad delejemplos .
2.

4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
movió las declaraciones de font-face de src / static / css / pad.css a dos
archivos importados (src / static / css / pad / fonts.css y
src / static / css / pad / toolbar.css) en un directorio diferente y las URL en
src son relativas a la ruta de la hoja de estilo
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
3.

además de eso, después de fusionar 95fd5ce
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
para el próximo 1.8.4 , tendríamos un problema de obsolescencia de caché
eso también necesita ser abordado.

Estoy haciendo algunas pruebas y preparando un PR.

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.

@skramsa , @julpec , @lucaguindani , @ashishhari (y John, obviamente): ¿alguno de ustedes está en la posición de probar ese PR para ver si funciona para ellos? Me gustaría una validación independiente, si es posible.

Ok para que lo pruebe. No tengo una configuración especial para static .

Gracias por reconocer. Establecer minify en false no me solucionó el problema.

Pero funciona para mí. Bajo apache, cambié a falso y todo comenzó a funcionar bien.

Puedo probarlo.

El jueves 14 de mayo de 2020 a la 1:30 p. M. Julpec [email protected] escribió:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (y John, obviamente): es alguien de ustedes
en la posición de probar ese PR para ver si funciona para ellos? me gustaría
como una validación independiente, si es posible.

Ok para que lo pruebe. No tengo una configuración especial para estática.

Gracias por reconocer. Establecer minify en falso no resolvió el
problema para mi.

Pero funciona para mí. Bajo apache, cambié a falso y todo
empezó a trabajar bien.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

También confirmando -> configurar minify en falso funcionó correctamente en mi sistema.
(Probablemente no reinicié el servicio correctamente la última vez).

El jueves 14 de mayo de 2020 a la 1:30 p. M. Julpec [email protected] escribió:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (y John, obviamente): es alguien de ustedes
en la posición de probar ese PR para ver si funciona para ellos? me gustaría
como una validación independiente, si es posible.

Ok para que lo pruebe. No tengo una configuración especial para estática.

Gracias por reconocer. Establecer minify en falso no resolvió el
problema para mi.

Pero funciona para mí. Bajo apache, cambié a falso y todo
empezó a trabajar bien.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Pero funciona para mí. Bajo apache, cambié a falso y todo comenzó a funcionar bien.
También confirmando -> configurar minify en falso funcionó correctamente en mi sistema.

@julpec , @ashishhari : establecer minify = false es una solución alternativa conocida.
La esperanza ahora es ver si # 4002 corrige el error cuando minify = true.

El procedimiento sería el siguiente, haz esto solo si todos los pasos están claros para ti:

Comience a replicar el error:

  • asegúrese de minify = true en settings.json
  • reiniciar Etherapd
  • visite la página Etherpad y verifique que los íconos de la barra de herramientas no se muestran

Prueba la solución:

  • mantener minify = true en settings.json
  • aplique # 4002 (hágalo solo si se siente cómodo con él)
  • reiniciar Etherpad
  • visite la página Etherpad y verifique si los íconos de la barra de herramientas ahora se muestran correctamente

Me gustaría pero no conozco el procedimiento para aplicar el PR :(

Gracias @muxator. Lo

¡Oh, vaya, nunca se me hubiera ocurrido esa solución! Eso es una locura.

git remote add mux https://github.com/muxator/etherpad-lite/
git fetch mux
git checkout mux/fix/fonts-behind-reverse-proxy

Para aquellos que también quieran probar.

después de la prueba, recuerde git checkout develop contrario lo hará en la rama obsoleta de muxs

gracias, probaré esta tarde

Hrm, creo que algo no funciona del todo @muxator .. Estoy viendo ~ 54 solicitudes, frente a ~ 49 (en el actual develop ) - Tenga en cuenta que tengo complementos habilitados que brindan solicitudes adicionales. Por lo tanto, este PR sería una regresión del rendimiento de carga de la página para satisfacer un caso de uso no documentado / no admitido que no es aceptable en mi humilde opinión.

image

Tenga en cuenta las múltiples solicitudes para el mismo archivo ... :( Definitivamente es un progreso, pero varias solicitudes para el mismo archivo no son la solución que estamos buscando.

la solicitud múltiple proviene de los diferentes iframe, creo. Tanto la página principal como el iframe del editor necesitan la fuente, siempre ha sido así, ¿no?

afaik cleanCSS se utilizó para solucionar ese problema @seballot

siempre ha sido así no?

Sí, siempre fue así.

Creo que cleanCss fue más para evitar cargar cada css parcial (pad / popups.css, pad / editbar.css, pad / chat.css ...), y en su lugar cargar solo un pad.css

Pero al usar iframe, el navegador está obligado a solicitar dos veces cada archivo compartido con el iframe. Pero la segunda llamada debería usar la caché local ("cargada desde la caché")

Apliqué la solicitud de extracción y funciona sin ningún problema (con apache)

Gracias @julpec.

Esta noche intentaré abordar el problema del número de solicitudes que mencionó @JohnMcLear . Si no pasa nada, fusionaré las relaciones públicas.

Impresionante mux tnx

¿Hay alguna forma de cargar archivos HAR en algún lugar de Github? He probado el # 4002 y estoy dispuesto a compartir las grabaciones, pero no sé dónde subirlas.

Elementos comunes:

  • visitó http: // localhost : 9001 / p / ciao
  • sin proxy inverso
  • modo de producción: falso
  • comenzar con la caché del navegador vacía

Variables:

  • versión: 4816785aef45 vs # 4002
  • caché: frío ( primera carga ) vs caliente (> = segunda carga )
  • minificar: verdadero vs falso
  • navegador: chromium 81 vs firefox 76

Estas son cuatro variables binarias -> 2 ^ 4 = 16 posibilidades .
¡Esto tomó mucho tiempo!

Estos son los casos más relevantes:
| Descripción | desarrollo actual (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, minificado, primera carga | 34 solicitudes
1,61 MB
1,61 MB transferidos | 36 solicitudes
1,61 MB
1,53 MB transferidos |
| Firefox, minificado, caché activo | 29 solicitudes
1,12 MB
216 KB transferidos | 31 solicitudes
1,18 MB
216 KB transferidos |
| Cromo, minificado, primera carga | 44 solicitudes
2,0 MB
1,5 MB transferidos | 109 richieste
3,0 MB
1,1 MB transferidos |
| Cromo, minificado, caché en caliente | 45 solicitudes
2,2 MB
5,7 KB transferidos | 129 solicitudes
4,7 MB
4,7 KB transferidos |

La conclusión es:

  • Chrome y Firefox tienen una forma completamente diferente de medir su tráfico
  • PR # 4002 introduce más solicitudes al servidor
  • La tasa de aciertos de caché mejora : ¡la columna transferida disminuye!
  • Los tiempos de carga permanecen iguales, dentro de los límites del ruido de medición

Estos también fueron mis hallazgos, también me tomé el tiempo para investigar las herramientas de creación de perfiles de rendimiento de velocidad de carga de la página (más allá de las herramientas de desarrollador) y decidí que si las herramientas de desarrollador no me daban una desviación significativa de una media, los resultados eran lo suficientemente adecuados para nuestra aplicación.

La disminución del tamaño total de la transferencia es claramente algo bueno, pero la sobrecarga de la solicitud http puede ser costosa debido a la latencia. Podemos fusionar esto, pero tenga en cuenta que cuando reescribimos la interfaz (que se siente inevitable debido a todo el JS en línea que finalmente tendrá que cambiarse), entonces esta es un área en la que debemos esforzarnos por mejorar.

Dicho todo esto, Etherpad es excelente en comparación con la mayoría de los demás en este campo, con la excepción de Google Docs, que es el estándar de oro para un "tiempo de edición" absolutamente sorprendentemente rápido, que en este mundo es el rey, no la "carga" del final de la página.

Entonces TLDR; Fusionar @muxator : este hilo existe como un recurso para aquellos que buscan optimizar para instancias de Etherpad NO en subcarpetas.

buen trabajo !

+1 tnx!

: +1:

¿Fue útil esta página
0 / 5 - 0 calificaciones