Skip to content
This repository has been archived by the owner on Nov 21, 2020. It is now read-only.

Commit

Permalink
Added settings file
Browse files Browse the repository at this point in the history
Removed comments and refactored a bit
  • Loading branch information
brecke committed Nov 23, 2017
1 parent 1783d5a commit b6a938f
Show file tree
Hide file tree
Showing 3 changed files with 256 additions and 39 deletions.
37 changes: 15 additions & 22 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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"]
CMD ["/opt/etherpad/bin/run.sh"]
18 changes: 1 addition & 17 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand Down
240 changes: 240 additions & 0 deletions settings.json
Original file line number Diff line number Diff line change
@@ -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": "[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"
}
}
}
}*/
]
}
}

0 comments on commit b6a938f

Please sign in to comment.