Immich no VPS: Sua Nuvem Pessoal de Fotos

12 min 2 Self Hosting Apps
Resumir com:
ChatGPT Claude Gemini Perplexity Grok
Compartilhar:
WhatsApp LinkedIn X

Se este conteúdo faz parte do seu projeto

Escolha a VPS pelo uso, não pelo excesso

Escolha pelo uso: Basic para projetos pequenos, Performance para produção com múltiplos serviços e Ultra para cargas maiores.

PlanoRecursosMensalPerfil
Basic4 vCPU · 4 GB RAM · 100 GB NVMeR$ 99Site e projeto pequeno
Performance6 vCPU · 12 GB RAM · 150 GB NVMeR$ 169Produção e múltiplos serviços
Ultra8 vCPU · 20 GB RAM · 200 GB NVMeR$ 269Cargas maiores e mais margem
Prova técnica: no benchmark publicado da VM Performance, medimos 1.855 ev/s em 6 threads, 288 ev/s em 1 thread, 11.858 MiB/s de memória e 338 MB/s de escrita sequencial, com teste direto na VM e sem Cloudflare.
Escolher Performance Falar no WhatsApp

Valores mensais exibidos para referência. A renovação segue o ciclo e o preço vigente informado no checkout antes da contratação.

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.

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_IMMICH por uma senha forte e única.
  • Substitua http://your-domain.com:3001 pelo 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 immichpassword també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.yml e 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.

Perguntas Frequentes

Para uma instalação de produção do Immich, recomendamos no mínimo 8GB de RAM e 2 vCPUs. Isso garante que o servidor web, os microserviços, o banco de dados PostgreSQL e o cache Redis possam operar sem lentidão excessiva. Para um desempenho ideal e para lidar com bibliotecas de mídia maiores ou múltiplos usuários, um plano com 12GB de RAM e 4-6 vCPUs é fortemente sugerido, pois o Immich pode consumir bastante memória, especialmente durante o processamento de uploads e indexação.

Sim, é tecnicamente possível acessar o Immich usando o endereço IP público do seu VPS seguido da porta configurada (geralmente 5173 para a interface web ou 3001 para a API, dependendo da sua configuração de proxy reverso). No entanto, o uso de um domínio é altamente recomendado. Ele permite configurar HTTPS com certificados SSL/TLS (via Let's Encrypt, por exemplo), o que é crucial para a segurança, além de facilitar o acesso e a memorização.

Realizar backups regulares é fundamental para qualquer solução self-hosted. Para o Immich, você deve fazer backup dos volumes do Docker que contêm seus dados: o volume do banco de dados PostgreSQL (<code>immich_db_data</code>), o volume onde as mídias são armazenadas (<code>immich_server_data</code>), e os volumes dos outros serviços (<code>immich_redis_data</code>, etc.). Além disso, guarde uma cópia do seu arquivo <code>docker-compose.yml</code> e de quaisquer configurações do Nginx. Você pode automatizar isso com scripts ou usar ferramentas de backup externas.

O Google Photos é um serviço gerenciado onde você confia seus dados a uma empresa, com custos que podem aumentar e potenciais preocupações com privacidade. O Immich é uma solução self-hosted: você instala e gerencia em seu próprio servidor (VPS), o que significa controle total sobre seus dados, privacidade garantida e um custo fixo previsível. Você é o único dono e guardião das suas fotos e vídeos.

Sim, o Docker e o Docker Compose (plugin) precisam ser instalados em seu VPS. O guia detalha os comandos para instalar as versões mais recentes no Ubuntu. É importante usar o plugin do Docker Compose (`docker compose` com espaço) em vez da versão legada (`docker-compose` com hífen), pois esta última está sendo descontinuada. Certifique-se de que o Docker esteja funcionando corretamente antes de prosseguir com a configuração do Immich.

Expor qualquer serviço diretamente à internet sem proteção é arriscado. Para o Immich, é altamente recomendável configurar um proxy reverso (como Nginx ou Traefik) e implementar HTTPS. Isso não só protege sua conexão contra interceptações, mas também permite gerenciar o acesso de forma mais granular e aplicar medidas de segurança adicionais. O guia inclui passos básicos para configurar o Nginx como proxy reverso.

Embora o Immich possa até iniciar com menos de 8GB de RAM, não é recomendado para uso em produção. A falta de memória rapidamente levará a problemas de performance, lentidão extrema ou falha na inicialização de contêineres, especialmente após o upload de um volume considerável de mídia ou quando os microserviços do Immich entram em ação. Para uma experiência estável e confiável, 8GB é o mínimo absoluto, com 12GB sendo o ideal.

Sim, o Immich oferece funcionalidades para compartilhar álbuns e fotos com amigos e familiares. Você pode criar links compartilháveis, definir permissões e até mesmo configurar usuários específicos para acesso, mantendo o controle sobre quem vê suas memórias. Isso é feito diretamente na interface do Immich, após a instalação e configuração bem-sucedidas.

Comentários (5)

5.0
5 avaliações
André Alves - Startup X

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.

Thiago Rodrigues

Muito bom o passo a passo de particionamento e disco NVMe. O throughput do I/O subiu consideravelmente nos nossos testes de benchmark.

Rodrigo Rodrigues - Tech Solutions

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!

Beatriz Vieira

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.

Lucas Rodrigues

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?