GDRIVE API’s – Integrando com Nextcloud

Olá a todos!

Desde o desaire das ultimas semanas sobre a Amazon Cloud Drive e o comportamento bait&switch deles, tem me perguntado como fazer para agora integrarem a Google Drive com o seu ambiente de Nextcloud/Owncloud á semelhança do que foi feito aqui no ano passado.

A ideia é usar o Google Drive como backend de armazenamento e fazer a integração via API.
O pressuposto em si é bom e apresenta várias vantagens:

a) O acesso a API da google é feito por uma APP com versão comercial. As alterações feitas na API pela Google tipicamente são feitas com mais cuidado.

b) O Nextcloud suporta mount por WebDAV, o que abre a possibilidade de acesso por third party apps via a API do próprio Nexcloud como por exemplo o RCLONE ou o Duplicati, eliminando o risco de sofrer com uma app banida pela Google enquanto se aumenta a segurança e granularidade de permissões e acessos a conteúdos da Gdrive.

c) A comunidade do Nextcloud é extremamente grande, e a app em si está bem testada e extremamente bem documentada. O suporte existe caso seja necessário.

d) Permite através de third party apps e FUSE montar o WebDAV como se de um filesystem local se tratasse.

Nota: estou a assumir que tem o vosso Nextcloud já configurado corretamente.

Como fazer então? Nada mais fácil!

Em primeiro lugar devem ir a vossa secção de apps do vosso Nextcloud (como administradores) e ativar a app external storage:

 

Em seguida, na secção admin, terão já uma TAB com o nome de External Storages:

 

 

Em seguida escolher a applet de configuração de acesso ao storage externo do nosso Nextcloud:

De notar os tipos de external storage suportados:

Em seguida será necessário configurar a API da Google Drive em si:

 

O Nextcloud usa OAuth 2.0 para se ligar e autenticar contra a Google Drive.
Este tipo de autenticação requer que seja gerada pela Google uma app ID e um app secret para que a Nextcloud se registe a si como uma app valida.
Todas as apps que necessitam acesso ás API’s da Google devem ser registadas através da Google Cloud Console aqui.

Podem usar a vossa conta habitual do Gdrive, Gmail ou afins.
É importante saberem que a vossa Gdrive será partilhada transversalmente através da vossa instância de Nextcloud pelo que se quiserem manter a privacidade dos vossos dados em relação a outros utilizadores na mesma instância, devem em seguida validar a Nextcloud app “Filesystem ACL”

Clicar em Credentials:

Criar novo projeto:

Nomear o novo projeto:

Criar a credencial oAuth2 em si:

Escolher o método oAuth:

Criar um consent screen:

Configurar os acessos e tipos de acesso, assim bem como o tipo de app:

Nota que os urls que vão indicar devem ser válidos e não sub diretorias para o Authorized JavaScript origins.
A mesma coisa será necessária para os redirect URLS.
No meu caso especifico coloquei:

https://site.nuneshiggs.com/cloud/index.php/settings/personal
https://site.nuneshiggs.com/cloud/index.php/settings/admin
https://site.nuneshiggs.com/cloud/index.php/settings/admin/externalstorages

Finalmente ele nos irá dar o CLIENTID e o oAUTH2 que deverão colocar na vossa pagina do Nextcloud, secção admin, external storages;

Em seguida deverão fazer Grant Access, e serão re-encaminhados para uma página da Google para se autenticarem novamente na vossa conta Gdrive de forma a confirmarem quem são. Este pedido de autenticação só será efetuado uma vez, quando estão a configurar o external storage:

Por esta altura já devem ver o vosso Gdrive, presente no vosso Nextcloud, como uma pasta acessível:

Podemos ainda ver as operações do nosso Nextcloud na API da Google:

 

 

Como considerações finais é importante lembrar dos seguintes pontos:

a) Terem sempre um backup dos vossos dados. A cloud publica gratuita não vos oferece garantias.
b) Caso necessitem MESMO de encriptação utilizem o modulo built in do Nextcloud.
c) Lembrem-se que estão a trabalhar em cima de uma API externa, em cima de um pseudo-filesytem de objects exportado via internet. Se a internet vos cair a API e os vossos ficarão indisponíveis até voltarem a ter Internet.
d) Performance. Estas API’s dependem de duas coisas: Velocidade de internet e de CPU para as operações. Limites em ambos traduzem-se em velocidades menos aceitáveis para alguns utilizadores.
Se precisarem realmente de velocidade e encriptação em tempo real, procurem um storage dito tradicional com encriptação on-the-fly.
e) CUIDADO com as vossas chaves de encriptação se optarem pelo plugin de encriptação. Se as perderem perdem os vossos dados.
f) Tenham cuidados redobrados com a vossa DB que servirá de backend ao Nextcloud. Se tiverem na vossa nextcloud remotamente 100TB, e se os tiverem que reindexar todos vão perder uns anitos no processo.

Até ao próximo post. Se necessitarem de falar comigo já sabem onde me podem encontrar.

Abraço!
Nuno