Initial commit
This commit is contained in:
215
README.install
Normal file
215
README.install
Normal file
@ -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 <<EOF > /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 <<EOF > /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
|
Reference in New Issue
Block a user