immich Docker Compose (Como funciona para desenvolvedores)
Immich Docker é a configuração do Immich, uma solução de backup de fotos e vídeos de código aberto e auto-hospedada dentro de um contêiner Docker. Docker é uma plataforma leve e amplamente adotada para desenvolver, distribuir e executar aplicações em servidores físicos e virtualizados. Graças ao Docker, o Immich pode ser facilmente instalado na maioria dos sistemas e estar operacional sem configuração complexa e dores de cabeça relacionadas a dependências. Esta abordagem containerizada para gerenciar o Immich torna mais fácil, permitindo que os usuários armazenem, façam backup e gerenciem seus arquivos de mídia com segurança.
Além disso, o Docker garante consistência em diferentes ambientes, e assim, os usuários podem facilmente mover ou escalonar sua instância do Immich com dificuldade mínima. Isso significa que o Immich Docker apresentaria as maneiras mais eficientes e integradas que qualquer pessoa esperando para auto-hospedar sua solução de backup de mídia teria feito usando o Docker.
Características do Immich
O Immich Docker instala várias funcionalidades prontas que tornam mais fácil a implantação e o gerenciamento da solução de backup de fotos e vídeos do Immich. Isso, por sua vez, o torna bastante atraente para aqueles que irão auto-hospedar seus arquivos de mídia de forma segura e eficaz. Entre as principais características do Immich Docker estão as seguintes:
Fácil de implantar: Immich Docker forneceu imagens Docker padrão, tornando a implantação fácil. Além disso, mantém os usuários longe de pacotes dependentes e configurações complicadas; assim, os usuários podem implantar imediatamente o Immich.
Plataforma cruzada: Cada contêiner Docker garante que o dispositivo possa ser executado na maioria dos sistemas com Docker no Linux, macOS e Windows OS. Isso torna o projeto altamente portátil em diferentes ambientes.
Isolamento: Além disso, os serviços Immich executados no contêiner Docker seriam mantidos isolados de outras aplicações e serviços na máquina anfitriã. Isso reduziria conflitos, problemas de compatibilidade e definitivamente tornaria o ambiente operacional muito mais estável para o Immich.
Geralmente, a escalabilidade é muito fácil, principalmente quando muitos volumes de dados de mídia estão envolvidos com a implantação para os usuários do Immich Docker. Como o Docker é inerentemente escalável, atualizar ou aumentar recursos pode ser realmente muito fácil.
Segurança: A razão é que os contêineres Docker introduzem uma camada de sandboxing afastada do sistema subjacente, proporcionando segurança adicional. Além disso, o auto-hospedagem do Immich oferece a possibilidade de permitir aos usuários controle total sobre seus dados, e o local de armazenamento do banco de dados, aumentando assim a privacidade e segurança.
Atualizações Automatizadas: Os contêineres são relativamente leves, fáceis de atualizar e amigos da manutenção; assim, os usuários do Docker facilmente mudam para novos recursos com os patches de segurança mais recentes com poucas ou nenhuma interrupção.
Backup e Restauração: O Immich Docker cria uma única fonte da verdade quando se trata de fazer backup de mídia para que se possa restaurar fotos e vídeos. O Docker garante que todas as implantações tenham os mesmos dados.
Personalizável: O Immich é auto-hospedado, então os usuários podem modificá-lo conforme seus requisitos para uma integração mais eficaz com outros serviços e opções de escalonamento.
Suporte da Comunidade: É um projeto de código aberto; portanto, a comunidade fornece melhoria contínua, correção de bugs e suporte aos seus usuários.
Instalar Immich Docker
Pré-requisitos
- Instale o Docker e o Docker Compose no seu sistema.
- Certifique-se de que sua máquina possui recursos suficientes: são recomendados 4GB ou mais de RAM.
Clonar Repositório do Immich
Baixe o arquivo docker-compose do GitHub.
git clone https://github.com/immich-app/immich.git
cd immich
git clone https://github.com/immich-app/immich.git
cd immich
Configurar Variáveis de Ambiente
Para alterá-lo, faça uma cópia do arquivo de ambiente de exemplo e arquivos docker-compose.yml:
cp .env.example .env
cp .env.example .env
Abra o arquivo .env e configure as variáveis (como porta, local de armazenamento e credenciais do banco de dados). Na maioria das configurações, as configurações padrão são suficientes.
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=postgres
Lançar Immich
Use o Docker Compose para iniciar o servidor Immich:
docker-compose up -d
docker-compose up -d

Este comando puxa todas as imagens necessárias e inicia os contêineres necessários:
- Backend
- Frontend
- Banco de Dados (PostgreSQL)
- Redis (para cache)
- Modelos de Aprendizado de Máquina (para características como reconhecimento facial)

Acessar o Immich no seu navegador
Quando todos os arquivos forem baixados, certifique-se de atualizar o ambiente. Uma vez que os contêineres estejam em execução, abra o navegador e insira o URL abaixo.
http://localhost:2283
Substitua 2283 pela porta especificada se você alterou a porta no arquivo .env.
Crie ou faça login na conta do Immich
Primeira utilização: quando você acessar o URL do Immich pela primeira vez, ele exibirá a interface web.

Você será solicitado a criar uma conta de administrador.

Preencha as informações necessárias, e o Immich o guiará pelo processo de configuração.

Configurar o Immich na Interface Web
- Configurações: Acesse as configurações detalhadas do Immich através do painel de administração.
- Carregar Mídia: Agora carregue algumas fotos/vídeos para teste.
- Explorar Recursos: Aproveite outros recursos, como detecção de rosto, marcação de objetos e mais.

Uma vez configurado, você poderá acessar o Immich diretamente do seu navegador e começar a gerenciar sua biblioteca de fotos e vídeos.
O que é IronSecureDoc?
IronSecureDoc é uma ferramenta avançada para gerenciamento e segurança de documentos, com criptografia robusta, manipulação avançada de PDFs e assinatura digital. Ele fornece confidencialidade e integridade de documentos para empresas e desenvolvedores, junto com acesso suave e, portanto, simplifica o processamento de documentos em PDF. Ele também pode ser chamado de uma API de PDF agressiva em casos em que seus recursos permitem que desenvolvedores criem, enviem, manipulem e protejam arquivos e documentos PDF programaticamente.

Além disso, o IronPDF é uma API de PDF que permite a criação de PDFs a partir de qualquer entrada de dados, adicionando e editando conteúdo com parâmetros como texto, imagens e metadados. Isso inclui a facilidade de mesclar vários PDFs para compor arquivos, dividir documentos e até mesmo anotar comentários, destaques ou marcas d'água.
Entre seus recursos de segurança estão proteção por senha, criptografia AES e controles de acesso baseados em certificados que protegem todas as informações e dados sensíveis. Além disso, permite assinatura digital para autenticar documentos e não-repúdio, um recurso muito importante em indústrias como financeira, médica e jurídica. A funcionalidade de trilha de auditoria permite acompanhar todas as atividades realizadas nos documentos para melhor conformidade e responsabilidade.
Instalar e Executar o IronSecureDoc
Puxe a imagem Docker do IronSecureDoc do repositório abaixo executando este comando no Prompt de Comando ou em uma janela de terminal aberta.
docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc

Use outro comando para iniciar o IronSecureDoc, um contêiner operacional.
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
O comando de execução do Docker acima iniciará uma instância de contêiner do IronSecureDoc.
Baixe a Assinatura do Immich e adicione o documento PDF assinado
A API REST no IronSecureDoc é uma interface web moderna que permite que desenvolvedores interajam com segurança com as funcionalidades de gerenciamento de documentos e processamento de PDF do software. Usando princípios RESTful, esta API permite que os usuários compreendam facilmente e padronizem a integração das funcionalidades do IronSecureDoc em suas aplicações customizadas, independentemente do stack tecnológico usado.

Baixe a imagem do Immich

Abaixo está um arquivo de assinatura de exemplo que é enviado para o Immich.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class ImmichIntegration
{
private static readonly HttpClient client = new HttpClient();
public async Task<string> GetImageFromImmich(string imageId, string immichBaseUrl, string apiKey)
{
// Add authorization header
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
// Make a GET request to the Immich server
var response = await client.GetAsync($"{immichBaseUrl}/api/media/{imageId}");
response.EnsureSuccessStatusCode();
// Read and return the response data
var responseData = await response.Content.ReadAsStringAsync();
Console.WriteLine("Image data retrieved successfully!");
return responseData; // Contains image metadata or downloadable URL
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
class ImmichIntegration
{
private static readonly HttpClient client = new HttpClient();
public async Task<string> GetImageFromImmich(string imageId, string immichBaseUrl, string apiKey)
{
// Add authorization header
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
// Make a GET request to the Immich server
var response = await client.GetAsync($"{immichBaseUrl}/api/media/{imageId}");
response.EnsureSuccessStatusCode();
// Read and return the response data
var responseData = await response.Content.ReadAsStringAsync();
Console.WriteLine("Image data retrieved successfully!");
return responseData; // Contains image metadata or downloadable URL
}
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks
Friend Class ImmichIntegration
Private Shared ReadOnly client As New HttpClient()
Public Async Function GetImageFromImmich(ByVal imageId As String, ByVal immichBaseUrl As String, ByVal apiKey As String) As Task(Of String)
' Add authorization header
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}")
' Make a GET request to the Immich server
Dim response = Await client.GetAsync($"{immichBaseUrl}/api/media/{imageId}")
response.EnsureSuccessStatusCode()
' Read and return the response data
Dim responseData = Await response.Content.ReadAsStringAsync()
Console.WriteLine("Image data retrieved successfully!")
Return responseData ' Contains image metadata or downloadable URL
End Function
End Class
O código nos permite baixar a imagem do servidor Immich. Certifique-se de gerar uma chave API do servidor Immich.
Enviar Imagem para o IronSecureDoc
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
class IronSecureDocIntegration
{
private static readonly HttpClient client = new HttpClient();
public async Task UploadImageToIronSecureDoc(string imagePath)
{
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:8080/v1/document-services/pdfs/sign?sign_specific_page=0&signature_image_x=100&signature_image_y=150&signature_image_w=300&signature_image_h=400&certificate_password=********&certificate_permissions=1");
// Set headers to simulate a browser request
request.Headers.Add("sec-ch-ua-platform", "\"Windows\"");
request.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36");
request.Headers.Add("accept", "*/*");
request.Headers.Add("sec-ch-ua", "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"");
request.Headers.Add("sec-ch-ua-mobile", "?0");
request.Headers.Add("Sec-Fetch-Site", "same-origin");
request.Headers.Add("Sec-Fetch-Mode", "cors");
request.Headers.Add("Sec-Fetch-Dest", "empty");
request.Headers.Add("host", "localhost");
// Create and add image and certificate files to the request content
var content = new MultipartFormDataContent();
content.Add(new StreamContent(File.OpenRead(imagePath)), "signature_image_file", Path.GetFileName(imagePath));
content.Add(new StreamContent(File.OpenRead("IronsecureDoc.pfx")), "certificate_file", "IronsecureDoc.pfx");
content.Add(new StreamContent(File.OpenRead("Input.pdf")), "pdf_file", "Input.pdf");
request.Content = content;
// Send the request and ensure success
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
// Output the result of the PDF signing
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
class IronSecureDocIntegration
{
private static readonly HttpClient client = new HttpClient();
public async Task UploadImageToIronSecureDoc(string imagePath)
{
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:8080/v1/document-services/pdfs/sign?sign_specific_page=0&signature_image_x=100&signature_image_y=150&signature_image_w=300&signature_image_h=400&certificate_password=********&certificate_permissions=1");
// Set headers to simulate a browser request
request.Headers.Add("sec-ch-ua-platform", "\"Windows\"");
request.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36");
request.Headers.Add("accept", "*/*");
request.Headers.Add("sec-ch-ua", "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"");
request.Headers.Add("sec-ch-ua-mobile", "?0");
request.Headers.Add("Sec-Fetch-Site", "same-origin");
request.Headers.Add("Sec-Fetch-Mode", "cors");
request.Headers.Add("Sec-Fetch-Dest", "empty");
request.Headers.Add("host", "localhost");
// Create and add image and certificate files to the request content
var content = new MultipartFormDataContent();
content.Add(new StreamContent(File.OpenRead(imagePath)), "signature_image_file", Path.GetFileName(imagePath));
content.Add(new StreamContent(File.OpenRead("IronsecureDoc.pfx")), "certificate_file", "IronsecureDoc.pfx");
content.Add(new StreamContent(File.OpenRead("Input.pdf")), "pdf_file", "Input.pdf");
request.Content = content;
// Send the request and ensure success
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
// Output the result of the PDF signing
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Imports System.IO
Imports System.Net.Http
Imports System.Threading.Tasks
Friend Class IronSecureDocIntegration
Private Shared ReadOnly client As New HttpClient()
Public Async Function UploadImageToIronSecureDoc(ByVal imagePath As String) As Task
Dim request = New HttpRequestMessage(HttpMethod.Post, "http://localhost:8080/v1/document-services/pdfs/sign?sign_specific_page=0&signature_image_x=100&signature_image_y=150&signature_image_w=300&signature_image_h=400&certificate_password=********&certificate_permissions=1")
' Set headers to simulate a browser request
request.Headers.Add("sec-ch-ua-platform", """Windows""")
request.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36")
request.Headers.Add("accept", "*/*")
request.Headers.Add("sec-ch-ua", """Google Chrome"";v=""131"", ""Chromium"";v=""131"", ""Not_A Brand"";v=""24""")
request.Headers.Add("sec-ch-ua-mobile", "?0")
request.Headers.Add("Sec-Fetch-Site", "same-origin")
request.Headers.Add("Sec-Fetch-Mode", "cors")
request.Headers.Add("Sec-Fetch-Dest", "empty")
request.Headers.Add("host", "localhost")
' Create and add image and certificate files to the request content
Dim content = New MultipartFormDataContent()
content.Add(New StreamContent(File.OpenRead(imagePath)), "signature_image_file", Path.GetFileName(imagePath))
content.Add(New StreamContent(File.OpenRead("IronsecureDoc.pfx")), "certificate_file", "IronsecureDoc.pfx")
content.Add(New StreamContent(File.OpenRead("Input.pdf")), "pdf_file", "Input.pdf")
request.Content = content
' Send the request and ensure success
Dim response = Await client.SendAsync(request)
response.EnsureSuccessStatusCode()
' Output the result of the PDF signing
Console.WriteLine(Await response.Content.ReadAsStringAsync())
End Function
End Class
Chamando o Immich e o IronSecureDoc
O código abaixo nos ajudará a integrá-lo.
using System.Threading.Tasks;
class Integration
{
public async Task IntegrateImmichWithIronSecureDoc(string immichImageId, string immichBaseUrl, string immichApiKey, string imagePath)
{
var immich = new ImmichIntegration();
var ironSecureDoc = new IronSecureDocIntegration();
// Step 1: Fetch image metadata or download from Immich
string imageData = await immich.GetImageFromImmich(immichImageId, immichBaseUrl, immichApiKey);
// Step 2: Optionally download the image locally using imageData URL (not shown here)
// Assume imagePath is the downloaded image file path
// Step 3: Upload the image to IronSecureDoc
await ironSecureDoc.UploadImageToIronSecureDoc(imagePath);
}
}
using System.Threading.Tasks;
class Integration
{
public async Task IntegrateImmichWithIronSecureDoc(string immichImageId, string immichBaseUrl, string immichApiKey, string imagePath)
{
var immich = new ImmichIntegration();
var ironSecureDoc = new IronSecureDocIntegration();
// Step 1: Fetch image metadata or download from Immich
string imageData = await immich.GetImageFromImmich(immichImageId, immichBaseUrl, immichApiKey);
// Step 2: Optionally download the image locally using imageData URL (not shown here)
// Assume imagePath is the downloaded image file path
// Step 3: Upload the image to IronSecureDoc
await ironSecureDoc.UploadImageToIronSecureDoc(imagePath);
}
}
Imports System.Threading.Tasks
Friend Class Integration
Public Async Function IntegrateImmichWithIronSecureDoc(ByVal immichImageId As String, ByVal immichBaseUrl As String, ByVal immichApiKey As String, ByVal imagePath As String) As Task
Dim immich = New ImmichIntegration()
Dim ironSecureDoc = New IronSecureDocIntegration()
' Step 1: Fetch image metadata or download from Immich
Dim imageData As String = Await immich.GetImageFromImmich(immichImageId, immichBaseUrl, immichApiKey)
' Step 2: Optionally download the image locally using imageData URL (not shown here)
' Assume imagePath is the downloaded image file path
' Step 3: Upload the image to IronSecureDoc
Await ironSecureDoc.UploadImageToIronSecureDoc(imagePath)
End Function
End Class
Use a API do IronSecureDoc para anexar fotos e aplicar assinaturas digitais. Adicione a chamada de API necessária na classe IronSecureDocIntegration para completar o documento. Abaixo está o arquivo PDF de exemplo gerado pelo IronSecureDoc após adicionar a assinatura.

Conclusão
Enquanto tanto o Immich quanto o IronSecureDoc fazem um ótimo trabalho em responder a necessidades específicas, eles atendem melhor a diferentes casos de uso. O Immich faz bem o gerenciamento de fotos e vídeos autohospedado e rico em recursos, como reconhecimento facial, detecção de objetos e organização simplificada de arquivos multimídia. É ideal para gestão de local de armazenamento de mídia pessoal ou de pequena escala, onde se deseja uma solução adaptada exatamente às suas necessidades.
O IronSecureDoc é uma solução de documentos seguros e assinaturas para toda a organização que integra os fantásticos benefícios da criptografia avançada com a simplicidade de integrar fluxos de trabalho, permitindo que segurança, escalabilidade e manuseio de documentos de nível profissional se integrem.
Confiável e Compatível: Como oferece capacidades de auditoria completas com forte segurança, é confiável e compatível. Usando a API REST do IronSecureDoc, desenvolvedores de sistemas web, móveis e corporativos agora podem integrar facilmente impressão segura e eficiente manuseio e formato de PDF com suas aplicações. Para saber mais sobre o licenciamento do IronSecureDoc, verifique a página de licenciamento. Para saber mais sobre as ofertas da Iron Software, visite a página do Iron Suite.
Perguntas frequentes
Como o Docker pode simplificar a implantação do Immich?
O Docker simplifica a implantação do Immich ao fornecer um ambiente conteinerizado, o que permite fácil instalação e gerenciamento em diversas plataformas, sem configurações complexas ou problemas de dependência.
Quais são os benefícios de usar o Immich para gerenciamento de mídia?
O Immich oferece benefícios como hospedagem própria, um extenso conjunto de recursos, incluindo reconhecimento facial e marcação de objetos, e um alto nível de personalização, permitindo maior controle sobre o gerenciamento e armazenamento de dados.
Como o Docker aprimora a segurança do Immich?
O Docker aprimora a segurança do Immich ao isolar o aplicativo em contêineres, o que minimiza o risco de vulnerabilidades do sistema e garante um ambiente consistente, protegendo assim os arquivos de mídia.
Quais são os passos envolvidos na instalação do Immich usando o Docker Compose?
Para instalar o Immich usando o Docker Compose, você precisa clonar o repositório do Immich, configurar as variáveis de ambiente e executar o comando Docker Compose para iniciar o servidor Immich.
Como o IronSecureDoc utiliza o Docker para gerenciamento de documentos?
O IronSecureDoc utiliza o Docker para facilitar a implantação e integração perfeitas, permitindo recursos avançados de gerenciamento de documentos e segurança, como manipulação de PDFs e assinatura digital em um ambiente conteinerizado.
É possível integrar o Immich e o IronSecureDoc para obter funcionalidades aprimoradas?
Sim, o Immich pode ser integrado ao IronSecureDoc para baixar imagens do Immich e executar ações como assinatura digital usando APIs REST, aprimorando a funcionalidade geral do gerenciamento de mídia e documentos.
Quais recursos o IronSecureDoc oferece para segurança de documentos?
O IronSecureDoc oferece recursos como criptografia robusta, proteção por senha e manipulação avançada de PDFs, garantindo altos níveis de confidencialidade e integridade dos documentos.
Qual o papel do apoio da comunidade na utilização do Immich?
O suporte da comunidade desempenha um papel crucial na utilização do Immich, fornecendo aos usuários recursos, ajuda na resolução de problemas e atualizações, aumentando assim a confiabilidade desta solução de backup de mídia auto-hospedada.
Como os desenvolvedores podem se beneficiar do uso conjunto do Immich e do IronSecureDoc?
Os desenvolvedores podem se beneficiar do uso conjunto do Immich e do IronSecureDoc, aproveitando os recursos de gerenciamento de mídia do Immich juntamente com os recursos de segurança de documentos do IronSecureDoc, criando uma solução abrangente para o tratamento de dados.
Quais são as principais diferenças entre Immich e IronSecureDoc?
As principais diferenças são que o Immich se concentra no gerenciamento e armazenamento de mídia para uso pessoal, enquanto o IronSecureDoc oferece recursos avançados de segurança e gerenciamento de documentos, adequados para fluxos de trabalho organizacionais.




