====== Etherpad aufsetzen ====== Diese Anleitung ist eine erste Hilfestellung und vermutlich noch nicht vollständig. Voraussetzungen apt-get install nodejs nodejs-legacy npm curl Installationsort: ''/var/www/etherpad'' Systembenutzer einrichten adduser --system --group --no-create-home --home /var/www/etherpad etherpad Programm herunterladen und installieren cd /var/www wget https://github.com/ether/etherpad-lite/archive/1.8.0.zip unzip 1.8.0.zip rm 1.8.0.zip ln -s etherpad-lite-1.8.0 etherpad chown -R etherpad etherpad-lite-1.8.0 Datenbank vorbereiten * die Datenbank soll "etherpad" heißen * der Datenbankbenutzer soll ebenfalls "etherpad" heißen * gutes [[Kennwort]] für den Benutzer ausdenken. Das dieses lediglich in der Konfiguration eingetragen wird, spricht nichts gegen ein langes, komplexes Kennwort mysql -u root -p > CREATE DATABASE etherpad; > CREATE USER 'etherpad'@'localhost' IDENTIFIED BY '********'; > GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad.* to 'etherpad'@'localhost'; > exit Kennwort ändern im Fehlerfall SET PASSWORD FOR 'etherpad'@'localhost' = PASSWORD('new-password-here'); FLUSH PRIVILEGES; Konfiguration cd etherpad cp settings.json.template settings.json chown etherpad settings.json "dbType" : "mysql", "dbSettings" : { "user" : "etherpad", "host" : "localhost", "password": "********", "database": "etherpad", "charset" : "utf8mb4" }, "loglevel": "WARN", "users": { "admin": { "password": "****", "is_admin": true }, "user": { "password": "****", "is_admin": false } }, //Optional:// Proxy konfigurieren, falls Etherpad hinter einem Proxy eingerichtet wird npm config set proxy http://"user:pass"@proxy.example.com:3128 npm config set https-proxy http://"user:pass"@proxy.example.com:3128 Starten, das funktioniert nur, wenn der oben angelegte Benutzer einen Shell-Zugang hat. Mit dem Eintrag ''/bin/false'' geht es **nicht**! cd /var/www/etherpad su etherpad -c bin/run.sh Im Produktivbetrieb sollte das Pad hinter einem echten Webserver betrieben werden, wie z.B. Nginx oder Apache. Dieser muß als Reverse-Proxy konfiguriert werden. Für Nginx z.B.: server { listen 80; server_name pad.example.com; root html; index index.html index.htm; location = / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:9001; } } ===== Init-Script ===== ++++ SysV-Initscript | #!/bin/sh ### 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:/opt/node/bin" LOGFILE="/var/log/etherpad-lite.log" EPLITE_DIR="/var/www/etherpad-lite" EPLITE_BIN="bin/safeRun.sh" USER="etherpad" GROUP="etherpad" DESC="Etherpad Lite" NAME="etherpad-lite" # Exit if the package is not installed [ -x $EPLITE_DIR/$EPLITE_BIN ] || exit 0 # Define LSB log_* functions . /lib/lsb/init-functions # Create logfile with proper user if not exists if [ ! -e $LOGFILE ]; then touch $LOGFILE chmod 660 $LOGFILE chgrp $GROUP $LOGFILE fi do_start() { start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true } #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 kill -${_sig} ${_pid} } do_stop() { if [ ! -f /var/run/$NAME.pid ]; then log_progress_msg "Process not found..." return 2 fi while test -d /proc/$(cat /var/run/$NAME.pid); do killtree $(cat /var/run/$NAME.pid) 15 sleep 0.5 done rm /var/run/$NAME.pid } do_restart() { log_progress_msg "stopping..." do_stop if [ $? -eq "2" ]; then return 2 fi sleep 1 log_progress_msg "starting..." do_start } status() { status_of_proc -p /var/run/$NAME.pid "" "etherpad-lite" && exit 0 || exit $? } case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; restart) log_daemon_msg "Restarting $DESC" "$NAME" do_restart case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; status) status_of_proc -p /var/run/$NAME.pid "$EPLITE_DIR/$EPLITE_BIN" "$NAME" && exit 0 || exit $? ;; *) echo "Usage: $NAME {start|stop|restart|status}" >&2 exit 1 ;; esac ++++ ===== Erweiterungen (Plugins) ===== * adminpads * font_family * font_size * headings * mypads (Timeslider defekt?)