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

Directorio con nuestros contenidos compartidos usando Apache
Enlarge
Directorio con nuestros contenidos compartidos usando Apache

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.

El contenido inicial de nuestro servidor FTP
Enlarge
El contenido inicial de nuestro servidor FTP

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

Aspecto típico de una sesión con SSH.
Enlarge
Aspecto típico de una sesión con SSH.

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
Conectando a nuestro servidor por WebDAV
Enlarge
Conectando a nuestro servidor por WebDAV

Habilitamos nuestro nuevo espacio web:

$ sudo a2ensite webdav
$ sudo /etc/init.d/apache2 reload
Nuestra carpeta compartida por WebDAV después de crear un fichero nuevo
Enlarge
Nuestra carpeta compartida por WebDAV después de crear un fichero nuevo

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
Interfaz Web de nuestro servidor mldonkey
Enlarge
Interfaz Web de nuestro servidor mldonkey

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:

Pantalla Inicial de Bittorrent
Enlarge
Pantalla Inicial de Bittorrent
Ya tenemos un fichero torrent
Enlarge
Ya tenemos un fichero torrent
Abriendo el cliente Bittorrent
Enlarge
Abriendo el cliente Bittorrent
Subiendo el archivo
Enlarge
Subiendo el archivo
El archivo se ha completado y hacemos de semilla
Enlarge
El archivo se ha completado y hacemos de semilla

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.

Creación de una cuenta de pruebas en nuestro servidor jabber
Enlarge
Creación de una cuenta de pruebas en nuestro servidor jabber
Mensaje de bienvenida de nuestro servidor una vez que registramos inicialmente nuestra cuenta
Enlarge
Mensaje de bienvenida de nuestro servidor una vez que registramos inicialmente nuestra cuenta

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