在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
ImmichDocker 是 Immich 的設置環境之一,開源,自託管的照片和影片備份解決方案,位於Docker容器中。 Docker 是一個輕量且被廣泛採用的平台,用於在實體和虛擬伺服器上開發、分發和運行應用程式。 得益於 Docker,Immich 可以輕鬆安裝在大多數系統上,並且能在無需進行複雜配置及處理依賴關係的情況下運行。 這種容器化的方法使管理 Immich 更加容易,允許用戶安全地存儲、備份和管理他們的媒體文件。
此外,Docker 確保在不同環境中的一致性,因此用戶可以輕鬆地移動或擴展他們的 Immich 實例,幾乎不費吹灰之力。 這意味著,任何希望使用 Docker 自行托管媒體備份解決方案的人都可以通過 Immich Docker 提供最有效和無縫的方法。
損壞的圖片 從Pixabay添加,從你的文件中選擇或拖放圖片到這裡。
Immich Docker 安裝了幾個開箱即用的功能,使得部署和管理 Immich 照片和視頻備份解決方案更加輕鬆。 因此,這對於那些希望安全且有效地自行託管媒體文件的人來說具有很大的吸引力。 Immich Docker 的主要功能包括以下幾點:
易於部署: Immich Docker 提供了標準的 Docker 映像,使部署變得簡單。 此外,它讓使用者遠離依賴套件和複雜的配置; 因此,用戶可以立即部署 Immich。
跨平台: 每個 Docker 容器確保可以在大多數使用 Docker 的系統運行,包括 Linux、macOS 和 Windows 作業系統。 這使得該專案在不同環境中具有高度的可移植性。
隔離:此外,在 Docker 容器中運行的 Immich 服務將與主機上的其他應用程序和服務保持隔離。這將減少衝突和兼容性問題,並肯定會使 Immich 的操作環境更加穩定。
一般來說,擴展性非常容易,尤其是在涉及大量媒體數據的 Immich Docker 用戶部署時。 由於 Docker 本質上具有可擴展性,升級或增加資源可以變得非常容易。
安全性: 原因是 Docker 容器引入了一層與底層系統隔離的沙盒,從而提供了額外的安全性。 除此之外,Immich 自我託管提供了讓用戶對其數據和數據庫存儲位置擁有完全控制的可能性,從而提高了隱私和安全性。
自動更新: 容器相對輕量、易於更新且易於維護; 因此,Docker 的使用者可以輕鬆切換到具有最新安全修補程式的新功能,幾乎沒有或完全沒有中斷。
備份和還原: Immich Docker 在備份媒體時創建了一個唯一的真相來源,以便可以還原照片和影片。 Docker 確保所有部署具有相同的數據。
可自訂: Immich 是自託管的,因此用戶可以根據自己的需求進行修改,以更有效地與其他服務整合和擴展選項。
社群支援: 這是一個開源專案; 因此,社群為其使用者提供持續改進、修正錯誤和支援服務。
從 Git Hub 下載 docker-compose 文件。
git clone https://github.com/immich-app/immich.git
cd immich
git clone https://github.com/immich-app/immich.git
cd immich
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'git clone https: cd immich
要更改它,請複製範例環境檔案和 docker compose.yml 文件:
cp .env.example .env
cp .env.example .env
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'cp.env.example.env
打開.env文件並設置變數(例如端口、存儲位置環境文件名和數據庫憑證). 在大多數配置中,預設設定已經足夠。
# 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
# 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
#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
#The location where your database files are stored
#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"
#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
#The values below this line do not need to be changed
###################################################################################
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'UPLOAD_LOCATION=./library DB_DATA_LOCATION=./postgres IMMICH_VERSION=release DB_PASSWORD=postgres DB_USERNAME=postgres DB_DATABASE_NAME=postgres
使用 Docker Compose 啟動 Immich 伺服器:
docker-compose up -d
docker-compose up -d
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker-compose up -d
此命令會提取所有所需的映像並啟動必要的容器:
機器學習模型(用於面部識別等功能)
下載所有文件後,請務必重新啟動環境。 一旦容器在運行,打開瀏覽器並輸入以下連結。
http://localhost:2283
http://localhost:2283
http: 'localhost:2283
如果您在 .env 文件中更改了端口,请将環境端口替換為指定的端口2283。
首次使用:當您第一次訪問 Immich URL 時,它將顯示網頁使用者介面。
您將被要求建立一個管理員帳戶。
填寫所需信息,Immich 將引導您完成設置。
探索功能:享受其他功能,如人臉偵測、物件標記等。
一旦設置好,您就可以直接從瀏覽器訪問 Immich,並開始管理您的照片和視頻庫。
IronSecureDoc是一款先進的文件管理和安全工具,擁有強大的加密功能、先進的 PDF 處理和數位簽名。 它為公司和開發人員提供了文件機密性和完整性,同時提供順暢的訪問,因而簡化了 PDF 文件的處理。 在其特性允許開發人員以程式方式創建、上傳、操作和保護 PDF 檔案和文件的情況下,它也可以被稱為激進的 PDF API。
除此之外,IronPDF 是一個 PDF API,允許從任何數據輸入中創建 PDF,並可通過文本、圖像和元數據等參數添加和編輯內容。 這包括合併多個 PDF 以組成文件、拆分文檔,甚至註釋評論、突出顯示或加上浮水印的功能。
它的安全功能包括密碼保護、AES 加密和基於證書的訪問控制,這些功能可保護所有敏感信息和數據。 除此之外,它允許透過數位簽章來驗證文件並確保不可否認性,這對金融、醫療和法律等行業來說是一個非常重要的功能。 審計追蹤功能允許追蹤文件上執行的所有活動,以提高合規性和問責性。
在命令提示符或打開的終端窗口中運行以下命令,從下方的存儲庫中拉取 IronSecureDoc 的 Docker 映像。
docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
我們將從 Docker 容器中提取一個映像,然後使用另一個命令來啟動 IronSecureDoc,一個正在運行的容器。
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
上面的 Docker run 指令將啟動 IronSecureDoc 的容器實例。
IronSecureDoc 中的 REST API 是一個現代化的網路介面,讓開發人員能夠安全地與軟體的文件管理及 PDF 處理功能互動。 使用RESTful原則,這個API允許用戶輕鬆理解和標準化將IronSecureDoc的功能整合到其自定義應用程式中,而無論所使用的技術堆疊為何。
上面是上傳到 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)
{
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var response = await client.GetAsync($"{immichBaseUrl}/api/media/{imageId}");
response.EnsureSuccessStatusCode();
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)
{
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var response = await client.GetAsync($"{immichBaseUrl}/api/media/{imageId}");
response.EnsureSuccessStatusCode();
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)
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}")
Dim response = Await client.GetAsync($"{immichBaseUrl}/api/media/{imageId}")
response.EnsureSuccessStatusCode()
Dim responseData = Await response.Content.ReadAsStringAsync()
Console.WriteLine("Image data retrieved successfully!")
Return responseData ' Contains image metadata or downloadable URL
End Function
End Class
該程式碼允許我們從 Immich 伺服器下載圖片。 請確保從 Immich 伺服器生成一個 API 金鑰。
using System.IO;
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=Ibrahim%4021&certificate_permissions=1");
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");
var content = new MultipartFormDataContent();
content.Add(new StreamContent(File.OpenRead(imagePath)), "signature_image_file", 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;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
//save the file as required
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
using System.IO;
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=Ibrahim%4021&certificate_permissions=1");
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");
var content = new MultipartFormDataContent();
content.Add(new StreamContent(File.OpenRead(imagePath)), "signature_image_file", 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;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
//save the file as required
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Imports System.IO
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=Ibrahim%4021&certificate_permissions=1")
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")
Dim content = New MultipartFormDataContent()
content.Add(New StreamContent(File.OpenRead(imagePath)), "signature_image_file", 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
Dim response = Await client.SendAsync(request)
response.EnsureSuccessStatusCode()
'save the file as required
Console.WriteLine(Await response.Content.ReadAsStringAsync())
End Function
End Class
下面的程式碼將幫助我們進行整合。
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);
}
}
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);
}
}
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
使用 IronSecureDoc 的 API 來附加照片並應用數位簽名。 在 IronSecureDocIntegration 類別中添加必要的 API 呼叫以完成文件。 以下是使用IronSecureDoc添加簽名後生成的PDF範例。
雖然 Immich 和 IronSecureDoc 都在響應特定需求方面表現出色,但它們最好用於不同的使用案例。Immich 擅長自託管且功能豐富的照片和影片管理,例如面部識別、物體檢測和多媒體檔案的精簡組織。 這將是個人或小型媒體存儲位置管理的理想選擇,提供一個完全符合他們需求的解決方案。
IronSecureDoc 是一個針對整個組織的安全文件和簽署解決方案,將先進加密的出色優勢與工作流程整合的簡單性相結合,以實現安全性、可擴展性和專業級文件處理的統一。
可靠且符合規範:由於提供完整的審計功能和強大的安全性,它既可靠又符合規範。 使用 IronSecureDoc REST API,網頁、行動和企業系統的開發人員現在可以輕鬆地將安全列印及高效的 PDF 格式與處理整合到他們的應用程式中。 要了解有關 IronSecureDoc 許可的更多信息,請查看授權頁面. 要了解更多有關 Iron Software 產品的資訊,請造訪IronSuite 頁面.
10 .NET API 產品 針對您的辦公文件