Guía v5/Poner archivos a la disposición
De Guadapedia, la enciclopedia libre.
Tabla de contenidos |
Poner archivos a disposición de la comunidad
La publicación a través de un gestor de contenidos es un método elegante para poner textos, fotos y demás materiales a disposición del público mediante una web que puede llegar a tener un aspecto profesional. En este apartado vamos a dar un repaso a otras formas de publicar y ofrecer nuestros archivos en la red, algunas de ellas no tan conocidas aunque no por ello menos eficientes.
Publicar nuestras carpetas tal cual
Podemos crear una carpeta en nuestro servidor web y copiar contenidos en dicha carpeta, dejándola así pública de una forma sencilla:
$ sudo mkdir /var/www/compartida $ sudo cp Desktop/fichero.zip /var/www/compartida/
De esta forma si accedemos a http://guias-ubuntu.dyndns.org/compartida/
nos mostrará el contenido del directorio sin formato de diseño alguno y podremos descargar todo lo que allí se ofrezca. No muy elegante pero tremendamente sencillo de montar.
FTP: un clásico
FTP (del inglés File Transfer Protocol) es un protocolo de transferencia de ficheros en redes IP. Para tener este servicio debemos instalar un servidor de FTP al que se accederá desde el exterior a través de clientes FTP para obtener sus contenidos.
El protocolo FTP es inseguro en su diseño, así que inicialmente sólo es recomendable para configurar uno anónimo, es decir, un FTP al que se acceda fácilmente sin introducir usuarios y contraseñas reales. El problema radica en que si usásemos FTP con usuarios reales de nuestro servidor, sus nombres de usuario y contraseñas circularían por Internet y serían visibles para todo el mundo, lo cual no es nada recomendable.
Vamos a montar un servidor FTP instalando el paquete vsftpd, The Very Secure FTP Daemon, un servidor de FTP que usaremos sólo anónimamente. Tras la instalación arranca el servidor, sin necesidad de más configuraciones.
Para ofrecer contenidos públicos debemos dejarlos en la carpeta del usuario ftp que crea el paquete. Todo archivo que soltemos en ella serán públicamente accesibles.
Si abrimos nuestro navegador, y lo usamos como cliente de FTP, accediendo a ftp://guias-ubuntu.dyndns.org/ accederemos anónimamente al contenido de nuestro servidor de FTP.
Si usamos un cortafuegos debemos asegurarnos que dejamos pasar el tráfico FTP a nuestro servidor.
SSH: a lo seguro
Si queremos dejar accesible contenidos sólo a ciertas personas y de una forma segura, una buena opción es usar el servidor de SSH (Secure SHell), un protocolo seguro para acceder a máquinas remotas. Para instalar este servicio, instalamos el paquete openssh-server, que dejará accesible nuestra máquina de forma segura a través de los usuarios y sus contraseñas que tengamos creadas en nuestro servidor.
Si usamos un cortafuegos debemos habilitar el trafico de SSH hacia nuestro servidor.
Ahora podemos instalar en nuestra máquina o en otra el paquete openssh-client y acceder a nuestro servidor mediante los comandos ssh, scp o incluso de forma gráfica con GNOME, como hemos explicado en el apartado La red doméstica del capítulo 5. Conecta (a) tu ordenador.
Podemos abrir una sesión remotamente en nuestra máquina por medio de ssh:
$ ssh -l miusuario guias-ubuntu.dyndns.org
De esta forma podemos tomar control de nuestro servidor desde otra localización. Muchos desarrolladores y administradores acceden así a sus servidores desde el portátil, estén donde estén. De hecho la mayoría de las veces dichos servidores se encuentran en un lugar que nunca han visitado, accediendo al servidor de forma remota para cualquier acción.
scp es un comando para hacer copias remotas sobre SSH, es decir, de forma segura. La sintaxis de scp es similar a la del comando de copia "cp", pero al que se le añade el usuario y nombre de la máquina remota.
scp mifichero miusuario@guias-ubuntu.dyndns.org:
Esta instrucción nos copiaría 'mifichero' en el servidor. También se puede copiar directorios enteros con el parámetro "-r" (de recursivo):
scp -r midirectorio miusuario@guias-ubuntu.dyndns.org:
Compartiendo mediante WebDAV
Como hemos visto, podemos habilitar un directorio en nuestro servidor apache con nuestros contenidos públicos. Esto es de alguna forma limitado ya que es sólo un directorio de descarga, los usuarios que acceden a él no tienen forma de subir archivos o editar los archivos disponibles.
WebDAV [1] (http://en.wikipedia.org/wiki/Webdav) es un protocolo que permite que, a través de nuestra web, ciertas carpetas y ficheros de nuestro servidor sean accesibles y modificables desde el exterior de una forma sencilla. De esta forma, la carpeta compartida se muestra en nuestro escritorio y en el de otros usuarios como una carpeta local más, permitiendo editar su contenido.
Una ventaja que tiene WebDAV es que permite bloquear ficheros para prevenir que dos personas editen el mismo contenido al mismo tiempo. Otra ventaja es que se accede al servicio a través de la web por lo que es sencillo de usar a través de cortafuegos y proxys.
Vamos a añadir soporte a Webdav a nuestro servidor apache. Suponiendo que ya hemos instalado 'apache2' habilitamos los siguiente módulos:
$ sudo a2enmod dav
$ sudo a2enmod dav_fs
$ sudo a2enmod auth_digest
Creamos un usuario y contraseña para acceder a la carpeta:
$ sudo htdigest -c /home/miusuario/mi-password mi-webdav miusuario Adding password for miusuario in realm mi-webdav. New password: Re-type new password:
Ahora creamos un nuevo espacio en nuestro web para compartir por WebDAV:
$ sudo nano /etc/apache2/sites-available/webdav
Y finalmente incluimos esto:
<Directory /home/miusuario/compartida> Options Indexes MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /webdav /home/miusuario/compartida <Location /webdav> DAV On AuthType Digest AuthName "mi-webdav" AuthDigestFile /home/miusuario/mi-password Require valid-user </Location>
Creamos el directorio y le decimos que pertenezca al servidor web (para que este pueda escribir en ese directorio):
$ mkdir /home/miusuario/compartida $ sudo chown www-data /home/miusuario/compartida
Habilitamos nuestro nuevo espacio web:
$ sudo a2ensite webdav $ sudo /etc/init.d/apache2 reload
Y ya tendríamos compartida la carpeta mediante WebDAV. Ahora en nuestro menú GNOME de otra máquina remota seleccionamos Lugares > Conectar con el Servidor ... y WebDAV (http), como servidor 'guias-ubuntu.dyndns.org' (u otro dominio que tengamos configurado) como carpeta 'webdav' tal como la hemos llamado en el Alias de apache y el usuario que hemos configurado 'miusuario'.
De esta forma se nos creará en el escritorio un acceso directo a la carpeta WebDAV, y si la abrimos, nos pedirá la contraseña. A partir de ahí podremos editar el contenido, crear ficheros, copiarlos, borrarlos, etc, simultáneamente con otros usuarios.
También se puede securizar más añadiendo soporte SSL a nuestro servidor apache.
Un nodo en las redes de intercambio P2P
mldonkey es una aplicación de software libre que soporta multitud de protocolos de P2P.
Para instalarlo, instalamos el paquete 'mldonkey-server':
$ sudo apt-get install mldonkey-server
y luego lo reconfiguramos con más detalle:
$ sudo dpkg-reconfigure -plow mldonkey-server
Esto nos solicitará diversos datos sobre el servidor, si se arrancará el servicio cuando iniciemos el servidor, el ancho de banda que se va a usar, protocolos que se van a soportar, uso de recursos del servidor que utilizará, contraseña, etc., nos pedirá si sobreescribimos el fichero de configuración de mldonkey '/etc/default/mldonkey-server' a lo que responderemos que sí, y finalmente arrancará el mldonkey.
El mldonkey viene con un interfaz Web y de escritorio incorporada. Vamos a habilitar el acceso Web desde otra máquina diferente al servidor, para ello paramos el servicio:
$ sudo /etc/init.d/mldonkey-server stop
editaremos el fichero 'downloads.ini' del usuario que hayamos indicado en la reconfiguración (en nuestro caso mldonkey):
$ sudo nano /home/mldonkey/downloads.ini
y en el apartado de IPs permitidas:
allowed_ips = [ "127.0.0.1";]
añadimos las IP de la máquina desde donde nos queremos conectar, por ejemplo:
allowed_ips = [ "10.0.0.6"; "127.0.0.1";]
Finalmente arrancamos de nuevo el servidor:
$ sudo /etc/init.d/mldonkey-server start
y ya podríamos acceder al servidor vía web, por la dirección:
introduciendo como usuario a 'admin' y la contraseña introducida anteriormente.
Esto nos dará acceso al interfaz web, donde podremos gestionar búsquedas, descargas, subidas, etc.
Todos estos contenidos se mantendrán en el 'home' del usuario que hemos seleccionado en la reconfiguración del paquete (en nuestro ejemplo 'mldonkey').
Bittorrent
Bittorrent es un protocolo P2P de intercambio de ficheros. En este protocolo, un servidor ofrece un fichero a los clientes, y los clientes descargan el fichero del servidor y simultáneamente de otros clientes, de forma que el servidor puede llegar a transferir una copia del fichero, mientras que los clientes se descargan el resto intercambiando entre ellos. La ventaja principal es que el consumo de ancho de banda se reparte, y no recae únicamente en el servidor.
Usando un Cliente Bittorrent
Es relativamente sencillo descargarse un fichero por Bittorrent si se dispone de un cliente como GNOME BitTorrent.
Por ejemplo, podemos descargarnos un fichero .torrent desde nuestro navegador y si éste está configurado adecuadamente abrirá la aplicación 'gnome-btdownload' de GNOME BitTorrent (u otra similar) que nos indicará dónde queremos dejar el fichero final una vez descargado. El archivo se empezará a descargar en el disco duro como si fuera un enlace cualquiera, aunque la descarga se esté produciendo de forma distribuida entre otros ordenadores como el nuestro que contengan ese archivo o partes distribuibles de él. Al mismo tiempo, nosotros también compartimos lo que ya hemos descargado del fichero.
GNOME BitTorrent no llega a aplicación, es una simple ventana de diálogo que nos permite ver el estado de nuestras descargas y subidas BitTorrent.
Finalmente, se terminará de bajar el contenido del fichero, y si mantenemos el cliente abierto, continuaremos dejando que otros clientes descarguen nuestra copia del fichero y nos convertiremos en semillas del fichero. Para usuarios avanzados: Para poder ser una semilla es necesario que no tengamos filtrados el rango de puertos IP del 6881 al 6889 y así permitir conexiones externas.
Compartiendo nuestros ficheros con Bittorrent
Este apartado configuraremos nuestro servidor web para que comparta los ficheros que queramos a través de Bittorrent.
Para ello usaremos Blog Torrent [2] (http://www.blogtorrent.com/) un software que nos facilitará el trabajo.
No existe un paquete Debian de este software, así que descargaremos del anterior web el software, lo descomprimiremos:
$ unzip BlogTorrent-preview-0.92.zip
y moveremos lo descomprimido en nuestro servidor www:
sudo mv bt/ /var/www/
luego crearemos los directorios de descarga y daremos los permisos adecuados:
$ sudo mkdir /var/www/bt/torrents $ sudo mkdir /var/www/bt/data $ sudo chmod 777 /var/www/bt/torrents $ sudo chmod 777 /var/www/bt/data $ sudo chown -R www-data:www-data /var/www/bt/
De esta forma tendremos ya nuestra aplicación web disponible en:
Esta forma de instalar sin paquetes no es muy ortodoxa, y hará nuestro sistema menos seguro, ya que si se descubre algún problema de seguridad en este software no se actualizará automáticamente como el resto del servidor. Debemos estar atentos a los problemas de seguridad de este software para mantenerlo actualizado.
Continuemos. El siguiente paso es crearnos un usuario que será el usuario de administración, con una cuenta de correo válida, ya que nos enviará a ésta la confirmación con la que activaremos esta cuenta de administración.
Una vez que recibamos el correo de confirmación, accedemos al enlace indicado en el correo y activaremos la cuenta.
Si entramos con este usuario, podremos cambiar las opciones del servidor de Torrents, en el enlace Settings
Allí habilitamos la compartición de ficheros "Enable server sharing" e indicamos la localización de python: '/usr/bin/python'. Salvamos la configuración, y nuestro servidor estará listo para compartir ficheros.
Empecemos a subir un fichero desde nuestro cliente, preparando un fichero .torrent del fichero en cuestión que queremos compartir:
$ btmakemetafile 01.ogg http://guias-ubuntu.dyndns.org/blogtorrent/announce.php
esto nos creará un 01.ogg.torrent que es el que introduciremos manualmente en la página de Upload File.
Si volvemos a cargar la página inicial de Blog Torrent:
veremos nuestro primer Torrent, que no tiene ningún 'seeder' es decir que nadie dispone de una copia.
Así que desde el cliente donde tenemos el fichero que se comparte, descargamos el .torrent que arrancará nuestro cliente Bittorrent. Entonces seleccionaremos la carpeta donde tenemos el fichero compartido, y al estar ya en local, nos convertiremos en semilla (seed) del fichero y permitiremos al servidor que suba todo el contenido del fichero. Una vez que el servidor descargue por completo el fichero, se mantendrá como semilla para otros clientes.
Así que si otro cliente quiere descargarse el fichero, se bajará el .torrent, verá que la semilla es nuestro servidor y comenzará a bajarse partes del fichero. Y de la misma forma otros clientes, a la vez que comparten entre ellos las partes ya descargadas, no sobrecargando la conexión a Internet del servidor.
Para más información sobre Bittorrent, Wikipedia mantiene una buen explicación de Bittorrent (http://en.wikipedia.org/wiki/Bittorrent) y también es interesante la guía en la página oficial de Bittorrent (http://www.bittorrent.com/guide.html).
Y de colofón: Jabber
La red Jabber es una red libre, descentralizada, autogestionada, en la que se promueve la privacidad y la libertad de sus usuarios, diferente en estos aspectos a lo que otros servicios más populares de Mensajería Instantánea (Microsoft Messenger, Yahoo Messenger, etc) realizan, ya que son centralizados, no basados en estándares, llenos de publicidad, de uso cuestionable de nuestros datos privados, etc.
Instalar un servidor Jabber propio donde alojar nuestras cuentas y las de nuestros amigos y que se comunique con otros servidores Jabber del mundo es bastante trivial (de ahi su descentralización). Basta con instalar el paquete jabber. En la instalación de este paquete ya se arranca nuestro servidor Jabber. Ahora editamos el fichero de configuración jabber.cfg:
$ sudo nano /etc/jabber/jabber.cfg
y establecemos el dominio que usaremos para nuestras cuentas jabber:
JABBER_HOSTNAME=guias-ubuntu.dyndns.org
Es decir que nuestros usuarios serán del tipo fulanito@guias-ubuntu.dyndns.org. Rearrancamos el servidor Jabber para que tenga en cuenta el cambio de configuración:
$ sudo /etc/init.d/jabber restart
y ya está nuestro servidor jabber funcional para nuestro dominio.
Ahora podemos usar nuestro cliente de mensajería instantánea preferido, por ejemplo 'gaim', para crearnos una cuenta en nuestro nuevo servidor jabber.
Si usamos un cortafuegos debemos asegurarnos que dejamos pasar el tráfico tcp/udp a los puertos 5222, 5223, 5269 que usa nuestro servidor Jabber.
Para más información sobre como mejorar nuestra instalación de jabber, podemos profundizar en la Guía de Administración de Jabber 1.4 [3] (http://jabberd.jabberstudio.org/1.4/doc/adminguide). Entre las cosas interesantes que podemos hacer con nuestro servidor, están la de crear salas para hablar simultáneamente con varias personas (habría que instalar el paquete jabber-muc) o hacer que las comunicaciones con nuestro servidor sean seguras a través de SSL. También se pueden tender puentes con otros servicios de mensajería instantánea de forma que podamos hablar con usuarios que no usan Jabber.
Sigue: Rutinas del sysadmin amateur