ããŒã«ããŒã®ã¢ã€ã³ã³ã衚瀺ãããããã©ã³ããã¡ããªãŒã®ãšã©ãŒã衚瀺ãããŸãããããã¹ãŠãã©ã«ããŒå ã«ãããäœãå€æŽãããŠããŸããã ãã®åé¡ã®ä¿®æ£ãæäŒã£ãŠããããŸããïŒ
ååŸãã
ç§ã¯ãã¹ãŠã®ãã©ã³ããã¡ããªãŒã§ãããååŸããŸãã
詳现ãå ¥åããŠãã ããã
ãªããŒã¹ãããã·ã®èåŸã§å®è¡ããŠããŸããïŒ
éçºã¢ãŒããŸãã¯æ¬çªã¢ãŒãã§å®è¡ããŠããŸããã
çž®å°ïŒ
ä¿è·ãããã³ããŒãŸãã¯settings.json
çã
ããã¯éçºã¢ãŒãã§å®è¡ãããŠããŸãããsystemdãµãŒãã¹ã«ã¯ãEnvironment = NODE_ENV = productionããå«ãŸããŠããŸããããªããŒã¹ãããã·ã¯ãªããcssã¯çž®å°ãããsettings.jsonã¯ã»ãšãã©å€æŽãããŠããŸããïŒmysqlãšadmin pwã®ã¿ãå€æŽãããŠããŸãïŒã
èŠãŠããã®ã§ãetherpadã¯ãã¹ãŠã®ãã©ã³ããããŒãã§ããªãããã§ã
settings.jsonã§minifyãfalseã«ãmaxageã0ã«å€ããŠã¿ãŠãã ãã
ãã£ããäœãå€ãããªãã£ã
ä»ã®ç§ã®ã©ãããããã§ã¯ããã£ãšåœ¹ç«ã€ãããããŸããã æã䟿å©ãªã®ã¯ãsettings.jsonãååŸããããšã§ãïŒãã ãããã¹ã¯ãŒãã¯ãã¹ãŠåé€ããŠãã ããïŒã ãããæäŸããŠããããŸããïŒ
FWIW1.6ã*> 1.8.3ããã¹ãããŸããããããã¯çºçããŸããã§ããããsettings.jsonã«é¢é£ããå¯èœæ§ããããŸãã
èšå®ãæäŸããããªãå Žåã¯ã次ã®1ã€ãå®è¡ããŸãã
cp settings.json settings.backup.json
cp settings.json.template settings.json
次ã«ãããŒã¿ããŒã¹ã®ãã¹ã/ãŠãŒã¶ãŒ/ãã¹ãsettings.backup.json
ããsettings.json
ã³ããŒããŸã
åèµ·åããŠãä¿®æ£ãããŠãããã©ããã確èªããŸãã
/*
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"
}
}
}
}*/
]
}
}
ãã£ããããã®ã2åã
ããããè€è£œãããŸããã§ãããããŒã«ããŒãã¿ã³ãååšããŸãã
ãã®ã€ã³ã¹ã¿ã³ã¹ã¯ç§ãã¢ã¯ã»ã¹ã§ãããããªãã¯ã§ããïŒ [email protected]ãŸã§ã¡ãŒã«ã§ãæ°è»œã«
æããªè³ªå..ããªãã¯
bin/run.sh
ã䜿çšããŠå®è¡ãè©Šã¿ãŸãããããšãïŒ
æ®å¿µãªãããããã¯ãããªãã¯ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãããŸããã
settings.jsonãæ°ãããã³ãã¬ãŒãã«çœ®ãæããã¹ãã³ãããŒã¹ãã³ã«å€æŽããŸããã ããã§ãæåããŸããã
ã¯ããrun.shãå®è¡ãããµãŒãã¹ãåèµ·åããŠçŸéãæž
ç®ããŸãã:)
ããã¯systemdãµãŒãã¹ã§ãïŒ
[åäœ]
説æ= Etherpad
After = syslog.target network.target
[ãµãŒãã¹]
Type = simple
ãŠãŒã¶ãŒ= etherpad
Group = etherpad
WorkingDirectory = / opt / etherpad
ç°å¢= NODE_ENV =æ¬çª
ExecStart = / opt / etherpad / bin / run.sh
åèµ·å=åžžã«
[ã€ã³ã¹ããŒã«]
WantedBy = multi-user.target
ã©ã®ããã«ã€ã³ã¹ããŒã«ããŸãããïŒ git clone
ãããããšããªãªãŒã¹ããã.zipãå
¥æããŠè§£åããŸãããïŒ
ãªã¯ãšã¹ãURLïŒ 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
ç§ã«ã¯ãã¹ãŠããŸãèŠããŸãã
git cloneçµç±ã§ã€ã³ã¹ããŒã«ããããæŽæ°ããŸããã æ°å¹Žåã«ïŒå¥ã®ç®¡çè ã«ãã£ãŠïŒzip解åã«ãã£ãŠã€ã³ã¹ããŒã«ããããšæããŸãã rsyncã䜿çšããŠãã¹ãŠãæŽæ°ããŸãã
ãããæåŸã®ç®¡çè
ãããã€ãã®ããã¯ãå
¥ããã®ã ãããïŒ git status
å Žåãå€æŽããããã¡ã€ã«ã¯ãããŸããïŒ
æ°ãããªããžããªãgitcloneããŠãããsettings.jsonãã³ããŒãããšã©ããªããŸããïŒ ããã¯æ©èœããŸãããæããã«äœãããããããšããåé¡ãä¿®æ£ããŠããŸããã
ç§ã¯ä»ãããããã€ããã§ãã ã¯ããããã¯éåžžã«å¥åŠã§ã..ãã©ã³ãã®ã«ãŒããã©ã«ããetherpadãšåãã§ã¯ãªããã®ããã«
ã³ãŒãã¯æ£ããã§ãã src /ã¯ã«ãŒããã©ã«ãã§ãã
åã®ç®¡çè ãäœãããããã³ã°ãããšæããŸããgitdiffãèŠãã«äœãèšãããšã¯ã§ããŸããã ãããä»ããéããããšã¯ã§ããŸããïŒ
以åã®ç®¡çè ã¯gitã䜿çšããŠããŸããã§ããïŒã€ã³ã¹ããŒã«ãããŠããŸããã§ããïŒããã¯ãªãŒã³ã¯ããŒã³ã®åŸãæ©èœããŸããã
@skramsalulwut ã ã¯ããŒã³ãå®å šã«ã¯ãªãŒã³ã¢ããããŠå®è¡ããŠãæ©èœããŸãããïŒ ïŒïŒ ã»ããã¢ããã«äœãå€ãªæããããŸãããã°ã«ãšã©ãŒãèŠåããããŸããïŒ
å®å šã«ã¯ãªãŒã³ãªã¯ããŒã³ãäœæããèšå®ãå€æŽããªãå Žåã¯ã©ããªããŸããïŒ ããã§ã倱æããŸããïŒ
ç§ããããã°ã§ããããã«äžæçã«å ¬éã§ããå¯èœæ§ã¯ãããŸããïŒ
ããããã»ãã¥ãªãã£ã§ä¿è·ãããã€ã³ãã©ãããäžã«ãããŸããããŒã6ãã12ãžã®ã¢ããã°ã¬ãŒãã¯ããããšé¢ä¿ããããŸããïŒ
ããããªã..ããã§ä»ã®ãããã°æé ãããããããªã..
ç§ãæã£ãŠããå¯äžã®æãããã¯..
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429
ããããããªãã¯ãã¹ãŠã®ãã£ãã·ã¥ãã¯ãªãŒã³ã¢ããããã¯ãªãŒã³ã©ã³ãå®è¡ãããšèšããŸããã
ãããã¡ã€ãç¡å¹ã«ãã rm -Rf src/node_modules && rm src/package-lock.json
ãå®è¡ããŠããbin/run.sh
ãïŒ ç§ã¯ããªããããããªã¯ããŒã³ãããããšãæå³ããã®ã§; \
git sha
ã npm --version
ã nodejs version
å€ãæããŠãã ããã
npmã¯6.14.4ã§ãããŒã-vã¯12.16.2ã§ãã ã°ããã質åã§ããããç§ã®ãgit shaãšã¯ã©ãããæå³ã§ããïŒ
1.6.2ã«ãªããŒã«ããminifyãfalseã«èšå®ãããšãçªç¶åã³æ©èœããŸãïŒãã以åã¯ãå€ãããŒãžã§ã³ã®ã¢ã€ã³ã³ã§ããæ©èœããŸããã§ããïŒã ããã¯å®å¿ã§ã..ç§ã¯æ¥é±ãã®èšå®ã§å¥ã®ã¯ãªãŒã³ãªã»ããã¢ãããããããšããŸããå€åä»åã¯ãããããŸãããã§ãããïŒDããªãã®å©ããæ¬åœã«ããããšã!!
etherpadãã©ã«ããŒã«git rev-parse HEAD
ããªããã©ã®ã³ããããããŠããã®ãèŠããã§ãã
ããã«ã¡ã¯
ãããã·ã®èåŸã«ããããšãé€ããŠããŸã£ããåãåé¡ããããŸãã
ã€ã³ã¹ããŒã«ãä¿åãããªããžããªã®ã¯ããŒã³ãäœæããŠãã¹ããè¡ããŸããã 次ã«ãæ§æãã¡ã€ã«ãã³ããŒããŠããµãŒãã¹ãåèµ·åããŸããã
æ°èŠã€ã³ã¹ããŒã«ã«ãããããããåãåé¡ãçºçããŸãã
ã ã ïŒ
äžæ¹ãèå³æ·±ãããšã«ããããã·ã䜿çšãããhttpsã䜿çšããã«ãµãŒãã¹ã«ã¢ã¯ã»ã¹ãããšãåé¡ãªãã¢ã€ã³ã³ãæ£ãã衚瀺ãããŸãã
apacheãããã·èšå®ã¯ããã¥ã¡ã³ãããã®ãã®ã§ãããç§ã®åŽã§ã¯ãšããŸããã¯ãªãã®ã¯äœããããŸããã
ãŸã£ããåãåé¡ããããŸããã
ãªããŒã¹ãããã·ã䜿çšããŠãããEtherpadã€ã³ã¹ã¿ã³ã¹ã¯ãµããã£ã¬ã¯ããªïŒ/ etherpadïŒã«ãããŸãã ç§ã¯ãããæ£ããããããšãã§ããApacheæ§æã«ä»¥äžãè¿œå ããŸããã
<Location /static/font>
ProxyPass http://localhost:9001/static/font
ProxyPassReverse http://localhost:9001/static/font
</Location>
settings.jsonã§ã¯äœãå€æŽããŠããŸããã
@skramsaã¯ãªããŒã¹ãããã·ã«ã€ããŠèšåããŠããªãã®ã§ãé¢é£ããŠãããšã¯æããŸãããïŒ Skramsaã¯ãã»ããã¢ããã«ãªããŒã¹ãããã·ããªãããšã確èªããŠãã ããã
ãŸã£ããåãåé¡ããããŸããã
ãªããŒã¹ãããã·ã䜿çšããŠãããEtherpadã€ã³ã¹ã¿ã³ã¹ã¯ãµããã£ã¬ã¯ããªïŒ/ etherpadïŒã«ãããŸãã ç§ã¯ãããæ£ããããããšãã§ããApacheæ§æã«ä»¥äžãè¿œå ããŸããã
<Location /static/font> ProxyPass http://localhost:9001/static/font retry=0 timeout=30 ProxyPassReverse http://localhost:9001/static/font </Location>
settings.jsonã§ã¯äœãå€æŽããŠããŸããã
ãªãåè©Šè¡ãšã¿ã€ã ã¢ãŠãã®ã«ãŒã«ã§ããïŒ
@skramsaã¯ãªããŒã¹ãããã·ã«ã€ããŠèšåããŠããªãã®ã§ãé¢é£ããŠãããšã¯æããŸãããïŒ Skramsaã¯ãã»ããã¢ããã«ãªããŒã¹ãããã·ããªãããšã確èªããŠãã ããã
ã¯ããããã@julpecã¯ãããã·ã®èåŸã«ããã®ã§ãç§ã¯ããã圹ç«ã€ãããããŸããã;ïŒ
ãŸã£ããåãåé¡ããããŸããã
ãªããŒã¹ãããã·ã䜿çšããŠãããEtherpadã€ã³ã¹ã¿ã³ã¹ã¯ãµããã£ã¬ã¯ããªïŒ/ etherpadïŒã«ãããŸãã ç§ã¯ãããæ£ããããããšãã§ããApacheæ§æã«ä»¥äžãè¿œå ããŸããã<Location /static/font> ProxyPass http://localhost:9001/static/font retry=0 timeout=30 ProxyPassReverse http://localhost:9001/static/font </Location>
settings.jsonã§ã¯äœãå€æŽããŠããŸããã
ãªãåè©Šè¡ãšã¿ã€ã ã¢ãŠãã®ã«ãŒã«ã§ããïŒ
ããã§ããç§ã¯ãããå¿ èŠã ãšã¯æããŸãããç§ã¯æŽæ°åŸã®æšæ¥æ¥ãã§ãããããŸãã;ïŒ
@skramsaã¯ãªããŒã¹ãããã·ã«ã€ããŠèšåããŠããªãã®ã§ãé¢é£ããŠãããšã¯æããŸãããïŒ Skramsaã¯ãã»ããã¢ããã«ãªããŒã¹ãããã·ããªãããšã確èªããŠãã ããã
ã¯ããããã@julpecã¯ãããã·ã®èåŸã«ããã®ã§ãç§ã¯ããã圹ç«ã€ãããããŸããã;ïŒ
æè¬ã§ã
ãªãã€ã³ããŒãšããŠïŒ
äžæ¹ãèå³æ·±ãããšã«ããããã·ã䜿çšãããhttpsã䜿çšããã«ãµãŒãã¹ã«ã¢ã¯ã»ã¹ãããšãåé¡ãªãã¢ã€ã³ã³ãæ£ãã衚瀺ãããŸãã
ç§ã®å Žåãããããããã·ã«é¢é£ããŠããããšã¯æããã§ãã
ããã«ãEtherpadã€ã³ã¹ã¿ã³ã¹ã®ç§»è¡ç¶æ³ã«ãããããŒã¿ããŒã¹ã移è¡ããåŸãEtherpadãæŽæ°ããŸããã ç§ã¯ããããã°ã«èšé²ããŠããŸãïŒ
[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
ãšã©ãŒãçºçããå¯èœæ§ããããã©ããããããªãâŠ
ãªãã€ã³ããŒãšããŠïŒ
äžæ¹ãèå³æ·±ãããšã«ããããã·ã䜿çšãããhttpsã䜿çšããã«ãµãŒãã¹ã«ã¢ã¯ã»ã¹ãããšãåé¡ãªãã¢ã€ã³ã³ãæ£ãã衚瀺ãããŸãã
ç§ã®å Žåãããããããã·ã«é¢é£ããŠããããšã¯æããã§ãã
ããã«ãEtherpadã€ã³ã¹ã¿ã³ã¹ã®ç§»è¡ç¶æ³ã«ãããããŒã¿ããŒã¹ã移è¡ããåŸãEtherpadãæŽæ°ããŸããã ç§ã¯ããããã°ã«èšé²ããŠããŸãïŒ
[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
ãšã©ãŒãçºçããå¯èœæ§ããããã©ããããããªãâŠ
ããã«ã€ããŠã¯å¥ã®åé¡ãäœæããŠãã ããã 察åŠããå¿ èŠããããŸãã
ç§ã¯åãåé¡ãæ±ããŠããŸãã
ç§ã¯ãªããŒã¹ãããã·ïŒApacheïŒã®èåŸã«ããŠãïŒçŸåšïŒææ°ã®Dockerã³ã³ãããŒã䜿çšããŠããŸãïŒ1ååã«ç»åããã«ããŸããïŒïŒ
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
etherpad/etherpad latest 878d71df1b8e 44 hours ago 273MB
ããŒã«ããŒã¯ãå
ã®ã¬ããŒããšãŸã£ããåãããã«èŠããŸãã Etherpadã¯/pad/
äžã§ãããã·ãããŸããããã©ã³ãã¯/static/
ããèªã¿èŸŒãŸããããã404ãšã©ãŒãçºçããŸãã
/static/
ã¯ä»ã®ã¢ããªã±ãŒã·ã§ã³ã§ã䜿çšãããéåžžã«äžè¬çãªãã¹ã§ããããã @ lucaguindaniã«ããåé¿çã¯äœ¿çšã
ããŠãã§ããã ãæ©ããœãŒãããŸãã ä»æ¥ã®ã¯ãã§ãããä»é±ã¯ããŒãžãããªãå¯èœæ§ãããã®ã§ãããããé©çšããå¿ èŠããããããããŸããã
ãªãªãŒã¹ãŠã£ãŒã¯ã®åŸãç§ãã¡ã¯ã¿ããªå®¶æãªã©ãšäžç·ã«æéãéãããããšããŠããŸãã
ãããApacheæ§æã§è€è£œããããšã¯ã§ããŸããã 誰ããåé¡ã®ããApacheèšå®ã貌ãä»ããããšã¯ã§ããŸããïŒ
wikiæ§æã§nginxããã¹ããããŠãããããã§è€è£œã§ããŸãã; /
çããã¯çãå¥åŠãªApacheã®èšå®ãã¹/çãçµéšããŠãããšæããŸãã ã©ãããapachesubdirèšå®ãååŸããŸãããïŒ wiki afaikã«ã¯æäŸãããŠããªãã®ã§ãå€åããªããã¡ã¯äžæ£ã«ãªã£ããšæããŸããïŒ ïŒP
PSç§ã¯éçºã«å¯ŸããŠãã¹ãããŠããŸããããã¯ã»ãšãã©ãªãªãŒã¹atmã§ããã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;
}
tests / frontend /index.htmlã倱æããããšã«æ°ã¥ããŸãããããã¯å¥åŠã«æããŸã
ãŸããEtherpadåŽã«ãã°ããªããåé¡ããªãããšã確èªããããã«ã /pad/foo/p/blah
è©ŠããŠã¿ãŸãã...
ãããApacheæ§æã§è€è£œããããšã¯ã§ããŸããã 誰ããåé¡ã®ããApacheèšå®ã貌ãä»ããããšã¯ã§ããŸããïŒ
ãããç§ã®ãã®ã§ãïŒ
<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>
çŽ æŽãããæè¬ã®æ°æã¡ãä»å€è©ŠããŠã¿ãŸãã
çããã¯çãå¥åŠãªApacheã®èšå®ãã¹/çãçµéšããŠãããšæããŸãã ã©ãããapachesubdirèšå®ãååŸããŸãããïŒ wiki afaikã«ã¯æäŸãããŠããªãã®ã§ãå€åããªããã¡ã¯äžæ£ã«ãªã£ããšæããŸããïŒ ïŒP
çããã¯çãå¥åŠãªApacheã®èšå®ãã¹/çãçµéšããŠãããšæããŸãã ã©ãããapachesubdirèšå®ãååŸããŸãããïŒ wiki afaikã«ã¯æäŸãããŠããªãã®ã§ãå€åããªããã¡ã¯äžæ£ã«ãªã£ããšæããŸããïŒ ïŒP
ç§ã¯ããã§èŠãŸããããããŠäŸã¯Apacheã®ãµããã£ã¬ã¯ããªã«Etherpadã眮ãããšãã«ããŒããŠããŸãã...
å°ãå€æŽããããŒãžã§ã³ã®ã¹ãããã䜿çšãã
<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>
jose<strong i="5">@server</strong>:~/develop$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2020-03-13T12:26:16
ç§ã¯ããã§èŠãŸããããããŠäŸã¯Apacheã®ãµããã£ã¬ã¯ããªã«Etherpadã眮ãããšãã«ããŒããŠããŸãã...
ããã¯æå³ããããŸããã ãã±ãŒã·ã§ã³ã¿ã°ã«ã¯äœã§ãå
¥ããããšãã§ããŸãã ããããç§ã¯ä»ããªãã®èšå®ã§ããµããã£ã¬ã¯ããªããªãã§è©ŠããŠã¿ãŸãã
ãšããã§ããªãã®èª¿æ»ãããããšã
ããã¯æå³ããããŸããã ãã±ãŒã·ã§ã³ã¿ã°ã«ã¯äœã§ãå ¥ããããšãã§ããŸãã ããããç§ã¯ä»ããªãã®èšå®ã§ããµããã£ã¬ã¯ããªããªãã§è©ŠããŠã¿ãŸãã
ããã¯æå³ããããŸãã...ç§ã®è³ã§ã¯ã ããããçŸå®ã®äžçã§ã¯ããããåé¡ã®åå ã§ãïŒ
è¯ãç¹ïŒ+1ïŒ
ãã ãã以åã¯ãã¹ãŠãããŸãæ©èœããçç±ãããããŸããããããæ§æãšããŠãªããŒã¹ãããã·ã®èåŸã§äœå¹Žãå®è¡ãããŠããŸãã
apacheã®ãã·ã³ã°ã«ãµã€ã³ãªã³ãã®èåŸã§ããŸããŸãªãµãŒãã¹ãå®è¡ããŠããã®ã§ãæ¬åœã«ãµããã£ã¬ã¯ããªãå¿
èŠã§ãã
ã/ã以å€ã®ãã®ãå ŽæãšããŠäœ¿çšããããšã¯ã§ããŸããïŒ
ãã®åé¡ã«åãçµãã§ããã ãããããšãããããŸã
äžããèšå®ãã³ããŒããŠè²Œãä»ããŸããå¥ã®å Žæã䜿çšããŸã...
èªèšŒèšå®ãé€ããŠãèªåãšã®éãã¯ããããŸããã
ä»ãããã£ãŠã¿ãŸã
äžããèšå®ãã³ããŒããŠè²Œãä»ããŸããå¥ã®å Žæã䜿çšããŸã...
ããã§ãåãåé¡ïŒã¢ã€ã³ã³ã衚瀺ãããªã
ApacheããŒãžã§ã³ïŒ
ãµãŒããŒããŒãžã§ã³ïŒApache / 2.4.38ïŒDebianïŒ
æ§ç¯ããããµãŒããŒïŒ2019-10-15T19ïŒ53ïŒ42
ç§ã¯èŠçŽ ã€ã³ã¹ãã¯ã¿ãŒã§èª¿æ»ããŸããããããŠããã¯åœŒããã©ã³ãã®URLãšããŠç§ã«äžãããã®ã§ãïŒ
Request URL: https://example.org/static/font/RobotoMono-Regular.ttf
ãã®ã¯ãïŒ
Request URL: https://example.org/pad/static/font/RobotoMono-Regular.ttf
ãpadããµããã£ã¬ã¯ããªããªãçç±ãããããŸããã
ããã§ãç§ã¯æ°ãããã¹ãã§ãŒãããå§ããŸããã
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
å ã®æ§æã§ã¯äœãå€æŽãããŠããŸããã
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>
Apacheã®ããŒãžã§ã³ã¯2.4.29ã§ãã
ãã©ãŠã¶ã®ãã£ãã·ã¥ãã¯ãªã¢ããçµæïŒ
å¥åŠãªã Dockerã€ã¡ãŒãžãããŒã«ã«ã§äœ¿çšããŠãç¶æ³ãå€ãããã©ããã確èªããŸã
@JohnMcLearããã¯æ¬åœã«ä¿¡ããããªãã»ã©ã§ãã ããŒã81ãå¥ã®ä»®æ³ãã¹ããªã©ã§ãããªããšãŸã£ããåãæ§æã§è©ŠããŸããããããã§ãåé¡ã¯çºçããŸãã
æ¯åãã£ãã·ã¥ã空ã«ããããã«ããŸããã
ãããç§ã®ãœãããŠã§ã¢ããŒãžã§ã³ã§ãïŒ
node: v10.20.1
npm: 6.14.4
apache2: Apache/2.4.38 (Debian)
etherpad: 1.8.3 (6210114)
ç§ã¯ãŸã£ããåãåé¡ãæ±ããŠããŸãã ãããã·ïŒnginxïŒã§å®è¡ããminifyãtrueã«èšå®ãããšãã¢ã€ã³ã³ã衚瀺ãããŸããã minifyãfalseã«èšå®ããclearRun.shã§éå§ããŠãã©ãŠã¶ã®ãã£ãã·ã¥ãã¯ãªã¢ãããšããã«ãã¢ã€ã³ã³ãæ©èœããŸãã ããªãé·ãé䜿çšããŠããå€ãããŒãžã§ã³ã§ã¯ãminifyïŒtrueãšãã®Nginx configïŒã§åäœããŠããŸããã
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;
}
}
@JohnMcLearã®nginxconfigã䜿çšããŠrewriteã䜿çšãããšãæ©èœããããšãããããŸããã å¥ã®å ŽæïŒ/ padãªã©ïŒã䜿çšããå Žåã«ã®ã¿åé¡ãçºçãããšæããŸãã
åäœããŠããNginxæ§æïŒ
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ã¯ãtrue / falseãçž®å°ããŠãçµæã¯å€ãããªããšè¿°ã¹ãŸããã Opãrevãããã·ã«ã€ããŠã¯èšåããŠããŸããã§ããã家ã«åž°ã£ããminifytrueã§ç¢ºèªããŸãã
æå°åãåå ã§ããããšã確èªããŸããã
https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150ã¯ã minify false
ã¯éãããªããšäž»åŒµããŠããããã®å Žåã¯èªåã§ç¢ºèªããå¿
èŠããããŸããã
* facepalmã
ã§ããã ãæ©ãä¿®æ£ããŸãã
FWIW Nginxããã®é害ã«æ©ãŸãããŠãããé害ã¯ãã¹ãŠã®ããŒãžïŒããããã€ã³ããã¯ã¹ãã¿ã€ã ã¹ã©ã€ããŒãªã©ïŒã«ååšããŸãã
åé¡ã¯ã clean-css
å®è£
ã«ãããŸãã Css 3ãã4ã¯relativeTo
ãªãã·ã§ã³ãåé€ãããã®åé€ã«ãããã®ãã°ãçºçããŸããã ç§ã®äŸã§ã¯rebase
ãšrebaseTo
ã«åãæ¿ããŸãã
https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241ã§ãããã»ããã£ãã¯ã¹ã§ããã httpsïŒ//github.com/JohnMcLear/etherpad-lite/commit/a8c66b3b513b058e89f70b8e8d5ab622b33 ã¢ã€ã³ã³ã¯è¡šç€ºãããŸãããäžéšã®ãããå éšããã³ããããä»ã®ã¢ã€ãã ã®ãã©ã³ããééã£ãŠããŸãã
äœãææ¡@ jakubpawlowicz @ seballot ïŒ
@JohnMcLearãæ©èœããã1ã€ã®æ¹æ³ã¯ãä»»æã®å€æã䜿çšããããšã§ããhttpsïŒ//github.com/jakubpawlowicz/clean-css#how-to-apply-arbitrary-transformations-to-css-propertiesãåç §ããŠ
ãã1ã€ã®ã¢ã€ãã¢ã¯ãå ¥åãªãã·ã§ã³ãããã·ã¥ãä»ããŠclean-cssã«æž¡ãããšã§ããhttpsïŒ//github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620ãåç §ããŠ
new CleanCSS().minify({"path/to/stylesheet/a.css": { styles: "/* source of a.css goes here */" }})
rebaseTo
ãªãã·ã§ã³ã䜿çšããŸããããã以äžã®æŽå¯ããªããã°ããããæ©èœãããã©ããã¯ããããŸããã
幞éãïŒ
éãŸã£ãŠãã ïŒ æ¬åœã« ïŒ
OPãéããŠããŸã...éããªãã§ãã ããã OP FWIWãã€ãºãå¿ èŠãªãå Žåã¯ã[ãã©ããŒè§£é€]ãŸãã¯[賌èªè§£é€]ãªã©ãã¯ãªãã¯ã§ããŸãã
ããã¯ãŸã 解決ãããŠããŸãããEOWã«ãããããããªãå Žåã¯ãããããé©çšããããšããŸãã
誰ããæéãèŠã€ããŠãããã°ãç§ã¯æ¬åœã«ããã®ããã®ã³ãã¥ããã£ããããèŠããã§ãã
@JohnMcLearç§ã¯æ¬åœã«ãããæäŒã£ãŠæéããããããšæã£ãŠããŸãããéçºè ã®ã¹ãã«ããªããnodejsã®ã¹ãã«ãããã«å£ã£ãŠããŸãã ä»ã®äººãã§ããããšãé¡ã£ãŠããŸãã ç§ã¯ç§ã®èãã§ã®ã¿ããªãããµããŒãããããšãã§ããŸãâŠ
ç§ã¯ãããæè¬ããŸãããããªãã®èãã¯ããã€ãå€ããŸãã;ïŒ
ãã³ã@seballot
ããã«ã¡ã¯ãç³ãèš³ãããŸããããããã«ã€ããŠã¯ããŸãèãããããŸãã...ããŒã«ã«ã§åçŸããæ¹æ³ã¯ãããŸããïŒ
develop
minify
ãtrue
å€ãã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;
}
cleanCSS
ããã../../../
æžãæããŠããŸã-ç§ã®ç解ã¯ããã¯ãããããšãšãã£ã¿ãŒã®äž¡æ¹ãåã@ font.cssã䜿çšããäž¡æ¹ãšããç°ãªãbasePathããæã£ãŠããããã§ãã 次ã«ã1ã€ã¯æ©èœãããã1ã€ã¯çž®å°åãããŸããã ãšã¬ã¬ã³ããªä¿®æ£ã¯èããããŸããããã§ãããããããŸããã@seballoté²æç¶æ³ã¯ãããŸããïŒ
ç³ãèš³ãããŸããããä¿®æ£ãèŠã€ãããŸãã...
ç§ããcleanCSSã¯ç§ãç解ã§ããªãéæ³ãå®è¡ããŠããŠïŒç§ã¯CSSã®ç·ã§ã¯ãããŸããïŒãã€ã³ã¹ã¿ã³ã¹ã¯ãµããã£ã¬ã¯ããªã§å®è¡ãããªãã®ã§ãåŠã¶ã®ãé¢çœããããŸãã
ç§ã¯ããããªãã®ã§ãããcssoãæ©èœãããããšãã§ããã®ã§ãcleanCSSãcssoã«çœ®ãæããå¿ èŠããããããããŸããããæçµçã«ã¯åé¡ãé©åã«è§£æ±ºããŠããããcssoã¯ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã®cleanCSSã»ã©ããã©ãŒãã³ã¹ãè¯ããªããšæããŸãã
cleanCSSéçºè ã«ã¶ã€ãã£ãŠãååããŠä¿®æ£ã§ãããã©ããã確èªããŸãã:)
ãããïŒ ãããcssoã§ããŸãæ©èœãããªãããªããããšäžç·ã«è¡ããŸãããïŒ
cssoã¯ããŒãžã®èªã¿èŸŒã¿åæ°ãæžãããŸãããæžãããŸããã ãŸããç§ã¯ãããžã§ã¯ã/ããã¥ã¡ã³ããªã©ãšããŠcleanCSSã奜ã¿ãè¯ããããžã§ã¯ãã§ããã€ãã®ãªãœãŒã¹ãæããŠãããŸããŸãããã€ãŸããEtheråºæã®ãã³ãã£ãŒã«éäžã§ãããšããããšã§ãã
ç§ã¯ãã®ã¹ã¬ãããšåãåé¡ã«çŽé¢ããŠããŸãã
誰ããç§ã«ãã®åé¡ãåé¿ããæ¹æ³ãæããŠããããŸããïŒ settings.jsonãã¡ã€ã«ã«å€§ããªå€æŽã¯ãããŸããã
åé¿çã¯ãsettings.jsonã§minifyãfalseã«èšå®ããããšã§ãã
ä»å€èŠãŠã¿ãããšæããŸãã
ãã®åãåé¡ã§ã httpsïŒ //github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151ã§Johnã«ãã£ãŠæäŸãããnginxæ§æã䜿çšããŠåé¡ãåçŸããããšãã§ããŸããã
æçš¿ãããNginxæ§æãšEtherpadã®ã³ãŒãã®äž¡æ¹ã«åé¡ããããšæããŸãã
詳现ã¯åŸã§ã
nginxã³ãŒãã2ç§éèŠãŠã¿ããšãããã³ããŒ/貌ãä»ãã®ããã«/static
èšå®ããªãã¯ãã§ãããåé¡ã®æ ¹æ¬ã¯cleanCSSã®å¥¥æ·±ãã«ãããŸã...
ããã§ã¯ããŸããŸãªåé¡ãçºçããŠããŸãã
ãã¹ãNginxæ§æãã¡ã€ã«ã®/static
ã«å¯Ÿãããªãã€ã¬ã¯ããééã£ãŠããŸããã location /static
ã»ã¯ã·ã§ã³å
šäœãããããåé€ããå¿
èŠãããããŠãŒã¶ãŒã/static
ãä»ã®å€ãã®Webã¢ããªã±ãŒã·ã§ã³ãšè¡çªããã ãããšäžå¹³ãèšã£ãããšãèŠããŠãŸãã ãããã圌ã¯ããã«äŒŒãäŸã«æããããŸããã
ããã¯ãããã¥ã¡ã³ãïŒwikiïŒã€ã³ã¿ãŒãããäžã®ä»ã®èª°ãïŒïŒã調ã¹ãŠãäŸã®å質ãåäžãããããšã§ä¿®æ£ããå¿ èŠããããŸãã
4177b3f9434eã¯ã font-face
宣èšãsrc/static/css/pad.css
ããå¥ã®ãã£ã¬ã¯ããªã®2ã€ã®ã€ã³ããŒãããããã¡ã€ã«ïŒ src/static/css/pad/fonts.css
ãšsrc/static/css/pad/toolbar.css
ïŒã«ç§»åãã URLãsrc
ã¹ã¿ã€ã«ã·ãŒããã¹ã«çžå¯Ÿçã§ã;
ããã«ã95fd5ce2a45eã次ã®1.8.4ã«ããŒãžããåŸããã£ãã·ã¥ã®å€ãã®åé¡ãçºçããŸãããããã«ã察åŠããå¿ èŠããããŸãã
ç§ã¯ããã€ãã®ãã¹ããè¡ããPRãæºåããŠããŸãã
ãã®åé¡ãä¿®æ£ããããã«ïŒ4002ãéããŸããã æºåäœæ¥ãããŠããã@JohnMcLearã«æè¬ããŸãã
@ skramsa ã @ julpec ã @ lucaguindani ã @ ashishhari ïŒãããŠæããã«ãžã§ã³ïŒïŒãã®PRããã¹ãããŠãããã圌ãã®ããã«æ©èœãããã©ããã確èªããç«å Žã«ãã人ã¯ããŸããïŒ å¯èœã§ããã°ãç¬ç«ããæ€èšŒããé¡ãããŸãã
ãªããŒã¹ãããã·æ§æã§ã¯ãã/ staticãã«ç¹å¥ãªã«ãŒã«ã¯å¿ èŠãªãããšã«ã泚æããŠãã ããã
ãäºæ¿ããã ãããããšãããããŸãã minifyãfalseã«èšå®ããŠãã
ç§ã«ãšã£ãŠã®åé¡ã
AWS EC2ã€ã³ã¹ã¿ã³ã¹ã®jitsiã€ã³ã¹ããŒã«ã§ããã䜿çšããŠããŸããã
jitsiããã¹ãããããŒããèµ·åããããã«äœ¿çšãããŠããnginxãµãŒããŒã§ã
ããŒã9001ã®åããã·ã³äžã®etherpadãµãŒãã¹çšã®ãµãŒããŒã
ããã¯ãä»ã®nginxèšå®ã埮調æŽããå¿
èŠããããããããªãããšãæå³ããŸããïŒ ïŒç§ã¯ããŸãã
ãªããŒã¹ãããã·ãæ£ããç解ããŠããŸãããããã¯ãã®å Žåã§ããããïŒïŒããŸãã¯ç§ã¯
ä¿®æ£ãå©çšå¯èœã«ãªããŸã§åŸ
ã€å¿
èŠããããŸãã
6:07ã®æšã2020幎5æ14æ¥ã«ã¯muxator [email protected]æžããŸããïŒ
ããã§ã¯ããŸããŸãªåé¡ãçºçããŠããŸãã
1.1ã
ãã¹ãNginxæ§æãã¡ã€ã«ã®/ staticã«å¯Ÿãããªãã€ã¬ã¯ããééã£ãŠããŸããã ã¶ã»
å Žæå šäœ/éçã»ã¯ã·ã§ã³ã¯ããããåé€ããå¿ èŠããããŸã
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151 ã
æè¿åä¿¡ããã¡ãŒã«ã®åµã®äžã§ãç§ã¯ãããèŠããŠãããšæããŸããŠãŒã¶ãŒã¯ã/ staticãå€ãã®ãŠãŒã¶ãŒãšè¡çªããã ãããšäžå¹³ãèšããŸãããä»ã®Webã¢ããªã±ãŒã·ã§ã³ã ãããã圌ã¯åæ§ã®äŸã«æããããŸãã
ããã«;ããã¯ãããã¥ã¡ã³ãïŒwikiïŒ
ä»ã«ã€ã³ã¿ãŒãããäžã«ããã®ã§ããïŒïŒãããŠå質ãåäžãããäŸã
2.2ã4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
font-face宣èšãsrc / static / css /pad.cssãã2ã€ã«ç§»åããŸãã
ã€ã³ããŒãããããã¡ã€ã«ïŒsrc / static / css / pad /fonts.cssããã³
src / static / css / pad / toolbar.cssïŒã¯å¥ã®ãã£ã¬ã¯ããªã«ãããURLã¯
srcã¯ã¹ã¿ã€ã«ã·ãŒããã¹ã«é¢é£ããŠããŸã
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
3.3ããã®äžã95fd5ceãããŒãžããåŸ
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
ä»åŸã®1.8.4ã§ã¯ããã£ãã·ã¥ã®å€ãã®åé¡ãçºçããŸã
ããã«ã察åŠããå¿ èŠããããŸããç§ã¯ããã€ãã®ãã¹ããè¡ããPRãæºåããŠããŸãã
â
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
ã
@ skramsa ã @ julpec ã @ lucaguindani ã @ ashishhari ïŒãããŠæããã«ãžã§ã³ïŒïŒãã®PRããã¹ãããŠãããã圌ãã®ããã«æ©èœãããã©ããã確èªããç«å Žã«ãã人ã¯ããŸããïŒ å¯èœã§ããã°ãç¬ç«ããæ€èšŒããé¡ãããŸãã
ãã¹ãããŠã倧äžå€«ã§ãã static
ç¹å¥ãªæ§æã¯ãããŸããã
ãäºæ¿ããã ãããããšãããããŸãã minifyãfalseã«èšå®ããŠããåé¡ã¯è§£æ±ºããŸããã§ããã
ããããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸãã apacheã®äžã§ãç§ã¯falseã«åãæ¿ãããã¹ãŠãæ£åžžã«æ©èœãå§ããŸããã
ç§ã¯ããããã¹ãããããšãã§ããŸãã
æšã2020幎5æ14æ¥ã«13:30ã§julpec [email protected]ã¯æžããŸããïŒ
@skramsa https://github.com/skramsa ã@julpec https://github.com/julpec ã
@lucaguindani https://github.com/lucaguindaniã@ashishhari
https://github.com/ashishhari ïŒãããŠæããã«ãžã§ã³ïŒïŒããªãã®èª°ãã§ã
ãã®PRããã¹ãããŠãããã圌ãã®ããã«æ©èœãããã©ããã確èªããç«å Žã«ãããŸããïŒ ç§ã¯...ããã ãã
å¯èœã§ããã°ãç¬ç«ããæ€èšŒã®ããã«ããã¹ãããŠã倧äžå€«ã§ãã éççšã®ç¹å¥ãªæ§æã¯ãããŸããã
ãäºæ¿ããã ãããããšãããããŸãã minifyãfalseã«èšå®ããŠãã
ç§ã«ãšã£ãŠã®åé¡ãããããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸãã apacheã®äžã§ãç§ã¯falseãšãã¹ãŠã«åãæ¿ããŸãã
ããŸãåãå§ããŸãããâ
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
ã
ãŸãã確èª-> minifyãfalseã«èšå®ãããšãã·ã¹ãã ã§æ£ããæ©èœããŸããã
ïŒååããµãŒãã¹ãæ£ããåèµ·åããªãã£ãå¯èœæ§ããããŸãïŒã
æšã2020幎5æ14æ¥ã«13:30ã§julpec [email protected]ã¯æžããŸããïŒ
@skramsa https://github.com/skramsa ã@julpec https://github.com/julpec ã
@lucaguindani https://github.com/lucaguindaniã@ashishhari
https://github.com/ashishhari ïŒãããŠæããã«ãžã§ã³ïŒïŒããªãã®èª°ãã§ã
ãã®PRããã¹ãããŠãããã圌ãã®ããã«æ©èœãããã©ããã確èªããç«å Žã«ãããŸããïŒ ç§ã¯...ããã ãã
å¯èœã§ããã°ãç¬ç«ããæ€èšŒã®ããã«ããã¹ãããŠã倧äžå€«ã§ãã éççšã®ç¹å¥ãªæ§æã¯ãããŸããã
ãäºæ¿ããã ãããããšãããããŸãã minifyãfalseã«èšå®ããŠãã
ç§ã«ãšã£ãŠã®åé¡ãããããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸãã apacheã®äžã§ãç§ã¯falseãšãã¹ãŠã«åãæ¿ããŸãã
ããŸãåãå§ããŸãããâ
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
ã
ããããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸãã apacheã®äžã§ãç§ã¯falseã«åãæ¿ãããã¹ãŠãæ£åžžã«æ©èœãå§ããŸããã
ãŸãã確èª-> minifyãfalseã«èšå®ãããšãã·ã¹ãã ã§æ£ããæ©èœããŸããã
@ julpec ã @ ashishhari ïŒminify = falseãèšå®ããããšã¯ãæ¢ç¥ã®åé¿çã§ãã
ä»ã®åžæã¯ãminify = trueã®ãšãã«ïŒ4002ããã°ãä¿®æ£ãããã©ããã確èªããããšã§ãã
æé ã¯æ¬¡ã®ããã«ãªããŸããããã¯ããã¹ãŠã®æé ãæ確ãªå Žåã«ã®ã¿å®è¡ããŠãã ããã
ãã°ã®è€è£œãéå§ããŸãã
minify
= true
ã§settings.json
ä¿®æ£ãè©ŠããŠãã ããïŒ
minify
= true
ãsettings.json
ãé¡ãããŸãããPRã®æç¶ããããããŸãã:(
@muxatorã«æè¬ããŸã
ãããŒãç§ã¯ãã®ä¿®æ£ãæãä»ãããšããªãã£ãã ããïŒ ããã¯ã°ãããŠããã
git remote add mux https://github.com/muxator/etherpad-lite/
git fetch mux
git checkout mux/fix/fonts-behind-reverse-proxy
ãã¹ãããã人ã®ããã«ã
ãã¹ãåŸã git checkout develop
ãå¿ããªãã§ãã ãããããããªããšãmuxsã®å€ããã©ã³ãã«ãªããŸãã
ããããšããä»æ¥ã®ååŸã«ãã¹ãããŸã
ããŒããäœãã@muxatorã®ããã©ãŒãã³ã¹ãååã«çºæ®ããŠããªããšæããŸããç§ã¯ã54ã®ãªã¯ãšã¹ãã衚瀺ããŠããŸãããã49ïŒçŸåšã®develop
ïŒ-è¿œå ã®ãªã¯ãšã¹ããæäŸãããã©ã°ã€ã³ãæå¹ã«ããŠããããšã«æ³šæããŠãã ããã ãããã£ãŠããã®PRã¯ãç§èŠã§ã¯åãå
¥ããããªããææžåãããŠããªã/ãµããŒããããŠããªããŠãŒã¹ã±ãŒã¹ãæºããããã®ããŒãžèªã¿èŸŒã¿ããã©ãŒãã³ã¹ã®äœäžã«ãªããŸãã
åããã¡ã€ã«ã«å¯Ÿããè€æ°ã®ãªã¯ãšã¹ãã«æ³šæããŠãã ãã... :(ããã¯é²è¡ç¶æ³ã§ãããåããã¡ã€ã«ã«å¯Ÿããè€æ°ã®ãªã¯ãšã¹ãã¯ãç§ãã¡ãæ¢ããŠãã解決çã§ã¯ãããŸããã
è€æ°ã®ãªã¯ãšã¹ãã¯ãç§ãæãã«ç°ãªãiframeããæ¥ãŠããŸãã ã¡ã€ã³ããŒãžãšãšãã£ã¿ãŒiframeã®äž¡æ¹ã«ãã©ã³ããå¿ èŠã§ãããåžžã«ãã®ããã«ãªã£ãŠããŸããïŒ
ãã®åé¡ãä¿®æ£ããããã«afaikcleanCSSã䜿çšãããŸãã@seballot
ããã¯ãã€ããã®ããã§ãããïŒ
ã¯ãããã€ãããã§ããã
cleanCssã¯ãåcssã®éšåçãªèªã¿èŸŒã¿ïŒpad / popups.cssãpad / editbar.cssãpad / chat.css ...ïŒãé¿ãã代ããã«1ã€ã®pad.cssã®ã¿ãèªã¿èŸŒãæ¹ãå€ãã£ããšæããŸãã
ãã ããiframeã䜿çšãããšããã©ãŠã¶ã¯iframeãšã®ãã¡ã€ã«å ±æããšã«2åèŠæ±ããå¿ èŠããããŸãã ãã ãã2çªç®ã®åŒã³åºãã§ã¯ããŒã«ã«ãã£ãã·ã¥ïŒããã£ãã·ã¥ããããŒããïŒã䜿çšããå¿ èŠããããŸã
ãã«ãªã¯ãšã¹ããé©çšããŸããããåé¡ãªãåäœããŸãïŒApacheã䜿çšïŒ
@julpecã«æè¬ããŸãã
ä»æ©ã @ JohnMcLearãæèµ·ããæžå¿µäºé ã®
çŽ æŽãããtnxmux
Githubã®ã©ããã«HARãã¡ã€ã«ãã¢ããããŒãããæ¹æ³ã¯ãããŸããïŒ ïŒ4002ããã¹ãããé²é³ãå ±æãããã®ã§ãããã©ãã«ã¢ããããŒãããã°ãããããããŸããã
äžè¬çãªèŠçŽ ïŒ
å€æ°ïŒ
ãããã¯4ã€ã®ãã€ããªå€æ°ã§ã-> 2 ^ 4 = 16ã®å¯èœæ§ã
ããã«ã¯æéãããããŸããïŒ
ããé¢é£æ§ã®é«ãã±ãŒã¹ã¯æ¬¡ã®ãšããã§ãã
|説æ|çŸåšã®éçºïŒ4816785aef45ïŒ| PRïŒ4002 |
| ---- | ---- | ---- |
| Firefoxãçž®å°ãæåã®ããŒã| 34ãªã¯ãšã¹ã
1,61 MB
1.61MB転é| 36ãªã¯ãšã¹ã
1,61 MB
1.53MB転é|
| Firefoxãçž®å°ãããããã£ãã·ã¥| 29ãªã¯ãšã¹ã
1,12 MB
216KB転é| 31ãªã¯ãšã¹ã
1,18 MB
216KBã転éãããŸãã|
|ã¯ãã ãçž®å°ãæåã®ããŒã| 44ãªã¯ãšã¹ã
2.0 MB
1.5MB転é| 109ãªããšã¹ã
3.0 MB
1,1MB転é|
|ã¯ãã ãçž®å°ãããããã£ãã·ã¥| 45ãªã¯ãšã¹ã
2.2 MB
5,7KB転é| 129ãªã¯ãšã¹ã
4,7 MB
4,7KB転é|
çµè«ã¯æ¬¡ã®ãšããã§ãã
ããããç§ã®çºèŠã§ããããŸããããŒãžã®èªã¿èŸŒã¿é床ã®ããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ããŒã«ïŒéçºè ããŒã«ä»¥å€ïŒã調æ»ããéçºè ããŒã«ãå¹³åããå€§å¹ ã«éžè±ããŠããªããã°ãçµæã¯ã¢ããªã±ãŒã·ã§ã³ã«ååé©ããŠãããšå€æããŸããã
転éãµã€ãºã®åèšãæžããããšã¯æããã«è¯ãããšã§ãããhttpãªã¯ãšã¹ãã®ãªãŒããŒãããã¯ã¬ã€ãã³ã·ãŒã®ããã«é«ãã€ãå¯èœæ§ããããŸãã ãããããŒãžããããšã¯ã§ããŸãããããã³ããšã³ããæžãçŽãå ŽåïŒæçµçã«ã·ããããå¿ èŠããããã¹ãŠã®ã€ã³ã©ã€ã³JSã®ããã«é¿ããããªããšæããŸãïŒãããã¯æ¹åã«åªããã¹ãé åã§ããããšã«æ³šæããŠãã ããã
ãšã«ãããEtherpadã¯ãhtisåéã®ä»ã®ã»ãšãã©ã®è£œåãšæ¯èŒããŠåªããŠããŸããäŸå€ã¯ããã®äžçã§ã¯ããŒãžã®ãèªã¿èŸŒã¿ãã®çµããã§ã¯ãªããéåžžã«é«éãªãç·šéæéãã®ãŽãŒã«ãã¹ã¿ã³ããŒãã§ããGoogleããã¥ã¡ã³ãã§ãã
ã ããTLDR; @muxatorãããŒãžã
ãããä»äº ïŒ
+1 tnxïŒ
ïŒ+1ïŒ
æãåèã«ãªãã³ã¡ã³ã
ãŸã£ããåãåé¡ããããŸããã
ãªããŒã¹ãããã·ã䜿çšããŠãããEtherpadã€ã³ã¹ã¿ã³ã¹ã¯ãµããã£ã¬ã¯ããªïŒ/ etherpadïŒã«ãããŸãã ç§ã¯ãããæ£ããããããšãã§ããApacheæ§æã«ä»¥äžãè¿œå ããŸããã
settings.jsonã§ã¯äœãå€æŽããŠããŸããã