O que é Immich e Por Que Auto-Hospedar?
O Immich é uma aplicação de código aberto que permite criar sua própria nuvem pessoal para fotos e vídeos, rivalizando diretamente com serviços como Google Fotos e iCloud. Ao optar pelo self-hosting do Immich, você assume o controle de dados, garantindo que suas memórias mais preciosas permaneçam privadas e seguras em sua infraestrutura própria. Esta abordagem elimina preocupações com privacidade, termos de serviço mutáveis e custos recorrentes que escalam com o tempo. Rodar o Immich em um VPS representa um custo fixo previsível, ideal para quem busca autonomia e segurança sem surpresas financeiras.
Veja a infraestrutura: VPS para Redis no Brasil para colocar este projeto no ar.
Neste guia, vamos focar em como implantar o Immich em um servidor VPS Linux, especificamente Ubuntu, utilizando Docker. Isso garante um ambiente isolado, fácil de gerenciar e atualizar. Você terá sua própria galeria de mídia, acessível de qualquer dispositivo, com a paz de espírito de que seus dados estão sob seu comando. Para uma experiência fluida, recomendamos um plano com pelo menos 8GB de RAM e 2 vCPUs.
Vantagens do Immich Self-Hosted
- Privacidade Total: Seus dados ficam em seu servidor, sem terceiros acessando suas fotos.
- Sem Limites de Armazenamento: Você gerencia o espaço em disco, sem pagar por pacotes de armazenamento limitados.
- Custo Fixo Previsível: Ao hospedar em um VPS, você tem um custo fixo mensal, diferente das assinaturas que aumentam com o uso.
- Independência: Não depende das políticas de empresas de nuvem que podem mudar a qualquer momento.
- Controle de Dados: Você é o único dono e gestor de seus arquivos.
Requisitos Mínimos para Produção
Para uma experiência satisfatória com o Immich em produção, considerando o servidor web, o banco de dados e os contêineres necessários, os requisitos mínimos são:
- RAM: 8GB
- vCPUs: 2
- Armazenamento: 50GB (para o sistema, banco de dados, e um pequeno volume de mídia inicial; o armazenamento para as fotos em si dependerá da sua biblioteca).
- Sistema Operacional: Ubuntu 22.04 LTS ou similar.
- Software: Docker e Docker Compose (versão 2.x com hífen).
Embora seja possível iniciar com menos, 8GB de RAM é o piso para evitar lentidão e instabilidade, especialmente com o carregamento inicial de fotos ou ao usar funcionalidades como a detecção de duplicatas. Para um desempenho robusto e para acomodar um crescimento maior da sua biblioteca de mídia, recomendo fortemente um plano com 12GB de RAM e 6 vCPUs.
Instalando o Immich em um VPS Ubuntu com Docker Compose
Esta seção cobre o processo de instalação do Immich usando Docker Compose, garantindo que todos os componentes necessários (servidor web, banco de dados PostgreSQL, e o próprio Immich) sejam configurados de forma eficiente e isolada. Um bom gerenciamento de arquivos e configurações é crucial para a estabilidade. Certifique-se de ter o Docker e o Docker Compose instalados em seu servidor Ubuntu.
Pré-requisitos: Instalação do Docker e Docker Compose
Se você ainda não tem o Docker e o Docker Compose instalados, siga estes passos:
# Atualizar lista de pacotes do sistema
sudo apt update
sudo apt upgrade -y
# Instalar pacotes necessários para o Docker
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
# Adicionar chave GPG oficial do Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Adicionar repositório Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalar o Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
# Instalar Docker Compose Plugin (necessário para usar 'docker compose')
sudo apt install docker-compose-plugin -y
# Verificar instalações
docker --version
docker compose version
# Adicionar seu usuário ao grupo docker (para evitar usar sudo em todos os comandos docker)
sudo usermod -aG docker $USER
# É necessário fazer logout e login novamente para que a mudança de grupo tenha efeito.
Configuração do Immich com Docker Compose
Agora, vamos criar o arquivo docker-compose.yml para o Immich. Crie um diretório para o Immich e navegue até ele:
mkdir ~/immich
cd ~/immich
Dentro deste diretório, crie um arquivo chamado docker-compose.yml e cole o seguinte conteúdo. Este arquivo configura os serviços do Immich, incluindo o servidor principal, o banco de dados PostgreSQL e o Redis para cache:
version: '3.8'
services:
immich-server:
image: immich/immich:latest
container_name: immich_server
ports:
- '3001:3001'
volumes:
- immich_server_data:/usr/src/immich/dist
- immich_server_log:/var/log/immich
environment:
- DB_HOST=db
- DB_USERNAME=immich
- DB_PASSWORD=immichpassword
- DB_DATABASE=immich
- REDIS_HOST=redis
- REDIS_PORT=6379
- JWT_SECRET=YOUR_VERY_OWN_SECRET_FOR_IMMICH
- IMMICH_URL=http://your-domain.com:3001 # Substitua your-domain.com pelo seu domínio ou IP
- OBJECT_STORAGE_ENABLED=false # Mantenha false se não for usar S3/compatível
depends_on:
- db
- redis
restart: unless-stopped
immich-microservices:
image: immich/immich:latest
container_name: immich_microservices
command: /microservices
ports:
- '3003:3003'
volumes:
- immich_microservices_data:/usr/src/immich/dist
environment:
- DB_HOST=db
- DB_USERNAME=immich
- DB_PASSWORD=immichpassword
- DB_DATABASE=immich
- REDIS_HOST=redis
- REDIS_PORT=6379
- JWT_SECRET=YOUR_VERY_OWN_SECRET_FOR_IMMICH
- IMMICH_URL=http://your-domain.com:3001
depends_on:
- db
- redis
restart: unless-stopped
immich-web:
image: immich/immich:latest
container_name: immich_web
command: /web
ports:
- '5173:5173'
volumes:
- immich_web_data:/usr/src/immich/dist
environment:
- DB_HOST=db
- DB_USERNAME=immich
- DB_PASSWORD=immichpassword
- DB_DATABASE=immich
- REDIS_HOST=redis
- REDIS_PORT=6379
- JWT_SECRET=YOUR_VERY_OWN_SECRET_FOR_IMMICH
- IMMICH_URL=http://your-domain.com:3001
depends_on:
- db
- redis
restart: unless-stopped
db:
image: postgres:15
container_name: immich_db
volumes:
- immich_db_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=immichpassword
- POSTGRES_USER=immich
- POSTGRES_DB=immich
restart: unless-stopped
redis:
image: redis:alpine
container_name: immich_redis
volumes:
- immich_redis_data:/data
restart: unless-stopped
volumes:
immich_server_data:
immich_server_log:
immich_microservices_data:
immich_web_data:
immich_db_data:
immich_redis_data:
Observações importantes:
- Substitua
YOUR_VERY_OWN_SECRET_FOR_IMMICHpor uma senha forte e única. - Substitua
http://your-domain.com:3001pelo seu domínio ou o endereço IP do seu VPS seguido da porta 3001. Se você planeja usar um proxy reverso (recomendado), pode deixar apenas o domínio. - A senha do banco de dados
immichpasswordtambém deve ser alterada para algo mais seguro.
Para iniciar os contêineres, execute:
docker compose up -d
O parâmetro -d executa os contêineres em segundo plano. Para verificar o status dos contêineres:
docker compose ps
Você deverá ver todos os serviços (server, microservices, web, db, redis) rodando.
Configuração de Proxy Reverso (Nginx)
Para acessar o Immich de forma segura e pelo seu domínio, é altamente recomendado configurar um proxy reverso, como o Nginx. Se você ainda não tem o Nginx instalado, pode fazer isso com:
sudo apt install nginx -y
Em seguida, crie um arquivo de configuração para o Immich em /etc/nginx/sites-available/immich:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:5173; # Porta do Immich Web
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;
}
# Opcional: Se desejar que o Immich Server também seja acessível diretamente via proxy
# location /server/ {
# proxy_pass http://localhost:3001;
# 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;
# }
}
Lembre-se de substituir your-domain.com pelo seu domínio. Ative a configuração e reinicie o Nginx:
sudo ln -s /etc/nginx/sites-available/immich /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Agora você pode acessar o Immich pelo seu domínio.
Configurações Essenciais do Immich
Após a instalação, o primeiro acesso ao Immich permitirá a criação do usuário administrador e a configuração inicial. É crucial definir um domínio ou IP correto nas configurações de ambiente do Immich para que a aplicação funcione corretamente.
Criando o Usuário Administrador
Ao acessar o Immich pela primeira vez (via IP:3001 ou seu domínio configurado), você será solicitado a criar um usuário administrador. Use um email e senha fortes.
Configurando o DOMAIN_URL
Nas variáveis de ambiente do seu docker-compose.yml, o parâmetro IMMICH_URL é vital. Ele deve apontar para o URL público que você usará para acessar o Immich. Se você configurou um proxy reverso com Nginx para http://seu-dominio.com, então IMMICH_URL=http://seu-dominio.com.
Se você estiver usando um domínio, é altamente recomendável configurar um certificado SSL/TLS para HTTPS. Você pode usar o Let's Encrypt com o Nginx para isso. Se precisar de ajuda, confira nosso guia sobre configuração de proxy reverso e SSL em VPS, que cobre os passos essenciais para proteger sua aplicação.
Gerenciando o Armazenamento de Mídia
O Immich armazenará suas fotos e vídeos no volume immich_server_data, que mapeia para /usr/src/immich/dist dentro do contêiner. Certifique-se de que o disco onde este volume está montado tenha espaço suficiente. O volume immich_db_data conterá o banco de dados PostgreSQL e o immich_redis_data, os dados do cache Redis.
Em um cenário de produção com muitos gigabytes de fotos, o volume do Immich server pode crescer consideravelmente. É importante monitorar o espaço em disco do seu VPS para evitar que ele encha.
Otimizando o Desempenho do Immich
Para garantir que sua experiência com o Immich seja fluida e responsiva, alguns ajustes e considerações de performance são importantes. O self-hosting te dá a liberdade de otimizar conforme sua necessidade, ao contrário de plataformas gerenciadas.
Requisitos de Hardware Detalhados
Como mencionado, 8GB de RAM é o mínimo. No entanto, se você planeja ter uma biblioteca com dezenas ou centenas de milhares de fotos e vídeos, ou se muitos usuários acessarão simultaneamente, 12GB a 16GB de RAM e 4 a 6 vCPUs se tornam cruciais. A carga de trabalho do Immich inclui:
- Servidor web para a interface e API
- Processamento de microserviços (upload, transcodificação, metadados)
- Banco de dados PostgreSQL (requer RAM para caching e operações)
- Cache Redis
A falta de RAM é o gargalo mais comum em instalações self-hosted de aplicações complexas como o Immich, levando a lentidão extrema ou falhas de inicialização dos contêineres.
Considerações sobre Armazenamento
A velocidade do disco também impacta o carregamento de mídia e o desempenho geral. Para bibliotecas grandes, um SSD é altamente recomendado em vez de um HDD. O Immich utiliza o volume immich_server_data para os arquivos de mídia. Certifique-se de que este volume esteja em um disco rápido e com espaço de sobra.
Backup Estratégico
Para qualquer aplicação self-hosted, especialmente uma que armazena dados pessoais valiosos, backups regulares são indispensáveis. Você precisará fazer backup de:
- Os volumes do Docker:
immich_db_data,immich_server_data,immich_microservices_data,immich_web_data,immich_redis_data. - O arquivo
docker-compose.ymle quaisquer configurações personalizadas.
Existem diversas estratégias de backup. Você pode usar scripts simples para copiar os volumes para um local seguro ou explorar soluções mais robustas. Para quem busca uma solução de backup mais completa e integrada ao seu ambiente de servidor, um serviço de backup como o Paperless-ngx pode ser uma opção para gerenciar seus backups de forma organizada e automatizada.
Erros Comuns e Soluções
Mesmo com uma instalação cuidadosa, alguns problemas podem surgir. Abaixo, listamos os mais comuns:
Contêineres não iniciam ou caem frequentemente
Causa comum: Falta de recursos (RAM/CPU), problemas de rede, ou erros na configuração do Docker Compose.
Solução: Verifique os logs dos contêineres com docker compose logs [nome_do_servico]. Aumente os recursos do seu VPS se estiverem no limite. Revise o arquivo docker-compose.yml cuidadosamente, garantindo que as portas não estejam em conflito e que as dependências estejam corretas. Verifique a documentação oficial do Immich para variáveis de ambiente específicas.
Imagens não carregam ou upload falha
Causa comum: Problemas de rede entre o contêiner e o serviço de armazenamento (se usar S3), permissões de escrita nos volumes, ou configuração incorreta do IMMICH_URL.
Solução: Confirme que o IMMICH_URL no docker-compose.yml está correto e acessível externamente. Verifique as permissões dos diretórios mapeados como volumes no seu host (VPS). Se estiver usando armazenamento de objetos (S3), revise as credenciais e a configuração do contêiner.
Acesso via Domínio não funciona após configurar Nginx
Causa comum: Configuração incorreta do Nginx, firewall bloqueando portas 80/443, ou DNS não propagado.
Solução: Verifique o status do Nginx com sudo systemctl status nginx e os logs em /var/log/nginx/error.log. Certifique-se de que seu firewall (ex: `ufw`) permite tráfego nas portas 80 e 443. Confirme que seu registro DNS aponta corretamente para o IP do seu VPS.
Comparativo: Immich Self-Hosted vs. Google Photos Gerenciado
| Recurso | Immich (Self-Hosted) | Google Photos (Gerenciado) |
|---|---|---|
| Controle de Dados | Total (você gerencia tudo) | Limitado (você confia à Google) |
| Privacidade | Alta (dados em seu servidor) | Variável (políticas da Google) |
| Custo | Custo Fixo (VPS + armazenamento) | Gratuito até certo limite, depois escalável/assinatura |
| Armazenamento | Definido pelo seu VPS (escalável) | Limitado pelo plano (geralmente 15GB grátis, planos pagos) |
| Flexibilidade e Customização | Alta (código aberto, customizável) | Baixa (funcionalidades definidas pelo Google) |
| Manutenção e Gerenciamento | Requer conhecimento técnico (VPS, Docker) | Nenhum (serviço gerenciado) |
Perguntas Relacionadas
Quanto custa rodar o Immich?
O custo varia dependendo do provedor de VPS e dos recursos escolhidos. Com um plano de VPS Brasil Performance (12GB RAM, 6 vCPUs) da Host You Secure, o custo é de R$ 169/mês, cobrindo os requisitos ideais para o Immich em produção, incluindo a capacidade de armazenamento expansível.
O Immich é seguro?
A segurança do Immich como solução self-hosted depende da sua própria configuração. Ao seguir as melhores práticas, como usar senhas fortes, configurar um proxy reverso com HTTPS, manter o software atualizado e proteger o acesso ao seu VPS, o Immich pode ser significativamente mais seguro do que soluções em nuvem pública, pois você tem controle total sobre seus dados e o ambiente de hospedagem.
Qual a diferença entre Immich e Google Photos?
O Google Photos é um serviço gerenciado com foco em conveniência, mas com preocupações de privacidade e custos crescentes. O Immich é uma alternativa self-hosted que oferece controle total sobre seus dados, privacidade garantida e um custo fixo previsível em seu próprio servidor, permitindo que você gerencie sua biblioteca de mídia sem restrições de terceiros.
Preciso de um domínio para usar o Immich?
Não é estritamente necessário, você pode acessá-lo via IP do seu VPS. No entanto, o uso de um domínio é altamente recomendado para facilitar o acesso, gerenciar certificados SSL/TLS (HTTPS) e garantir uma experiência mais profissional e segura, especialmente se você pretende acessar suas fotos de fora da sua rede local.
Conclusão e Próximos Passos
Hospedar o Immich em um VPS é uma excelente decisão para quem valoriza a privacidade, o controle de dados e busca uma alternativa econômica e robusta aos serviços de nuvem convencionais. Com este guia, você tem as ferramentas e o conhecimento para implantar sua própria nuvem pessoal de fotos e vídeos de forma segura e eficiente.
Recomendação de Infraestrutura: VPS Brasil Performance
Para rodar o Immich em produção com performance ideal, nossa recomendação é o plano VPS Brasil Performance. Ele oferece 12GB de RAM e 6 vCPUs, especificações ideais para suportar o Immich, seu banco de dados e microserviços sem gargalos, garantindo uploads rápidos e navegação fluida pela sua biblioteca de mídia. Rodamos esse exato setup em uma VPS Brasil Performance, com confiabilidade e escalabilidade.
Invista na sua autonomia e segurança digital. Garanta o controle das suas memórias com uma infraestrutura poderosa e um custo fixo acessível.
Descubra o plano perfeito para suas necessidades: Conheça o VPS Brasil Performance por R$ 169/mês e comece hoje mesmo a construir sua nuvem pessoal.
Comentários (5)
Estou usando essa configuração no meu servidor há 2 meses e realmente melhorou a performance! O tempo de resposta caiu de 200ms para 30ms. Vou implementar também as dicas de otimização que você mencionou.
Muito bom o passo a passo de particionamento e disco NVMe. O throughput do I/O subiu consideravelmente nos nossos testes de benchmark.
Implementei essas configurações no VPS da minha empresa e reduziu nosso custo com cloud em 40%. O artigo está muito bem explicado, parabéns!
Excelente artigo! Como sysadmin, confirmo que essas configurações realmente fazem diferença. Só gostaria de adicionar que o ajuste do swappiness também ajuda muito no uso de memória.
Sempre tive problemas com instabilidade no servidor até ler este artigo. Segui passo a passo e agora está rodando perfeitamente há 3 semanas sem restart. Você tem algum material mais avançado sobre esse tema?