anúncios

domingo, 15 de dezembro de 2019

Instalando e Configurando servidor CalDAV e CardDAV com Baïkal

O que é Baïkal?

O Baïkal oferece acesso sincronizado aos seus calendários e catálogos de endereços pelo CalDAV e CardDAV. Assim os contatos e calendários inseridos nos smartphones são sincronizados no Baïkal em servidor próprio de CalDAV e CardDAV.

Pré requisitos do ambiente para o Baïkal

O Baïkal foi desenvolvimento em PHP, então o ambiente precisa ter como servidor web Apache/Nginx, PHP e SGBD MySQL.

Debian/Ubuntu:

$ sudo apt install apache2 libapache2-mod-php7.3 php7.3-dev php7.3-mysql php7.3-mbstring php7.3-gd mariadb-server

Download do Baïkal

$ wget -c "https://github.com/sabre-io/Baikal/releases/download/0.6.1/baikal-0.6.1.zip"
$ sudo unzip baikal-0.6.1.zip -d /var/www/html
$ sudo chown www-data:www-data /var/www/html/baikal/Specific

Criar o banco de dados no SGBD MySQL

$ sudo mysql -u root -p
mysql> create database baikal;
mysql> CREATE USER userbaikal@localhost IDENTIFIED BY 'secret';
mysql> GRANT ALL PRIVILEGES ON baikal.* TO userbaikal@localhost WITH GRANT OPTION;
mysql> quit

Configuração do Vhost
No Apache
Criar o arquivo /etc/apache2/sites-available/baikal.conf
< VirtualHost *:80 >
DocumentRoot /var/www/html/baikal/html
ServerName dav.dominio.com.br

RewriteEngine On
RewriteRule /.well-known/carddav /card.php [R,L]
RewriteRule /.well-known/caldav /cal.php [R,L]

< Directory "/var/www/html/baikal/html" >
Options None
Options +FollowSymlinks
AllowOverride All
< /Directory >
< /VirtualHost >
No Nginx
Criar o arquivo /etc/nginx/sites-available/baikal.conf
server {
  listen       80;
  server_name  dav.dominio.com.br;

  root  /var/www/html/baikal/html;
  index index.php;

  rewrite ^/.well-known/caldav /dav.php redirect;
  rewrite ^/.well-known/carddav /dav.php redirect;

  charset utf-8;

  location ~ /(\.ht|Core|Specific) {
    deny all;
    return 404;
  }

  location ~ ^(.+\.php)(.*)$ {
    try_files $fastcgi_script_name =404;
    include        /etc/nginx/fastcgi_params;
    fastcgi_split_path_info  ^(.+\.php)(.*)$;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
  }
}
Ativar o Vhost e o mod_rewrite
$ sudo a2ensite baikal.conf
$ sudo a2enmod rewrite

Reinicie o Apache ou Nginx
$ sudo systemctl restart apache2
OU
$ sudo systemctl restart nginx

No browser, acessar http://dav.dominio.com.br
STEP 1

Server Time zone: Escolher o seu fuso horário, no meu caso, selecionei America/Sao_Paulo.
Enable CalDAV: Marque a opção para habilitar a funcionalidade CalDAV do Baïkal.
Enable CardDAV: Marque a opção para habilitar a funcionalidade CardDAV do Baïkal.
WebDAV authentication type: Escolha Digest.
Admin password: Definir um password para interface de administração do Baïkal.
Admin password, confirmation: Confirme o password.

STEP 2

MySQL host: localhost
MySQL database name: Coloque o nome do banco de dados que foi definido, no caso foi baikal.
MySQL username: Coloque o nome de usuário do banco de dados, no caso foi userbaikal.
MySQL password: Coloque a senha do usuário do banco de dados que foi definida.

Clique em Start using Baïkal.

Baïkal instalado com sucesso. Clique em Start using Baïkal para a interface administrativa do Baïkal.

Use o Let's Encrypt para o certificado SSL.

Considerações finais

Com o servidor CalDAV e CardDAV instalado e configurado, crie um usuário CardDAV no servidor para sincronizar com os clientes (smartphones) pelo App CardDAV-Sync. Informe o domínio do servidor do Baikal que foi configurado com o usuário e password. Lembrar de marcar SSL e para isso ter ativado o Let's Encrypt no servidor.



No App CardDAV-Sync, adicione o domínio servidor que foi configurado o Baïkal e preencher conforme abaixo:

PS: Substituir o dav.dominio.com.br pelo nome do seu domínio que definiu no ServerName do Vhost com o domínio validado no Registro BR

Server name or URL: dav.dominio.com.br/card.php/addressbooks/usuario/default
Marque Use SSL (utilizar o Let's Encrypt no servidor)
Username: Colocar o nome de usuário que criou na lista de endereços no servidor Baïkal
Password: Colocar a senha definida do username

Feito!

Nenhum comentário:

Postar um comentário