Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
ImmichDocker est la configuration d'Immich, unopen-source, solution de sauvegarde de photos et vidéos auto-hébergée à l'intérieur d'un conteneur Docker. Docker est une plateforme légère et largement adoptée pour développer, distribuer et exécuter des applications avec des serveurs physiques et virtualisés. Grâce à Docker, Immich peut être facilement installé sur la plupart des systèmes et être opérationnel sans configuration complexe ni tracas liés aux dépendances. Cette approche containerisée de la gestion d'Immich facilite les choses, permettant aux utilisateurs de stocker, sauvegarder et gérer leurs fichiers multimédias en toute sécurité.
De plus, Docker garantit la cohérence entre différents environnements, permettant ainsi aux utilisateurs de déplacer ou de redimensionner facilement leur instance Immich avec un minimum de tracas. Cela signifie qu'Immich Docker présenterait les moyens les plus efficaces et fluides pour quiconque espérant auto-héberger sa solution de sauvegarde de médias utilisant Docker.
Image cassée Ajouter depuis Pixabay, sélectionner depuis vos fichiers ou glisser-déposer une image ici.
L'installation d'Immich Docker offre plusieurs fonctionnalités prêtes à l'emploi qui rendent le déploiement et la gestion de la solution de sauvegarde photo et vidéo Immich beaucoup plus faciles. Cela, en retour, le rend assez attrayant pour ceux qui hébergeront eux-mêmes leurs fichiers multimédias de manière sécurisée et efficace. Parmi les principales fonctionnalités d'Immich Docker, on trouve les suivantes :
Facile à déployer : Immich Docker a fourni des images Docker standard, rendant le déploiement facile. De plus, cela éloigne les utilisateurs des packages dépendants et de la configuration compliquée ; ainsi, les utilisateurs peuvent déployer Immich immédiatement.
Multi-plateforme : Chaque conteneur Docker s'assure que le dispositif peut être exécuté sur la plupart des systèmes avec Docker sur Linux, macOS et Windows OS. Cela rend le projet hautement portable entre différents environnements.
Isolation : De plus, les services Immich fonctionnant dans le conteneur Docker seraient isolés des autres applications et services sur la machine hôte. Cela réduirait les conflits et les problèmes de compatibilité, et rendrait sans aucun doute l'environnement d'exploitation beaucoup plus stable pour Immich.
En général, la scalabilité est très facile, surtout quand de nombreux volumes de données multimédia sont impliqués dans le déploiement pour les utilisateurs d'Immich Docker. Étant donné que Docker est intrinsèquement évolutif, la mise à niveau ou l'augmentation des ressources peut être vraiment très facile.
Sécurité : La raison en est que les conteneurs Docker introduisent une couche de sandboxing qui isole du système sous-jacent, offrant une sécurité supplémentaire. En outre, l'auto-hébergement d'Immich offre la possibilité aux utilisateurs de contrôler pleinement leurs données et l'emplacement de stockage de la base de données, renforçant ainsi la confidentialité et la sécurité.
Mises à jour automatisées : Les conteneurs sont relativement légers, faciles à mettre à jour et faciles à entretenir ; Ainsi, les utilisateurs de Docker peuvent facilement passer aux nouvelles fonctionnalités avec les derniers correctifs de sécurité avec très peu ou pas de perturbations.
Sauvegarder et Restaurer : Immich Docker crée une source unique de vérité en ce qui concerne la sauvegarde des médias, ce qui permet de restaurer photos et vidéos. Docker s'assure que tous les déploiements disposent des mêmes données.
Personnalisable : Immich est auto-hébergé, ce qui permet aux utilisateurs de le modifier selon leurs besoins pour une intégration plus efficace avec d'autres services et des options de mise à l'échelle.
Support communautaire : C'est un projet open-source ; par conséquent, la communauté assure une amélioration continue, la correction des bogues, et le support à ses utilisateurs.
Téléchargez le fichier docker-compose depuis GitHub.
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
Pour le modifier, faites une copie du fichier d'environnement d'exemple et des fichiers 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
Ouvrez le fichier .env et configurez les variables(tel que le port, le nom du fichier de configuration de l'emplacement de stockage, et les identifiants de la base de données). Dans la plupart des configurations, les paramètres par défaut sont suffisants.
# 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
Utilisez Docker Compose pour démarrer le serveur Immich :
docker-compose up -d
docker-compose up -d
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker-compose up -d
Cette commande récupère toutes les images nécessaires et démarre les conteneurs requis :
Modèles d'apprentissage automatique(pour des fonctionnalités telles que la reconnaissance faciale)
Une fois tous les fichiers téléchargés, assurez-vous de redémarrer l'environnement. Une fois les conteneurs en cours d'exécution, ouvrez le navigateur et entrez le lien ci-dessous.
http://localhost:2283
http://localhost:2283
http: 'localhost:2283
Remplacez les ports env par 2283 avec le port spécifié si vous avez modifié le port dans le fichier .env.
Première utilisation : lorsque vous accédez pour la première fois à l'URL Immich, l'interface utilisateur Web s'affichera.
Vous serez invité à créer un compte administrateur.
Remplissez les informations requises, et Immich vous guidera tout au long de la configuration.
Explorez les fonctionnalités : Profitez d'autres fonctionnalités telles que la détection de visages, le marquage d'objets, etc.
Une fois configuré, vous pourrez accéder à Immich directement depuis votre navigateur et commencer à gérer votre bibliothèque de photos et vidéos.
IronSecureDocest un outil avancé pour la gestion et la sécurité des documents, offrant un chiffrement robuste, une manipulation avancée des PDF et la signature numérique. Il offre aux entreprises et aux développeurs la confidentialité et l'intégrité des documents ainsi qu'un accès fluide, ce qui simplifie le traitement des documents PDF. On peut également l'appeler une API PDF agressive dans les cas où ses fonctionnalités permettent aux développeurs de créer, télécharger, manipuler et sécuriser des fichiers et documents PDF de manière programmatique.
À part cela, IronPDF est une API PDF permettant la création de PDFs à partir de n'importe quelle entrée de données, l'ajout et la modification de contenu avec des paramètres tels que le texte, les images et les métadonnées. Cela inclut la possibilité de fusionner plusieurs PDF pour composer des fichiers, de diviser des documents, et même d'annoter des commentaires, des surlignages ou des filigranes.
Parmi ses fonctionnalités de sécurité figurent la protection par mot de passe, le cryptage AES et les contrôles d'accès basés sur des certificats qui sécurisent toutes les informations et données sensibles. En outre, il permet la signature numérique pour authentifier les documents et la non-répudiation, une fonctionnalité très importante dans des secteurs tels que la finance, le médical et le juridique. La fonctionnalité de piste d'audit permet de suivre toutes les activités effectuées sur les documents pour une meilleure conformité et responsabilité.
Récupérez l'image Docker d'IronSecureDoc à partir du dépôt ci-dessous en exécutant cette commande dans l'Invite de commandes ou dans une fenêtre de terminal ouverte.
docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
Nous allons extraire une image du conteneur Docker, puis utiliser une autre commande pour démarrer IronSecureDoc, un conteneur en fonctionnement.
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
La commande Docker run ci-dessus démarrera une instance de conteneur de l'IronSecureDoc.
L'API REST dans IronSecureDoc est une interface web moderne qui permet aux développeurs d'interagir en toute sécurité avec les fonctionnalités de gestion de documents et de traitement PDF du logiciel. En utilisant les principes RESTful, ceAPIpermet aux utilisateurs de comprendre facilement et de standardiser l'intégration des fonctionnalités d'IronSecureDoc dans leurs applications personnalisées, indépendamment de la pile technologique utilisée.
Ci-dessus se trouve le fichier de signature d'exemple qui est téléchargé sur l'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
Le code nous permet de télécharger l'image depuis le serveur Immich. Assurez-vous de générer une clé API depuis le serveur Immich.
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
Le code ci-dessous nous aidera à l'intégrer.
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
Utilisez l'API d'IronSecureDoc pour joindre des photos et appliquer des signatures numériques. Ajoutez l'appel API nécessaire dans la classe IronSecureDocIntegration pour compléter le document. Ci-dessous le PDF d'exemple généré à partir de IronSecureDoc après l'ajout de la signature.
Bien que Immich et IronSecureDoc répondent tous deux très bien à des besoins spécifiques, ils sont mieux adaptés à des cas d'utilisation différents. Immich excelle dans la gestion de photos et de vidéos autohébergées et riches en fonctionnalités, telles que la reconnaissance faciale, la détection d'objets et l'organisation simplifiée des fichiers multimédia. Cela va être idéal pour la gestion de l'emplacement de stockage multimédia personnel ou à petite échelle lorsque l'on souhaite une solution parfaitement adaptée à ses besoins.
IronSecureDoc est une solution de sécurisation et de signature de documents à l'échelle de l'organisation qui intègre les avantages fantastiques du chiffrement avancé avec la simplicité de l'intégration de flux de travail pour permettre la sécurité, l'évolutivité et la gestion de documents de qualité professionnelle de se réunir.
Fiable et conforme : Étant donné qu'il offre des capacités d'audit complètes avec une sécurité renforcée, il est fiable et conforme. En utilisant l'API REST IronSecureDoc, les développeurs de systèmes web, mobiles et d'entreprise peuvent désormais facilement intégrer l'impression sécurisée et la gestion efficace du format PDF à leurs applications. Pour en savoir plus sur la licence de IronSecureDoc, consultez lepage d'autorisation. Pour en savoir plus sur les offres d'Iron Software, visitez lePage IronSuite.
10 produits API .NET pour vos documents de bureau