Esta é uma versão arquivada/estática do antigo Blog do André. Isso significa que todo o conteúdo aqui presente não irá ser atualizado, e pode conter erros. Algumas funcionalidades poderão não estar disponíveis nesta versão arquivada.
01
Jan 2010

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

Gostou deste artigo?

Facebook Twitter Google Plus Delicious

10 Comentários

 

  • Gravatar de Felipe

    Felipe

    4/02/2010 @ 18:59

    Cara muito legal esse seu tutorial me ajudou muito,
    mas vc sabe configurar server de xdcc no irc usando linux para fazer
    hospedagem de arquivos?
    E vlw por esse tuto!

  • Gravatar de André

    André

    5/02/2010 @ 17:08

    Olá Felipe, antes de mais obrigado pelo comentário e elogios! ;)

    Quanto à pergunta, infelizmente não tenho experiência em configuração de IRC, por isso não posso ajudar… mas pesquisei um pouco no motor de busca, e encontrei isto:

    http://tuxmasters.blogspot.com/2007/02/montando-servidor-xdcc-iroffer.html

    e ainda um cliente gráfico de XDCC, escrito em Ruby:
    http://xdccfetch.sourceforge.net/

    Espero ter ajudado em algo ;)

  • Gravatar de Felipe

    Felipe

    5/02/2010 @ 23:02

    Muito obrigado Andre pela ajuda.
    Vc me recomenda algum firewall para usar no linux
    So meio iniciante nisso ainda e gostaria de alguma opiniao.
    Aluguei uma seedbox e ela fica ligada 24 horas por dia…
    gostaria de saber se eu fizer essa configuraçao em um dedicado linux
    o deluge tambem ficaria ligado 24 horas.
    Desculpe pela pergunta se foi meio ignorante mais e q eu sou iniciante mesmo.
    Valeu.

  • Gravatar de André

    André

    6/02/2010 @ 10:32

    Só fazendo perguntas é que se deixa de ser iniciante, vale sempre a pena perguntar! ;)

    Quanto à firewall, a configuração mais comum é com o IPtables, que já vem por omissão em muitas instalações do Linux. O problema do IPTables é ser muito confuso para configurar pela linha de comandos. É preciso compreender bem conceitos de redes par não fazer asneira e ficar sem acesso remoto à máquina (tratando-se de um servidor dedicado, suponho que seja esta a única forma de acesso a ele).

    Para resolver isso, pode usar a UFW (Uncomplicated FireWall), que já vem por omissão no Ubuntu. É mais simples de trabalhar do que o IPtables, uns exemplos:

    http://andregondim.eti.br/?p=229
    http://beginlinux.com/blog/2009/10/ubuntu-9-10-ufw-firewall/

    Se o seu servidor também suportar interface gráfica, pode usar o GUFW, que é nada mais nada menos que a versão gráfica com botões e caixas de texto da UFW.

    Quanto à seedbox, sim, este tutorial é vocacionado para um servidor headless, mas mais virado para o Ubuntu, o que facilita um pouco. O deluge ficará a correr tanto tempo quanto o servidor estiver ligado, porque se trata de um daemon/serviço de Linux que corre em background.

    Boa sorte com a configuração, e no caso de dúvidas, é só perguntar! xD

  • Gravatar de Felipe

    Felipe

    6/02/2010 @ 18:32

    Vlw ai mais uma vez Andre,
    meu professor de hardware me falou nesse firewall default do linux
    mas vou testa esse UFW
    E valeu ai pela sua explicaçao.

  • Gravatar de André

    André

    6/02/2010 @ 19:10

    Essa UFW não passa de um frontend (por outras palavras, uma aplicação para usar outra mais facilmente) para o IPtables, por isso na verdade, estamos a usar o IPtables na mesma, mas de forma menos complicada.

    Ainda bem que fui útil nas dúvidas ;)

  • Gravatar de Jose Carlos

    Jose Carlos

    20/10/2010 @ 09:23

    Boas amigo

    obrigado pelo tutorial de como instalar uma seedbox em linux…tenho uma vps em Debian e estava a tentar instalar mas nao estou a conseguir…o comando apt-get install deluge-webui nap entra..em Debian nao se usa o SUDO..como sabes..se me pudesses ajudar agradecia te muito

    de qualquer forma ja te adicionei ao meu msn

    abraço

  • Gravatar de André

    André

    20/10/2010 @ 21:11

    Olá José Carlos, obrigado pelo comentário!

    Ao que parece, o sudo está desactivado por omissão no Debian:
    http://wiki.debian.org/sudo

    Mas em alternativa, podes tentar usar o comando

    su
    

    para mudar para root, após a inserção da password.

    Atenção que este tutorial já tem algum tempo (tempo suficiente para sair uma nova versão de uma distribuição e algumas coisas terem de ser alteradas), mas a base está toda aqui, e deve manter-se assim ao longo de futuras versões.

    Quanto ao meu email, não o uso para IM, apenas para correio electrónico.

    Cumps.

  • Gravatar de Jose Carlos

    Jose Carlos

    21/10/2010 @ 21:17

    Boas

    Obrigado amigo…seria pedir muito se criasses um tutorial passo-a-passo para o Debian…nao consegui instalar o Deluge no Debian…instalei o Transmission mas é muito instavel

    Obrigado

  • Gravatar de André

    André

    22/10/2010 @ 20:29

    Para ser sincero, não tenho experiência com Debian. Não me importava de fazer esse tutorial, nem que fosse pela experiência, mas de momento infelizmente não tenho tempo para o fazer com rigor.

    No entanto, pesquisei no motor de busca por “Debian seedbox” e obtive alguns resultados, e um bastante curioso, em que usam o wine para emular o uTorrent (o que não é propriamente o desejável, mas é interessante de se ver).

    Lamento não poder ser útil em mais. :(

    Cumps.