diff --git a/pica-etherpad/Dockerfile b/pica-etherpad/Dockerfile index f6d30cfd5f15827b8a2eb94a9fad11975b29d2ec..356d4e325b05a118d13e85f9cfd963eec5251552 100644 --- a/pica-etherpad/Dockerfile +++ b/pica-etherpad/Dockerfile @@ -3,29 +3,29 @@ MAINTAINER antoine@barbare.me ENV ETHERPAD_VERSION 1.6.1 -#Installation de NodeJS + NPM -RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ - apt-get install -y nodejs - -RUN apt-get update && \ - apt-get install -y unzip mysql-client supervisor && \ - rm -r /var/lib/apt/lists/* - -WORKDIR /opt/ - -RUN curl -SL \ - https://github.com/ether/etherpad-lite/archive/${ETHERPAD_VERSION}.zip \ - > etherpad.zip && unzip etherpad && rm etherpad.zip && \ - mv etherpad-lite-${ETHERPAD_VERSION} etherpad-lite +#Copy configuration +COPY add/entrypoint.sh /entrypoint.sh -WORKDIR etherpad-lite +#Installation de NodeJS + NPM +RUN useradd -d /opt/etherpad-lite -u 1000 etherpad && \ + curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ + apt-get update && \ + apt-get install -y nodejs unzip mysql-client && \ + rm -r /var/lib/apt/lists/* && \ + curl -SL https://github.com/ether/etherpad-lite/archive/${ETHERPAD_VERSION}.zip > etherpad.zip && \ + unzip etherpad && \ + rm -Rf etherpad.zip etherpad-lite-${ETHERPAD_VERSION}/.git && \ + mv etherpad-lite-${ETHERPAD_VERSION} /opt/etherpad-lite && \ + chown -R etherpad: /opt/etherpad-lite && \ + chmod +x /entrypoint.sh + +USER etherpad +WORKDIR /opt/etherpad-lite #First starting of services -RUN bin/installDeps.sh && rm settings.json -RUN ln -s var/settings.json settings.json - -# Installation modules Etherpad -RUN npm install \ +RUN bin/installDeps.sh && \ + rm settings.json && \ + npm install \ ep_align \ ep_author_hover \ ep_comments_page \ @@ -41,17 +41,11 @@ RUN npm install \ ep_user_font_size \ ep_pads_stats -#Copy configuration -COPY add/entrypoint.sh /entrypoint.sh -COPY add/supervisord.conf /etc/supervisord.conf - -RUN chmod +x /entrypoint.sh - #Set settings based on evironement variables ENTRYPOINT ["/entrypoint.sh"] #Start Etherpad with supervisor -CMD /usr/bin/supervisord -c /etc/supervisord.conf +CMD /bin/bash -c "/opt/etherpad-lite/bin/run.sh" -EXPOSE 80 +EXPOSE 8080 VOLUME /opt/etherpad-lite/var diff --git a/pica-etherpad/add/entrypoint.sh b/pica-etherpad/add/entrypoint.sh index e935164072dca405c7539018937d1fed5914aaf7..efe85178cfda8de1174d54c63fd46b7465344e71 100644 --- a/pica-etherpad/add/entrypoint.sh +++ b/pica-etherpad/add/entrypoint.sh @@ -24,7 +24,7 @@ if [ -z "$ETHERPAD_DB_PASSWORD" ]; then fi : ${ETHERPAD_TITLE:=Etherpad} -: ${ETHERPAD_PORT:=80} +: ${ETHERPAD_PORT:=8080} : ${ETHERPAD_SESSION_KEY:=$( node -p "require('crypto').randomBytes(32).toString('hex')")} @@ -77,4 +77,5 @@ if [ ! -f settings.json ]; then EOF fi +rm /opt/etherpad-lite/src/package-lock.json exec "$@" diff --git a/pica-etherpad/add/settings.json b/pica-etherpad/add/settings.json deleted file mode 100644 index 1e93028666a89fddc67abc52deddaf0e7ac9be39..0000000000000000000000000000000000000000 --- a/pica-etherpad/add/settings.json +++ /dev/null @@ -1,193 +0,0 @@ -/* - This file must be valid JSON. But comments are allowed - - Please edit settings.json, not settings.json.template -*/ -{ - // 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" : 80, - - /* - // 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" : "mysql", - //the database specific settings - //"dbSettings" : { - // "filename" : "var/dirty.db" - // }, - - // An Example of MySQL Configuration - "dbType" : "mysql", - "dbSettings" : { - "user" : "root", - "host" : "mysql", - "password": "root", - "database": "etherpad" - }, - - - //the default text of a pad - "defaultPadText" : "Antoine Pad\n", - - /* Default Pad behavior, users can override by changing */ - "padOptions": { - "noColors": false, - "showControls": true, - "showChat": true, - "showLineNumbers": true, - "useMonospaceFont": false, - "userName": false, - "userColor": true, - "rtl": false, - "alwaysShowChat": false, - "chatAndUsers": false, - "lang": "fr" - }, - - /* 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 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 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, - - /* 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": "admin", - "is_admin": true - } - }, - - - // 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, - - /* 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": "pad.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 occured in your EPL instance!" - , "recipients": "bar@blurdybloop.com, baz@blurdybloop.com" - , "sendInterval": 60*5 // in secs -- 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" - } - } - } - }*/ - ] - } -} diff --git a/pica-etherpad/add/supervisord.conf b/pica-etherpad/add/supervisord.conf deleted file mode 100644 index ad31835bd660256110732426f11342b218e368f9..0000000000000000000000000000000000000000 --- a/pica-etherpad/add/supervisord.conf +++ /dev/null @@ -1,5 +0,0 @@ -[supervisord] -nodaemon=true - -[program:etherpad] -command=/bin/bash -c "/opt/etherpad-lite/bin/run.sh --root"