domingo, 3 de junho de 2012

Instalando um Servidor Jabber jabberd no Ubuntu ou Debian

Jabber é um serviço que implementa o protocolo XMPP (Extensible Messaging and Presence Protocol), um protocolo aberto responsável por definir padrões para a comunicação entre clientes e servidores de mensagens instantâneas. É claro que não é o único padrão neste sentido, já que temos muitos deles (como o ICQ, AIM, MSN, etc.), mas é o único realmente aberto e gratuito.
Porque o XMPP é gratuito, existem muitos servidores e clientes Jabber, que implementam este protocolo e permitem, assim, que você tenha um serviço privado de mensagens instantâneas na sua casa, sua empresa, sua lan house ou rede particular. O objetivo deste artigo é exatamente isto: ajudar-lhe a instalar e configurar seu serviço particular de mensagens instantâneas baseado em Jabber. Note que todas as ações descritas neste tutorial supõem que você tem prioridade de root.


1- De Que Programas Preciso?

Para começar, você precisa de dois tipos de programas:

  • Um servidor Jabber, que ficará em uma máquina servidora acessível via rede;
  • Um cliente Jabber, que ficará em cada máquina de usuário.

A princípio, qualquer servidor Jabber deve poder falar com qualquer cliente, sem exclusividade, já que o protocolo XMPP é aberto e único.
Consulte aqui uma lista de clientes Jabber, e consulte aqui uma lista completa de servidores Jabber.
Para efeito deste artigo, vamos utilizar o servidor jabberd, versão 14, que é um servidor leve e bastante flexível, e vamos utilizar, para testar, o cliente pidgin, que é leve e multi-plataforma.


2- Instalação dos Programas

Nas máquinas clientes (dos usuários), instale o pidgin:

apt-get install pidgin

Faça a instalação do cliente em pelo menos uma máquina, para fins de teste. Em último caso, você pode instalar o cliente e o servidor na mesma máquina, para que faça todos os testes e configurações antes da implantação na máquina servidora realmente.

Na máquina servidora, instale o jabberd:


apt-get install jabberd14

(Em algumas distribuições, há o meta-pacote "jabber", que tem o jabberd14 como dependente. Neste caso, use opcionalmente "apt-get install jabber")

Isto instala o servidor jabberd e já roda o script de inicialização, programando-o para carregar sempre durante o boot. Evidentemente, você desejará modificar as configurações do servidor, então é preciso pará-lo:

/etc/init.d/jabberd14 stop


3- Configurando o Servidor jabberd

Toda a configuração do servidor está em um único arquivo XML, que pode ser encontrado em:

/etc/jabber/jabber.xml

Já a configuração do script de inicialização, dependendo de sua distribuição, pode ser encontrada em um destes dois arquivos:

/etc/jabber/jabber.cnf (mais comum no Debian)
ou
/etc/default/jabberd14 (mais comum no Ubuntu)

O arquivo jabber.xml é vastamente documentado e já vem pronto para uso. Contudo, algumas informações você precisará alterar.


Ajustando o nome e domínio do servidor

Ache a linha:

<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline></host>

E troque a referência "localhost" pelo nome de sua máquina na rede. Use aqui o que chamamos de FQDN (Full-Qualified Domain Name), ou seja, o nome da máquina com o domínio. Exemplo: se sua máquina se chama "host1" e seu domínio é "minhacasa.org", então configure esta linha assim:

<host><jabberd:cmdline flag="h">host1.minhacasa.org</jabberd:cmdline></host>

Observe que a linha acima faz menção à opção de linha de comando "-h". Esta opção é usada na inicialização do servidor pelo script e serve para indicar o nome do host que deverá ser considerado.
Portanto, uma vez alterando o nome de máquina no arquivo jabber.xml, você deve necessariamente abrir o arquivo de configuração do script e fazer a mesma alteração:

/etc/jabber/jabber.cnf (Debian):
JABBER_HOSTNAME=host1.minhacasa.org

ou

/etc/default/jabberd14 (Ubuntu):
HOSTNAME=host1.minhacasa.org

 Ainda falta um passo: neste arquivo de configuração do script acima, há referência ao diretório de spool. Este diretório é onde o jabberd armazena todos os dados dos usuários criados (que são arquivos XML contendo as informações de usuário, como login e senha, e o ícone do mesmo). Para cada opção de host o jabberd necessita de um sub-diretório dentro do spool de mesmo nome do host.
Assim, se seu diretório de spool é /var/spool/jabberd/, então você deve criar o diretório:

mkdir /var/spool/jabberd/host1.minhacasa.org

 Verifique com que usuário o seu jabberd roda. Em geral, ele roda com usuário e grupo chamado "jabberd". Assim, atribua este diretório a estes usuário e grupo:

chown jabberd /var/spool/jabberd/host1.minhacasa.org
chgrp jabberd /var/spool/jabberd/host1.minhacasa.org


Ajustando a porta

Se você chegou até aqui, seu servidor jabberd já está pronto para rodar perfeitamente. Contudo, ele vai rodar nas portas padrões do Jabber, a porta 5222 (para acesso sem encriptação) e 5223 (para acesso com encriptação). É fortemente recomendável, especialmente se seu servidor estará aberto para acesso externo via internet, que você troque a porta.
Para tanto, localize no arquivo jabber.xml mencionado acima as linhas:

<ip port="5222"/> (usada para acesso sem SSL)
<tls port='5223'/> (usada para acesso com SSL)

Troque os valores 5222 e 5223 para valores que você desejar. É imprescindível, entretanto, que você verifique o firewall de sua máquina onde está instalado o jabberd para se certificar de que as portas escolhidas estão abertas para acesso conforme você deseja. De outro modo, o servidor ficará inacessível.


Cadastramento de usuários

O jabberd vem, por padrão, disponível para aceitar que qualquer novo usuário se cadastre (registre) no sistema. Caso esta não seja a opção de seu desejo, então visite, no arquivo jabber.xml mencionado acima, as tags <register> e escolha a opção que mais lhe convenha.
Para eliminar totalmente a opção de registro automático pelo usuário, elimine deste arquivo todas as tags <register>.
Caso você queira ter total controle sobre os usuários e deseja registrá-los através de um serviço web ou criando-os a mão mesmo, você deverá saber a sintaxe do arquivo XML de usuário para escrevê-lo, ou confiar em um script que faça isto. Se é este seu desejo, veja bons scripts administrativos do Jabber aqui e aqui.
Lembre-se de que, para o Jabber, o nome do usuário sempre tem a fórmula:

nomeusuario@host.dominio
Arquivo: "/var/spool/jabberd/host.dominio/nomeusuario.xml"

Muitos clientes só conseguirão cadastrar ou localizar usuários usando esta forma acima.
Também é importante lembrar-se de que, se você fará o cadastramento de usuários manualmente ou através de outro sistema, os arquivos XML de cada usuário deverão ser atribuídos aos usuário e grupo do jabberd, conforme fizemos com o diretório de spool acima.


4- Reiniciando o Servidor

Após concluídas todas estas modificações, o servidor precisa ser reiniciado. Para tanto, rode os comandos:

/etc/init.d/jabberd14 stop (caso ainda não o tenha feito)
/etc/init.d/jabberd14 start

Para verificar se o servidor rodou usando o nome de host adequado, consulte o comando executado pelo script:

ps ax | grep jabberd

Deve surgir algo como:

2764 pts/1    S      0:00 /usr/sbin/jabberd --background -h host1.minhacasa.org -s /var/spool/jabberd

onde:

--background: informa que o serviço deve rodar como deamon, ou seja, em segundo plano.
-h: informa o nome do host (e, conseqüentemente, a pasta a ser lida dentro do spool);
-s: indica o local onde está o spool.


5- Conclusões

Bom, ao final deste tutorial, você deverá estar com um servidor Jabber rodando perfeitamente. Deve também ser capaz de criar usuários e configurar facilmente um cliente, como o Pidgin. Espero ter ajudado e conto com suas impressões nos comentários!!

Nenhum comentário: