terça-feira, 15 de setembro de 2009

Servidor virtual com Ubuntu e VirtualBox

O objectivo é criar um servidor simples, com interface gráfica, de máquinas virtuais usando Ubuntu server como host e VirtualBox (OSE) como sistema de virtualização, criando um sistema 100% Open Source, em pouco mais de meia hora.

1. Instalar o Ubuntu Server (9.04 ou superior) não escolhendo nenhum papel
2. Fazer o:
sudo apt-get update && sudo apt-get dist-upgrade
3. Instalar uns pacotes jeitosos:
3.1. O mínimo indispensável (~440 MiB):
sudo apt-get install virtualbox xorg lxde
3.2. Algumas ferramentas úteis, mas não directamente essenciais:
sudo apt-get install openssh-server rsync rssh rdesktop powertop htop iftop nload nmap zip unzip bzip2
3.3. Algumas ferramentas de segurança (precisam de configuração extra individual):
sudo apt-get install fail2ban molly-guard logwatch rkhunter
4. Caso haja uma UPS (o que é uma boa ideia) será conveniente instalar um gestor da UPS, por exmplo o nut, mas é necessário configurar para poder funcionar.

Copiar dados entre sistemas

Não consegui que isto funcionasse (mas também não estive muito tempo a tentar).
O objectivo é copiar completamente um sistema de uma máquina para outra.
À máquina de origem vamos chamar source e à de destino dest.
É necessário que as duas máquinas estejam ligadas através de rede (cabo cruzado, lan, etc) e dois CDs com o SystemRescueCD.

1. Arrancam-se as duas máquinas com os CDs do SystemRescueCD e executa-se passwd root para mudar a password de root (é preciso para poder fazer o login remoto por ssh).
2. Montam-se as partições do source de maneira a constuir o sistema completo dentro de uma directoria /mnt/source por exemplo.
3. Define-se o IP do source (192.168.123.1 por exemplo).
4. Define-se o IP do dest (192.168.123.2 por exemplo).
5. Verifica-se a conectividade entre máquinas (ping).
6. Criam-se as partições do destino, criam-se os respectivos sistemas de ficheiros e montam-se em /mnt/dest, por exemplo.cionou
7. No source executar: rsync /mnt/source root@192.168.123.2:/mnt/dst
8. No dest executar: grub-install --recheck --no-floppy --root-directory=/mnt/dst
9. Poderá ser necessário editar /mnt/dest/etc/fstab
10. Poderá ser necessário editar /mnt/dest/boot/grup/menu.lst

E devia funcionar. Eu estava um bocado à pressa e não funcionou, mas acho que era por causa do passo 9 ou 10.

sexta-feira, 4 de setembro de 2009

Ubuntu seedbox + eDonkey

O projecto é pegar num PC mais ou menos velhote e transformá-lo numa máquina de armazenamento e partilha de ficheiros multimédia através de redes peer2peer bittorrent e edonkey. Tudo, é claro, usando Ubuntu.
1. Instalar Ubuntu server
Criar uma partição espaçosa e monta-la em /media/disk1
2. Actualizar e instalar os pacotes do costume

  • sudo apt-get install openssh-server htop powertop molly-guard nload fail2ban logwatch rkhunter zip

3. Instalar o gestor de torrents
Escolher um entre Transmission (gráfico) e rtorrent (consola).
3A. Transmission

  • sudo apt-get install transmission-daemon
  • sudo /etc/init.d/transmission-daemon stop
  • sudo nano /etc/transmission-daemon/settings.json
Editar a gosto, prestar atenção ao parametro download-dir, que deve apontar para algures em /media/disk1/downloads, por exemplo.
rpc-whitelist deve ter o ip que pode aceder à interface web, ou a rede, por exemplo 192.168.1.*
rpc-password definir a password
  • sudo mkdir /media/media/torrents
  • sudo chown debian-transmission:debian-transmission /media/disk1/torrents
  • sudo /etc/init.d/transmission-daemon start

Acessível em localhost:9091
3B. rTorrent + rtGui
Como o rtorrent é um cliente de consola que ocupa o ecrã, é preciso executá-lo dentro do screen (ou equivalente) para que funcione como um daemon. o rtGui é uma interface web para controlar o rtorrent.
  • sudo apt-get install rtorrent screen psmisc
  • sudo useradd rtorrent
  • sudo passwd rtorrent
  • sudo mkdir /etc/rtorrent
  • sudo chown rtorrent:rtorrent /etc/rtorrent
  • sudo usermod --home /etc/rtorrent rtorrent
  • sudo mkdir /media/disk1/torrents
  • sudo chown rtorrent:rtorrent /media/disk1/torrents
  • sudo nano /etc/init.d/rtorrentd
Colocar o seguinte conteúdo:
  • #! /bin/sh
  • # rTorrent init script
  • #

  • case "$1" in
  •   start)
  • echo "Starting rtorrent..."
  •     su rtorrent -c 'screen -dmS rtorrent rtorrent'
  •     ;;
  •   stop)
  • echo "Stopping rtorrent..."
  • killall -s 2 rtorrent
  •     ;;
  •   *)
  •     echo "Usage: $0 {start|stop}"
  •     exit 1
  •     ;;
  • esac

  • exit 0
Mudar as permissões e instalar como daemon:
  • sudo chmod 755 /etc/init.d/rtorrentd
  • sudo update-rc.d rtorrentd defaults
  • sudo /etc/init.d/rtorrentd start
Ffazer login como utilizador rtorrent e executar
  • cp /usr/share/doc/rtorrent/examples/rtorrent.rc ~/.rtorrent.rc
  • mkdir -p /media/disk1/torrents/watch/
  • mkdir -p /media/disk1/torrents/download/
  • mkdir -p /media/disk1/torrents/session/
  • mkdir -p /media/disk1/torrents/complete/
  • chown -R rtorrent:rtorrent /media/disk1/torrents/
  • chmod -R 775 /media/disk1/torrents/
  • nano ~/.rtorrent.rc

Editar o ficheiro para apresentar o seguinte conteúdo (os valores apresentados são de exemplo, prestar atenção aos comentários):

  • directory = /media/disk1/torrents/download/
  • session = /media/disk1/torrents/session/
  • schedule = watch_directory,5,5,load_start=/media/disk1/torrents/watch/*.torrent
  • schedule = untied_directory,5,5,remove_untied=
  • on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/media/disk1/torrents/complete/ ;d.set_directory=/media/disk1/torrents/complete/"
  • port_range = 49200-49200
  • # Stop torrents when reaching upload ratio in percent,
  • # when also reaching total upload in bytes, or when
  • # reaching final upload ratio in percent.
  • # example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
  • schedule = ratio,60,60,stop_on_ratio=200,200M,2000
  • #Limit upload/download rate, so torrents won’t kill your internet connection 
  • #Values are in KiB.
  • upload_rate = 200
  • download_rate = 1000
  • #For better performance, you can limit number of peers:
  • max_peers = 50
  • max_peers_seed = 20
  • #To change umask (file mode creation mask) for rtorrent process, change this parameter:
  • umask = 0002
  • scgi_port = 127.0.0.1:5000
Regressar ao utilizador administrador e executar:

  • sudo /etc/init.d/rtorrentd stop
  • sudo /etc/init.d/rtorrentd start
  • sudo apt-get install rtgui
Editar a configuração do Apache:
  • sudo gedit /etc/apache2/sites-enabled/000-default
Adicionar as duas linhas seguintes antes do último "< /Virtualhost >"
  • LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
  • SCGIMount /RPC2 127.0.0.1:5000
Editar a configuração do rtgui:

  • sudo gedit /var/www/rtgui/config.php

Editar as seguintes definições:

  • $watchdir="/media/disk1/torrents/watch";
  • $downloaddir="/media/disk1/torrents/download";

Reiniciar o Apache.
  • sudo apache2ctl restart
Fica disponível em &lt; endereço_do_servidor &gt;/rtgui

4. MLDonkey
  • sudo apt-get install mldonkey-server
  • sudo /etc/init.d/mldonkey-server stop
  • sudo nano /var/lib/mldonkey/downloads.ini
Editar a gosto, ver o allowed_ips
  • sudo /etc/init.d/mldonkey-server start
Acessível em localhost:4080
5. SAMBA
  • sudo apt-get install swat xinetd
  • sudo nano /etc/xinetd.d/swat
Editar o conteúdo para apresentar o seguinte:

  • # default: off
  • # description: SWAT is the Samba Web Admin Tool. Use swat \
  • # to configure your Samba server. To use SWAT, \
  • # connect to port 901 with your favorite web browser.
  • service swat
  • {
  • port = 901
  • socket_type = stream
  • wait = no
  • # Use only_from if you want to restrict access
  • # only_from = localhost
  • user = root
  • server = /usr/sbin/swat
  • log_on_failure += USERID
  • disable = no
  • }

Executar:

  • sudo /etc/init.d/xinetd restart

O swat precisa de ser executado como root, por isso precisamos de dar uma password ao root
  • sudo passwd root
Acessível em localhost:901
Primeiro criar utilizadores e depois shares

6. Subsonic
Fazer o download do subsonic, suponhamos que fica no ficheiro subsonic-4.5.deb.
Instalar o java e o subsonic:
sudo apt-get install openjdk-6-jre
sudo dpkg -i subsonic-4.5.deb
Fica acessível em < endereço_do_servidor >:4040