Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalacao_e_configuracao_do_ejabberd_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e Configuração do Ejabberd ======
  
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +Agora vamos instalar o Ejabberd pelo repositório do Debian
 +
 +<sxh bash>
 +
 +aptitude install ejabberd libsdl-erlang erlang-odbc erlang-tools ldap-utils -y
 +</​sxh>​
 +Agora vamos fazer um ajuste no arquivo de controle do ejabberd.
 +
 +<sxh bash>
 +
 +sed -i "​s/#​ERLANG_NODE=ejabberd/​ERLANG_NODE=ejabberd@`hostname`/​g"​ /​etc/​default/​ejabberd ​
 +</​sxh>​
 +Agora que ele já esta instalado vamos consultar o seu status
 +
 +<sxh bash>
 +
 +ejabberdctl status
 +The node ejabberd@debian is started with status: started
 +ejabberd 2.1.5 is running in that node
 +</​sxh>​
 +Vamos parar o ejabberd para modificarmos a sua configuração e a sua chave.
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​ejabberd stop
 +</​sxh>​
 +====== Gerando o certificado para o Ejabberd ======
 +
 +Agora vamos configurar o certificado para o Ejabberd
 +
 +Vamos fazer um backup da chave antiga
 +
 +<sxh bash>
 +
 +mv /​etc/​ejabberd/​ejabberd.pem /​etc/​ejabberd/​ejabberd.pem.orig
 +</​sxh>​
 +Vamos acessar o diretório para criar as chaves
 +
 +<sxh bash>
 +
 +cd /​etc/​ejabberd
 +</​sxh>​
 +Agora vamos gerar a chave
 +
 +<sxh bash>
 +
 +openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
 +Generating a 1024 bit RSA private key
 +............++++++
 +...++++++
 +writing new private key to '​privkey.pem'​
 +Enter PEM pass phrase: #senha
 +Verifying - Enter PEM pass phrase: #senha
 +-----
 +You are about to be asked to enter information that will be incorporated
 +into your certificate request.
 +What you are about to enter is what is called a Distinguished Name or a DN.
 +There are quite a few fields but you can leave some blank
 +For some fields there will be a default value,
 +If you enter '​.',​ the field will be left blank.
 +-----
 +Country Name (2 letter code) [AU]:BR
 +State or Province Name (full name) [Some-State]:​Parana
 +Locality Name (eg, city) []:Curitiba
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:​Douglas
 +Organizational Unit Name (eg, section) []:TI
 +Common Name (eg, YOUR name) []:​jabber.douglasqsantos.com.br
 +Email Address []:​douglas.q.santos@gmail.com
 +</​sxh>​
 +Agora vamos tirar a senha da chave
 +
 +<sxh bash>
 +
 +openssl rsa -in privkey.pem -out privkey.pem
 +Enter pass phrase for privkey.pem:​
 +writing RSA key
 +</​sxh>​
 +Agora vamos acertar a nossa chave
 +
 +<sxh bash>
 +
 +mv privkey.pem ejabberd.pem
 +</​sxh>​
 +Agora vamos acertar a permissão da chave
 +
 +<sxh bash>
 +
 +chown root:​ejabberd /​etc/​ejabberd/​ejabberd.pem
 +chmod 640 /​etc/​ejabberd/​ejabberd.pem
 +</​sxh>​
 +====== Configurando o Ejabberd com autenticação Local ======
 +Vamos fazer um backup do arquivo de configuração
 +
 +<sxh bash>
 +
 +cp -Rfa /​etc/​ejabberd/​ejabberd.cfg{,​.bkp}
 +</​sxh>​
 +Agora vamos deixar o arquivo como abaixo.
 +
 +<sxh erlang>
 +
 +vim /​etc/​ejabberd/​ejabberd.cfg
 +%% Aqui vamos definir as ACLs para o ejabberd
 +{acl, admin, {user, "​douglas",​ "​douglasqsantos.com.br"​}}.
 +{acl, admin, {user, "​admin",​ "​douglasqsantos.com.br"​}}.
 +%% Qual domínio que vamos utilizar
 +{hosts, ["​douglasqsantos.com.br"​]}.
 +%% Nivel de log que vamos utilizar
 +{loglevel, 3}.
 +%% Aqui vamos definir como o serviço vai se comportar
 +{listen,
 + [
 +  {5222, ejabberd_c2s,​ [
 +                       ​{access,​ c2s},
 +                       ​{shaper,​ c2s_shaper},​
 +                       ​{max_stanza_size,​ 65536},
 +                       ​starttls_required,​ {certfile, "/​etc/​ejabberd/​ejabberd.pem"​}
 +                       ]},
 + ​{5269,​ ejabberd_s2s_in,​ [
 +                         ​{shaper,​ s2s_shaper},​
 +                         ​{max_stanza_size,​ 131072}
 +                         ]},
 + ​{5280,​ ejabberd_http,​ [
 +                       ​http_poll,​
 +                       ​web_admin
 +                       ]}
 + ]}.
 +%% se vamos utilizar o starttls para as conexões
 +{s2s_use_starttls,​ true}.
 +%% caminho do certificado
 +{s2s_certfile,​ "/​etc/​ejabberd/​ejabberd.pem"​}.
 +%% tipo de autenticação,​ neste caso interna
 +{auth_method,​ internal}.
 +%% configurações para limitar o tráfego das conexões
 +{shaper, normal, {maxrate, 1000}}.
 +{shaper, fast, {maxrate, 50000}}. ​
 +
 +%% Acls internas default do ejabberd
 +{acl, local, {user_regexp,​ ""​}}.
 + 
 +{access, max_user_sessions,​ [{10, all}]}.
 +{access, local, [{allow, local}]}.
 +{access, c2s, [{deny, blocked},
 +               ​{allow,​ all}]}.
 +{access, c2s_shaper, [{none, admin},
 +                      {normal, all}]}.
 +{access, s2s_shaper, [{fast, all}]}.
 +{access, announce, [{allow, admin}]}.
 +{access, configure, [{allow, admin}]}.
 +{access, muc_admin, [{allow, admin}]}.
 +{access, muc, [{allow, all}]}.
 +{access, register, [{allow, all}]}.
 +{access, pubsub_createnode,​ [{allow, all}]}.
 + 
 +%% configurações para o host
 +{host_config,​ "​douglasqsantos.com.br",​
 + ​[  ​
 +  {access, c2s, [{allow, admin}, {allow, all}]},
 +  {access, register, [{allow, all}]}
 + ]
 +}.                                 
 +
 +%% Aqui definimos o idioma default
 +{language, "​en"​}.
 + 
 +%%Aqui temos a definição dos módulos utilizados pelo ejabberd
 +{modules,
 + [
 +  {mod_adhoc, ​   []},
 +  {mod_announce,​ [{access, announce}]}, ​
 +  {mod_caps, ​    []},
 +  {mod_configure,​[]}, ​
 +  {mod_ctlextra,​ []},               
 +  {mod_disco, ​   []},
 +  {mod_irc, ​     []},   
 +  {mod_last, ​    []},
 +  {mod_muc, ​     [
 +                  {access, muc},
 +                  {access_create,​ muc},
 +                  {access_persistent,​ muc},
 +                  {access_admin,​ muc_admin},
 +                  {max_users, 500}
 +                 ]},
 +  {mod_offline, ​ []},
 +  {mod_privacy, ​ []},
 +  {mod_private, ​ []},
 +  {mod_proxy65, ​ [
 +                  {access, local},
 +                  {shaper, c2s_shaper}
 +                 ]},
 +  {mod_pubsub, ​  ​[ ​
 +                  {access_createnode,​ pubsub_createnode},​
 +                  {plugins, ["​default",​ "​pep"​]}
 +                 ]},
 +  {mod_register,​ [
 +                  {welcome_message,​ {"​Bem-Vindo!",​
 +                                     "​Bem-Vindo ao seu servidor Jabber de douglasqsantos.com.br. "
 +                                     "​Para mais informações sobre o Jabber:"​
 +                                     "​http://​www.jabber.org"​}},​
 + 
 +                  {access, register}
 +                 ]},
 +  {mod_roster, ​  []},
 +  {mod_shared_roster, ​  []},
 +  {mod_stats, ​   []},
 +  {mod_time, ​    []},
 +  {mod_vcard, ​   []},
 +  {mod_version, ​ []}
 + ]}.
 +</​sxh>​
 +
 +Os comentários neste arquivo são o sinal de percentual "​%"​ por causa da linguagem que é utilizada erlang
 +
 +Agora vamos iniciar o nosso ejabberd
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​ejabberd start
 +</​sxh>​
 +Agora vamos criar um usuário administrador par ao nosso jabber, aqui vamos criar o usuário douglas para o domínio douglasqsantos.com.br e a senha sendo senha.
 +
 +<sxh bash>
 +
 +ejabberdctl register douglas douglasqsantos.com.br senha
 +User douglas.q.santos@gmail.com successfully registered
 +</​sxh>​
 +Como definimos dois domínios para o ejabber Para remover o usuário
 +
 +<sxh bash>
 +
 +ejabberdctl unregister douglas douglasqsantos.com.br
 +</​sxh>​
 +Agora vamos reiniciar o nosso ejabberd
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​ejabberd restart
 +Restarting jabber server: ejabberd.
 +</​sxh>​
 +Agora vamos acessar a o painel de administração Web, acesse http://​ip_servidor:​5280/​admin,​ o usuário: douglas.q.santos@gmail.com e a senha: senha
 +
 +====== Configurando o Ejabberd com autenticação no AD ou Ldap + Samba ======
 +
 +Agora vamos consultar a base do AD/LDAP, a opção -b é a base do LDAP/AD o -D é o usuário do domínio o -W é a opção de pedir senha o -x é a autenticação simples e o -h é o servidor AD/LDAP
 +
 +<sxh bash>
 +
 +ldapsearch -b "​dc=douglasqsantos,​dc=com,​dc=br"​ -D "​DOUGLAS\\Administrador"​ -W -x -h 10.101.0.23
 +Enter LDAP Password: ​
 +# extended LDIF
 +#
 +# LDAPv3
 +# base <​dc=douglasqsantos,​dc=com,​dc=br>​ with scope subtree
 +# filter: (objectclass=*)
 +# requesting: ALL
 +#
 +
 +# douglasqsantos.com.br
 +dn: dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ top
 +objectClass:​ domain
 +objectClass:​ domainDNS
 +distinguishedName:​ dc=douglasqsantos,​dc=com,​dc=br
 +instanceType:​ 5
 +whenCreated:​ 20100922183238.0Z
 +whenChanged:​ 20120809050816.0Z
 +subRefs: DC=DomainDnsZones,​dc=douglasqsantos,​dc=com,​dc=br
 +subRefs: DC=ForestDnsZones,​dc=douglasqsantos,​dc=com,​dc=br
 +subRefs: CN=Configuration,​dc=douglasqsantos,​dc=com,​dc=br
 +uSNCreated: 7600
 +[...]
 +</​sxh>​
 +Agora vamos ao arquivo de configuração do ejabberd
 +
 +<sxh erlang>
 +
 +vim /​etc/​ejabberd/​ejabberd.cfg
 +%% Aqui vamos definir as ACLs para o ejabberd
 +{acl, admin, {user, "​douglas",​ "​douglasqsantos.com.br"​}}.
 +{acl, admin, {user, "​admin",​ "​douglasqsantos.com.br"​}}.
 +%% Qual domínio que vamos utilizar
 +{hosts, ["​douglasqsantos.com.br"​]}.
 +%% Nivel de log que vamos utilizar
 +{loglevel, 3}.
 +%% Aqui vamos definir como o serviço vai se comportar
 +{listen,
 + [
 +  {5222, ejabberd_c2s,​ [
 +                       ​{access,​ c2s},
 +                       ​{shaper,​ c2s_shaper},​
 +                       ​{max_stanza_size,​ 65536},
 +                       ​starttls_required,​ {certfile, "/​etc/​ejabberd/​ejabberd.pem"​}
 +                       ]},
 + ​{5269,​ ejabberd_s2s_in,​ [
 +                         ​{shaper,​ s2s_shaper},​
 +                         ​{max_stanza_size,​ 131072}
 +                         ]},
 + ​{5280,​ ejabberd_http,​ [
 +                       ​http_poll,​
 +                       ​web_admin
 +                       ]}
 + ]}.
 +%% se vamos utilizar o starttls para as conexões
 +{s2s_use_starttls,​ true}.
 +%% caminho do certificado
 +{s2s_certfile,​ "/​etc/​ejabberd/​ejabberd.pem"​}.
 +%% Aqui vamos comentar o tipo de autenticação Local para habilitarmos abaixo a autenticação no AD
 +%%{auth_method,​ internal}.
 +%% configuração da autenticação no AD
 +%% Método de autenticação ldap
 +{auth_method,​ ldap}.
 +%% Servidor AD/LDAP
 +{ldap_servers,​ ["​10.101.0.23"​]}.
 +%% Aqui definimos se vamos utilizar criptografia
 +{ldap_encrypt,​ none}.
 +%% Porta de escuta do servidor ldap/ad
 +{ldap_port, 389}.
 +%% Usuário que vai ler a base ldap/ad, aqui podemos utilizar qualquer usuário do domínio com permissão de leitura ​
 +{ldap_rootdn,​ "​DOUGLAS\\Administrador"​}.
 +%% senha do usuário que vai efetuar a leitura do ldap/ad
 +{ldap_password,​ "​senha"​}.
 +%% base que vamos consultar aqui podemos especificar uma determinada ou com todos os usuário ou mandar mapear o domínio todo
 +{ldap_base, "​ou=BR,​dc=douglasqsantos,​dc=com,​dc=br"​}.
 +%% atributo que vamos utilizar como nome do usuário estou utilizando a conta do AD ex: usuario@douglasqsantos.com.br
 +{ldap_uids, [{"​sAMAccountName",​ "​%u"​}]}.
 +%% configurações para limitar o tráfego das conexões
 +{shaper, normal, {maxrate, 1000}}.
 +{shaper, fast, {maxrate, 50000}}. ​
 +%% Acls internas default do ejabberd
 +{acl, local, {user_regexp,​ ""​}}.
 +
 +{access, max_user_sessions,​ [{10, all}]}.
 +{access, local, [{allow, local}]}.
 +{access, c2s, [{deny, blocked},
 +               ​{allow,​ all}]}.
 +{access, c2s_shaper, [{none, admin},
 +                      {normal, all}]}.
 +{access, s2s_shaper, [{fast, all}]}.
 +{access, announce, [{allow, admin}]}.
 +{access, configure, [{allow, admin}]}.
 +{access, muc_admin, [{allow, admin}]}.
 +{access, muc, [{allow, all}]}.
 +{access, register, [{allow, all}]}.
 +{access, pubsub_createnode,​ [{allow, all}]}.
 + 
 +%% configurações para o host
 +{host_config,​ "​douglasqsantos.com.br",​
 + ​[  ​
 +  {access, c2s, [{allow, admin}, {allow, all}]},
 +  {access, register, [{allow, all}]}
 + ]
 +}.                                 
 + 
 +%% Aqui definimos o idioma default
 +{language, "​en"​}.
 +
 +%%Aqui temos a definição dos módulos utilizados pelo ejabberd
 +{modules,
 + [
 +  {mod_adhoc, ​   []},
 +  {mod_announce,​ [{access, announce}]},​ % requires mod_adhoc
 +  {mod_caps, ​    []},
 +  {mod_configure,​[]},​ % requires mod_adhoc
 +  {mod_ctlextra,​ []},               
 +  {mod_disco, ​   []},
 +  %%{mod_echo, ​  ​[{host,​ "​echo.localhost"​}]},​
 +  {mod_irc, ​     []},   
 +  {mod_last, ​    []},
 +  {mod_muc, ​     [
 +                  %%{host, "​conference.@HOST@"​},​
 +                  {access, muc},
 +                  {access_create,​ muc},
 +                  {access_persistent,​ muc},
 +                  {access_admin,​ muc_admin},
 +                  {max_users, 500}
 +                 ]},
 +  %%{mod_muc_log,​[]},​
 +  {mod_offline, ​ []},
 +  {mod_privacy, ​ []},
 +  {mod_private, ​ []},
 +  {mod_proxy65, ​ [
 +                  {access, local},
 +                  {shaper, c2s_shaper}
 +                 ]},
 +  {mod_pubsub, ​  [ % requires mod_caps
 +                  {access_createnode,​ pubsub_createnode},​
 +                  {plugins, ["​default",​ "​pep"​]}
 +                 ]},
 +  {mod_register,​ [
 +                  {welcome_message,​ {"​Bem-Vindo!",​
 +                                     "​Bem-Vindo ao seu servidor Jabber de douglasqsantos.com.br. "
 +                                     "​Para mais informações sobre o Jabber:"​
 +                                     "​http://​www.jabber.org"​}},​
 + 
 +                  {access, register}
 +                 ]},
 +  {mod_roster, ​  []},
 +  {mod_shared_roster, ​  []},
 +  {mod_stats, ​   []},
 +  {mod_time, ​    []},
 +  {mod_vcard, ​   []},
 +  {mod_version, ​ []}
 + ]}.
 +</​sxh>​
 +Agora vamos acessar a o painel de administração Web, acesse http://​ip_servidor:​5280/​admin,​ o usuário: douglas.q.santos@gmail.com e a senha: senha_do_ad
 +
 +====== Configurando o Ejabberd com autenticação no Ldap ======
 +Agora vamos ao arquivo de configuração do ejabberd + LDAP sem samba caso utilize LDAP + SAMBA a configuração é a do AD
 +
 +<sxh erlang>
 +vim /​etc/​ejabberd/​ejabberd.cfg
 +%% Aqui vamos definir as ACLs para o ejabberd
 +{acl, admin, {user, "​douglas",​ "​douglasqsantos.com.br"​}}.
 +{acl, admin, {user, "​admin",​ "​douglasqsantos.com.br"​}}.
 +{hosts, ["​douglasqsantos.com.br"​]}.
 +%% Nivel de log que vamos utilizar
 +{loglevel, 3}.
 +%% Aqui vamos definir como o serviço vai se comportar
 +{listen,
 + [
 +  {5222, ejabberd_c2s,​ [
 +                       ​{access,​ c2s},
 +                       ​{shaper,​ c2s_shaper},​
 +                       ​{max_stanza_size,​ 65536},
 +                       ​starttls_required,​ {certfile, "/​etc/​ejabberd/​ejabberd.pem"​}
 +                       ]},
 + ​{5269,​ ejabberd_s2s_in,​ [
 +                         ​{shaper,​ s2s_shaper},​
 +                         ​{max_stanza_size,​ 131072}
 +                         ]},
 + ​{5280,​ ejabberd_http,​ [
 +                       ​http_poll,​
 +                       ​web_admin
 +                       ]}
 + ]}.
 + 
 +%% se vamos utilizar o starttls para as conexões
 +{s2s_use_starttls,​ true}.
 +%% caminho do certificado
 +{s2s_certfile,​ "/​etc/​ejabberd/​ejabberd.pem"​}.
 +%% Aqui vamos comentar o tipo de autenticação Local para habilitarmos abaixo a autenticação no AD
 +%%{auth_method,​ internal}.
 +%% configuração da autenticação no AD
 +%% Método de autenticação ldap
 +{auth_method,​ ldap}.
 +%% Servidor AD/LDAP
 +{ldap_servers,​ ["​10.101.0.25"​]}.
 +%% Aqui definimos se vamos utilizar criptografia
 +{ldap_encrypt,​ none}.
 +%% Porta de escuta do servidor ldap
 +{ldap_port, 389}.
 +%% Usuário que vai ler a base ldap/ad, aqui podemos utilizar qualquer usuário do domínio com permissão de leitura ​
 +{ldap_rootdn,​ "​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​}.
 +%% senha do usuário que vai efetuar a leitura do ldap
 +{ldap_password,​ "​senha"​}.
 +%% base que vamos consultar aqui podemos especificar uma determinada ou com todos os usuário ou mandar mapear o domínio todo
 +{ldap_base, "​ou=usuarios,​dc=douglasqsantos,​dc=com,​dc=br"​}.
 +%% atributo que vamos utilizar como nome do usuário estou utilizando a conta do ldap ex: usuario@douglas.lan
 +{ldap_uids, [{"​uid",​ "​%u"​}]}.
 +%% configurações para limitar o tráfego das conexões
 +{shaper, normal, {maxrate, 1000}}.
 +{shaper, fast, {maxrate, 50000}}. ​
 +%% Acls internas default do ejabberd
 +{acl, local, {user_regexp,​ ""​}}.
 + 
 +{access, max_user_sessions,​ [{10, all}]}.
 +{access, local, [{allow, local}]}.
 +{access, c2s, [{deny, blocked},
 +               ​{allow,​ all}]}.
 +{access, c2s_shaper, [{none, admin},
 +                      {normal, all}]}.
 +{access, s2s_shaper, [{fast, all}]}.
 +{access, announce, [{allow, admin}]}.
 +{access, configure, [{allow, admin}]}.
 +{access, muc_admin, [{allow, admin}]}.
 +{access, muc, [{allow, all}]}.
 +{access, register, [{allow, all}]}.
 +{access, pubsub_createnode,​ [{allow, all}]}.
 + 
 +%% configurações para o host
 +{host_config,​ "​douglasqsantos.com.br",​
 + ​[  ​
 +  {access, c2s, [{allow, admin}, {allow, all}]},
 +  {access, register, [{allow, all}]}
 + ]
 +}.                                 
 + 
 +%% Aqui definimos o idioma default
 +{language, "​pt-br"​}.
 + 
 +%%Aqui temos a definição dos módulos utilizados pelo ejabberd
 +{modules,
 + [
 +  {mod_adhoc, ​   []},
 +  {mod_announce,​ [{access, announce}]},​ % requires mod_adhoc
 +  {mod_caps, ​    []},
 +  {mod_configure,​[]},​ % requires mod_adhoc
 +  {mod_ctlextra,​ []},               
 +  {mod_disco, ​   []},
 +  %%{mod_echo, ​  ​[{host,​ "​echo.localhost"​}]},​
 +  {mod_irc, ​     []},   
 +  {mod_last, ​    []},
 +  {mod_muc, ​     [
 +                  %%{host, "​conference.@HOST@"​},​
 +                  {access, muc},
 +                  {access_create,​ muc},
 +                  {access_persistent,​ muc},
 +                  {access_admin,​ muc_admin},
 +                  {max_users, 500}
 +                 ]},
 +  %%{mod_muc_log,​[]},​
 +  {mod_offline, ​ []},
 +  {mod_privacy, ​ []},
 +  {mod_private, ​ []},
 +  {mod_proxy65, ​ [
 +                  {access, local},
 +                  {shaper, c2s_shaper}
 +                 ]},
 +  {mod_pubsub, ​  [ % requires mod_caps
 +                  {access_createnode,​ pubsub_createnode},​
 +                  {plugins, ["​default",​ "​pep"​]}
 +                 ]},
 +  {mod_register,​ [
 +                  {welcome_message,​ {"​Bem-Vindo!",​
 +                                     "​Bem-Vindo ao seu servidor Jabber de douglasqsantos.com.br. "
 +                                     "​Para mais informações sobre o Jabber:"​
 +                                     "​http://​www.jabber.org"​}},​
 + 
 +                  {access, register}
 +                 ]},
 +  {mod_roster, ​  []},
 +  {mod_shared_roster, ​  []},
 +  {mod_stats, ​   []},
 +  {mod_time, ​    []},
 +  {mod_vcard, ​   []},
 +  {mod_version, ​ []}
 + ]}.
 +</​sxh>​
 +Agora vamos acessar a o painel de administração Web, acesse http://​ip_servidor:​5280/​admin,​ o usuário: douglas.q.santos@gmail.com e a senha: senha_do_ldap
 +
 +====== Criação de Grupos para o Ejabberd ======
 +Por default o maldito não importa os grupos nem do AD e nem do Ldap então temos que criar os grupos e atribuir os usuários a ele.
 +
 +Agora logue em http://​ip_server:​5280/​admin/​
 +
 +   * Agora em Virtual Hosts selecione o seu host no meu caso douglasqsantos.com.br
 +   * Agora selecione **Shared Roster Groups**
 +   * Agora Informe um nome para ele e selecione **Add New**
 +   * Agora click no nome do seu grupo
 +   * Aqui temos que editar ele:
 +     * Infome um nome para ele
 +     * Informe uma descrição
 +     * Aqui em members precisamos informar os usuário que iram fazer parte do grupo ex: douglas.q.santos@gmail.com tem que ser usuário@domínio
 +     * Em displayed Groups são para quais grupos o nosso grupo vai aparecer, aqui temos que informar pelo menos o nome do mesmo grupo para que os usuários deste grupo tenham acesso uns aos outros.
 +     * Agora selecione Submit
 +
 +Para criar mais grupos é só seguir o procedimento acima ;)
 +
 +====== Fazendo backup e restore do Ejabberd ======
 +
 +Para fazer backup da base de dados Mnesia que é o padrão do ejabberd podemos utilizar o seguinte comando
 +<sxh bash>
 +
 +ejabberdctl backup ejabberd.backup
 +</​sxh>​
 +Desta forma o ejabberd vai criar o arquivo ejabberd.backup em /​var/​lib/​ejabberd com a permissão 640 e usuário e grupo dono sendo o ejabberd.
 +
 +Caso necessite fazer um backup em dump podemos fazer da seguinte forma, pela documentação ele não é aconselhável quando a base de dados for muito grande.
 +<sxh bash>
 +
 +ejabberdctl dump ejabberd.dump
 +</​sxh> ​
 +
 +Agora ver como restaurar um backup efetuado com o comando ejabberdctl backup, considerando que o arquivo esteja em /​var/​lib/​ejabberd com a permissão 640 e usuário e grupo dono sendo o ejabberd.
 +<sxh bash>
 +
 +ejabberdctl restore ejabberd.backup
 +</​sxh>​
 +
 +Agora ver como restaurar um backup efetuado com o comando ejabberdctl dump, considerando que o arquivo esteja em /​var/​lib/​ejabberd com a permissão 640 e usuário e grupo dono sendo o ejabberd.
 +<sxh bash>
 +
 +ejabberdctl load ejabberd.dump
 +</​sxh>​
 +
 +====== Portas utilizadas pelo Ejabberd ======
 +
 +^**Porta**^**Descrição**^
 +|5222 | Porta padrão para os conexões de clientes Jabber/​XMPP,​ plain or STARTTLS.|
 +|5223 | Porta padrão para os conexões de clientes Jabber/​XMPP,​ utilizando método antigo de SSL|
 +|5269 | Porta padrão para servidores Jabber/XMPP |
 +|4369 | EPMD porta de escuta para requisições de nodos Erlang |
 +
 +
 +
 +====== Referências ======
 +  - http://​www.process-one.net/​en/​ejabberd/​release_notes/​
 +  - http://​www.process-one.net/​en/​ejabberd/​downloads/​
 +  - http://​www.process-one.net/​docs/​ejabberd/​guide_en.pdf
 +  - http://​www.process-one.net/​en/​ejabberd/​docs/​