Uploadez et stockez des documents directement dans Ackify.
Ackify supporte optionnellement le stockage de documents, permettant aux utilisateurs d'uploader des fichiers directement au lieu de fournir des URLs externes. Les documents sont stockés de manière sécurisée et servis via des endpoints API authentifiés.
Options de stockage :
- Désactivé (par défaut) - Les utilisateurs fournissent des URLs de documents
- Système de fichiers local - Documents stockés sur le serveur
- Compatible S3 - AWS S3, MinIO, Wasabi, DigitalOcean Spaces, etc.
| Type | Extensions | Types MIME |
|---|---|---|
.pdf |
application/pdf |
|
| Images | .png, .jpg, .jpeg, .gif, .webp |
image/* |
| Office | .doc, .docx |
application/msword, application/vnd.openxmlformats-* |
| Texte | .txt |
text/plain |
| HTML | .html, .htm |
text/html |
Stockez les documents sur le système de fichiers du serveur via un volume Docker.
ACKIFY_STORAGE_TYPE=local
ACKIFY_STORAGE_LOCAL_PATH=/data/documents
ACKIFY_STORAGE_MAX_SIZE_MB=50Volume Docker Compose :
services:
ackify-ce:
volumes:
- ackify_storage:/data/documents
volumes:
ackify_storage:Fonctionne avec tout fournisseur de stockage compatible S3.
ACKIFY_STORAGE_TYPE=s3
ACKIFY_STORAGE_MAX_SIZE_MB=50
ACKIFY_STORAGE_S3_ENDPOINT=https://s3.amazonaws.com
ACKIFY_STORAGE_S3_BUCKET=ackify-documents
ACKIFY_STORAGE_S3_ACCESS_KEY=votre_access_key
ACKIFY_STORAGE_S3_SECRET_KEY=votre_secret_key
ACKIFY_STORAGE_S3_REGION=us-east-1
ACKIFY_STORAGE_S3_USE_SSL=trueMinIO est une solution de stockage compatible S3 open-source populaire.
ACKIFY_STORAGE_TYPE=s3
ACKIFY_STORAGE_S3_ENDPOINT=http://minio:9000
ACKIFY_STORAGE_S3_BUCKET=ackify-documents
ACKIFY_STORAGE_S3_ACCESS_KEY=minioadmin
ACKIFY_STORAGE_S3_SECRET_KEY=minioadmin
ACKIFY_STORAGE_S3_REGION=us-east-1
ACKIFY_STORAGE_S3_USE_SSL=falseDocker Compose avec MinIO :
services:
minio:
image: minio/minio:latest
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio_data:/data
ports:
- "9000:9000"
- "9001:9001"
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 10s
timeout: 5s
retries: 5
volumes:
minio_data:Quand le stockage est activé, un bouton d'upload apparaît à côté du champ URL :
- Cliquez sur le bouton upload (ou glissez-déposez)
- Sélectionnez un fichier depuis votre ordinateur
- Le nom et la taille du fichier sont affichés
- Cliquez sur "Upload" pour soumettre
Fonctionnalités :
- Barre de progression pendant l'upload
- Titre automatique depuis le nom de fichier
- Validation du type de fichier
- Respect de la limite de taille
POST /api/v1/documents/upload
Content-Type: multipart/form-data
X-CSRF-Token: abc123
file: (binaire)
title: Titre optionnel du documentRéponse :
{
"success": true,
"data": {
"doc_id": "abc123",
"title": "document.pdf",
"storage_key": "abc123/document.pdf",
"storage_provider": "local",
"file_size": 1048576,
"mime_type": "application/pdf",
"checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"checksum_algorithm": "SHA-256",
"created_at": "2025-01-07T12:00:00Z",
"is_new": true
}
}GET /api/v1/storage/{docId}/contentRetourne le fichier document avec l'en-tête Content-Type approprié.
Note : Nécessite une session authentifiée.
- Tous les endpoints de stockage nécessitent une authentification
- Les documents ne sont accessibles qu'aux utilisateurs authentifiés
- Protection CSRF sur l'endpoint d'upload
- Checksum SHA-256 calculé automatiquement à l'upload
- Stocké dans les métadonnées du document
- Garantit l'intégrité du fichier
- Type de fichier vérifié contre les types MIME autorisés
- Taille du fichier validée contre
ACKIFY_STORAGE_MAX_SIZE_MB - Nom de fichier assaini pour éviter les traversées de chemin
Les documents uploadés ajoutent des champs à la table documents :
ALTER TABLE documents ADD COLUMN storage_key TEXT;
ALTER TABLE documents ADD COLUMN storage_provider TEXT;
ALTER TABLE documents ADD COLUMN file_size BIGINT;
ALTER TABLE documents ADD COLUMN mime_type TEXT;| Scénario | Stockage Recommandé |
|---|---|
| Déploiement serveur unique | Local |
| Plusieurs serveurs / scaling | S3 |
| Environnement isolé | Local |
| Déploiement cloud-native | S3 |
| Développement / tests | Local ou MinIO |
Stockage local :
- Inclure le volume
ackify_storagedans la stratégie de backup - Utiliser
docker-volume-backupou outils similaires
Stockage S3 :
- Configurer le versioning du bucket
- Activer la réplication cross-région si nécessaire
- Utiliser les politiques de cycle de vie pour la rétention
- Activer SSL S3 en production (
ACKIFY_STORAGE_S3_USE_SSL=true) - Utiliser des endpoints S3 régionaux pour une latence réduite
- Considérer un CDN pour les documents fréquemment accédés
- Taille maximum de fichier : configurable, 50MB par défaut
- Pas de scan antivirus (à implémenter au niveau infrastructure)
- Pas de génération d'aperçu de document
- Pas de compression automatique
Assurez-vous que ACKIFY_STORAGE_TYPE est défini à local ou s3.
- Vérifiez le format de l'URL endpoint (inclure
http://ouhttps://) - Vérifiez l'access key et la secret key
- Vérifiez que le bucket existe et est accessible
- Vérifiez que le paramètre SSL correspond à l'endpoint
Augmentez ACKIFY_STORAGE_MAX_SIZE_MB ou réduisez la taille du fichier.
Assurez-vous que le conteneur a accès en écriture au chemin de stockage :
docker exec ackify-ce ls -la /data/documents