commit c4d7ccef3b9382f129c3c6747cefe5e99e8d5ead Author: Christoph Date: Sun May 24 22:57:59 2020 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.swp diff --git a/README.install b/README.install new file mode 100644 index 0000000..c51e751 --- /dev/null +++ b/README.install @@ -0,0 +1,215 @@ +# ----- +# Install Etherpad Lite +# ----- + +# Add repository for node.js 10.x +# +curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - + +# Install nodejs +# +apt install -y nodejs + +# Create user/group etherpad +# +_etherpad_user="etherpad" +adduser --system --home=/var/www/etherpad/ --group $_etherpad_user + +# Become user etherpad +# +# Note: its a system account, so you have to provide a shell +# +su - etherpad -s /bin/bash + +# Get/Install etherpad-lite +# +git clone --branch master https://github.com/ether/etherpad-lite.git + +# Exit from user etherpad +# +exit + +# Create systemd service file +# +cat < /etc/systemd/system/etherpad.service +[Unit] +Description=Etherpad-lite, the collaborative editor. +After=syslog.target network.target + +[Service] +Type=simple +User=etherpad +Group=etherpad +WorkingDirectory=/var/www/etherpad/etherpad-lite +Environment=NODE_ENV=production +ExecStart=/usr/bin/nodejs /var/www/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js +Restart=always # use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart. + +[Install] +WantedBy=multi-user.target +EOF + + +# Start etherpad-lie at boot time +# +systemctl daemon-reload +systemctl enable etherpad.service +systemctl start etherpad.service + + +# NGINX as Proxy etherpad +# +FQHN="ep-6fwstq-ohv1zato8p.faire-mobilitaet.de" +HOSTNAME="${FQHN%%.*}" + +cat < /etc/nginx/sites-available/${FQHN}.conf +# -- ${FQHN} + + +upstream etherpad-lite { + server 127.0.0.1:9001; +} + +server { + listen 80; + listen [::]:80; + server_name ${FQHN}; + rewrite ^(.*) https://\$server_name\$1 permanent; +} + +# we're in the http context here +map \$http_upgrade \$connection_upgrade { + default upgrade; + '' close; +} + +server { + + listen 443 ssl http2; + listen [::]:443 ssl http2; + + server_name ${FQHN}; + + # - Needed for (automated) updating certificate + # - + include snippets/letsencrypt-acme-challenge.conf; + + + # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits + # + # To generate a dhparam.pem file, run in a terminal + # openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 + # + ssl_dhparam /etc/nginx/ssl/dhparam.pem; + + + # Eable session resumption to improve https performance + ssl_session_cache shared:SSL:50m; + ssl_session_timeout 10m; + ssl_session_tickets off; + + + #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE + # omit SSLv3 because of POODLE + # omit TLSv1 TLSv1.1 + ssl_protocols TLSv1.2 TLSv1.3; + + # ECDHE better than DHE (faster) ECDHE & DHE GCM better than CBC (attacks on AES) + # Everything better than SHA1 (deprecated) + # + ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA'; + ssl_prefer_server_ciphers on; + + ssl_certificate /var/lib/dehydrated/certs/${FQHN}/fullchain.pem; + ssl_certificate_key /var/lib/dehydrated/certs/${FQHN}/privkey.pem; + + location / { + #proxy_pass http://localhost:9001/; + proxy_pass http://etherpad-lite; + proxy_set_header Host \$host; + proxy_pass_header Server; + # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf + 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; + + } + + access_log /var/log/nginx/${HOSTNAME}.access.log; + error_log /var/log/nginx/${HOSTNAME}.error.log; +} +EOF + +# Enable new etherpad site +# +ln -s ../sites-available/${FQHN}.conf /etc/nginx/sites-enabled/ + +# Restart NGINX servive +# +systemctl restart nginx + + +# ----- +# Configure etherpad +# ---- + +# Install abiword +# +# Abiword is needed to get advanced import/export features of pads. Setting +# it to null disables Abiword and will only allow plain text and HTML +# import/exports. +# +apt-get install abiword + +cp -a /var/www/etherpad/etherpad-lite/settings.json /var/www/etherpad/etherpad-lite/settings.json.ORIG + +# Edit settings file 'vim /var/www/etherpad/etherpad-lite/settings.json' +# +# 1.) enable abiword +# change +# "abiword": null, +# to +# "abiword": /usr/bin/abiword, +# +# 2.) Uncomment section '"users": {' and set password to make admin settings page +# available - https://${FQHN}/admin +# +# 3.) To suppress these warning messages change 'suppressErrorsInPadText' to true +# +vim /var/www/etherpad/etherpad-lite/settings.json + +# Install the foollowing plugins via admin page +# +# - adminpads2 +# - delete_after_delay +# - delete_empty_pads +# - fileupload +# - font_color +# - font_family +# - font_size +# - headings2 +# - pad_title +# - printer +# - et_title_on_pad +# - subscript_and_superscript + + +# Plugin delete_after_delay +# +# Add foolowing code to settings.json +# +# "ep_delete_after_delay": { +# "delay": 86400, // one day, in seconds +# "loop": true, +# "loopDelay": 3600, // one hour, in seconds +# "deleteAtStart": true, +# "text": "The content of this pad has been deleted since it was older than the configured delay." +# }, +# +vim /var/www/etherpad/etherpad-lite/settings.json diff --git a/old/install_etherpad.txt b/old/install_etherpad.txt new file mode 100644 index 0000000..dbdc689 --- /dev/null +++ b/old/install_etherpad.txt @@ -0,0 +1,784 @@ + +## ================================================= +## - Install etherpad-lite + + +## - il-pad.oopen.de +## - +#_node_version="0.10.26" +_node_version="0.10.32" +_source_base_dir="/usr/local/src" + +_etherpad_instance=etherpad-lite +_etherpad_dir="/var/www/$_etherpad_instance" + +_etherpad_user="etherpad" +_etherpad_group="etherpad" + +#_etherpad_db_name="etherpad" +#_etherpad_db_user="etherpad" +#_etherpad_db_pass="HtfrxP9sfJqwRKrM" +_etherpad_db_name="il_pad" +_etherpad_db_user="il_pad" +_etherpad_db_pass="RPlJ3cTjTKs93N6H" + +mysql_credential_args="--login-path=local_root" + +_hostname="il-pad.oopen.de" +_ipv4="83.223.85.227" +_ipv6="2a01:30:1fff:5::227" + +_etherpad_port="9001" +_etherpad_host="127.0.0.1" + +_etherpad_admin="admin@oopen.de" +## - +## - End: il-pad.oopen.de + + +## - etherpad.oopen.de +## - +_node_version="0.10.28" +_source_base_dir="/usr/local/src" + +_etherpad_instance=etherpad-lite +_etherpad_dir="/var/www/$_etherpad_instance" + +_etherpad_user="etherpad" +_etherpad_group="etherpad" + +_etherpad_db_name="etherpad" +_etherpad_db_user="etherpad" +_etherpad_db_pass="px3zPdsKMKzvXc3r" + +mysql_credential_args="--login-path=local" + +_hostname="etherpad.oopen.de" +_ipv4="83.223.85.45" +_ipv6="2a01:30:1fff:fe00::45" + +_etherpad_port="9001" +_etherpad_host="127.0.0.1" + +_etherpad_admin="admin-il-pad@oopen.de" +## - +## - End: etherpad.oopen.de + + +## - etherpad-ak.oopen.de +## - +_node_version="0.10.28" +_source_base_dir="/usr/local/src" + +_etherpad_instance=etherpad-ak +_etherpad_dir="/var/www/$_etherpad_instance" + +_etherpad_user="etherpad" +_etherpad_group="etherpad" + +_etherpad_db_name="etherpad_ak" +_etherpad_db_user="etherpad_ak" +_etherpad_db_pass="NvLKX3Nt4kfCbjJw" + +mysql_credential_args="--login-path=local" + +_hostname="etherpad-ak.oopen.de" +_ipv4="83.223.85.45" +_ipv6="2a01:30:1fff:fe00::45" + +_etherpad_port="9003" +_etherpad_host="127.0.0.1" + +_etherpad_admin="admin@oopen.de" +## - +## - End: etherpad.oopen.de + + + + +## ------------------------------------------------- +## - Install prerequisites + +## - node +apt-get install libc6-dev libssl-dev make gcc g++ +apt-get install gzip git-core curl python pkg-config build-essential +apt-get install libpq-dev postgresql-client + +# - etherpad-lite +apt-get install abiword + + +## ------------------------------------------------- +## - Install nginx + +## - Installed from debian ports + + +## ------------------------------------------------- +## - Install MySQL + +## - MySQL is installed from source: +## - +## - installdir = /usr/local/mysql +## - + + + +## ------------------------------------------------- +## - Install node (node.js) + + +mkdir -p ${_source_base_dir}/node +cd ${_source_base_dir}/node + +## - Download from project side http://nodejs.org/ +## - +wget http://nodejs.org/dist/v${_node_version}/node-v${_node_version}.tar.gz + + +## - Install +## - +gunzip < node-v${_node_version}.tar.gz | tar -xf - +cd node-v${_node_version} + +./configure --prefix=/usr/local/node-v${_node_version} +make +make install + +ln -s node-v${_node_version} /usr/local/node + +## - Add bin directory of node to the PATH environment +## - +## - Edit /etc/profile +## - +## - Add befor exporting PATH variable: +## - +## - +## - checkdir="/usr/local/node/bin" +## - if [ -d $checkdir ]; then +## - PATH=$PATH:$checkdir +## - fi +vim /etc/profile + + +## - Install manpages +## - +## - Manpages +## - +if ! grep /usr/local/node/share/man /etc/manpath.config > /dev/null 2<&1 ; then + echo >> /etc/manpath.config + echo "MANDATORY_MANPATH /usr/local/node/share/man /var/cache/man" >> /etc/manpath.config + echo "MANPATH_MAP /usr/local/node/bin /usr/local/node/share/man" >> /etc/manpath.config + echo "MANDB_MAP /usr/local/node/share/man /var/cache/man" >> /etc/manpath.config +fi + + + + +## ------------------------------------------------- +## - Install etherpad-lite + + + +## - Create MySQL databse +## - +## - db_name: $_etherpad_db_name +## - db_user: $_etherpad_db_user +## - db_pass: $_etherpad_db_pass +## - +mysql $mysql_credential_args -N -s -e \ + "CREATE DATABASE IF NOT EXISTS $_etherpad_db_name CHARACTER SET utf8 COLLATE utf8_general_ci" + +mysql $mysql_credential_args -N -s -e \ + "GRANT ALL PRIVILEGES ON $_etherpad_db_name.* TO '$_etherpad_db_user'@'127.0.0.1' IDENTIFIED BY '$_etherpad_db_pass'" +mysql $mysql_credential_args -N -s -e \ + "GRANT ALL PRIVILEGES ON $_etherpad_db_name.* TO '$_etherpad_db_user'@'localhost' IDENTIFIED BY '$_etherpad_db_pass'" +mysql $mysql_credential_args -N -s -e \ + "GRANT ALL PRIVILEGES ON $_etherpad_db_name.* TO '$_etherpad_db_user'@'$_ipv4' IDENTIFIED BY '$_etherpad_db_pass'" + +mysql $mysql_credential_args -N -s -e \ + "INSERT INTO `db` VALUES ('$_ipv4','$_etherpad_db_pass','$_etherpad_db_user','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')" +mysql $mysql_credential_args -N -s -e \ + "INSERT INTO `db` VALUES ('127.0.0.1','$_etherpad_db_pass','$_etherpad_db_user','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')" + +mysql $mysql_credential_args -N -s -e "FLUSH PRIVILEGES" + + +## - Create user $_etherpad_user for etherpad +## - +adduser --system --home=/var/www/etherpad-lite/ --group $_etherpad_user + + +## - Get etherpad-lite +## - +## - Downlouad via +## - https://github.com/ether/etherpad-lite +## - or clone yoursef via git cone +## - +cd /var/www +git clone git://github.com/ether/etherpad-lite.git $_etherpad_instance + +cd ${_etherpad_dir} + +cp ${_etherpad_dir}/settings.json.template \ + ${_etherpad_dir}/settings.json + +mkdir -p ${_etherpad_dir}/log +chown -R $_etherpad_user:$_etherpad_user ${_etherpad_dir} + + +## - Adjust settings.json +## - +## - "port" : ${_etherpad_port}, +## - +## - Setup a sessionKey (secure string, at least 10 characters) +## - "sessionKey" : "bHT7JCwnFVXcz4Jvqk9qLsd9", +## - +## - Setup database. comment in type dirty section an uncomment/create +## - section for MySQL. Note, if no tcp binding on mysql exists and only +## - mysql is only listening on linux socket, use "port" instead of "host" +## - +## - "dbType" : "mysql", +## - "dbSettings" : { +## - "user" : "$_etherpad_db_user", +## - "host" : "", +## - "password": "$_etherpad_db_pass", +## - "database": "$_etherpad_db_name" +## - }, +## - NOTE !!: +## - If running on VServer guest System, set host to Vservers IP-Address. +## - "127.0.0.1" does not work and "localhost" does not work in conjunction +## - wilt some plugins (i.e ep_frontend_community) +## - +## - At least setup an admin user to access /admin url. Uncomment/create +## - section "users" +## - +## - "users": { +## - "admin": { +## - "password": "20admin14", +## - "is_admin": true +## - }, +## - +## - We have installed abiword, so enable Abiword +## - for advanced import/export features of pads like PDF, +## - +## - "abiword" : "/usr/bin/abiword", +## - +vim ${_etherpad_dir}/settings.json + + +## - Configure the "safeRun.sh"-script to ensure getting +## - email email notifications if there are problems with +## - the applications. +## - +## - This script also ensures that ep-lite is automatically +## - restarting after an error happens +## - +## - Set/Replace +## - +## - ERROR_HANDLING=1 +## - EMAIL_ADDRESS="argus@oopen.de" +## - +vim ${_etherpad_dir}/bin/safeRun.sh + + +## - Start at first time and let etherpad make initial configurations +## - +su -c "PATH=/usr/local/node/bin:$PATH ${_etherpad_dir}/bin/run.sh" -s /bin/bash ${_etherpad_user} + +## - If initial configuration is done, you will see output like +## - You can access your Etherpad instance at http://0.0.0.0:9001/ +## - type +c to break and afterwords kill left processes +## - +pkill --signal SIGTERM -u ${_etherpad_user} + + +## - Create startscript for etherpad-lite in folder /etc/init.d +## - +cat << EOF > /etc/init.d/${_etherpad_instance} +#!/usr/bin/env bash + +### BEGIN INIT INFO +# Provides: $_etherpad_instance +# Required-Start: \$local_fs \$remote_fs \$network \$syslog +# Required-Stop: \$local_fs \$remote_fs \$network \$syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts etherpad lite +# Description: starts etherpad lite using start-stop-daemon +### END INIT INFO + +PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/node/bin" +LOGFILE="${_etherpad_dir}/log/${_etherpad_instance}.log" +EPLITE_DIR="${_etherpad_dir}" +EPLITE_BIN="bin/safeRun.sh" +USER="$_etherpad_user" +GROUP="$_etherpad_group" +DESC="Etherpad Lite" +NAME="$_etherpad_instance" + +set -e + +. /lib/lsb/init-functions + +start() { + + ## - Already running ? + # - + if [ -f "/var/run/\$NAME.pid" ]; then + _pids=\$(cat /var/run/\$NAME.pid | tr '\n' ' ') + for _pid in \$_pids ; do + if [ -d "/proc/\$_pid" ];then + echo "\$DESC is already running. Exiting.." + return + fi + done + rm -f /var/run/\$NAME.pid + fi + + _pids=\$(ps --no-headers ax | grep \$EPLITE_DIR/\$EPLITE_BIN | grep -v grep | awk '{print\$1}' | tr '\n' ' ') + if [ -n "\$_pids" ]; then + echo "Some older \$DESC processes are running. I will stop them first.." + for pid in \$_pids ;do + killtree \$pid 15 + sleep 0.5 + done + echo "done" + fi + + ## - Start now.. + echo "Starting \$DESC... " + + start-stop-daemon --start --chuid "\$USER:\$GROUP" --background \\ + --make-pidfile --pidfile /var/run/\$NAME.pid --exec \\ + \$EPLITE_DIR/\$EPLITE_BIN -- \$LOGFILE || true + echo "done" +} + +#We need this function to ensure the whole process tree will be killed +killtree() { + local _pid=\$1 + local _sig=\${2-TERM} + for _child in \$(ps -o pid --no-headers --ppid \${_pid}); do + killtree \${_child} \${_sig} + done + if ps -o pid --no-headers ax | grep \${_pid} > /dev/null ; then + kill -\${_sig} \${_pid} + fi +} + +stop() { + echo "Stopping \$DESC... " + if [ -f "/var/run/\$NAME.pid" ]; then + while test -d /proc/\$(cat /var/run/\$NAME.pid); do + killtree \$(cat /var/run/\$NAME.pid) 15 + sleep 0.5 + done + rm -f /var/run/\$NAME.pid + fi + for pid in \$(ps --no-headers ax | grep \$EPLITE_DIR/\$EPLITE_BIN | grep -v grep | awk '{print\$1}' | tr '\n' ' ');do + killtree \$pid 15 + sleep 0.5 + done + echo "done" +} + +status() { + status_of_proc -p /var/run/\$NAME.pid "" "$_etherpad_instance" && exit 0 || exit \$? +} + +case "\$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + status + ;; + *) + echo "Usage: \$NAME {start|stop|restart|status}" >&2 + exit 1 + ;; +esac + +exit 0 +EOF + +chmod 755 /etc/init.d/$_etherpad_instance + + +m# - Make etherpad start at boottime +## - +update-rc.d ${_etherpad_instance} defaults + + +## - Note: +## - etherpad-lite is logging into file {_etherpad_dir}/log/${_etherpad_instance}.log + +## - UPDATE etherpad-lite +## - +## - !! Note !! +## - We uses a system user for etherpad-lite processes. So you +## - cannot login as that user. For Updating etherpad-lite use the +## - following command +## - su -c "cd ${_etherpad_dir} ; git pull origin" -s /bin/bash ${_etherpad_user} +## - +su -c "cd ${_etherpad_dir} ; git pull origin" -s /bin/bash ${_etherpad_user} + + +## ------------------------------------------------- +## - Use nginx as proxy +## - + +## - Create host config +## - +## - Notice !! +## - +## - - Don't forget to place the ssl certificate/key +## - +## - - include intermediate cert(s) into cert file: +## - first: site certificate +## - second: intermidiate certificate +## - +cat << EOF > /etc/nginx/sites-available/${_hostname}.conf +server { + + listen $_ipv4:80; + listen $_ipv4:443 ssl; + listen [$_ipv6]:80 ; ## listen for ipv6 + listen [$_ipv6]:443 ssl ; ## listen for ipv6 + + server_name $_hostname; + + root $_etherpad_dir; + + location = /favicon.ico { + return 204; + log_not_found off; + access_log off; + } + + location = /robots.txt { + log_not_found off; + access_log off; + } + + # Deny all attempts to access hidden files such as .htaccess, .htpasswd, + # .DS_Store (Mac). + location ~ /\. { + return 444; + access_log off; + log_not_found off; + } + + #include standard.conf; + + ssl_certificate ssl_keys/oopen.de.chained.crt; + ssl_certificate_key ssl_keys/oopen.de.key; + + if (\$scheme = http) { + return 301 https://\$server_name\$request_uri; + } + + #auth_basic "closed site"; + #auth_basic_user_file /etc/nginx/.htpasswd_etherpad; + + ## - Handle pad URLs here + ## - + location / { + proxy_pass http://${_etherpad_instance}; + proxy_set_header Host \$host; + proxy_buffering off; + } +} + +upstream $_etherpad_instance { + server $_etherpad_host:$_etherpad_port; +} +EOF + +ln -s ../sites-available/${_hostname}.conf /etc/nginx/sites-enabled/ + + +## - robots.txt +## - +cat << EOF > ${_etherpad_dir}/robots.txt +User-agent: * +Disallow: / +EOF + +chown ${_etherpad_user}:${_etherpad_user} ${_etherpad_dir}/robots.txt + + +## - Further adjusting settings.json +## - +## - Bind to 127.0.0.1 +## - "ip": "127.0.0.1", +## - +## - We will use NginX as a proxy, so set this to true +## - "trustProxy": true, +## - +vim ${_etherpad_dir}/settings.json + + +## - Start etherpad-lite +## - +/etc/init.d/$_etherpad_instance start + + + +## ------------------------------------------------- +## - Install Plugin adminpads +## - (ep_adminpads) + +## - Install adminpads via admin interface -> Plugin Manager +## - +## - URL...: https://${_hostname}/admin +# - + + + +## ------------------------------------------------- +## - Install community frontend +## - (Plugin ep_frontend_community) + + +## - Note: +## - +## - host-part of db settings in settings.json must have: +## - "host" : "" +## - +## - "port" : "" DOES NOT work +## - + +## - Install adminpads via admin interface -> Plugin Manager +## - +## - URL...: https://${_hostname}/admin + + + + +## - Prerequisites: +## - +## - Create needed database tables: +## - +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ +"DROP TABLE IF EXISTS GroupPads; + CREATE TABLE GroupPads ( + UserID int(11) DEFAULT '1', + GroupID int(11) NOT NULL, + PadName varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (GroupID,PadName) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8;" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ +"DROP TABLE IF EXISTS Groups; + CREATE TABLE Groups ( + groupID int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + PRIMARY KEY (groupID,name) + ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ +"DROP TABLE IF EXISTS NotRegisteredUsersGroups; + CREATE TABLE NotRegisteredUsersGroups ( + email varchar(255) NOT NULL, + groupID int(11) NOT NULL ) + ENGINE=InnoDB DEFAULT CHARSET=utf8;" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ +"DROP TABLE IF EXISTS User; + CREATE TABLE User ( + userID int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + pwd varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + considered tinyint(11) DEFAULT NULL, + SSO tinyint(4) DEFAULT NULL, + FullName varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + considerationString varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + salt varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + active int(1) DEFAULT NULL, isAdmin int(1) NOT NULL DEFAULT '0', + PRIMARY KEY (userID,name) + ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ +"DROP TABLE IF EXISTS UserGroup; + CREATE TABLE UserGroup ( + userID int(11) NOT NULL DEFAULT '0', + groupID int(11) NOT NULL DEFAULT '0', + Role int(11) DEFAULT NULL, + PRIMARY KEY (userID,groupID) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8;" + +## - Note: +## - Setup the Pad Administrator with full rights. You +## - can login, with the following credentials: +## - +## - username: $_etherpad_admin +## - password: admin +## - +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ +"INSERT INTO User VALUES ( 1,'$_etherpad_admin','53e8f649c9bfbccf8f8e2b588d05de8ce26f26228a9cc9340cdc8c5f9b1a0d1e', 1,0,'Pad System Adminstrator','fGREpQX1cwnUqv3fsqHPkjP3WtlG1ZsXFFx6v0mR','EYEcciC6Nk',1,1 );" + +## - Install etherpad plugin frontend_community via admin interface of etherpad +## - +## - url: https://etherpad.oopen.de/admin/plugins +## - + +## - Adjust /var/www/etherpad-lite/node_modules/ep_frontend_community/email.json +## - +## - "smtp": "false", +## - .. +## - "invitationfrom": "admin@oopen.de" +## - .. +## - "registrationfrom": "admin@oopen.de" +## - .. +## - "resetfrom": "admin@oopen.de", +## - +vim ${_etherpad_dir}/node_modules/ep_frontend_community/email.json + + +## - Further adjusting settings.json +## - +## - we want users to authenticate +## - "requireAuthorization": true, +## - +## - don't allow public pads, only group pads are allowed +## - "requireSession" : true, +## - +vim ${_etherpad_dir}/settings.json + + +## - Logo +## - +## - You can have your own logo for the pad header. The logo image file +## - is placed at: +## - +## - ${_etherpad_dir}/node_modules/ep_frontend_community/static/images/logo.png +## - + + +## ------------------------------------------------- +## - Install Plugin aa_file_menu_toolbar +## - (ep_aa_file_menu_toolbar) + +## - Install aa_file_menu_toolbar via admin interface -> Plugin Manager + + + +## ------------------------------------------------- +## - Install Plugin copy_paste_select_all +## - (ep_copy_paste_select_all) + +## - Install copy_paste_select_all via admin interface -> Plugin Manager + + + +## ------------------------------------------------- +## - Install Plugin headings +## - (ep_headings) + +## - Install headings via admin interface -> Plugin Manager + + + +## ------------------------------------------------- +## - Install Plugin set_title_on_pad +## - (ep_set_title_on_pad) + +## - Install set_title_on_pad via admin interface -> Plugin Manager + + + +## ------------------------------------------------- +## - Install Plugin page_view +## - (ep_page_view) + +## - Install page_view via admin interface -> Plugin Manager + + + +## ------------------------------------------------- +## - Install Plugin page_ruler +## - (ep_page_ruler) + +## - Install page_ruler via admin interface -> Plugin Manager + + + +## ------------------------------------------------- +## - Install Plugin fileupload +## - (ep_fileupload) + +## - Install fileupload via admin interface -> Plugin Manager + + +## xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + +## ------------------------------------------------- +## - Install plugin imageconvert +## - (Plugin ep_imageconvert) + +## - Install Prerequisites: +## - +apt-get install imagemagick poppler-utils ghostscript sed + + + +## ------------------------------------------------- +## - Install Plugin sketchspace_pdfbackground +## - (ep_sketchspace_pdfbackground) + +## - Install sketchspace_pdfbackground via admin interface -> Plugin Manager + + +## - Install plugin imageconvert via via admin interface of etherpad + + + +## ------------------------------------------------- +## - Install Plugin print +## - (ep_print) + +## - Install print via admin interface -> Plugin Manager + + + +## xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + +## - Homepage etherpad +## - +## - http://etherpad.org/ + +## - Wiki etherpad +## - +## - https://github.com/ether/etherpad-lite/wiki + + +## - Install etherpad: +## - +## - https://github.com/ether/etherpad-lite/blob/master/README.md +## - https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy + + +## - How to deploy Etherpad Lite as a service - means startup script at boot time +## - +## - https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service +## - + + +## - How to use Etherpad Lite with MySQL: +## - +## - https://github.com/ether/etherpad-lite/wiki/How-to-use-Etherpad-Lite-with-MySQL +## - https://github.com/ether/etherpad-lite/wiki/How-to-migrate-the-database-from-Etherpad-to-Etherpad-Lite + + + diff --git a/old/install_etherpad.txt.00 b/old/install_etherpad.txt.00 new file mode 100644 index 0000000..a7d74cd --- /dev/null +++ b/old/install_etherpad.txt.00 @@ -0,0 +1,730 @@ + +## ================================================= +## - Install etherpad-lite + + +## - il-pad.oopen.de +## - +_node_version="0.10.26" +_source_base_dir="/usr/local/src" + +_etherpad_dir="/var/www/etherpad-lite" + +_etherpad_user="etherpad" +_etherpad_group="etherpad" + +_etherpad_db_name="etherpad" +_etherpad_db_user="etherpad" +_etherpad_db_pass="HtfrxP9sfJqwRKrM" + +mysql_credential_args="--login-path=local_root" + +_hostname="il-pad.oopen.de" +_ipv4="83.223.85.227" +_ipv6="2a01:30:1fff:5::227" + +_etherpad_port="9001" +_etherpad_host="127.0.0.1" +## - +## - End: il-pad.oopen.de + + +## - etherpad.oopen.de +## - +_node_version="0.10.28" +_source_base_dir="/usr/local/src" + +_etherpad_dir="/var/www/etherpad-lite" + +_etherpad_user="etherpad" +_etherpad_group="etherpad" + +_etherpad_db_name="etherpad" +_etherpad_db_user="etherpad" +_etherpad_db_pass="px3zPdsKMKzvXc3r" + +mysql_credential_args="--login-path=local" + +_hostname="etherpad.oopen.de" +_ipv4="83.223.85.45" +_ipv6="2a01:30:1fff:fe00::45" + +_etherpad_port="9001" +_etherpad_host="127.0.0.1" +## - +## - End: etherpad.oopen.de + + + + +## ------------------------------------------------- +## - Install prerequisites + +## - node +apt-get install libc6-dev libssl-dev make gcc g++ +apt-get install gzip git-core curl python pkg-config build-essential +apt-get install libpq-dev postgresql-client + +# - etherpad-lite +apt-get install abiword + + +## ------------------------------------------------- +## - Install nginx + +## - Installed from debian ports + + +## ------------------------------------------------- +## - Install MySQL + +## - MySQL is installed from source: +## - +## - installdir = /usr/local/mysql +## - + + + +## ------------------------------------------------- +## - Install node (node.js) + + +mkdir -p ${_source_base_dir}/node +cd ${_source_base_dir}/node + +## - Download from project side http://nodejs.org/ +## - +wget http://nodejs.org/dist/v${_node_version}/node-v${_node_version}.tar.gz + + +## - Install +## - +gunzip < node-v${_node_version}.tar.gz | tar -xf - +cd node-v${_node_version} + +./configure --prefix=/usr/local/node-v${_node_version} +make +make install + +ln -s node-v${_node_version} /usr/local/node + +## - Add bin directory of node to the PATH environment +## - +## - Edit /etc/profile +## - +## - Add befor exporting PATH variable: +## - +## - +## - checkdir="/usr/local/node/bin" +## - if [ -d $checkdir ]; then +## - PATH=$PATH:$checkdir +## - fi +vim /etc/profile + + +## - Install manpages +## - +## - Manpages +## - +if ! grep /usr/local/node/share/man /etc/manpath.config > /dev/null 2<&1 ; then + echo >> /etc/manpath.config + echo "MANDATORY_MANPATH /usr/local/node/share/man /var/cache/man" >> /etc/manpath.config + echo "MANPATH_MAP /usr/local/node/bin /usr/local/node/share/man" >> /etc/manpath.config + echo "MANDB_MAP /usr/local/node/share/man /var/cache/man" >> /etc/manpath.config +fi + + + + +## ------------------------------------------------- +## - Install etherpad-lite + + + +## - Create MySQL databse +## - +## - db_name: $_etherpad_db_name +## - db_user: $_etherpad_db_user +## - db_pass: $_etherpad_db_pass +## - +mysql $mysql_credential_args -N -s -e \ + "CREATE DATABASE IF NOT EXISTS $_etherpad_db_name CHARACTER SET utf8 COLLATE utf8_general_ci" +mysql $mysql_credential_args -N -s -e \ + "GRANT ALL PRIVILEGES ON $_etherpad_db_name.* TO '$_etherpad_db_user'@'%' IDENTIFIED BY '$_etherpad_db_pass'" +mysql $mysql_credential_args -N -s -e "FLUSH PRIVILEGES" + + +## - Create user $_etherpad_user for etherpad +## - +adduser --system --home=/var/www/etherpad-lite/ --group $_etherpad_user + + +## - Get etherpad-lite +## - +## - Downlouad via +## - https://github.com/ether/etherpad-lite +## - or clone yoursef via git cone +## - +cd /var/www +git clone git://github.com/ether/etherpad-lite.git + +cd ${_etherpad_dir} + +cp ${_etherpad_dir}/settings.json.template \ + ${_etherpad_dir}/settings.json + +mkdir -p ${_etherpad_dir}/log +chown -R $_etherpad_user:$_etherpad_user ${_etherpad_dir} + + +## - Adjust settings.json +## - +## - Setup a sessionKey (secure string, at least 10 characters) +## - "sessionKey" : "bHT7JCwnFVXcz4Jvqk9qLsd9", +## - +## - Setup database. comment in type dirty section an uncomment/create +## - section for MySQL. Note, if no tcp binding on mysql exists and only +## - mysql is only listening on linux socket, use "port" instead of "host" +## - +## - "dbType" : "mysql", +## - "dbSettings" : { +## - "user" : "$_etherpad_db_user", +## - "port" : "/tmp/mysql.sock", +## - //"host" : "localhost", +## - "password": "$_etherpad_db_pass", +## - "database": "$_etherpad_db_name" +## - }, +## - +## - At least setup an admin user to access /admin url. Uncomment/create +## - section "users" +## - +## - "users": { +## - "admin": { +## - "password": "20admin14", +## - "is_admin": true +## - }, +## - +## - We have installed abiword, so enable Abiword +## - for advanced import/export features of pads like PDF, +## - +## - "abiword" : "/usr/bin/abiword", +## - +vim ${_etherpad_dir}/settings.json + + +## - Configure the "safeRun.sh"-script to ensure getting +## - email email notifications if there are problems with +## - the applications. +## - +## - This script also ensures that ep-lite is automatically +## - restarting after an error happens +## - +## - Set/Replace +## - +## - ERROR_HANDLING=1 +## - EMAIL_ADDRESS="argus@oopen.de" +## - +vim ${_etherpad_dir}/bin/safeRun.sh + + +## - Start at first time and let etherpad make initial configurations +## - +su -c "PATH=/usr/local/node/bin:$PATH ${_etherpad_dir}/bin/run.sh" -s /bin/bash ${_etherpad_user} + +## - If initial configuration is done, you will see output like +## - You can access your Etherpad instance at http://0.0.0.0:9001/ +## - type +c to break and afterwords kill left processes +## - +pkill --signal SIGTERM -u ${_etherpad_user} + + +## - Create startscript for etherpad-lite in folder /etc/init.d +## - +cat << EOF > /etc/init.d/etherpad-lite +#!/usr/bin/env bash + +### BEGIN INIT INFO +# Provides: etherpad-lite +# Required-Start: \$local_fs \$remote_fs \$network \$syslog +# Required-Stop: \$local_fs \$remote_fs \$network \$syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts etherpad lite +# Description: starts etherpad lite using start-stop-daemon +### END INIT INFO + +PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/node/bin" +LOGFILE="${_etherpad_dir}/log/etherpad-lite.log" +EPLITE_DIR="${_etherpad_dir}" +EPLITE_BIN="bin/safeRun.sh" +USER="$_etherpad_user" +GROUP="$_etherpad_group" +DESC="Etherpad Lite" +NAME="etherpad-lite" + +set -e + +. /lib/lsb/init-functions + +start() { + + ## - Already running ? + # - + if [ -f "/var/run/\$NAME.pid" ]; then + _pids=\$(cat /var/run/\$NAME.pid | tr '\n' ' ') + for _pid in \$_pids ; do + if [ -d "/proc/\$_pid" ];then + echo "\$DESC is already running. Exiting.." + return + fi + done + rm -f /var/run/\$NAME.pid + fi + + _pids=\$(ps --no-headers ax | grep \$EPLITE_DIR/\$EPLITE_BIN | grep -v grep | awk '{print\$1}' | tr '\n' ' ') + if [ -n "\$_pids" ]; then + echo "Some older \$DESC processes are running. I will stop them first.." + for pid in \$_pids ;do + killtree \$pid 15 + sleep 0.5 + done + echo "done" + fi + + ## - Start now.. + echo "Starting \$DESC... " + + start-stop-daemon --start --chuid "\$USER:\$GROUP" --background \\ + --make-pidfile --pidfile /var/run/\$NAME.pid --exec \\ + \$EPLITE_DIR/\$EPLITE_BIN -- \$LOGFILE || true + echo "done" +} + +#We need this function to ensure the whole process tree will be killed +killtree() { + local _pid=\$1 + local _sig=\${2-TERM} + for _child in \$(ps -o pid --no-headers --ppid \${_pid}); do + killtree \${_child} \${_sig} + done + if ps -o pid --no-headers ax | grep \${_pid} > /dev/null ; then + kill -\${_sig} \${_pid} + fi +} + +stop() { + echo "Stopping \$DESC... " + if [ -f "/var/run/\$NAME.pid" ]; then + while test -d /proc/\$(cat /var/run/\$NAME.pid); do + killtree \$(cat /var/run/\$NAME.pid) 15 + sleep 0.5 + done + rm -f /var/run/\$NAME.pid + fi + for pid in \$(ps --no-headers ax | grep \$EPLITE_DIR/\$EPLITE_BIN | grep -v grep | awk '{print\$1}' | tr '\n' ' ');do + killtree \$pid 15 + sleep 0.5 + done + echo "done" +} + +status() { + status_of_proc -p /var/run/\$NAME.pid "" "etherpad-lite" && exit 0 || exit \$? +} + +case "\$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + status + ;; + *) + echo "Usage: \$NAME {start|stop|restart|status}" >&2 + exit 1 + ;; +esac + +exit 0 +EOF + +chmod 755 /etc/init.d/etherpad-lite + + +## - Make etherpad start at boottime +## - +update-rc.d etherpad-lite defaults + + +## - Note: +## - etherpad-lite is logging into file {_etherpad_dir}/log/etherpad-lite.log + + +## - !! Note !! +## - We uses a system user for etherpad-lite processes. So you +## - cannot login as that user. For Updating etherpad-lite use the +## - following command +## - su -c "cd ${_etherpad_dir} ; git pull origin" -s /bin/bash ${_etherpad_user} +## - +su -c "cd ${_etherpad_dir} ; git pull origin" -s /bin/bash ${_etherpad_user} + + +## ------------------------------------------------- +## - Use nginx as proxy +## - + +## - Create host config +## - +## - Notice !! +## - +## - - Don't forget to place the ssl certificate/key +## - +## - - include intermediate cert(s) into cert file: +## - first: site certificate +## - second: intermidiate certificate +## - +cat << EOF > /etc/nginx/sites-available/${_hostname}.conf +server { + + listen $_ipv4:80; + listen $_ipv4:443 ssl; + listen [$_ipv6]:80 ; ## listen for ipv6 + listen [$_ipv6]:443 ssl ; ## listen for ipv6 + + server_name $_hostname; + + root $_etherpad_dir; + + location = /favicon.ico { + return 204; + log_not_found off; + access_log off; + } + + location = /robots.txt { + log_not_found off; + access_log off; + } + + # Deny all attempts to access hidden files such as .htaccess, .htpasswd, + # .DS_Store (Mac). + location ~ /\. { + return 444; + access_log off; + log_not_found off; + } + + #include standard.conf; + + ssl_certificate ssl_keys/oopen.de.chained.crt; + ssl_certificate_key ssl_keys/oopen.de.key; + + if (\$scheme = http) { + return 301 https://\$server_name\$request_uri; + } + + #auth_basic "closed site"; + #auth_basic_user_file /etc/nginx/.htpasswd_etherpad; + + ## - Handle pad URLs here + ## - + location / { + proxy_pass http://etherpad-lite; + proxy_set_header Host \$host; + proxy_buffering off; + } +} + +upstream etherpad-lite { + server $_etherpad_host:$_etherpad_port; +} +EOF + +ln -s ../sites-available/${_hostname}.conf /etc/nginx/sites-enabled/ + + +## - robots.txt +## - +cat << EOF > ${_etherpad_dir}/robots.txt +User-agent: * +Disallow: / +EOF + +chown ${_etherpad_user}:${_etherpad_user} ${_etherpad_dir}/robots.txt + + +## - Further adjusting settings.json +## - +## - Bind to 127.0.0.1 +## - "ip": "127.0.0.1", +## - +## - We will use NginX as a proxy, so set this to true +## - "trustProxy": true, +## - +vim ${_etherpad_dir}/settings.json + + +## - Start etherpad-lite +## - +/etc/init.d/etherpad-lite start + + + +## ------------------------------------------------- +## - Install Plugin adminpads +## - (ep_adminpads) + +## - Install adminpads via admin interface -> Pligin Manager +## - +## - URL...: https://${_hostname}/admin +# - + + + +## ------------------------------------------------- +## - Install Admin User Interface +## - (Plugin ep_user_pad and ep_user_pad_frontend) + + +## - Prerequisites: +## - +## - Create needed database tables: +## - +mysql_credential_args="--login-path=local_root" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ + "CREATE TABLE IF NOT EXISTS GroupPads ( + GroupID int(11) NOT NULL, + PadName varchar(255) COLLATE utf8_bin NOT NULL, + PRIMARY KEY (GroupID,PadName) + )" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ + "CREATE TABLE IF NOT EXISTS Groups ( + groupID int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '', + PRIMARY KEY (groupID,name) + )" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ + "CREATE TABLE IF NOT EXISTS NotRegisteredUsersGroups ( + email varchar(255) NOT NULL, + groupID int(11) NOT NULL + )" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ + "CREATE TABLE IF NOT EXISTS User ( + userID int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '', + pwd varchar(255) COLLATE utf8_bin DEFAULT NULL, + considered tinyint(11) DEFAULT NULL, + SSO tinyint(4) DEFAULT NULL, + FullName varchar(255) COLLATE utf8_bin DEFAULT NULL, + considerationString varchar(50) COLLATE utf8_bin DEFAULT NULL, + salt varchar(255) COLLATE utf8_bin DEFAULT NULL, + active int(1) DEFAULT NULL, + PRIMARY KEY (userID,name) + )" + +mysql $mysql_credential_args $_etherpad_db_name -N -s -e \ + "CREATE TABLE IF NOT EXISTS UserGroup ( + userID int(11) NOT NULL DEFAULT 0, + groupID int(11) NOT NULL DEFAULT 0, + Role int(11) DEFAULT NULL, + PRIMARY KEY (userID,groupID) + )" + +## - Inatall etherpad plugin user_pad via admin interface of etherpad +## - +## - url: https://etherpad.oopen.de/admin/plugins +## - + +## - Adjust /var/www/etherpad-lite/node_modules/ep_user_pad/email.json +## - +## - "smtp": "false", +## - .. +## - "invitationfrom": "admin@oopen.de" +## - .. +## - "registrationfrom": "admin@oopen.de" +## - .. +## - "resetfrom": "admin@oopen.de", +## - +vim ${_etherpad_dir}/node_modules/ep_user_pad/email.json + + +## - Install adminpads via admin interface -> Pligin Manager +## - +## - URL...: https://${_hostname}/admin + +## - Adjust /var/www/etherpad-lite/node_modules/ep_user_pad_frontend/email.json +## - +## - "smtp": "false", +## - .. +## - "invitationfrom": "admin@oopen.de" +## - .. +## - "registrationfrom": "admin@oopen.de" +## - .. +## - "resetfrom": "admin@oopen.de", +## - +vim vim ${_etherpad_dir}/node_modules/ep_user_pad_frontend/email.json + + +## - Further adjusting settings.json +## - +## - we want users to authenticate +## - "requireAuthorization": true, +## - +## - don't allow public pads, only group pads are allowed +## - "requireSession" : true, +## - +vim vim ${_etherpad_dir}/settings.json + + +## - !! Notice !! +## - +## - Adding Users via admin interface failed. +## - +## - For this time, correcting file +## - /var/www/etherpad-lite/node_modules/ep_user_pad/hooks.js +## - as follows: +## - +## - comment out: +## - +## - settings.encryptPassword = function (password, salt, cb) { +## - var encrypted = crypto.createHmac('sha256', salt).update(password).digest('hex'); +## - cb(encrypted); +## - }; +## - +## - add: +## - +## - var encryptPassword = function (password, salt, cb) { +## - var encrypted = crypto.createHmac('sha256', salt).update(password).digest('hex'); +## - cb(encrypted); +## - }; +## - + + + +## ------------------------------------------------- +## - Install Plugin aa_file_menu_toolbar +## - (ep_aa_file_menu_toolbar) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install Plugin copy_paste_select_all +## - (ep_copy_paste_select_all) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install Plugin headings +## - (ep_headings) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install Plugin set_title_on_pad +## - (ep_set_title_on_pad) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install Plugin page_view +## - (ep_page_view) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install Plugin page_ruler +## - (ep_page_ruler) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install Plugin fileupload +## - (ep_fileupload) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## ------------------------------------------------- +## - Install plugin imageconvert +## - (Plugin ep_imageconvert) + +## - Install Prerequisites: +## - +apt-get install imagemagick poppler-utils ghostscript sed + + + +## ------------------------------------------------- +## - Install Plugin sketchspace_pdfbackground +## - (ep_sketchspace_pdfbackground) + +## - Install adminpads via admin interface -> Pligin Manager + + +## - Install plugin imageconvert via via admin interface of etherpad + + + +## ------------------------------------------------- +## - Install Plugin print +## - (ep_print) + +## - Install adminpads via admin interface -> Pligin Manager + + + +## xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + +## - Homepage etherpad +## - +## - http://etherpad.org/ + +## - Wiki etherpad +## - +## - https://github.com/ether/etherpad-lite/wiki + + +## - Install etherpad: +## - +## - https://github.com/ether/etherpad-lite/blob/master/README.md +## - https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy + + +## - How to deploy Etherpad Lite as a service - means startup script at boot time +## - +## - https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service +## - + + +## - How to use Etherpad Lite with MySQL: +## - +## - https://github.com/ether/etherpad-lite/wiki/How-to-use-Etherpad-Lite-with-MySQL +## - https://github.com/ether/etherpad-lite/wiki/How-to-migrate-the-database-from-Etherpad-to-Etherpad-Lite + + +