Etherpad-lite: Les icônes de la barre d'outils ne s'affichent pas après la mise à jour (1.6.2 -> 1.8.3) lors de l'exposition dans un sous-répertoire via un proxy inverse et minify = true

Créé le 28 avr. 2020  ·  110Commentaires  ·  Source: ether/etherpad-lite

image

Les icônes de la barre d'outils ne s'affichent pas et je reçois des erreurs de famille de polices manquantes, mais elles sont toutes dans leurs dossiers, rien n'a été modifié. Pouvez-vous m'aider à résoudre ce problème?

AVOIR/static/font/Roboto-Regular.ttf net :: ERR_ABORTED 404 (introuvable)

J'obtiens ceci pour toutes les familles de polices.

Bug Special case Bug UI express server

Commentaire le plus utile

Avait exactement le même problème.

J'utilise un proxy inverse et l'instance Etherpad est dans un sous-répertoire (/ etherpad). J'ai réussi à faire les choses correctement en ajoutant ce qui suit à ma configuration apache.

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

Je n'ai rien changé dans settings.json.

Tous les 110 commentaires

Prière de fournir des détails.

Êtes-vous derrière un proxy inverse?
Exécutez-vous en mode développement ou production.
Minifié?
Copie sécurisée ou votre settings.json
Etc.

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

Il fonctionne en mode développement, bien que le service systemd contienne "Environment = NODE_ENV = production", pas de proxy inverse, le css est minifié, settings.json est à peine touché (seuls mysql et admin pw sont modifiés).

Il semble qu'etherpad ne puisse pas charger toutes les polices car il regarde/static/font/*.ttf au lieu de/ etherpad / src / static / font /

Essayez de transformer minify sur false et maxage sur 0 dans settings.json

Je l'ai fait, rien n'a changé

Sur mon ordinateur portable maintenant, je pourrais peut-être aider davantage. La chose la plus utile est d'obtenir votre settings.json (mais supprimez tous les mots de passe). Pouvez-vous fournir cela s'il vous plaît?

FWIW J'ai testé 1.6. *> 1.8.3 et je n'ai pas rencontré cela, mais cela pourrait être lié au fait que votre settings.json a un héritage cruel dans:!

Si vous ne souhaitez pas fournir de paramètres, une chose à faire est:

cp settings.json settings.backup.json
cp settings.json.template settings.json
Copiez ensuite votre hôte / utilisateur / pass de base de données de settings.backup.json dans settings.json

Redémarrez et voyez si c'est corrigé.

/*
  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"
              }
            }
          }
        }*/
      ]
    }
}

Ok cool, donne-moi 2 minutes.

Non, cela ne s'est pas répliqué, les boutons de la barre d'outils existent pour moi.

Cette instance est-elle publique à laquelle je peux accéder? n'hésitez pas à m'envoyer un email à l'adresse [email protected]

Question stupide ... Avez-vous

  • [x] Vider le cache du navigateur?
  • [x] Tentative d'exécution avec bin/run.sh

Merci!

Ce n'est malheureusement pas une instance publique.
J'ai remplacé le settings.json par le nouveau modèle, j'ai également changé le skin en no-skin. toujours pas de succès ..
Et oui, j'ai exécuté run.sh, redémarré le service et effacé l'argent :)

Voici le service systemd btw:
[Unité]
Description = Etherpad
Après = syslog.target network.target

[Un service]
Type = simple
Utilisateur = etherpad
Groupe = etherpad
WorkingDirectory = / opt / etherpad
Environnement = NODE_ENV = production
ExecStart = / opt / etherpad / bin / run.sh
Redémarrer = toujours

[Installer]
WantedBy = multi-user.target

Comment avez-vous installé? Avez-vous git clone ou avez-vous récupéré le fichier .zip et décompressé?

URL de la demande: 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

Tout me va bien.

Je l'ai installé via git clone, ou plutôt mis à jour. Je crois qu'il a été installé il y a quelques années (par un autre administrateur) via zip unpack. J'ai utilisé rsync pour tout mettre à jour

Ah, je me demande si le dernier administrateur a mis des hacks? si vous git status voyez-vous des fichiers modifiés?

Que se passe-t-il si vous clonez un nouveau dépôt puis copiez votre settings.json? Cela fonctionnera mais ne résout évidemment pas le problème que quelque chose est bizarre.

Je vais faire ça maintenant. oui, c'est très bizarre .. comme si le dossier racine des polices n'est pas le même que etherpad

Le code est bon btw. src / est le dossier racine.

Je pense que l'administrateur précédent a piraté quelque chose, je ne peux pas dire quoi sans voir un git diff. Pouvons-nous fermer ça maintenant?

l'administrateur précédent n'utilisait pas git (n'était pas installé), ne fonctionne toujours pas après le clonage propre.

@skramsa lulwut. Cloner et exécuter complètement propre et cela ne fonctionne pas? :! J'ai l'impression que votre configuration est bizarre. Des erreurs ou des avertissements dans le journal?

Que faire si vous effectuez un clone complètement propre et ne modifiez aucun paramètre? Cela échoue-t-il encore alors?

Avez-vous une chance de le rendre public temporairement pour que je le débogue?

non, c'est sur un intranet sécurisé ... la mise à niveau du nœud 6 vers 12 pourrait-elle avoir quelque chose à voir avec cela?

Pas sûr .. Je ne suis pas vraiment sûr des autres étapes de débogage ici.

Le seul indice que j'ai est ...
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429

Mais vous avez dit que vous avez nettoyé tout le cache et effectué une nouvelle exécution.

Vous avez désactivé minify, avez-vous rm -Rf src/node_modules && rm src/package-lock.json puis exécuté bin/run.sh ouais? Je veux dire que vous avez fait un clone propre ainsi; \

Quelles sont vos valeurs git sha , npm --version et nodejs version s'il vous plaît?

npm est 6.14.4 et le nœud -v est 12.16.2. question stupide, mais que voulez-vous dire exactement par "mon" git sha?

J'ai relancé à 1.6.2 et mis minify sur false et tout à coup cela fonctionne à nouveau (avant cela, même les icônes de l'ancienne version ne fonctionnaient pas). C'est un soulagement .. Je vais essayer de faire une autre configuration propre la semaine prochaine avec ces paramètres, peut-être que cette fois cela fonctionnera: D Merci beaucoup pour votre aide !!

Dans votre dossier etherpad, tapez git rev-parse HEAD

Je veux voir sur quel commit vous êtes.

Bonjour
J'ai exactement le même problème sauf que je suis derrière un proxy.
J'ai fait un test en sauvegardant mon installation et en clonant le référentiel. Ensuite, j'ai simplement copié mon fichier de configuration et redémarré le service.
J'ai toujours le même problème malgré la nouvelle installation.

Mais :
Par contre, chose intéressante, quand j'accède au service sans utiliser le proxy et sans https, pas de problème, les icônes s'affichent correctement !!

La configuration du proxy apache provient de la documentation, rien d'exotique de mon côté.

Avait exactement le même problème.

J'utilise un proxy inverse et l'instance Etherpad est dans un sous-répertoire (/ etherpad). J'ai réussi à faire les choses correctement en ajoutant ce qui suit à ma configuration apache.

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

Je n'ai rien changé dans settings.json.

@skramsa n'a mentionné aucun proxy inverse, donc je ne pense pas que ce soit lié? Skramsa veuillez confirmer qu'il n'y a pas de proxy inverse dans votre configuration.

Avait exactement le même problème.

J'utilise un proxy inverse et l'instance Etherpad est dans un sous-répertoire (/ etherpad). J'ai réussi à faire les choses correctement en ajoutant ce qui suit à ma configuration apache.

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

Je n'ai rien changé dans settings.json.

Pourquoi la règle de relance et de délai d'expiration?

@skramsa n'a mentionné aucun proxy inverse, donc je ne pense pas que ce soit lié? Skramsa veuillez confirmer qu'il n'y a pas de proxy inverse dans votre configuration.

Oui mais @julpec est derrière un proxy, donc j'ai

Avait exactement le même problème.
J'utilise un proxy inverse et l'instance Etherpad est dans un sous-répertoire (/ etherpad). J'ai réussi à faire les choses correctement en ajoutant ce qui suit à ma configuration apache.

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

Je n'ai rien changé dans settings.json.

Pourquoi la règle de relance et de délai d'expiration?

Vous avez raison, je ne pense pas que ce soit nécessaire, je viens de le faire à la hâte hier après la mise à jour;)

@skramsa n'a mentionné aucun proxy inverse, donc je ne pense pas que ce soit lié? Skramsa veuillez confirmer qu'il n'y a pas de proxy inverse dans votre configuration.

Oui mais @julpec est derrière un proxy, donc j'ai

C'est merci

Pour rappel :

Par contre, chose intéressante, quand j'accède au service sans utiliser le proxy et sans https, pas de problème, les icônes s'affichent correctement !!

Dans mon cas, il est évident que c'est lié au proxy.

De plus, je suis en situation de migration de mon instance Etherpad et j'ai migré ma base de données puis j'ai mis à jour Etherpad. J'ai ceci dans les journaux maintenant:

[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

Je ne sais pas si cela peut provoquer des erreurs…

Pour rappel :

Par contre, chose intéressante, quand j'accède au service sans utiliser le proxy et sans https, pas de problème, les icônes s'affichent correctement !!

Dans mon cas, il est évident que c'est lié au proxy.

De plus, je suis en situation de migration de mon instance Etherpad et j'ai migré ma base de données puis j'ai mis à jour Etherpad. J'ai ceci dans les journaux maintenant:

[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
Je ne sais pas si cela peut provoquer des erreurs…

Créez un problème distinct pour cela s'il vous plaît. Il faut y remédier.

J'ai le même problème.
Je suis derrière un proxy inverse (Apache) et j'utilise le dernier conteneur docker (actuellement) (extrait l'image il y a une minute):

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

La barre d'outils ressemble exactement à celle du rapport d'origine. Etherpad est mandaté sous /pad/ , mais les polices sont chargées à partir de /static/ , ce qui entraîne 404 erreurs.

Je préfère ne pas utiliser la solution de contournement de @lucaguindani , car /static/ est un chemin très courant qui est également utilisé par d'autres applications.

Ok, va trier dès que possible. Cela devrait être aujourd'hui, mais peut ne pas être fusionné cette semaine, vous devrez peut-être appliquer un correctif.

Après la semaine de sortie, nous essayons tous de passer du temps avec la famille, etc.

Je ne peux pas reproduire cela avec ma configuration apache. Quelqu'un peut-il coller une configuration Apache offensante?

Testé nginx aussi avec la configuration du wiki et ne peut pas s'y répliquer; /

image

image

Cela me fait penser que vous faites tous l'expérience d'une étrange erreur de configuration / bizarrerie d'Apache. D'où avez-vous tous obtenu votre configuration de sous-répertoire apache? Nous n'en fournissons pas un sur le wiki afaik donc je pense que vous êtes peut-être devenu un voyou? : P

PS Je teste contre develop, qui est à peu près la version atm et la configuration nginx est:

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;
}

J'ai remarqué que tests / frontend / index.html échouaient, ce qui semble étrange

J'ai aussi essayé /pad/foo/p/blah juste pour confirmer qu'il n'y a pas de bogue côté Etherpad et que les choses se passent bien ...

Je ne peux pas reproduire cela avec ma configuration apache. Quelqu'un peut-il coller une configuration Apache offensante?

Voici le mien:

<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>

Génial merci, donnez-moi une heure d'essayer ce soir.

Cela me fait penser que vous faites tous l'expérience d'une étrange erreur de configuration / bizarrerie d'Apache. D'où avez-vous tous obtenu votre configuration de sous-répertoire apache? Nous n'en fournissons pas un sur le wiki afaik donc je pense que vous êtes peut-être devenu un voyou? : P

Ici

Cela me fait penser que vous faites tous l'expérience d'une étrange erreur de configuration / bizarrerie d'Apache. D'où avez-vous tous obtenu votre configuration de sous-répertoire apache? Nous n'en fournissons pas un sur le wiki afaik donc je pense que vous êtes peut-être devenu un voyou? : P

Ici

J'ai regardé là-bas et les exemples ne couvrent pas la mise d'Etherpad dans un sous-répertoire pour Apache ...

image

Utilisation d'une version légèrement modifiée de votre snip

<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

J'ai regardé là-bas et les exemples ne couvrent pas la mise d'Etherpad dans un sous-répertoire pour Apache ...

cela n'a pas de sens. Vous pouvez mettre ce que vous voulez dans la balise d'emplacement. Mais je vais essayer avec vous config et sans "sous-répertoire" tout de suite.
Merci pour vos investigations btw

cela n'a pas de sens. Vous pouvez mettre ce que vous voulez dans la balise d'emplacement. Mais je vais essayer avec vous config et sans "sous-répertoire" tout de suite.

ça n'a pas de sens ... dans mon cerveau. Mais dans le monde réel, c'est ce qui cause le problème!
Bon point: +1:
Cependant, je ne comprends pas pourquoi tout fonctionnait si bien avant, il fonctionne depuis des années derrière un proxy inverse avec cela comme configuration.
J'ai vraiment besoin d'un sous-répertoire car j'ai différents services fonctionnant derrière un "single sign-on" apache.
Serait-il possible d'utiliser autre chose que "/" comme emplacement?

Merci d'avoir travaillé sur ce numéro

Copiez / collez ma configuration ci-dessus, j'utilise un emplacement différent ...

Je ne vois pas la différence avec le mien, à l'exception des paramètres d'authentification.
Je vais essayer maintenant

Copiez / collez ma configuration ci-dessus, j'utilise un emplacement différent ...

toujours le même problème: pas d'affichage des icônes

Version Apache?

Version du serveur: Apache / 2.4.38 (Debian)
Serveur construit: 2019-10-15T19: 53: 42

J'ai enquêté avec l'inspecteur d'éléments et voici ce qu'il me donne comme URL pour les polices:

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

Ça devrait être:

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

Je ne comprends pas pourquoi je n'ai pas le sous-répertoire "pad".

Donc, je suis parti de zéro sur un nouvel hôte.

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

Rien n'a changé dans la configuration d'origine.

Config 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 version Apache est 2.4.29.

Vider le cache du navigateur et le résultat:

image

Bizarre. J'essaierai d'utiliser l'image du docker localement pour voir si cela change les choses

@JohnMcLear c'est vraiment incroyable. J'ai essayé avec exactement la même configuration que vous, sur le port 81, dans un vhost séparé, etc ... et le problème persiste.
Je me suis assuré de vider le cache à chaque fois.

Voici mes versions logicielles:

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

J'ai exactement le même problème. Les icônes sont manquantes lors de l'exécution sur le proxy (nginx) et minify est défini sur true. Dès que j'ai défini minify sur false et que j'ai démarré avec clearRun.sh et que j'ai effacé le cache du navigateur, les icônes fonctionnent. Dans l'ancienne version que nous utilisions depuis un certain temps, cela fonctionnait avec minify: true et cette configuration 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;
        }
}

J'ai découvert que lorsque j'utilise la configuration nginx de @JohnMcLear et que j'utilise la réécriture, cela fonctionnera. Je suppose que ce problème n'apparaît que lorsque nous utilisons un emplacement différent (comme / pad).

Configuration Nginx qui fonctionne:

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 a déclaré que minifier vrai / faux ne change pas le résultat. Op n'a pas non plus mentionné de proxy rev ... Je vérifierai avec minify true quand je rentrerai à la maison.

Confirmé qu'il est causé par minify.

https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150 réclamé minify false n'a fait aucune différence et j'aurais dû me vérifier si c'était le cas.

* facepalm.

Fixera dès que possible.

FWIW Nginx souffre également de cette panne et la panne est présente sur toutes les pages (pad, index, timelider etc).

Le problème vient de notre implémentation de clean-css . Css 3 à 4 a supprimé l'option relativeTo et cette suppression a causé ce bogue. Je suis passé à rebase et rebaseTo dans mon exemple

https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 et est un semi-correctif et https://github.com/JohnMcLear/etherpad-lite/commit/a8c66bebeb813b a8ab8c058bebeb513b2b3b3b3b3b3b3b5b3b3b3b3b3b3b3b5b5b5b5b5b3b5b3b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5 Des icônes apparaîtront mais la police est incorrecte pour certains éléments internes du pad et probablement d'autres éléments.

Des suggestions @jakubpawlowicz @seballot ?

@JohnMcLear une façon de le faire fonctionner pour vous peut être par des transformations arbitraires, voir https://github.com/jakubpawlowicz/clean-css#how -to-apply-arbitrary-transformations-to-css-properties

L'autre idée est de passer les options d'entrée à clean-css via un hachage, voir https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 , par exemple

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

et utilisez l'option rebaseTo , mais sans plus d'informations, je ne peux pas dire si cela fonctionnerait ou non.

Bonne chance!

Fermé ? vraiment ?

OP fermé ... Il ne doit pas être fermé. OP FWIW, vous pouvez cliquer sur ne plus suivre ou vous désabonner ou quelque chose si vous ne voulez pas de bruit.

Ce n'est toujours pas résolu, s'il n'y a pas eu de patch par EOW, je vais essayer de patch.

J'aimerais vraiment voir un correctif communautaire pour cela si quelqu'un peut trouver le temps.

@JohnMcLear J'aimerais vraiment pouvoir aider et prendre le temps là-dessus mais je n'ai aucune compétence de développeur et encore moins en nodejs. J'espère que d'autres pourront le faire. Je ne peux que vous soutenir avec mes pensées…

Bien que j'apprécie, vos pensées ne changent pas les couches;)

bosse @seballot

Salut, je n'ai pas beaucoup d'idée sur celui-ci désolé ... Y a-t-il moyen de le reproduire localement?

  1. clone git develop
  2. transformez minify en true
  3. Exécutez Etherpad et visitez un pad (assurez-vous que tout fonctionne)
  4. installer nginx
  5. Copiez ce qui suit dans / 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. Redémarrez nginx
    http://127.0.0.1 : 9001 / p / blah devient http://127.0.0.1/pad/foo/p/blah
  2. Ouvrez http://127.0.0.1/pad/foo/p/blah dans le navigateur
  3. Cliquez sur l'onglet réseau dans le navigateur et notez que les polices internes iframe 404. Cela est dû au fait que @import passe le bon chemin mais que cleanCSS réécrit (à juste titre) en ../../../ - ma compréhension est cela parce que le pad et l'éditeur utilisent le même @ font.css et qu'ils ont tous deux des chemins de base différents? alors on travaille et on ne le fait pas à la minification. Je ne peux pas penser à une solution élégante mais je pense que vous pourriez le faire?

@seballot un copain de progrès?

Non désolé, je ne trouve pas de solution ...

Moi non plus, le cleanCSS fait de la magie que je ne comprends tout simplement pas (je ne suis pas un gars de CSS) et aucune de mes instances ne fonctionne dans des sous-répertoires, donc ce n'est pas intéressant pour moi d'apprendre non plus

Je ne veux pas, mais je devrai peut-être remplacer cleanCSS par csso car je peux faire fonctionner csso mais je pense qu'en fin de compte, je ne résout pas le problème correctement et csso n'est pas aussi performant que cleanCSS pour notre cas d'utilisation .

J'ai rencontré le développeur cleanCSS pour voir si nous pouvons collaborer pour corriger :)

agréable ! si cela fonctionne bien avec csso, pourquoi ne pas y aller?

csso réduit mais ne réduit pas le nombre de chargements de page. De plus, je préfère cleanCSS en tant que projet / documents, etc. et cela ne me dérange pas de jeter des ressources sur un bon projet, cela signifie que je peux me concentrer sur des entreprises spécifiques à Ether

Je suis confronté au même problème que dans ce fil.

  • Etherpad installé à partir du référentiel git et lorsque je mets ./bin/run.sh et que j'ouvre le port 9001 sur localhost, l'installation est bonne et les icônes sont correctement affichées.
  • Quand j'exécute ceci sur le serveur nginx, (qui exécute également jitsi), je ne vois pas les icônes de barre d'outils. Tout le reste semble bien fonctionner.

Quelqu'un peut-il me guider sur la manière de contourner ce problème. Il n'y a pas de changements majeurs dans le fichier settings.json.

La solution de contournement consiste à définir minify sur false dans settings.json

J'essaierai de jeter un œil ce soir.

J'ai pu reproduire le problème en utilisant la configuration nginx donnée par John dans https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151 dans ce même numéro.

Je pense qu'il y a un problème à la fois dans la configuration publiée de Nginx et dans le code d'Etherpad.

Plus de détails plus tard.

Je viens de passer 2 secondes à regarder le code nginx et il ne devrait pas avoir de configuration pour /static car il est dans le copier / coller que j'ai fait, mais la racine du problème est profondément dans cleanCSS ...

Nous avons plusieurs problèmes ici.

  1. le fichier de configuration de test Nginx avait la mauvaise redirection pour /static . Toute la section location /static doit être supprimée d' ici . Dans la tempête de courriels reçue ces jours-ci, je pense me rappeler qu'un utilisateur s'est plaint - en fait - que /static allait entrer en conflit avec beaucoup d'autres applications Web . Il a probablement été induit en erreur par un exemple similaire à celui-ci;

    Cela doit être corrigé en passant par la documentation (le wiki? Quelque chose d'autre sur Internet?) Et en améliorant la qualité des exemples .

  2. 4177b3f9434e a déplacé les déclarations font-face de src/static/css/pad.css vers deux fichiers importés ( src/static/css/pad/fonts.css et src/static/css/pad/toolbar.css ) dans un répertoire différent, et les URL dans src sont relatifs au chemin de la feuille de style ;

  3. en plus de cela, après la fusion de 95fd5ce2a45e pour le prochain 1.8.4 , nous aurions un problème d'obsolescence du cache qui doit également être résolu.

Je fais des tests et je prépare un PR.

Ouverture du n ° 4002 pour résoudre ce problème. Un grand merci à @JohnMcLear pour le travail préliminaire.

@skramsa , @julpec , @lucaguindani , @ashishhari (et John, évidemment): est-ce que quelqu'un d'entre vous est en mesure de tester ce PR pour voir si cela fonctionne pour lui? Je souhaite une validation indépendante, si possible.

Veuillez également noter que la configuration du proxy inverse ne nécessite aucune règle spéciale pour "/ static".

Merci de votre reconnaissance. Définir minify sur false n'a pas résolu le
problème pour moi.
J'utilise ceci sur une installation jitsi sur une instance AWS EC2, et là
est un serveur nginx utilisé pour héberger jitsi et aussi pour démarrer le nœud
serveur pour le service etherpad sur la même machine sur le port 9001.

Cela signifie-t-il que je devrai peut-être modifier un autre paramètre nginx? (Je ne
comprendre correctement le proxy inverse, mais cela pourrait-il être le cas?), Ou
il suffit d'attendre que le correctif soit disponible.

Le jeudi 14 mai 2020 à 06h07, muxator [email protected] a écrit:

Nous avons plusieurs problèmes ici.

1.

le fichier de configuration de test Nginx avait la mauvaise redirection pour / static. le
l'emplacement entier / section statique doit être supprimé d'ici
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151 .
Dans la tempête de courriel reçu au cours de ces jours, je pense de se rappeler qu'unl'utilisateur s'est plaint - en effet - que / static allait entrer en conflit avec beaucoup ded'autres applications Web . Il a probablement été induit en erreur par un exemple similaire
à celui-ci;

Cela doit être corrigé en passant par la documentation (le wiki?
Quelque chose d'autre sur internet?) Et d' améliorer la qualité duexemples .
2.

4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
déplacé les déclarations font-face de src / static / css / pad.css vers deux
fichiers importés (src / static / css / pad / fonts.css et
src / static / css / pad / toolbar.css) dans un répertoire différent et les URL dans
src sont relatifs au chemin de la feuille de style
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
3.

en plus de cela, après la fusion de 95fd5ce
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
pour la prochaine 1.8.4 , nous aurions un problème d'obsolescence du cache
cela doit également être résolu.

Je fais des tests et je prépare un PR.

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.

@skramsa , @julpec , @lucaguindani , @ashishhari (et John, évidemment): est-ce que quelqu'un d'entre vous est en mesure de tester ce PR pour voir si cela fonctionne pour lui? Je souhaite une validation indépendante, si possible.

Ok pour moi de tester. Je n'ai pas de configuration spéciale pour static .

Merci de votre reconnaissance. Définir minify sur false n'a pas résolu le problème pour moi.

Mais cela fonctionne pour moi. Sous Apache, je suis passé à false et tout a commencé à fonctionner correctement.

Je peux le tester.

Le jeudi 14 mai 2020 à 13h30, julpec [email protected] a écrit:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (et John, évidemment): est quelqu'un de vous
dans la position de tester ce PR pour voir si cela fonctionne pour eux? je voudrais
comme une validation indépendante, si possible.

Ok pour moi de tester. Je n'ai pas de configuration spéciale pour statique.

Merci de votre reconnaissance. Définir minify sur false n'a pas résolu le
problème pour moi.

Mais cela fonctionne pour moi. Sous apache, je suis passé à faux et tout
a commencé à bien fonctionner.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Confirmer également -> définir minify sur false fonctionnait correctement sur mon système.
(Je n'ai probablement pas redémarré le service correctement la dernière fois).

Le jeudi 14 mai 2020 à 13h30, julpec [email protected] a écrit:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (et John, évidemment): est quelqu'un de vous
dans la position de tester ce PR pour voir si cela fonctionne pour eux? je voudrais
comme une validation indépendante, si possible.

Ok pour moi de tester. Je n'ai pas de configuration spéciale pour statique.

Merci de votre reconnaissance. Définir minify sur false n'a pas résolu le
problème pour moi.

Mais cela fonctionne pour moi. Sous apache, je suis passé à faux et tout
a commencé à bien fonctionner.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Mais cela fonctionne pour moi. Sous Apache, je suis passé à false et tout a commencé à fonctionner correctement.
Confirmer également -> définir minify sur false fonctionnait correctement sur mon système.

@julpec , @ashishhari : définir minify = false est une solution de contournement connue.
L'espoir est maintenant de voir si # 4002 corrige le bogue lorsque minify = true.

La procédure serait la suivante, ne le faites que si toutes les étapes sont claires pour vous:

Commencez à répliquer le bogue:

  • assurer minify = true en settings.json
  • redémarrer Etherapd
  • visitez la page Etherpad et vérifiez que les icônes de la barre d'outils ne sont

Essayez le correctif:

  • garder minify = true en settings.json
  • appliquer # 4002 (ne le faites que si vous êtes à l'aise avec)
  • redémarrer Etherpad
  • visitez la page Etherpad et vérifiez si les icônes de la barre d'outils sont maintenant correctement affichées

Je voudrais mais je ne connais pas la marche à suivre pour appliquer le PR :(

Merci @muxator je vais tester dans l'heure.

Oh wow, je n'aurais jamais trouvé cette solution! C'est dingue.

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

Pour ceux qui souhaitent également tester.

après le test, n'oubliez pas de git checkout develop sinon vous serez dans la branche obsolète des mux

merci, je vais tester cet après-midi

Hrm Je pense que quelque chose n'est pas tout à fait performant @muxator .. Je vois ~ 54 requêtes, contre ~ 49 (sur develop actuel) - Notez que j'ai des plugins activés donnant des requêtes supplémentaires. Donc, ce PR serait une régression des performances de chargement de page pour satisfaire un cas d'utilisation non documenté / non pris en charge qui n'est pas acceptable à mon humble avis.

image

Notez les multiples requêtes pour le même fichier ... :( C'est defo progress mais plusieurs requêtes pour le même fichier ne sont pas la solution que nous recherchons.

les demandes multiples proviennent de l'iframe différent je pense. La page principale et l'iframe de l'éditeur ont besoin de la police, cela a toujours été comme ça non?

afaik cleanCSS a été utilisé pour résoudre ce problème @seballot

ça a toujours été comme ça non?

Oui, c'était toujours comme ça.

Je pense que cleanCss était plus pour éviter de charger chaque partiel css (pad / popups.css, pad / editbar.css, pad / chat.css ...), et à la place charger un seul pad.css

Mais en utilisant iframe, le navigateur est obligé de demander deux fois chaque partage de fichiers avec l'iframe. Mais le deuxième appel doit utiliser le cache local ("chargé depuis le cache")

J'ai appliqué la pull request et cela fonctionne sans aucun problème (avec apache)

Merci @julpec.

Ce soir, je vais essayer de répondre au nombre de demandes soulevées par

Impressionnant mux tnx

Existe-t-il un moyen de télécharger des fichiers HAR quelque part dans Github? J'ai testé le # 4002 et je suis prêt à partager les enregistrements, mais je ne sais pas où les télécharger.

Éléments communs:

  • visité http: // localhost : 9001 / p / ciao
  • pas de proxy inverse
  • mode de production: faux
  • commencer avec un cache de navigateur vide

Variables:

  • version: 4816785aef45 par rapport à # 4002
  • cache: froid ( premier chargement ) vs chaud (> = 2e chargement )
  • minify: vrai vs faux
  • navigateur: chrome 81 vs firefox 76

Ce sont quatre variables binaires -> 2 ^ 4 = 16 possibilités .
Cela a pris beaucoup de temps!

Voici les cas les plus pertinents:
| Description | développement actuel (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, minifié, premier chargement | 34 requêtes
1,61 Mo
1,61 Mo transférés | 36 requêtes
1,61 Mo
1,53 Mo transférés |
| Firefox, minifié, hot cache | 29 requêtes
1,12 Mo
216 Ko transférés | 31 requêtes
1,18 Mo
216 KB transférés |
| Chrome, minifié, premier chargement | 44 requêtes
2,0 Mo
1,5 Mo transférés | 109 richieste
3,0 Mo
1,1 Mo transférés |
| Chrome, minifié, hot cache | 45 requêtes
2,2 Mo
5,7 KB transférés | 129 requêtes
4,7 Mo
4,7 KB transférés |

L'essentiel est:

  • Chrome et Firefox ont une manière complètement différente de mesurer leur trafic
  • PR # 4002 introduit plus de requêtes sur le serveur
  • Le taux de réussite du cache s'améliore : la colonne transférée diminue!
  • Les temps de charge restent les mêmes, dans les limites du bruit de mesure

Ce sont aussi mes conclusions, j'ai également pris le temps de rechercher des outils de profilage des performances de vitesse de chargement des pages (au-delà des outils de développement) et j'ai décidé que si les outils de développement ne me donnaient pas un écart significatif par rapport à une moyenne, les résultats étaient suffisamment adaptés à notre application.

La diminution de la taille totale du transfert est clairement une bonne chose, mais la surcharge des requêtes http peut être coûteuse en raison de la latence. Nous pouvons fusionner cela, mais gardez à l'esprit que lorsque nous réécrivons le front-end (ce qui semble inévitable en raison de tous les JS en ligne qui devront finalement être déplacés), c'est un domaine que nous devons nous efforcer d'améliorer.

Tout compte fait, Etherpad est excellent par rapport à la plupart des autres dans le domaine de ce domaine, l'exception étant Google docs qui est la référence en matière de "temps d'édition" absolument scandaleusement rapide qui dans ce monde est roi, pas de "chargement" de fin de page.

Donc TLDR; Fusionner @muxator - ce thread existe en tant que ressource pour ceux qui cherchent à optimiser pour les instances Etherpad PAS dans les sous-dossiers.

bon travail !

+1 tnx!

: +1:

Cette page vous a été utile?
0 / 5 - 0 notes