From b6a938f3a910cd8b7c70fcd4e8e8d028a1190d95 Mon Sep 17 00:00:00 2001 From: Miguel Laginha Date: Thu, 23 Nov 2017 15:44:15 +0000 Subject: [PATCH] Added settings file Removed comments and refactored a bit --- Dockerfile | 37 ++++---- entrypoint.sh | 18 +--- settings.json | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 256 insertions(+), 39 deletions(-) create mode 100644 settings.json diff --git a/Dockerfile b/Dockerfile index fc6c7a4..fbb33cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,6 @@ # $ docker run -it --name=etherpad --net=host oae-etherpad:latest # -# FROM alpine:3.6 FROM node:6.12.0-alpine LABEL Name=AlpineDockerEtherpad LABEL Author=ApereoFoundation @@ -48,15 +47,14 @@ RUN chmod +x /entrypoint.sh \ && sed -i -e '96 s,if.*,if [ "${VERSION#v}" = "$NEEDED_VERSION" ]; then,' ${ETHERPAD_PATH}/bin/installDeps.sh \ && ${ETHERPAD_PATH}/bin/installDeps.sh \ && rm -rf /tmp/* -# COPY settings.json /opt/etherpad/settings.json -RUN mv ${ETHERPAD_PATH}/settings.json.template ${ETHERPAD_PATH}/settings.json -COPY init.cql ${ETHERPAD_PATH}/init.cql +COPY settings.json /opt/etherpad/settings.json +# RUN mv ${ETHERPAD_PATH}/settings.json.template ${ETHERPAD_PATH}/settings.json RUN chown -R etherpad:etherpad ${ETHERPAD_PATH} # Next two lines are production config ONLY -RUN sed -i -e 's/defaultPadText" : ".*"/defaultPadText" : ""/g' ${ETHERPAD_PATH}/settings.json -RUN sed -i -e 's/dbType\" : \"dirty/dbType\" : \"cassandra/g' ${ETHERPAD_PATH}/settings.json -RUN sed -i -e 's/"filename" : "var\/dirty.db"/"clientOptions": {"keyspace": "etherpad", "port": 9160, "contactPoints": ["oae-cassandra"]},"columnFamily": "Etherpad"/g' ${ETHERPAD_PATH}/settings.json +# RUN sed -i -e 's/defaultPadText" : ".*"/defaultPadText" : ""/g' ${ETHERPAD_PATH}/settings.json +# RUN sed -i -e 's/dbType\" : \"dirty/dbType\" : \"cassandra/g' ${ETHERPAD_PATH}/settings.json +# RUN sed -i -e 's/"filename" : "var\/dirty.db"/"clientOptions": {"keyspace": "etherpad", "port": 9160, "contactPoints": ["oae-cassandra"]},"columnFamily": "Etherpad"/g' ${ETHERPAD_PATH}/settings.json # Install ep_headings module RUN cd ${ETHERPAD_PATH} && npm install ep_headings @@ -68,36 +66,31 @@ RUN cd ${ETHERPAD_PATH}/node_modules \ && npm install # Not strictly necessary if we're using default IP and port -RUN sed -i -e '/defaultPadText/a \ - "ep_oae": {"mq": { "host": "oae-rabbitmq", "port": 5672 } },' ${ETHERPAD_PATH}/settings.json +# RUN sed -i -e '/defaultPadText/a \ + # "ep_oae": {"mq": { "host": "oae-rabbitmq", "port": 5672 } },' ${ETHERPAD_PATH}/settings.json # CSS changes RUN rm ${ETHERPAD_PATH}/node_modules/ep_headings/templates/editbarButtons.ejs && cp ${ETHERPAD_PATH}/node_modules/ep_oae/static/templates/editbarButtons.ejs ${ETHERPAD_PATH}/node_modules/ep_headings/templates/editbarButtons.ejs RUN rm ${ETHERPAD_PATH}/src/static/custom/pad.css && cp ${ETHERPAD_PATH}/node_modules/ep_oae/static/css/pad.css ${ETHERPAD_PATH}/src/static/custom/pad.css # Edit protocols in config -RUN sed -i -e 's/\["xhr-polling", "jsonp-polling", "htmlfile"\],/\["websocket", "xhr-polling", "jsonp-polling", "htmlfile"\],/g' ${ETHERPAD_PATH}/settings.json +# RUN sed -i -e 's/\["xhr-polling", "jsonp-polling", "htmlfile"\],/\["websocket", "xhr-polling", "jsonp-polling", "htmlfile"\],/g' ${ETHERPAD_PATH}/settings.json # Edit toolbar in config -RUN sed -i -e '/"loadTest/a \ - "toolbar": {"left": [["bold", "italic", "underline", "strikethrough", "orderedlist", "unorderedlist", "indent", "outdent"]],"right": [["showusers"]]},' ${ETHERPAD_PATH}/settings.json - +# RUN sed -i -e '/"loadTest/a \ + # "toolbar": {"left": [["bold", "italic", "underline", "strikethrough", "orderedlist", "unorderedlist", "indent", "outdent"]],"right": [["showusers"]]},' ${ETHERPAD_PATH}/settings.json # We need to run a specific cqlsh command before this works RUN apk --no-cache add python py-pip git bash RUN pip install cqlsh==4.0.1 RUN pip install thrift==0.9.3 -RUN echo "CREATE KEYSPACE IF NOT EXISTS etherpad WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};" > ${ETHERPAD_PATH}/init.cql - -# miguel addon -# USER etherpad +RUN echo "CREATE KEYSPACE IF NOT EXISTS \"etherpad\" WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};" \ + >> ${ETHERPAD_PATH}/init.cql \ + && chown etherpad:etherpad ${ETHERPAD_PATH}/init.cql -# debug and experimental +# Must add the same key as config.js RUN echo "13SirapH8t3kxUh5T5aqWXhXahMzoZRA" > ${ETHERPAD_PATH}/APIKEY.txt EXPOSE 9001 -# ENTRYPOINT ["/bin/bash", "/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"] -CMD ["/opt/etherpad/bin/run.sh"] -# CMD cqlsh -f ${ETHERPAD_PATH}/init.cql oae-cassandra 9160 && ${ETHERPAD_PATH}/bin/run.sh -# CMD ["cqlsh", "-f", "/opt/etherpad/init.cql", "oae-cassandra", "9160", "&&", "${ETHERPAD_PATH}/bin/run.sh"] \ No newline at end of file +CMD ["/opt/etherpad/bin/run.sh"] \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh index e3ab4cd..1280225 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,18 +1,3 @@ -# -# Copyright 2017 Apereo Foundation (AF) Licensed under the -# Educational Community License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may -# obtain a copy of the License at -# -# http://opensource.org/licenses/ECL-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an "AS IS" -# BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express -# or implied. See the License for the specific language governing -# permissions and limitations under the License. -# - #!/bin/bash set -e @@ -25,9 +10,8 @@ random_key() { cqlsh -f /opt/etherpad/init.cql oae-cassandra 9160 if [ "$EP/bin/run.sh" = "$1" ]; then - [ -r $EP/APIKEY.txt ] || random_key > $EP/APIKEY.txt + # [ -r $EP/APIKEY.txt ] || random_key > $EP/APIKEY.txt [ -r $EP/SESSIONKEY.txt ] || random_key > $EP/SESSIONKEY.txt - # touch $EP/node_modules/ep_etherpad-lite/.ep_initialized chown -R etherpad:etherpad $EP/settings.json $EP/var exec su-exec etherpad "$@" fi diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..05b7275 --- /dev/null +++ b/settings.json @@ -0,0 +1,240 @@ +/* + 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": "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 + "dbType": "cassandra", + //the database specific settings + "dbSettings": { + "clientOptions": { + "keyspace": "etherpad", + "port": 9160, + "contactPoints": [ + "oae-cassandra" + ] + }, + "columnFamily": "Etherpad" + }, + + //the default text of a pad + "defaultPadText": "", + "ep_oae": { + "mq": { + "host": "oae-rabbitmq", + "port": 5672 + } + }, + /* 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": "en-gb" + }, + /* Pad Shortcut Keys */ + "padShortcutEnabled": { + "altF9": true, /* focus on the File Menu and/or editbar */ + "altC": true, /* focus on the Chat window */ + "cmdShift2": true, /* shows a gritter popup showing a line author */ + "delete": true, + "return": true, + "esc": true, /* in mozilla versions 14-19 avoid reconnecting pad */ + "cmdS": true, /* save a revision */ + "tab": true, /* indent */ + "cmdZ": true, /* undo/redo */ + "cmdY": true, /* redo */ + "cmdI": true, /* italic */ + "cmdB": true, /* bold */ + "cmdU": true, /* underline */ + "cmd5": true, /* strike through */ + "cmdShiftL": true, /* unordered list */ + "cmdShiftN": true, /* ordered list */ + "cmdShift1": true, /* ordered list */ + "cmdShiftC": true, /* clear authorship */ + "cmdH": true, /* backspace */ + "ctrlHome": true, /* scroll to top of pad */ + "pageUp": true, + "pageDown": true + }, + /* 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": true, + /* 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": null, + /* 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": null, + /* 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, + /* Time (in seconds) to automatically reconnect pad when a "Force reconnect" + message is shown to user. Set to 0 to disable automatic reconnection */ + "automaticReconnectionTimeout": 0, + /* Users for basic authentication. is_admin = true gives access to /admin. + If you do not uncomment this, /admin will not be available! */ + /* + "users": { + "admin": { + "password": "changeme1", + "is_admin": true + }, + "user": { + "password": "changeme1", + "is_admin": false + } + }, + */ + // restrict socket.io transport methods + "socketTransportProtocols": [ + "websocket", + "xhr-polling", + "jsonp-polling", + "htmlfile" + ], + // Allow Load Testing tools to hit the Etherpad Instance. Warning this will disable security on the instance. + "loadTest": false, + "toolbar": { + "left": [ + [ + "bold", + "italic", + "underline", + "strikethrough", + "orderedlist", + "unorderedlist", + "indent", + "outdent" + ] + ], + "right": [ + [ + "showusers" + ] + ] + }, + // 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": "bar@blurdybloop.com, baz@blurdybloop.com" + , "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": "foo@example.com", + "pass": "bar_foo" + } + } + } + }*/ + ] + } +} \ No newline at end of file