Etherpad-lite: Os ícones da barra de ferramentas não aparecem após a atualização (1.6.2 -> 1.8.3) ao expor em um subdiretório por meio de um proxy reverso e minify = true

Criado em 28 abr. 2020  ·  110Comentários  ·  Fonte: ether/etherpad-lite

image

Os ícones da barra de ferramentas não são exibidos e recebo erros de família de fontes ausentes, mas estão todos em suas pastas, nada foi alterado. Você pode me ajudar a resolver esse problema?

PEGUE/static/font/Roboto-Regular.ttf net :: ERR_ABORTED 404 (não encontrado)

Eu consigo isso para todas as famílias de fontes.

Bug Special case Bug UI express server

Comentários muito úteis

Tive exatamente o mesmo problema.

Eu uso um proxy reverso e a instância do Etherpad está em um subdiretório (/ etherpad). Consegui fazer a coisa certa adicionando o seguinte à minha configuração do apache.

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

Eu não mudei nada em settings.json.

Todos 110 comentários

Por favor forneça detalhes.

Você está executando por meio de proxy reverso?
Você está executando em modo de desenvolvimento ou produção.
Reduzido?
Cópia protegida ou seu settings.json
Etc.

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

Está sendo executado no modo de desenvolvimento, embora o serviço systemd tenha "Environment = NODE_ENV = production", sem proxy reverso, o css está minimizado, settings.json quase não é tocado (apenas mysql e admin pw são alterados).

Parece que o etherpad não carrega todas as fontes porque olha/static/font/*.ttf em vez de/ etherpad / src / static / font /

Tente transformar minify em false e maxage em 0 em settings.json

Eu fiz nada mudou

No meu laptop agora, talvez possa ajudar mais. A coisa mais útil é obter seu settings.json (mas remover todas as senhas). Você pode fornecer isso, por favor?

FWIW Eu testei 1.6. *> 1.8.3 e não experimentei isso, mas pode estar relacionado ao seu settings.json ter algum cruft legado em:!

Se você não quiser fornecer configurações, uma coisa a fazer é:

cp settings.json settings.backup.json
cp settings.json.template settings.json
Em seguida, copie seu host / usuário / senha do banco de dados de settings.backup.json para settings.json

Reinicie e veja se está corrigido.

/*
  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, legal, me dê 2 minutos.

Não, isso não replicou, os botões da barra de ferramentas existem para mim.

Esta instância é pública que eu posso acessar? sinta-se à vontade para me enviar um e-mail URL [email protected]

Pergunta estúpida ..

  • [x] Limpar o cache do navegador?
  • [x] Tente executar usando bin/run.sh

Obrigado!

Infelizmente, não é uma instância pública.
Substituí o settings.json pelo novo template, também mudei o skin para no-skin. ainda sem sucesso ..
E sim, executei run.sh, reiniciei o serviço e limpei o dinheiro :)

Este é o serviço systemd btw:
[Unidade]
Descrição = Etherpad
Depois de = syslog.target network.target

[Serviço]
Tipo = simples
User = etherpad
Grupo = etherpad
WorkingDirectory = / opt / etherpad
Ambiente = NODE_ENV = produção
ExecStart = / opt / etherpad / bin / run.sh
Reiniciar = sempre

[Instalar]
WantedBy = multi-user.target

Como você instalou? Você git clone ou pegou o arquivo .zip lançado e descompactou?

URL do pedido: 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

Tudo parece bem para mim.

Eu instalei através do clone git, ou melhor, atualizei. Acredito que tenha sido instalado há alguns anos (por outro administrador) através do zip unpack. Usei o rsync para atualizar tudo

Ah, eu me pergunto se o último administrador colocou alguns hacks? se você git status , você vê algum arquivo modificado?

O que acontece se você clona um repositório novo e copia o settings.json? Isso vai funcionar, mas obviamente não está resolvendo o problema de que algo está estranho ..

Eu vou fazer isso agora. sim, é muito estranho .. como se a pasta raiz para as fontes não fosse a mesma que o etherpad

O código está certo aliás. src / é a pasta raiz.

Acho que o administrador anterior hackeou algo, não posso dizer o quê sem ver um diff git. Podemos fechar isso agora?

o administrador anterior não usava git (não foi instalado), ainda não funciona após a clonagem limpa ..

@skramsa lulwut. Limpe completamente o clone e execute e não funcione? :! Tenho a sensação de que algo está estranho com sua configuração .. Algum erro ou aviso no log?

E se você fizer um clone completamente limpo e não alterar nenhuma configuração? Ainda falha então?

Alguma chance de você torná-lo público temporariamente para que eu depure?

não, está em uma intranet protegida .. a atualização do nó 6 para o 12 pode ter algo a ver com isso?

Não tenho certeza .. Não tenho certeza de outras etapas de depuração aqui ..

A única pista que tenho é ..
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429

Mas você disse que limpou todo o cache e fez uma execução limpa.

Você desativou o Minify, rm -Rf src/node_modules && rm src/package-lock.json então executou bin/run.sh sim? Quer dizer, você fez um clone limpo; \

Quais são seus valores de git sha , npm --version e nodejs version ?

npm é 6.14.4 e node -v é 12.16.2. pergunta estúpida, mas o que exatamente você quer dizer com "meu" git sha?

Rolei para 1.6.2 e defini minify como false e de repente ele funciona novamente (antes nem mesmo os ícones da versão antiga funcionavam). Isso é um alívio .. Vou tentar fazer outra configuração limpa na próxima semana com essas configurações, talvez desta vez funcione: D Muito obrigado pela ajuda !!

Na pasta do seu etherpad, digite git rev-parse HEAD

Eu quero ver em qual commit você está.

Olá
Eu tenho exatamente o mesmo problema, exceto que estou atrás de um proxy.
Fiz um teste salvando minha instalação e clonando o repositório. Então, simplesmente copiei meu arquivo de configuração e reiniciei o serviço.
Ainda tenho o mesmo problema, apesar da nova instalação.

Mas :
Por outro lado, coisa interessante, quando eu acesso o serviço sem usar o proxy e sem https, sem problemas, os ícones são exibidos corretamente !!

A configuração do proxy apache vem da documentação, nada de exótico do meu lado.

Tive exatamente o mesmo problema.

Eu uso um proxy reverso e a instância do Etherpad está em um subdiretório (/ etherpad). Consegui fazer a coisa certa adicionando o seguinte à minha configuração do apache.

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

Eu não mudei nada em settings.json.

@skramsa não mencionou nenhum proxy reverso, então não acho que esteja relacionado. Skramsa, confirme se não há proxy reverso em sua configuração.

Tive exatamente o mesmo problema.

Eu uso um proxy reverso e a instância do Etherpad está em um subdiretório (/ etherpad). Consegui fazer a coisa certa adicionando o seguinte à minha configuração do apache.

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

Eu não mudei nada em settings.json.

Por que a regra de repetição e tempo limite?

@skramsa não mencionou nenhum proxy reverso, então não acho que esteja relacionado. Skramsa, confirme se não há proxy reverso em sua configuração.

Sim, mas @julpec está atrás de um proxy, então achei que poderia ser útil;)

Tive exatamente o mesmo problema.
Eu uso um proxy reverso e a instância do Etherpad está em um subdiretório (/ etherpad). Consegui fazer a coisa certa adicionando o seguinte à minha configuração do apache.

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

Eu não mudei nada em settings.json.

Por que a regra de repetição e tempo limite?

Você está certo, acho que não é necessário, só fiz isso com pressa ontem após a atualização;)

@skramsa não mencionou nenhum proxy reverso, então não acho que esteja relacionado. Skramsa, confirme se não há proxy reverso em sua configuração.

Sim, mas @julpec está atrás de um proxy, então achei que poderia ser útil;)

É obrigado

Como um lembrete:

Por outro lado, coisa interessante, quando eu acesso o serviço sem usar o proxy e sem https, sem problemas, os ícones são exibidos corretamente !!

No meu caso, é óbvio que está relacionado ao proxy.

Além disso, estou em uma situação de migração da minha instância do Etherpad e migrei meu banco de dados e depois disso atualizei o Etherpad. Eu tenho isso saindo nos registros agora:

[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

Não sei se isso pode causar erros ...

Como um lembrete:

Por outro lado, coisa interessante, quando eu acesso o serviço sem usar o proxy e sem https, sem problemas, os ícones são exibidos corretamente !!

No meu caso, é óbvio que está relacionado ao proxy.

Além disso, estou em uma situação de migração da minha instância do Etherpad e migrei meu banco de dados e depois disso atualizei o Etherpad. Eu tenho isso saindo nos registros agora:

[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
Não sei se isso pode causar erros ...

Crie um problema separado para isso, por favor. Ele precisa ser tratado.

Eu tenho o mesmo problema.
Estou atrás de um proxy reverso (Apache) e estou usando o (atualmente) contêiner do docker mais recente (extraiu a imagem um minuto atrás):

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

A barra de ferramentas é exatamente igual ao relatório original. Etherpad é proxy em /pad/ , mas as fontes são carregadas de /static/ , o que resulta em erros 404.

Prefiro não usar a solução alternativa de @lucaguindani , porque /static/ é um caminho muito comum que também é usado por outros aplicativos.

Ok, classificarei o mais rápido possível. Deve ser hoje, pode não ser mesclado esta semana, então vocês podem precisar aplicar um patch.

Após a semana de lançamento, estamos todos tentando passar um tempo com a família etc.

Não consigo replicar isso com minha configuração do apache. Alguém pode colar uma configuração do apache ofensiva?

Nginx testado também com a configuração do wiki e não pode ser replicado; /

image

image

Me faz pensar que vocês estão passando por um estranho erro de configuração / peculiaridade do Apache. De onde todos vocês obtiveram sua configuração de subdiretório apache? Nós não fornecemos um no wiki afaik, então eu acho que talvez vocês tenham se rebelado? : P

PS Estou testando em relação ao Develop, que é basicamente release atm e a configuração do nginx é:

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

Eu percebi que os testes / frontend / index.html falham, o que parece estranho

Eu também experimentei /pad/foo/p/blah apenas para confirmar que não há bug do Etherpad e as coisas parecem bem ...

Não consigo replicar isso com minha configuração do apache. Alguém pode colar uma configuração do apache ofensiva?

Aqui é minha:

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

Incrivelmente obrigado, dê-me uma hora para tentar esta noite

Me faz pensar que vocês estão passando por um estranho erro de configuração / peculiaridade do Apache. De onde todos vocês obtiveram sua configuração de subdiretório apache? Nós não fornecemos um no wiki afaik, então eu acho que talvez vocês tenham se rebelado? : P

Aqui

Me faz pensar que vocês estão passando por um estranho erro de configuração / peculiaridade do Apache. De onde todos vocês obtiveram sua configuração de subdiretório apache? Nós não fornecemos um no wiki afaik, então eu acho que talvez vocês tenham se rebelado? : P

Aqui

Eu olhei lá e os exemplos não cobrem a colocação do Etherpad em um subdiretório do Apache ...

image

Usando uma versão ligeiramente modificada do seu 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

Eu olhei lá e os exemplos não cobrem a colocação do Etherpad em um subdiretório do Apache ...

não faz sentido. Você pode colocar o que quiser na etiqueta de localização. Mas vou tentar com você config e sem "subdiretório" agora.
Obrigado por suas investigações btw

não faz sentido. Você pode colocar o que quiser na etiqueta de localização. Mas vou tentar com você config e sem "subdiretório" agora.

não faz sentido ... no meu cérebro. Mas no mundo real é isso que está causando o problema!
Bom ponto: +1:
No entanto, não entendo por que tudo funcionava tão bem antes, ele funciona há anos atrás de um proxy reverso com isso como uma configuração.
Eu realmente preciso de um subdiretório, pois tenho diferentes serviços em execução por trás de um "logon único" do apache.
Seria possível usar algo diferente de "/" como local?

Obrigado pelo seu trabalho neste problema

Copie / cole minha configuração acima, eu uso um local diferente ...

Não vejo diferença com o meu, exceto para as configurações de autenticação.
Vou tentar agora

Copie / cole minha configuração acima, eu uso um local diferente ...

continua o mesmo problema: nenhuma exibição de ícones

Versão do Apache?

Versão do servidor: Apache / 2.4.38 (Debian)
Servidor construído: 15/10/2019 T19: 53: 42

Eu investiguei com o inspetor de elementos e isso é o que ele me dá como URL para as fontes:

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

Deveria ser:

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

Não consigo entender por que não tenho o subdiretório "pad".

Então, comecei do zero em um novo 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 mudou na configuração original.

Configuração do 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>

A versão do Apache é 2.4.29.

Limpei o cache do navegador e o resultado:

image

Esquisito. Vou tentar usar a imagem do docker localmente para ver se isso muda as coisas

@JohnMcLear é realmente inacreditável. Tentei exatamente com a mesma configuração que você, na porta 81, em um vhost separado, etc ... e o problema ainda ocorre.
Sempre esvaziei o cache.

Aqui estão minhas versões de software:

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

Eu tenho exatamente a mesma questão. Os ícones estão faltando ao executar o proxy (nginx) e minify está definido como verdadeiro. Assim que defino minify como false e inicio com clearRun.sh e limpo o cache do navegador, os ícones estão funcionando. Na versão mais antiga que usamos por algum tempo, ele estava trabalhando com minify: true e esta configuração 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;
        }
}

Eu descobri, quando eu uso a configuração nginx de @JohnMcLear e uso reescrever, ela vai funcionar. Acho que esse problema só aparece quando usamos um local diferente (como / pad).

Configuração do 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 disse que reduzir verdadeiro / falso não altera o resultado. Op também não mencionou nenhum proxy rev .... Vou verificar com minify true quando chegar em casa.

Confirmado que é causado por minify.

https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150 reivindicou minify false não fez diferença e eu deveria ter verificado se era esse o caso.

* facepalm.

Irá consertar o mais rápido possível.

FWIW Nginx também sofre com esta falha e a falha está presente em todas as páginas (pad, índice, timeslider etc).

O problema é com nossa implementação de clean-css . Css 3 a 4 removeu a opção relativeTo e esta remoção causou este bug. Mudei para rebase e rebaseTo no meu exemplo

https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 e é um semi-fixo e https://github.com/JohnMcLear/etherpad-lite/commit/af70dbe7 def513b058e7b513b058 Os ícones aparecerão, mas a fonte está errada para alguns componentes internos do teclado e provavelmente outros itens.

Alguma sugestão @jakubpawlowicz @seballot ?

@JohnMcLear uma maneira de fazer funcionar para você pode ser por meio de transformações arbitrárias, consulte https://github.com/jakubpawlowicz/clean-css#how -to-apply-arbitrary-transformations-to-css-properties

A outra ideia é passar opções de entrada para clean-css por meio de um hash, consulte https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 , por exemplo

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

e usar a opção rebaseTo , mas sem maiores informações não posso dizer se funcionaria ou não.

Boa sorte!

Fechadas ? mesmo ?

OP fechado ... Não deve ser fechado. OP FWIW você pode clicar em deixar de seguir ou cancelar ou algo se não quiser barulho.

Isso ainda não está resolvido, se não tiver um patch do EOW vou tentar patchear.

Eu realmente gostaria de ver um patch da comunidade para isso, se alguém puder, por favor, encontrar tempo.

@JohnMcLear Eu realmente gostaria de poder ajudar e

Embora aprecie isso, seus pensamentos não mudam as fraldas;)

bump @seballot

Olá, não tenho muita ideia sobre este, desculpe ... Existe uma maneira de reproduzi-lo localmente?

  1. clone git develop
  2. transformar minify em true
  3. Execute o Etherpad e visite um pad (garantindo que as coisas estão funcionando)
  4. instalar nginx
  5. Copie o abaixo para / 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. Reinicie o nginx
    http://127.0.0.1 : 9001 / p / blah torna-se http://127.0.0.1/pad/foo/p/blah
  2. Abra http://127.0.0.1/pad/foo/p/blah no navegador
  3. Clique na guia rede no navegador e observe que as fontes internas do iframe 404. Isso se deve ao @import passando o caminho certo, mas cleanCSS reescrevendo-o (com razão) para ../../../ - meu entendimento é isso porque o pad e o editor usam o mesmo @ font.css e ambos têm? basesPaths diferentes? então um trabalha e outro não na minimização. Não consigo pensar em uma solução elegante, mas acho que você pode conseguir.

@seballot algum progresso, amigo?

Não, desculpe, não consigo encontrar uma solução ...

Nem eu, o cleanCSS está fazendo alguma mágica que eu simplesmente não entendo (não sou um cara de CSS) e nenhuma das minhas instâncias é executada em subdiretórios, então não é interessante para mim aprender também

Não quero, mas posso precisar substituir cleanCSS por csso porque posso fazer o csso funcionar, mas acho que, no final das contas, não estou resolvendo o problema de maneira adequada e o csso não é nem de perto tão bom quanto o cleanCSS para nosso caso de uso .

Eu esbarrei no cleanCSS dev para ver se podemos colaborar para consertar :)

bom ! se funciona bem com o csso, por que não continuar?

csso minimiza, mas não reduz o número de carregamentos de página. Também prefiro cleanCSS como um projeto / docs etc. e não me importo em investir alguns recursos em um bom projeto, isso significa que posso me concentrar em empreendimentos específicos do Ether

Estou enfrentando o mesmo problema que neste tópico.

  • O etherpad instalado a partir do repositório git e quando eu don ./bin/run.sh e abro a porta 9001 no localhost, a instalação é boa e os ícones são exibidos corretamente.
  • Quando eu executo isso no servidor nginx, (que também está executando o jitsi), não vejo os ícones da barra de ferramentas. Todo o resto parece funcionar muito bem.

Alguém pode me orientar como posso contornar esse problema. Não há grandes mudanças no arquivo settings.json.

A solução alternativa é definir minify para false em settings.json

Vou tentar dar uma olhada esta noite.

Consegui replicar o problema usando a configuração nginx fornecida por John em https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151 neste mesmo problema.

Acho que há um problema tanto na configuração do Nginx postada quanto no código do Etherpad.

Mais detalhes depois.

Acabei de passar 2 segundos olhando para o código nginx e não deveria ter configuração para /static como está no copiar / colar que fiz, mas a raiz do problema está profundamente dentro do cleanCSS ...

Temos vários problemas acontecendo aqui.

  1. o arquivo de configuração Nginx de teste teve o redirecionamento errado para /static . Toda a seção location /static deve ser excluída daqui . Na tempestade de e-mails recebidos durante esses dias, acho que para lembrar que um usuário reclamou - de fato - que /static entraria em conflito com vários outros aplicativos da web . Provavelmente ele foi enganado por um exemplo semelhante a este;

    Isso tem que ser corrigido examinando a documentação (o wiki? Algum outro lugar na internet?) E melhorando a qualidade dos exemplos .

  2. 4177b3f9434e moveu as declarações font-face de src/static/css/pad.css para dois arquivos importados ( src/static/css/pad/fonts.css e src/static/css/pad/toolbar.css ) em um diretório diferente e URLs em src são relativos ao caminho da folha de estilo ;

  3. além disso, após mesclar 95fd5ce2a45e para o próximo 1.8.4 , teríamos um problema de desatualização de cache que também precisa ser resolvido.

Estou fazendo alguns testes e preparando um PR.

# 4002 aberto para corrigir esse problema. Muito obrigado a @JohnMcLear pelo trabalho preliminar.

@skramsa , @julpec , @lucaguindani , @ashishhari (e John, obviamente): alguém de vocês está na posição de testar aquele PR para ver se funciona para eles? Eu gostaria de uma validação independente, se possível.

Observe também que a configuração do proxy reverso não precisa de nenhuma regra especial para "/ estático".

Obrigado por reconhecer. Definir minify para false não resolveu o
problema para mim.
Estou usando isso em uma instalação jitsi em uma instância AWS EC2, e lá
é um servidor nginx sendo usado para hospedar jitsi e também para iniciar o nó
servidor para serviço etherpad na mesma máquina na porta 9001.

Isso significa que posso precisar ajustar alguma outra configuração do nginx? (Eu não
entende o proxy reverso corretamente, mas poderia ser esse o caso?), Ou eu
só precisa esperar que a correção esteja disponível.

Na quinta-feira, 14 de maio de 2020 às 6h07, muxator [email protected] escreveu:

Temos vários problemas acontecendo aqui.

1

o arquivo de configuração do Nginx de teste teve o redirecionamento incorreto para / estático. o
toda a localização / seção estática deve ser excluída daqui
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151 .
Na tempestade de e-mails recebidos durante esses dias, acho que para lembrar que umo usuário reclamou - na verdade - que / static iria colidir com muitosoutros aplicativos da web . Provavelmente ele foi enganado por um exemplo semelhante
para este;

Isso tem que ser consertado através da documentação (o wiki?
Algum outro lugar na internet?) E melhorando a qualidade doexemplos .
2

4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
moveu as declarações de face de fonte de src / static / css / pad.css para dois
arquivos importados (src / static / css / pad / fonts.css e
src / static / css / pad / toolbar.css) em um diretório diferente e URLs em
src são relativos ao caminho da folha de estilo
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
3 -

além disso, após mesclar 95fd5ce
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
para o próximo 1.8.4 , teríamos um problema de desatualização do cache
isso também precisa ser tratado.

Estou fazendo alguns testes e preparando um PR.

-
Você está recebendo isso porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
ou cancelar
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.

@skramsa , @julpec , @lucaguindani , @ashishhari (e John, obviamente): alguém de vocês está na posição de testar aquele PR para ver se funciona para eles? Eu gostaria de uma validação independente, se possível.

Ok para eu testar. Não tenho configuração especial para static .

Obrigado por reconhecer. Definir minify como false não resolveu o problema para mim.

Mas funciona para mim. No apache, mudei para false e tudo começou a funcionar bem.

Eu posso testar.

Em Qui, 14 de maio de 2020 às 13:30 julpec [email protected] escreveu:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (e John, obviamente): é alguém de vocês
na posição de testar esse PR para ver se funciona para eles? Eu gostaria
como uma validação independente, se possível.

Ok para eu testar. Não tenho configuração especial para estática.

Obrigado por reconhecer. Definir minify para false não resolveu o
problema para mim.

Mas funciona para mim. No apache, mudei para falso e tudo mais
começou a funcionar bem.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
ou cancelar
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Também confirmar -> definir minify como false funcionou corretamente no meu sistema.
(provavelmente não reiniciei o serviço corretamente da última vez).

Em Qui, 14 de maio de 2020 às 13:30 julpec [email protected] escreveu:

@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (e John, obviamente): é alguém de vocês
na posição de testar esse PR para ver se funciona para eles? Eu gostaria
como uma validação independente, se possível.

Ok para eu testar. Não tenho configuração especial para estática.

Obrigado por reconhecer. Definir minify para false não resolveu o
problema para mim.

Mas funciona para mim. No apache, mudei para falso e tudo mais
começou a funcionar bem.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
ou cancelar
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.

Mas funciona para mim. No apache, mudei para false e tudo começou a funcionar bem.
Também confirmar -> definir minify como false funcionou corretamente no meu sistema.

@julpec , @ashishhari : definir minify = false é uma solução alternativa conhecida.
A esperança agora é ver se # 4002 corrige o bug quando minify = true.

O procedimento seria o seguinte, faça isso apenas se todas as etapas estiverem claras para você:

Comece a replicar o bug:

  • garantir minify = true em settings.json
  • reinicie o Etherapd
  • visite a página Etherpad e verifique se os ícones da barra de ferramentas não são mostrados

Experimente a correção:

  • mantenha minify = true em settings.json
  • aplique # 4002 (faça isso apenas se você se sentir confortável com isso)
  • reinicie o Etherpad
  • visite a página Etherpad e verifique se os ícones da barra de ferramentas agora são mostrados corretamente

Eu gostaria, mas não sei o procedimento para aplicar o PR :(

Obrigado @muxator vou testar dentro de uma hora.

Oh, uau, eu nunca teria pensado nisso! Isso é maluco.

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

Para quem também quer testar ..

após o teste lembre-se de git checkout develop outra coisa que você irá no ramo obsoleto de muxs

obrigado, vou testar esta tarde

Hrm, acho que algo não está funcionando muito bem @muxator .. Estou vendo ~ 54 solicitações, contra ~ 49 (no atual develop ) - Observe que tenho plug-ins habilitados para solicitações extras. Portanto, este PR seria uma regressão de desempenho de carregamento de página para satisfazer um caso de uso não documentado / não suportado que não é aceitável IMHO.

image

Observe as várias solicitações para o mesmo arquivo ... :( É o progresso padrão, mas várias solicitações para o mesmo arquivo não é a solução que estamos procurando.

a solicitação múltipla vem de um iframe diferente, eu acho. Tanto a página principal quanto o iframe do editor precisam da fonte, sempre foi assim, não?

afaik cleanCSS foi usado para corrigir esse problema @seballot

sempre foi assim não?

Sim, sempre foi assim.

Acho que cleanCss foi mais para evitar o carregamento de cada parcial de css (pad / popups.css, pad / editbar.css, pad / chat.css ...) e, em vez disso, carregar apenas um pad.css

Mas, usando o iframe, o navegador é obrigado a solicitar duas vezes cada compartilhamento de arquivo com o iframe. Mas a segunda chamada deve usar cache local ("carregado do cache")

Apliquei o pull request e funciona sem problemas (com apache)

Obrigado @julpec.

Esta noite, tentarei abordar o número de solicitações que @JohnMcLear mencionou . Se não houver nada acontecendo, mesclarei o PR.

Awesome tnx mux

Existe uma maneira de fazer upload de arquivos HAR em algum lugar do Github? Testei o # 4002 e estou disposto a compartilhar as gravações, mas não sei onde fazer o upload.

Elementos comuns:

  • visitou http: // localhost : 9001 / p / ciao
  • sem proxy reverso
  • modo de produção: falso
  • comece com o cache do navegador vazio

Variáveis:

  • versão: 4816785aef45 vs # 4002
  • cache: frio ( primeira carga ) vs quente (> = 2ª carga )
  • minify: true vs false
  • navegador: chromium 81 vs firefox 76

Estas são quatro variáveis ​​binárias -> 2 ^ 4 = 16 possibilidades .
Isso levou muito tempo!

Aqui estão os casos mais relevantes:
| Descrição | desenvolvimento atual (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, reduzido, primeiro carregamento | 34 solicitações
1,61 MB
1,61 MB transferidos | 36 solicitações
1,61 MB
1,53 MB transferidos |
| Firefox, minimizado, cache ativo | 29 solicitações
1,12 MB
216 KB transferidos | 31 solicitações
1,18 MB
216 KB transferidos |
| Chromium, reduzido, primeiro carregamento | 44 solicitações
2,0 MB
1,5 MB transferidos | 109 richieste
3,0 MB
1,1 MB transferidos |
| Chromium, minimizado, cache ativo | 45 solicitações
2,2 MB
5,7 KB transferidos | 129 solicitações
4,7 MB
4,7 KB transferidos |

O resultado final é:

  • Chrome e Firefox têm uma maneira completamente diferente de medir seu tráfego
  • PR # 4002 apresenta mais solicitações ao servidor
  • A taxa de acertos do cache melhora : a coluna transferida diminui!
  • Os tempos de carga permanecem os mesmos, dentro dos limites do ruído de medição

Essas foram minhas descobertas também. Também reservei um tempo para pesquisar ferramentas de perfil de desempenho de velocidade de carregamento de página (além das ferramentas de desenvolvedor) e decidi que, se as ferramentas de desenvolvedor não estavam me dando um desvio significativo de uma média, os resultados eram adequados o suficiente para nosso aplicativo.

A redução total do tamanho da transferência é claramente uma coisa boa, mas a sobrecarga da solicitação de http pode ser cara devido à latência. Podemos mesclar isso, mas esteja ciente de que quando reescrevermos o front-end (o que parece inevitável devido a todo o JS embutido que, no final das contas, precisará ser alterado), essa é uma área que devemos nos esforçar para melhorar.

Dito tudo, o Etherpad é ótimo em comparação com a maioria dos outros na área de htis, com exceção do Google docs, que é o padrão ouro para um "tempo de edição" chocantemente rápido, que neste mundo é rei, não no final da página 'carregar'.

Então, TLDR; Merge away @muxator - este thread existe como um recurso para aqueles que procuram otimizar para instâncias Etherpad NÃO em subpastas.

Ótimo trabalho !

+1 tnx!

: +1:

Esta página foi útil?
0 / 5 - 0 avaliações