Autohospedagem do Immich: Nuvem Privada de Fotos

Suas fotos em backup auto-hospedado com IA

Conteúdo da página

Immich é uma solução revolucionária de código aberto e autohospedada para gerenciamento de fotos e vídeos que lhe dá controle total sobre suas memórias. Com recursos que rivalizam com o Google Fotos - incluindo reconhecimento facial alimentado por IA, pesquisa inteligente e backup automático móvel - mantendo todos os seus dados privados e seguros no seu próprio servidor.

Assim como a Gestão do Conhecimento Pessoal ajuda você a organizar e preservar seus pensamentos e informações, o Immich ajuda você a organizar e preservar suas memórias visuais.

immich

O que é o Immich?

O Immich é uma alternativa de código aberto e autohospedada aos serviços de nuvem proprietários de fotos, como Google Fotos e iCloud. Construído com tecnologias modernas, incluindo TypeScript, PostgreSQL e aprendizado de máquina, o Immich oferece uma plataforma rica em recursos para fazer backup, organizar e navegar na sua coleção de fotos e vídeos.

Principais Recursos

Design Focado na Privacidade: Todas as suas fotos permanecem na sua infraestrutura. Nenhum servidor de terceiros, nenhuma mineração de dados, nenhuma preocupação com privacidade. Suas memórias pertencem a você.

Backup Móvel Automático: Aplicações nativas para iOS e Android fornecem backup em segundo plano automático, similar ao Google Fotos. Suas fotos são garantidas momentos após serem tiradas.

Pesquisa Alimentada por IA: Aproveitando modelos de aprendizado de máquina, incluindo CLIP e reconhecimento facial, o Immich permite pesquisa semântica. Pesquise por “pôr do sol na praia”, “cão brincando” ou pessoas específicas sem marcação manual.

Reconhecimento Facial: Detecção e agrupamento automáticos de rostos nas suas fotos. O Immich identifica pessoas em toda a sua biblioteca, facilitando encontrar fotos de indivíduos específicos.

Interface Web Moderna: Interface web bela e responsiva para navegar, organizar e compartilhar suas fotos de qualquer dispositivo com um navegador.

Suporte a Multi-Usuários: Crie contas para membros da família, cada um com sua própria biblioteca privada. Compartilhe álbuns selecionados mantendo a privacidade das fotos pessoais.

Suporte a Live Photos: Suporte total para Live Photos do iOS e Motion Photos do Android, preservando tanto a imagem estática quanto o componente de vídeo.

Preservação de Metadados: Dados EXIF, incluindo localização, configurações da câmera e carimbos de data/hora, são preservados. Visualize suas fotos em um mapa com base em coordenadas GPS.

Suporte a Biblioteca Externa: Importe bibliotecas de fotos existentes de armazenamento externo sem copiar arquivos, economizando espaço em disco. Assim como ferramentas como Obsidian ajudam a gerenciar e organizar conhecimento baseado em texto, o Immich fornece organização poderosa para mídia visual.

Por que Autohospedar Suas Fotos?

Controle Total de Privacidade

Quando você usa serviços de nuvem comerciais, suas fotos são armazenadas em servidores que você não controla. Eles podem ser analisados para publicidade, incluídos em dados de treinamento de aprendizado de máquina ou acessados por terceiros. Com o Immich, suas fotos nunca deixam o seu servidor a menos que você as compartilhe explicitamente.

Sem Limites de Armazenamento

Serviços de nuvem cobram com base em tiers de armazenamento. Com autohospedagem, seu único limite é a capacidade do seu hardware. Um disco rígido de 10TB custa menos que dois anos de armazenamento de nuvem premium.

Eficiência de Custo

Após o investimento inicial em hardware, o autohospedagem tem custos contínuos mínimos. Sem assinaturas mensais, sem cobranças surpresa quando você excede os limites de armazenamento.

Longevidade dos Dados

Serviços de nuvem podem mudar termos, aumentar preços ou encerrar completamente. Sua solução autohospedada permanece sob seu controle indefinidamente.

Oportunidade de Aprendizado

Autohospedar o Immich oferece experiência prática com Docker, proxies reversos, certificados SSL, gerenciamento de banco de dados e administração de servidores - habilidades valiosas para qualquer desenvolvedor ou profissional de DevOps.

Visão Geral da Arquitetura

O Immich segue uma arquitetura de microsserviços com vários componentes:

Servidor Immich: Servidor API principal que gerencia autenticação, uploads de fotos e operações de banco de dados. Construído com Node.js e TypeScript.

Immich Machine Learning: Serviço Python separado executando modelos TensorFlow para reconhecimento facial, detecção de objetos e pesquisa semântica baseada em CLIP.

Immich Web: Interface web baseada em React que fornece a aplicação voltada para o usuário.

PostgreSQL: Banco de dados relacional armazenando metadados, informações de usuário e relacionamentos entre fotos, pessoas e álbuns.

Redis: Cache em memória para gerenciamento de sessão e coordenação de fila de tarefas.

TypeSense (opcional): Motor de busca para capacidades de pesquisa aprimoradas e desempenho.

Todos os componentes rodam como contêineres Docker, orquestrados com Docker Compose para implantação e gerenciamento simplificados.

Requisitos de Hardware

Especificações Mínimas

  • CPU: 2 núcleos (x86_64 ou ARM64)
  • RAM: 4GB (8GB recomendado)
  • Armazenamento: 10GB para aplicação + tamanho da biblioteca de fotos
  • Rede: 100 Mbps para acesso local

Especificações Recomendadas

  • CPU: 4+ núcleos com bom desempenho de thread único
  • RAM: 8-16GB (mais para bibliotecas maiores)
  • Armazenamento: SSD para banco de dados e aplicação, HDD para armazenamento de fotos
  • GPU: Opcional, mas acelera significativamente tarefas de ML (NVIDIA com suporte CUDA)

Considerações de Armazenamento

Planeje aproximadamente 1,15x o tamanho da sua biblioteca de fotos atual para contabilizar miniaturas e múltiplas resoluções. Use armazenamento SSD para o banco de dados PostgreSQL para melhor desempenho.

Para bibliotecas grandes (100.000+ fotos), considere:

  • NAS com RAID para redundância de dados
  • SSD separado para banco de dados
  • Camada de cache NVMe para fotos frequentemente acessadas

Guia de Instalação

Pré-requisitos

Antes de instalar o Immich, certifique-se de ter:

  1. Servidor Linux: Ubuntu 22.04 LTS ou Debian 12 recomendado (veja nosso guia completo sobre Como Instalar o Ubuntu 24.04 e ferramentas úteis para instruções detalhadas de configuração)
  2. Docker: Versão 20.10 ou mais recente
  3. Docker Compose: Versão 2.0 ou mais recente
  4. Nome de Domínio: Opcional, mas recomendado para acesso externo
  5. Proxy Reverso: Nginx ou Caddy para terminação SSL

Instalação Passo a Passo

1. Instalar Docker e Docker Compose

# Atualizar pacotes do sistema
sudo apt update && sudo apt upgrade -y

# Instalar Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Adicionar usuário ao grupo docker
sudo usermod -aG docker $USER

# Instalar Docker Compose
sudo apt install docker-compose-plugin

Para mais detalhes sobre comandos e opções curl, confira nosso Cheat Sheet do cURL. Se você é novo no Docker, nosso Cheat Sheet do Docker fornece comandos e conceitos essenciais.

2. Criar Estrutura de Diretórios do Immich

# Criar diretório da aplicação
mkdir -p ~/immich/{library,database,machine-learning}
cd ~/immich

# Baixar docker-compose.yml
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

# Baixar modelo de ambiente
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Se você é novo em scripts bash e operações de linha de comando, nosso Cheat Sheet do Bash fornece referências úteis para comandos comuns e operações de diretório.

3. Configurar Variáveis de Ambiente

Edite o arquivo .env com suas configurações:

# Configuração do Banco de Dados
DB_PASSWORD=your_secure_password_here
DB_DATABASE_NAME=immich
DB_USERNAME=postgres

# Local de Upload
UPLOAD_LOCATION=./library

# Machine Learning
MACHINE_LEARNING_ENABLED=true

# Fuso Horário
TZ=America/New_York

# URL Pública (para acesso externo)
IMMICH_SERVER_URL=https://photos.yourdomain.com

Importante: Gere uma senha forte e aleatória para DB_PASSWORD:

openssl rand -base64 32

4. Iniciar o Immich

# Iniciar todos os serviços
docker compose up -d

# Verificar status dos serviços
docker compose ps

# Ver logs
docker compose logs -f

Estes são apenas os básicos - para uma referência completa de comandos e operações do Docker Compose, veja nosso Cheat Sheet do Docker Compose.

5. Acessar Interface Web

Navegue para http://seu-ip-do-servidor:2283 e crie sua conta de administrador. Esta primeira conta torna-se o administrador do sistema.

Configurando Acesso Externo

Para acesso externo seguro, configure um proxy reverso:

Exemplo de Configuração do Nginx

server {
    listen 443 ssl http2;
    server_name photos.yourdomain.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    client_max_body_size 50000M;

    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;
        
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

Exemplo de Configuração do Caddy (Mais simples com HTTPS automático)

photos.yourdomain.com {
    reverse_proxy localhost:2283
    
    @uploads {
        path /api/upload/*
    }
    request_body @uploads {
        max_size 50GB
    }
}

Configuração do Aplicativo Móvel

iOS

  1. Baixe o Immich na App Store
  2. Insira a URL do seu servidor (https://photos.yourdomain.com)
  3. Faça login com suas credenciais
  4. Ative o backup automático nas Configurações
  5. Escolha quais álbuns fazer backup (ou todas as fotos)
  6. Configure as configurações de backup (somente WiFi, somente carregando, etc.)

Android

  1. Baixe o Immich na Google Play Store ou F-Droid
  2. Insira a URL do servidor e credenciais
  3. Conceda permissões de acesso a fotos/vídeos
  4. Configure as configurações de backup automático
  5. Ative o serviço em primeiro plano para backup confiável em segundo plano

Dicas de Configuração de Backup

  • Somente WiFi: Ative para evitar cobranças de dados móveis
  • Somente Carregando: Evite descarga da bateria durante uploads grandes
  • Incluir Vídeos: Vídeos consomem armazenamento e largura de banda significativos
  • Atualização de Aplicativo em Segundo Plano: Ative no iOS para sincronização confiável
  • Serviço em Primeiro Plano: Ative no Android para backup consistente

Recursos de Aprendizado de Máquina

Reconhecimento Facial

O reconhecimento facial do Immich detecta e agrupa automaticamente rostos em toda a sua biblioteca:

  1. Processamento Inicial: Após o upload, o serviço ML analisa cada foto em busca de rostos
  2. Agrupamento Facial: Rostos semelhantes são agrupados
  3. Atribuição Manual: Revise os agrupamentos e atribua nomes às pessoas
  4. Aprendizado Contínuo: À medida que marca mais fotos, a precisão melhora

Configuração:

# No docker-compose.yml, ambiente do serviço ML
MACHINE_LEARNING_MODEL_CACHE=/cache
MACHINE_LEARNING_WORKERS=1  # Aumente com mais núcleos de CPU

Detecção de Objetos e Pesquisa CLIP

O Immich usa CLIP (Contrastive Language-Image Pre-training) para pesquisa semântica:

  • Pesquise por conceitos sem tags: “paisagem de montanha”, “bolo de aniversário”, “carro vermelho”
  • Consultas em linguagem natural entendem contexto e relacionamentos
  • Funciona em vários idiomas (embora o inglês geralmente produza melhores resultados)

Aceleração de GPU

Para processamento ML significativamente mais rápido, ative o suporte a GPU:

GPU NVIDIA com CUDA

# No docker-compose.yml, serviço ML
services:
  immich-machine-learning:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

Certifique-se de ter o NVIDIA Container Toolkit instalado:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
    sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

Estratégias de Backup

Enquanto o Immich faz backup das suas fotos dos dispositivos móveis, você também deve fazer backup do próprio Immich:

O que Fazer Backup

  1. Biblioteca de Fotos: O diretório UPLOAD_LOCATION contendo fotos originais
  2. Banco de Dados: Banco de dados PostgreSQL com metadados e relacionamentos
  3. Configuração: Arquivo .env e docker-compose.yml

Backup do Banco de Dados

Script de Backup Diário Automatizado

#!/bin/bash
# Salve como ~/immich/backup.sh

BACKUP_DIR=~/immich-backups
DATE=$(date +%Y%m%d_%H%M%S)

# Criar diretório de backup
mkdir -p $BACKUP_DIR

# Fazer backup do banco de dados PostgreSQL
docker exec -t immich-postgres pg_dumpall -c -U postgres | \
    gzip > $BACKUP_DIR/immich_db_$DATE.sql.gz

# Manter apenas os backups dos últimos 30 dias
find $BACKUP_DIR -name "immich_db_*.sql.gz" -mtime +30 -delete

echo "Backup concluído: $BACKUP_DIR/immich_db_$DATE.sql.gz"

Torne executável e agende com cron:

chmod +x ~/immich/backup.sh
crontab -e
# Adicione a linha: 0 2 * * * ~/immich/backup.sh

Para mais informações sobre scripting bash, automação e tarefas cron, consulte nosso Cheat Sheet do Bash.

Backup da Biblioteca de Fotos

Sua biblioteca de fotos deve ser feita backup separadamente para outra localização:

Opção 1: Rsync para NAS

rsync -avz --delete ~/immich/library/ nas:/backups/immich-photos/

Opção 2: Backup na Nuvem (Criptografado)

# Usando rclone com criptografia
rclone sync ~/immich/library/ remote:immich-backup-encrypted/ --encrypt

Opção 3: Drive Externo Local

rsync -avz --delete ~/immich/library/ /mnt/backup-drive/immich/

Manutenção e Atualizações

Tarefas de Manutenção Regular

Monitorar Espaço em Disco

# Verificar uso de disco
df -h ~/immich/library
df -h ~/immich/database

# Verificar volumes do Docker
docker system df

Monitorar Desempenho

# Ver uso de recursos
docker stats

# Verificar logs de serviços específicos
docker compose logs immich-server --tail=100
docker compose logs immich-machine-learning --tail=100

Atualizar o Immich

O Immich atualiza frequentemente com novos recursos e correções de bugs. Atualize regularmente:

cd ~/immich

# Fazer backup do banco de dados antes de atualizar
docker exec -t immich-postgres pg_dumpall -c -U postgres > backup_pre_update.sql

# Puxar imagens mais recentes
docker compose pull

# Parar e remover contêineres antigos
docker compose down

# Iniciar com novas imagens
docker compose up -d

# Verificar logs por quaisquer problemas
docker compose logs -f

Manutenção do Banco de Dados

Manutenção periódica do banco de dados garante desempenho ótimo:

# Vácuo e analisar banco de dados
docker exec -it immich-postgres psql -U postgres -d immich -c "VACUUM ANALYZE;"

# Verificar tamanho do banco de dados
docker exec -it immich-postgres psql -U postgres -d immich -c \
    "SELECT pg_size_pretty(pg_database_size('immich'));"

Otimização de Desempenho

Otimização de Armazenamento

Usar SSD para Banco de Dados: O PostgreSQL se beneficia significativamente de armazenamento SSD. Considere:

volumes:
  pgdata:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /mnt/ssd/immich-db

Armazenamento de Fotos Separado: Mantenha bibliotecas de fotos grandes em HDD enquanto o banco de dados permanece em SSD:

UPLOAD_LOCATION=/mnt/hdd/immich-photos

Ajuste de Desempenho do Banco de Dados

Para bibliotecas com 50.000+ fotos, ajuste o PostgreSQL:

# No docker-compose.yml, ambiente do serviço postgres
POSTGRES_SHARED_BUFFERS=256MB
POSTGRES_EFFECTIVE_CACHE_SIZE=1GB
POSTGRES_MAINTENANCE_WORK_MEM=64MB
POSTGRES_CHECKPOINT_COMPLETION_TARGET=0.9
POSTGRES_WAL_BUFFERS=16MB
POSTGRES_DEFAULT_STATISTICS_TARGET=100

Desempenho de Aprendizado de Máquina

Processamento em Lote: Processe múltiplas fotos simultaneamente:

MACHINE_LEARNING_WORKERS=4  # Corresponda à contagem de núcleos de CPU

Aceleração de GPU: Como mencionado anteriormente, a aceleração de GPU proporciona aumento de velocidade de 5-10x para tarefas de ML.

Melhores Práticas de Segurança

Autenticação e Controle de Acesso

  1. Senhas Fortes: Use gerenciador de senhas para gerar e armazenar senhas complexas
  2. Autenticação de Dois Fatores: Ative 2FA para conta de administrador (se suportado na sua versão)
  3. Revisões de Acesso Regulares: Revise periodicamente contas de usuário e remova as não utilizadas

Segurança de Rede

Proxy Reverso com SSL: Nunca exponha o Immich diretamente à internet sem HTTPS:

# Use Let's Encrypt para certificados SSL gratuitos
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d photos.yourdomain.com

Configuração de Firewall:

# Permitir apenas portas necessárias
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP (redirecionar para HTTPS)
sudo ufw allow 443/tcp   # HTTPS
sudo ufw enable

VPN ou Tailscale: Para segurança máxima, acesse o Immich através de VPN:

  • Instale Tailscale no seu servidor e dispositivos
  • Acesse via IP Tailscale (100.x.x.x)
  • Nenhuma porta exposta à internet pública

Segurança de Contêiner

Atualizações Regulares: Mantenha imagens Docker atualizadas para corrigir vulnerabilidades de segurança

Executar sem Root: Configure modo rootless do Docker para isolamento adicional

Limites de Recursos: Previna ataques DoS limitando recursos do contêiner:

services:
  immich-server:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G

Solução de Problemas Comuns

Falhas de Upload

Sintoma: Fotos falham ao fazer upload do aplicativo móvel

Soluções:

  • Verificar espaço em disco do servidor: df -h
  • Verificar configuração client_max_body_size do proxy reverso
  • Verificar logs do servidor: docker compose logs immich-server
  • Garantir que o aplicativo móvel tenha a versão mais recente

Aprendizado de Máquina Não Processando

Sintoma: Reconhecimento facial ou pesquisa não funcionando

Soluções:

  • Verificar status do contêiner ML: docker compose ps immich-machine-learning
  • Ver logs do ML: docker compose logs immich-machine-learning
  • Reiniciar serviço ML: docker compose restart immich-machine-learning
  • Verificar se arquivos de modelo foram baixados: ls ~/immich/machine-learning/cache/

Erros de Conexão ao Banco de Dados

Sintoma: Interface web mostra erros de conexão ao banco de dados

Soluções:

  • Verificar se contêiner PostgreSQL está rodando: docker compose ps immich-postgres
  • Verificar logs do banco de dados: docker compose logs immich-postgres
  • Verificar senha correta no arquivo .env
  • Testar conexão: docker exec -it immich-postgres psql -U postgres

Desempenho Lento

Sintoma: Interface web ou pesquisas estão lentas

Soluções:

  • Verificar recursos do sistema: CPU, RAM, I/O de disco
  • Executar vácuo no banco de dados: VACUUM ANALYZE;
  • Reiniciar serviços: docker compose restart
  • Revisar configurações de desempenho do PostgreSQL
  • Considerar upgrade de hardware (SSD, mais RAM)

Aplicativo Móvel Não Sincronizando

Sintoma: Fotos não fazendo backup do dispositivo móvel

Soluções:

  • Verificar se atualização em segundo plano está habilitada (iOS)
  • Ativar serviço em primeiro plano (Android)
  • Verificar configurações somente WiFi se estiver em dados móveis
  • Verificar se URL do servidor é acessível da rede móvel
  • Revisar permissões do aplicativo para acesso a fotos
  • Limpar cache do aplicativo e fazer login novamente

Migrando de Outros Serviços

Do Google Fotos

Exportar Seus Dados:

  1. Vá ao Google Takeout (takeout.google.com)
  2. Selecione Google Fotos
  3. Escolha formato e tamanho de exportação
  4. Baixe os arquivos

Importar para o Immich:

  1. Extraia os arquivos baixados
  2. Use a ferramenta CLI do Immich ou upload web
  3. Metadados são preservados de arquivos sidecar JSON
# Usando Immich CLI (instalar de releases)
immich upload --recursive /path/to/google-photos-export/

Do iCloud Fotos

Exportar:

  1. Visite iCloud.com
  2. Selecione fotos para baixar
  3. Ou use iCloud para Windows/app Fotos para exportar

Importar: Similar ao Google Fotos, faça upload através da interface web ou ferramenta CLI

De Armazenamento Local

Recurso de Biblioteca Externa: Em vez de fazer upload, aponte o Immich para diretório de fotos existente:

  1. Navegue para Administração > Bibliotecas Externas
  2. Adicione caminho da biblioteca (deve ser acessível do contêiner Docker)
  3. O Immich varre e indexa sem copiar arquivos
  4. Economiza espaço em disco e tempo significativamente
# No docker-compose.yml, adicione montagem de volume
volumes:
  - /mnt/existing-photos:/mnt/external-library:ro

Comunidade e Suporte

Recursos Oficiais

Contribuindo

O Immich é de código aberto e bem-vém contribuições:

  • Relatórios de Bugs: Envie relatórios de problemas detalhados no GitHub
  • Solicitações de Recursos: Discuta no Discord ou GitHub Discussions
  • Contribuições de Código: Envie pull requests seguindo as diretrizes de contribuição
  • Documentação: Melhore a documentação para melhor experiência do usuário
  • Traduções: Ajude a localizar o Immich para seu idioma

Ferramentas Alternativas

Se o Immich não atender às suas necessidades, considere:

  • PhotoPrism: Mais maduro, rico em recursos, arquitetura diferente
  • Piwigo: Interface estilo galeria tradicional
  • Nextcloud Photos: Parte do ecossistema Nextcloud maior
  • Photoview: Alternativa mais simples e leve
  • LibrePhotos: Outra alternativa ao Google Fotos com recursos de IA

Conclusão

Autohospedar o Immich oferece uma alternativa poderosa e privada aos serviços comerciais de nuvem de fotos. Embora exija configuração técnica inicial e manutenção contínuos, os benefícios de controle total de privacidade, sem limites de armazenamento e liberdade de taxas de assinatura tornam-no vale a pena para muitos usuários.

A combinação de backup móvel automático, pesquisa alimentada por IA, reconhecimento facial e interface moderna cria uma experiência comparável às ofertas comerciais, mantendo seus dados sob seu controle. Seja você um entusiasta da privacidade, usuário consciente de custos com grandes bibliotecas de fotos ou profissional de tecnologia querendo experiência prática de infraestrutura, o Immich oferece uma solução convincente.

Comece pequeno com um servidor doméstico ou VPS, teste com um subconjunto da sua biblioteca de fotos e migre gradualmente à medida que se sentir confortável com o sistema. A comunidade ativa e atualizações frequentes garantem que o Immich continuará melhorando e adicionando recursos.

Suas memórias são preciosas - tome controle delas com o Immich.

Assinar

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.