Selfhosting – Que software (não) devemos utilizar? (ou pelo menos ter mais cuidado).

Olá a todos,

Hoje vamos falar sobre um assunto importante para aqueles que estão envolvidos em self-hosting de aplicações e serviços: o risco de utilizar software com pouca comunidade ou projetos abandonados. Iremos discutir como esta escolha pode afetar a segurança e a evolução dos sistemas caso sejam descobertos problemas no código base.Getting Started with Docker for Self Hosting All The Things | by Josh Fabean | Code Koalas

 

Quando somos atraídos pela ideia de ter total controle sobre os nossos serviços e dados, muitos de nós optam por realizar self-hosting, ou seja, hospedar nossas próprias aplicações nos nossos próprios servidores. Esta abordagem pode ser extremamente vantajosa em termos de flexibilidade e personalização, mas é preciso estarmos atentos e perfeitamente cientes dos riscos envolvidos, especialmente quando se trata de software com pouca comunidade ou projetos abandonados.

Segurança: o perigo dos problemas não solucionados.

Um dos principais riscos de utilizar software com pouca base de comunidade ou projetos abandonados em self-hosting está relacionado com a segurança.
Quando um problema de segurança é descoberto num software popular com uma grande comunidade de developers ativos, a probabilidade é que ele seja prontamente corrigido. No entanto, quando se trata de projetos com pouca ou nenhuma comunidade, ou aqueles que foram abandonados pelos developers, as coisas podem ser muito diferentes.

Quando problemas de segurança são encontrados num software com pouca comunidade ou em projetos abandonados, as probabilidades  que esses problemas sejam solucionados rapidamente são mínimas.
Isto traduz-se que ficaremos exposto a possíveis vulnerabilidades que podem potencialmente ser exploradas por pessoas mal-intencionadas. Estas vulnerabilidades podem levar a ter a integridade dos nossos dados comprometida, invasões do nosso sistema ou até mesmo ataques a outros dispositivos conectados à nossa rede.

Evolução: a importância de um ecossistema ativo.

Além da segurança, outro aspecto que tem de ser considerado é a evolução do software. A tecnologia está em constante mudança e evolução, e isto também se aplica ao software. Novos recursos são adicionados, bugs são corrigidos e melhorias são implementadas regularmente. Contudo, em projetos com pouca comunidade ou abandonados, a evolução será praticamente inexistente, ou em alguns casos, mesmo nula.

Na pratica, ao utilizar um software deste tipo, iremos  ficar presos a versões antigas, desatualizadas e limitadas. Nada de muito errado nisso, mas podemos nos estar a cartelizar em termos de evolução, há semelhança do antigo meme – sempre fizemos isto assim. Porque evoluir?
Enquanto outros utilizadores de software mais popular estão a tirar partido de novas funcionalidades e bug fixes, nós estaremos presos a uma versão antiga, sem perspectivas de atualizações futuras. Isto levará a problemas de compatibilidade com outros sistemas, falta de suporte para novos padrões ou simplesmente a uma experiência defasada – python2 + calibre anyone?

Self-Hosted Mastodon Instance | Ben Pettis

 

Alternativas e boas práticas:

Então, o que fazer para evitar estes riscos ao realizar self-hosting? Felizmente, existem bastantes alternativas e boas práticas que nos podem ajudar a mitigar estes problemas:

1. Optar por software com uma comunidade ativa: Antes de escolher um software para self-hosting,

É fundamental verificar a atividade da comunidade em torno do projeto. É ver em fóruns, grupos de discussão, repositórios no GitHub ou outras plataformas de desenvolvimento que demonstrem um envolvimento significativo dos utilizadores. Isso indica que há uma base de utilizadores ativa e que os problemas de segurança e evolução são tratados de forma mais eficiente.

2. Verificar a reputação do software: Fazer pesquisa sobre a reputação do software que estamos a considerar instalar. Teremos de procurar por avaliações, opiniões de especialistas e feedback de outros utilizadores. Se o software for amplamente reconhecido e recomendado, isto aumentará a probabilidade de que problemas sejam tratados adequadamente e que haja um compromisso contínuo com a segurança e a evolução.

3. Considerar sempre soluções de opensource: Software opensource geralmente possui uma comunidade mais ativa e envolvida. Além disto, opensource permite que qualquer pessoa leia e audite o código em busca de problemas de segurança. Desta forma, se algum problema for descoberto, há uma maior probabilidade de que a comunidade contribua com correções e atualizações.
Sim eu sei que nem todos temos conhecimento ou somos developers para o fazer, mas acreditem que há coisas gritantes que saltam a vista e para as quais rapidamente se acham soluções através de procurar em motores de pesquisa, ou no github.

4. Mantenham-se atualizados: Independentemente do software que iremos escolher, é fundamental estarmos atualizados sobre as últimas versões e atualizações de segurança. Certifiquem-se que estão a acompanhar as notificações de atualização do software e apliquem as correções e hotfixes assim que forem disponibilizadas. Isso ajudará a manter o nosso sistema seguro e a funcionar corretamente.

5. Considerem contratar suporte especializado caso se aplique: Imaginem o cenário de terem uma empresa unipessoal ou pme e nessa empresa, dependerem de um software especifico self-hosted. Se for este o caso, pode valer a pena considerar a contratação de suporte especializado. Existem empresas ou profissionais especializados podem oferecer serviços de monitorização, atualizações de segurança e suporte técnico para ajudar a lidar com problemas que possam surgir.

Como conclusão, é fundamental ter a noção que ao realizar self-hosting e optar por software com pouca comunidade ou projetos abandonados, estar ciente dos riscos envolvidos.
A falta de suporte ativo pode e irá levar a problemas de segurança não solucionados e à falta de evolução do software. No entanto, seguindo boas práticas, como escolher software com comunidade ativa, verificando a reputação dos projetos, considerando soluções de código aberto, mantendo-se atualizado e, se necessário, contratar suporte especializado, é possível mitigar esses riscos.

Lembrem-se de que a segurança e a evolução dos nossos sistemas são fundamentais para garantir a proteção dos nossos dados e uma experiência contínua.
Façam escolhas informadas e estejam preparados para investir tempo e recursos na manutenção adequada do software por nós utilizado.

Até á próxima semana! Se tiverem algum comentário ou reparo já sabem onde me podem encontrar.

Um abraço.
Nuno