Hace unos días os hablabamos del nuevo pad de elbinario. Hoy os traemos cómo instalarlo, si no lo conoceis, etherpad es el servicio que seguramente conoceréis por plataformas cómo titanpad o piratepad. Hoy os traemos cómo instalarlo en nuestro propio servidor.
Instalar dependencias
apt-get install gzip git-core curl python libssl-dev pkg-config build-essential
Instalar node.js
Instalamos node.js desde el código fuente. Bajamos el código desde la web oficial. En nuestro caso sería así:
wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz tar -xvf node-v0.10.26.tar.gz
Nos dará cómo resultado el directorio node-v0.10.26. Accedemos a él e instalamos con los siguientes comandos, cómo root:
cd node-v0.10.26 ./configure make make install
Actualizar node.js (Opcional)
Si queremos actualizar node.js sin tener que volverlo a compilar, podremos usar los siguientes comandos.
npm install -g n n update
Crear usuario etherpad
Por una cuestión de seguridad, crearemos un usuario llamado etherpad, que será el encargado de ejecutar etherpad-lite.
adduser etherpad
Y accedemos cómo ese usuario, los siguientes comandos los ejecutaremos cómo etherpad:
su etherpad
Instalar etherpad-lite
Para instalar etherpad-lite empezaremos clonando el repositorio disponible en github y accederemos al directorio:
git clone https://github.com/ether/etherpad-lite cd etherpad-lite
Una vez dentro del directorio, lo ejecutamos y si habéis instalado las dependencias deberíais poder acceder a él.
./bin/run.sh
Si todo a ido bien podréis entrar en la dirección que os devuelve, probablemente localhost:9001.
Actualizar etherpad-lite (Opcional)
Si en un futuro queremos actualizar etherpad-lite, desde el directorio que hemos creado, que debería estar en /home/etherpad/etherpad-lite/ ejecutaremos:
git pull origin
Pero siempre deberíamos hacer una copia de seguridad del directorio etherpad-lite:
cp etherpad-lite{,.backup}
Configuración
Redirección con subdominio y Nginx (Opcional)
Instalaremos Nginx:
apt-get install nginx
Si queremos acceder a etherpad-lite, ya deberíamos poder hacerlo desde la ip del servidor por el puerto 9001, si tiene los puertos abiertos. Para hacerlo más cómodo vamos a configurar Nginx para que nos haga de proxy hacía etherpad-lite. Aquí podéis ver cómo queda la configuración. Contiene redirección de http a https con la ruta a los certificados que generaremos a continuación. Si habéis seguido todos los pasos, con que cambiéis el nombre del servidor (pad.elbinario.net) por el vuestro, debería funcionaros.
El virtual host se crea en /etc/nginx/sites-available/ y luego se hace un enlace simbólico hacía /etc/nginx/sites-enabled. Lo haríamos así:
nano /etc/nginx/sites-available/etherpad-lite ln -s /etc/nginx/sites-available/etherpad-lite /etc/nginx/sites-enabled/etherpad-lite
Recordad a rellenar el archivo con el ejemplo.
Y reiniciar nginx:
service nginx restat
Configuración SSL (Recomendado)
Para la configuración de SSL empezaremos generando claves necesarias, para eso habilitaremos un directorio en la carpeta home del usuario etherpad.
mkdir ssl cd ssl
Generaremos las claves y el certificado:
openssl genrsa -out pad.key 4096 openssl req -new -key pad.key -out pad.csr openssl x509 -req -days 365 -in pad.csr -signkey pad.key -out pad.crt
Ahora podemos hacer tres cosas:
- Usar SSL en etherpad-lite. Seguro si accedemos directamente al puerto.
- Usar SSL en Nginx. Seguro si bloqueamos el acceso a través del puerto.
- Usar SSL en ambos. Seguro en ambos casos pero consume más recursos.
Nosotros nos quedaremos con SSL en Nginx y bloquearemos los puertos que no queramos con iptables.
Usar SSL en Nginx (Recomendado)
Para usar SSL en Nginx simplemente debéis añadir las siguientes líneas al fichero de configuración. Aquí podéis ver cómo quedaría entero.
#ssl
ssl on;
ssl_certificate /home/etherpad/ssl/pad.crt;
ssl_certificate_key /home/etherpad/ssl/pad.key;
Usar MySQL (Opcional)
Instalaremos el servidor MySQL y accederemos a MySQL a través de la terminal:
apt-get install mysql-server-5.5 mysql -u root -p
Ejecutarmeos los dos siguientes comandos y cerraremos la sesión:
create database `etherpad-lite`; grant all privileges on `etherpad-lite`.* to 'etherpad'@'localhost' identified by 'PASSWORD'; exit
Ahora habilitaremos MySQL en el archivo de configuración.
cd #volver a la home de etherpad nano etherpad-lite/settings.json
«dbType» : «mysql»,
«dbSettings» : {
«user» : «etherpad»,
«host» : «localhost»,
«password»: «password»,
«database»: «etherpad-lite»
},
Aquí podéis ver cómo quedaría.
Y reiniciamos el servicio.
service etherpad restart
Luego volveremos a entrar a la base de datos para dejar bien la configuración del texto.
mysql -u root -p
Y ejecutaremos esto en la DB:
ALTER DATABASE `etherpad-lite` CHARACTER SET utf8 COLLATE utf8_bin; USE `etherpad-lite`; ALTER TABLE `store` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
Protegiendo el acceso al puerto 9001 con IPTABLES
Para proteger el acceso al puerto 9001 con iptables lo mejor que podemos hacer es bloquear todos los puertos excepto los que queramos tener abiertos. En este caso nos interesa tener abiertos los puertos:
- 80 (http)
- 443 (https)
- 20 (ssh)
Crearemos un archivo en /etc/iptables/ con el contenido de este archivo:
nano /etc/iptables/iptables.up.rules
Para que iptables se inicie con el sistema:
echo "iptables-restore < /etc/iptables/iptables.up.rules
etherpad-lite cómo servicio (Opcional)
Para añadir etherpad-lite deberemos usar este script en bash. Lo añadimos, en Debian, en /etc/init.d/. Y le damos permisos de ejecución, todo esto cómo root:
nano /etc/init.d/etherpad-lite chmod +x /etc/init.d/etherpad-lite
Y ahora deberías ser capaz de usar el comando con uno de los siguientes parámetros, después de reiniciar el sistema:
etherpad-lite start|stop|restart|status
Arrancar el servicio con el sistema (Opcional)
Para arrancar el servicio en el sistema añadiremos la siguiente línea a /etc/rc.local.
echo "service etherpad-lite start" >> /etc/rc.local
Cuando pongo sudo etherpad me pide contraseña y no la tengo
sudo solo es necesario si tu sistema esta configurado para usar sudoers, en ese caso la contraseña es la misma que la de tu usuario.
Buenisimo compañero, muchas gracias.