Imigrar de uma plataforma proprietária como o Google Fotos para um ambiente self-hosted é uma das decisões mais impactantes que um administrador de sistemas ou entusiasta de dados pode tomar. A preocupação com a privacidade, a escalabilidade e o controle total sobre as próprias memórias digitais impulsionam a busca por soluções robustas. Neste tutorial, abordaremos como implementar o Immich, uma poderosa alternativa ao Google Fotos, projetada para rodar em sua própria infraestrutura de nuvem privada.
O Immich se destaca não apenas pela interface familiar e intuitiva, mas também pelo desempenho excepcional na indexação de imagens e vídeos. Diferente de soluções tradicionais como Nextcloud ou OwnCloud, que são excelentes repositórios de arquivos gerais, o Immich é otimizado especificamente para galerias fotográficas, oferecendo recursos avançados de reconhecimento facial, mapeamento geográfico e visualização rápida, mesmo em ambientes com milhares de gigabytes de mídia.
1. Requisitos de Infraestrutura
Antes de iniciar a instalação, é crucial entender os requisitos técnicos para garantir uma experiência fluida. O Immich é uma aplicação moderna baseada em container, o que facilita a implantação, mas exige recursos adequados, especialmente durante a fase de processamento inicial das imagens.
- Servidor: Uma VPS Linux (Ubuntu 22.04 LTS ou Debian 12 recomendados) com acesso root ou privilégios de sudo.
- Processador: Um CPU moderno com suporte a instruções AVX é recomendado, especialmente se você planeja usar o reconhecimento facial via machine learning.
- Memória RAM: Mínimo de 4GB para o sistema operacional e containers. Recomendamos 8GB ou mais para lidar com o banco de dados PostgreSQL e o serviço de processamento de imagem simultaneamente.
- Armazenamento: Espaço em disco suficiente para armazenar suas fotos. O SSD é altamente recomendado para reduzir a latência na leitura das metadados e thumbnailing.
- Rede: Acesso externo estável com portas 80 (HTTP) ou 443 (HTTPS) abertas, caso você queira acessar a galeria fora da sua rede local.
Se você já possui uma infraestrutura com Nextcloud, Seafile ou outros serviços, o Immich pode coexistir harmoniosamente. A vantagem do self-hosting é a capacidade de isolar aplicações específicas para fins específicos, mantendo a modularidade e a segurança.
2. Preparação do Ambiente Linux
A instalação começa com a atualização do sistema operacional e a instalação das dependências necessárias para rodar o Docker e o Docker Compose, que são os pilares da arquitetura do Immich.
Primeiro, atualize o índice dos pacotes e instale as ferramentas básicas de gerenciamento:
sudo apt update
sudo apt upgrade -y
sudo apt install curl git ca-certificates gnupg lsb-release -y
Agora, proceda com a instalação do Docker Engine. A maneira mais segura e recomendada é usar o repositório oficial da Docker:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Após adicionar o repositório, instale o Docker e seus componentes complementares:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Verifique se o Docker está rodando corretamente:
sudo systemctl status docker
Se a saída indicar que o serviço está ativo e em execução, você pode prosseguir. Para evitar precisar digitar sudo antes de cada comando do Docker no futuro, adicione seu usuário ao grupo docker:
sudo usermod -aG docker $USER
Lembre-se de sair e entrar novamente na sessão ou reiniciar o servidor para que as alterações de grupo tenham efeito.
3. Configurando o Immich com Docker Compose
O Immich recomenda fortemente a instalação via Docker Compose, pois gerencia as dependências complexas entre o serviço web, o backend API, o worker de processamento e o banco de dados PostgreSQL.
Crie um diretório dedicado para sua instalação:
mkdir -p ~/immich && cd ~/immich
Baixe o arquivo docker-compose.yml oficial. Este arquivo orquestra a criação de todos os containers necessários:
wget https://raw.githubusercontent.com/immich-app/immich/master/docker/docker-compose.yml
Abrir este arquivo em um editor de texto como o nano ou vim é essencial para personalizar as variáveis de ambiente, especialmente o banco de dados:
nano docker-compose.yml
Dentro do arquivo, localize a seção services: postgres-db: e altere as variáveis POSTGRES_PASSWORD, POSTGRES_USER e POSTGRES_DB. Defina senhas fortes e únicas. Por exemplo:
environment:
POSTGRES_DB: immich
POSTGRES_USER: immich_admin
POSTGRES_PASSWORD: SuaSenhaMuitoForte123!
Além disso, defina o DB_HOSTNAME, DB_DATABASE_NAME, DB_USERNAME e DB_PASSWORD dentro da seção services: server: e services: web: para corresponderem às credenciais definidas acima.
Salve o arquivo e saia do editor. Agora, você está pronto para baixar as imagens dos containers e iniciar a aplicação:
docker compose up -d
O comando -d roda os containers em modo detached (background). Você pode monitorar o início da instalação com:
docker compose logs -f
4. Configuração de Segurança e Reverse Proxy
Embora o Immich esteja rodando, expor a porta 2283 diretamente na internet não é uma prática recomendada. A melhor abordagem para um ambiente production é utilizar um Reverse Proxy, como o Nginx ou o Traefik, que gerencia o HTTPS e redireciona as requisições para o container do Immich.
Se você ainda não possui um proxy configurado, o uso de um certificado Let's Encrypt via Certbot é padrão na indústria. Supondo que você tenha um domínio apontando para o IP da sua VPS, instale o Nginx e o Certbot:
sudo apt install nginx certbot python3-certbot-nginx -y
Crie um bloco de servidor no Nginx. Crie o arquivo /etc/nginx/sites-available/immich.conf:
server {
listen 80;
server_name fotos.seudominio.com.br;
location / {
proxy_pass http://localhost:2283;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support for real-time updates
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Habilite a configuração e teste o Nginx:
sudo ln -s /etc/nginx/sites-available/immich.conf /etc/nginx/sites-enabled/
sudo nginx -t
Se o teste for bem-sucedido, recarregue o serviço:
sudo systemctl reload nginx
Agora, obtenha o certificado SSL:
sudo certbot --nginx -d fotos.seudominio.com.br
O Certbot irá solicitar seu e-mail de contato e aceitar os termos de serviço. Ao finalizar, ele configurará automaticamente o Nginx para redirecionar HTTP para HTTPS e recarregará a configuração.
5. Primeiro Acesso e Upload de Mídia
Acesse https://fotos.seudominio.com.br em seu navegador. Você será recebido pela tela de login do Immich. A primeira vez que você acessar, o sistema solicitará a criação de uma conta de administrador.
Após fazer login, você será direcionado para a galeria principal. Se estiver vazio, clique no botão de upload ou arraste arquivos da sua máquina local para a janela do navegador.
O Immich possui um uploader web robusto que suporta uploads em lote e continua o upload mesmo se a conexão for perdida momentaneamente. Para dispositivos móveis, baixe os aplicativos oficiais (iOS e Android) e faça login com as mesmas credenciais.
6. Comparativo: Immich vs. Concorrentes
Para entender por que o Immich é uma escolha superior para muitos usuários em comparação a outras soluções de cloud storage privado, considere os seguintes pontos:
- vs. Google Fotos: O Immich oferece privacidade total. Seus dados não são escaneados para treinamento de IA ou compartilhamento com terceiros. A interface é visualmente idêntica, facilitando a migração.
- vs. Nextcloud/OwnCloud: Embora o Nextcloud tenha plugins de fotos (como Photos), ele é um sistema de arquivos genérico. O Immich utiliza uma estrutura de banco de dados otimizada para geolocalização e reconhecimento facial, resultando em tempos de carregamento significativamente mais rápidos para galerias grandes.
- vs. Seafile: O Seafile foca na sincronização eficiente de arquivos corporativos e versionamento. Ele não possui recursos nativos de galeria fotográfica com mapa ou álbum inteligente como o Immich.
A escolha entre essas ferramentas depende do seu caso de uso. Se você precisa compartilhar documentos e gerenciar projetos, Nextcloud é imbatível. Se o foco principal é a preservação e organização de fotos pessoais, o Immich oferece uma experiência muito mais polida.
7. Manutenção e Backup
A responsabilidade pelo self-hosting inclui a manutenção proativa do sistema. O Immich facilita isso através de atualizações simples via Docker Compose.
Para atualizar para a versão mais recente, execute os seguintes comandos no diretório da instalação:
cd ~/immich
docker compose pull
docker compose up -d
O docker compose pull baixa as novas imagens e o up -d reinicia os containers com a nova versão, garantindo zero downtime durante a troca de imagens.
Backup é crítico. Você deve realizar backups regulares do banco de dados PostgreSQL e do diretório onde suas fotos originais estão armazenadas. O Immich armazena as fotos em um diretório especificado no arquivo docker-compose.yml, geralmente mapeado para um volume host como /usr/src/app/upload.
Um script de backup simples pode usar rsync ou tar para enviar cópias desses dados para outro local seguro, como um armazenamento S3 compatível ou outro servidor.
# Exemplo de comando para fazer backup do banco de dados
docker exec -t immich-postgres pg_dump -U immich_admin immich > backup.sql
Conclusão
Migrar para o Immich representa um passo firme em direção à soberania digital. Ao eliminar a dependência de gigantes da tecnologia e assumir o controle da sua galeria pessoal, você ganha velocidade, privacidade e flexibilidade. Com uma configuração inicial bem feita em sua VPS Linux, o Immich se estabelece como a solução definitiva para quem deseja uma verdadeira google photos alternativa, escalável e pronta para crescer junto com sua coleção de memórias.
A comunidade do Immich é ativa e em constante desenvolvimento, adicionando novos recursos de IA e melhorias de performance regularmente. Investir tempo na configuração inicial do seu ambiente self-hosted paga dividendos duradouros em tranquilidade e controle sobre seus dados mais valiosos.