Configurar uma seedbox com Linux e Deluge
Veja ainda as páginas: 1 2
Grande parte dos utilizadores de bittorrent necessita de deixar a máquina ligada continuamente à Internet e à energia para conseguir chegar aos 100% do conteúdo que estão a descarregar (e, ao espírito da comunidade, deixar a máquina a partilhar). Facto é que isto por vezes se torna uma tarefa complicada, ou porque a nossa máquina actual faz muito ruído, ou porque gasta muito energia, ou simplesmente porque não há mais espaço entre as centenas de outro ficheiros já descarregados. Surge então a ideia de criar uma seedbox. E em que consiste? De forma superficial, é uma máquina que estará sempre ligada e que será dedicada à partilha e download de ficheiros por bittorrent.
O que vamos cobrir neste tutorial:
- Instalar o programa de Bittorrent (Deluge)
- Configurar o Deluge para arrancar durante o boot
- Configurações essenciais do Deluge
- Configurar uma pasta partilhada com o Samba para aceder aos torrents
Importante: Antes de avançar, umas notas:
- Vou assumir que já têm uma máquina já com o Ubuntu Server instalado (na versão desktop será semelhante, mas lembrem-se que este tutorial é para uma máquina dedicada e não apra um desktop), com uma forma de acesso ao computador (seja SSH, seja por teclado e monitor emprestados) e acesso à rede (opcional para quem não quiser criar uma pasta partilhada).
- Vamos trabalhar em modo de texto todo o tempo. Não há botões nem nada de interfaces gráficas neste tutorial. Se não estão à vontade com a consola, o melhor é procurar outro tutorial, ou pedir auxílio a alguém que vos acompanhe no processo.
- Vou focar todo o tutorial numa instalação base do Ubuntu Server. Apenas vou instalar os programas necessários ao funcionamento da seedbox.
- Como editor de texto, vou usar nos exemplos o vim. Bem sei que muitos o acham horrível, ou simplesmente confuso, mas deixo à vossa escolha, será uma questão de substituírem nos exemplos pelo editor da vossa preferência.
- Vamos fazer bastantes tarefas administrativas, incluindo criar utilizadores, definir novos scripts de arranque no boot, etc. Ser administrador do sistema em questão é um requisito.
- Tentem perceber cada comando introduzido e perceber o que ele faz. Não me responsabilizo por danos com origem em comandos mal entendidos, ou similares. Foram estes os passos que segui no meu sistema, e tenho-o 100% funcional.
- Não vamos falar aqui em configurações de firewall. Também vou assumir que esta é a vossa responsabilidade configurar a firewall conforme o caso.
- Não são obrigados a seguir a metodologia (pastas, nomes, etc) que sugerir, mas peço que tenham em atenção que o tutorial vai seguir apenas um caso, e é da vossa responsabilidade adaptar correctamente à vossa situação.
Agora que já dei os conselhos iniciais, mãos à obra!
Instalar o cliente de Bittorrent
Como disse, vamos usar o Deluge, juntamente com a interface web para gerir os nossos downloads/uploads. Antes de instalarmos o dito, vamos criar um utilizador no qual o Deluge fará todo o seu trabalho, armazenará configurações, etc. Para isso invocamos o seguinte comando:
sudo adduser --disabled-password --system --home /home/deluge --gecos "Servidor Deluge" --group deluge
Este comando vai criar um novo utilizador de sistema, que permitirá arrancar o Deluge e respectiva configuração nessa conta. Vamos criar mais umas pastas e organizar tudo:
- pasta ‘data’, em que iremos colocar todos os ficheiros descarregados
- pasta ‘seeds’ onde iremos colocar todos os ficheiros torrent usados
- pasta ‘logs’, para onde irão todos os logs do servidor e da interface web
- pasta ‘config’, onde vai estar toda a configuração
cd /home/deluge
sudo mkdir data seeds logs config
sudo chown deluge:deluge *
O último comando indica que as pastas que criámos, com uma conta ‘root’, são propriedade agora do utilizador ‘deluge’ (por uma questão de coerência, e saber onde é suposto o utilizador ‘deluge’ mexer).
Vamos então instalar o Deluge:
sudo apt-get install deluge-webui
Instalado o Deluge, podemos confirmar que este funciona, fazendo:
deluged
deluge --ui=web
O primeiro comando, deluged, inicia o daemon (serviço) do Deluge, necessário para fazer todas as operações relacionadas com torrents. O deluge, por si, é apenas um frontend que irá interagir com o serviço. Devem, nesta altura, conseguir aceder através de um browser ao vosso servidor, indo ao endereço http://ip_servidor:8112 (por omissão, o Deluge WebUI corre na porta 8112, que mais tarde poderá ser alterado na configuração). Se tudo correu bem, já devem estar a ver uma página quase toda em branco, a pedir uma password. Isto significa que a interface web está a funcionar . Deixemos, para já, as configurações.
Configurar o Deluge para arrancar durante o boot
Vamos então de novo à consola, e terminamos o processo actual, com CTRL+C. A interface web já não deverá ficar acessível. Gostaram até agora? Então vamos criar um script para que cada vez que o nosso servidor arranque, ele arranque também automaticamente o Deluge: vamos criar um initscript.
Criemos um novo ficheiro, localizado em /etc/default/deluge-daemon:
sudo vim /etc/default/deluge-daemon
No editor, coloquem o seguinte conteúdo:
# Configuration for /etc/init.d/deluge-daemon
# The init.d script will only run if this variable non-empty.
# Colocamos aqui o nome do nosso utilizador criado para o efeito
DELUGED_USER="deluge"
# Should we run at startup?
# Flag que indica se o servidor irá correr no arranque
RUN_AT_STARTUP="YES"
Gravem as alterações. Temos agora um primeiro passo do nosso script de arranque. Vamos criar uma entrada no arranque, em /etc/init.d/deluge-daemon. Este ficheiro é algo extenso, mas o que realmente interessa alterar é mais ou menos a primeira metade, na qual vou colocando alguns comentários:
#!/bin/sh
### BEGIN INIT INFO
# Provides: deluge-daemon
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description: Starts the deluge daemon with the user specified in
# /etc/default/deluge-daemon.
### END INIT INFO
# Author: Adolfo R. Brandes
# Modified: Sami Olmari
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Nome da entrada de arranque, aconselho a deixar este
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge"
DAEMON1=/usr/bin/deluged
# Indica ao daemon do deluge que deve procurar a configuração em /home/deluge/config e
# que deve registar as acções num log em /home/deluge/logs/deluged.log
DAEMON1_ARGS="-d -c /home/deluge/config -l /home/deluge/logs/deluged.log -L warning"
DAEMON2=/usr/bin/deluge
# Indica a interface web que deve procurar a configuração na mesma pasta, e colocar o log
# na pasta /home/deluge/logs/deluge-web.log
DAEMON2_ARGS="--ui=web -c /home/deluge/config -l /home/deluge/logs/deluge-web.log -L warning"
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
PKGNAME=deluge-daemon
SCRIPTNAME=/etc/init.d/$PKGNAME
#
# Não é necessário editar mais nada daqui para baixo
#
# Exit if the package is not installed
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
then
log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
exit 0
fi
if [ -z "$DELUGED_USER" ]
then
log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
exit 0
fi
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --exec $DAEMON1
--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
RETVAL1="$?"
start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --exec $DAEMON2
--chuid $DELUGED_USER --user $DELUGED_USER --test > /dev/null
RETVAL2="$?"
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 1
start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile --exec $DAEMON1
--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON1_ARGS
RETVAL1="$?"
sleep 2
start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile --exec $DAEMON2
--chuid $DELUGED_USER --user $DELUGED_USER -- $DAEMON2_ARGS
RETVAL2="$?"
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
RETVAL2="$?"
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
RETVAL1="$?"
[ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2
rm -f $PIDFILE1 $PIDFILE2
[ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME1"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
:
Gravem as alterações. Vamos dar permissões de execução ao ficheiro, criar a respectiva entrada de arranque e iniciar o serviço:
sudo chmod 755 /etc/init.d/deluge-daemon
sudo update-rc.d deluge-daemon defaults
sudo /etc/init.d/deluge-daemon restart
Se tudo correr bem, este último comando deverá devolver algo como:
* Restarting Deluge Daemon deluged [ OK ]
Isto significa que o vosso serviço está a correr, daemon e interface web incluído. Testem no browser, indo a http://ip_servidor:8112, e devem obter novamente a página web do serviço. Introduzam a password por defeito, que é ‘deluge’ (sem plicas).
Veja ainda as páginas: 1 2
10 Comentários