Manuel technique
Création d'une SIFYBOX à partir de plusieurs services
Comment compiler des images versionnées en services adaptés aux besoins d'un processus donné, et exécuter chacune d'elles localement ou à distance.
01
1. Trois niveaux de livraison
- DERS publiera un fichier compose.yaml de base immuable et un manifeste de publication contenant les noms complets des images et leurs condensés.
- L'installation ajoutera des valeurs non secrètes au fichier site.env : l'URL publique, les adresses des services, le fuseau horaire et le mode de fonctionnement sélectionné.
- Les mots de passe, les jetons et les certificats sont transmis séparément sous forme de fichiers secrets Docker ou via Vault ; ils n'ont pas leur place dans la version ni dans Git.
- La modification du client est effectuée dans un fichier de remplacement pris en charge ou via des variables, et non en modifiant la base de fournisseurs.
02
2. Paramètres d'image et de diffusion
L'hôte du registre est commun, mais les chemins d'accès complets, les noms et les condensés doivent provenir d'un manifeste pris en charge par la version. La notation suivante correspond à un modèle de conception cible et non à un manuel de déploiement final.
# .env.release — spravuje DERS spolu s konkrétním releasem
# Úplné názvy image a digesty se přebírají z release manifestu.
OOD_IMAGE=registry.ders.cz/<PROJECT>/<OOD_IMAGE>@sha256:<DIGEST>
DOG_IMAGE=registry.ders.cz/<PROJECT>/<DOG_IMAGE>@sha256:<DIGEST>
FS_IMAGE=registry.ders.cz/<PROJECT>/<FS_IMAGE>@sha256:<DIGEST>
ZST_IMAGE=registry.ders.cz/<PROJECT>/<ZST_IMAGE>@sha256:<DIGEST>
EPK_IMAGE=registry.ders.cz/<PROJECT>/<EPK_IMAGE>@sha256:<DIGEST>
WSCS_IMAGE=registry.ders.cz/<PROJECT>/<WSCS_IMAGE>@sha256:<DIGEST>
CUL_IMAGE=registry.ders.cz/<PROJECT>/<CUL_IMAGE>@sha256:<DIGEST>
CULWS_IMAGE=registry.ders.cz/<PROJECT>/<CULWS_IMAGE>@sha256:<DIGEST>
POSTGRES_IMAGE=<SUPPORTED_POSTGRES_IMAGE>@sha256:<DIGEST>
# .env.site — nesekretní parametry konkrétní instalace
PUBLIC_BASE_URL=https://<SIFYBOX_FQDN>
TZ=Europe/Prague
DOG_BASE_URL=http://dog:<PORT_FROM_RELEASE>
FS_BASE_URL=http://fs:<PORT_FROM_RELEASE>
ZST_BASE_URL=http://zst:<PORT_FROM_RELEASE>
EPK_BASE_URL=http://epk:<PORT_FROM_RELEASE>
WSCS_BASE_URL=http://wscs:<PORT_FROM_RELEASE>
CUL_BASE_URL=http://cul:<PORT_FROM_RELEASE>
CULWS_BASE_URL=http://culws:<PORT_FROM_RELEASE>03
3. Activation des services locaux
Modèle de conception cible : chaque service optionnel possède son propre profil Compose. Lorsqu’un profil est désactivé, l’URL de base doit pointer vers une instance distante vérifiée. Les profils et variables spécifiques doivent être validés par le dépôt de l’application.
name: sifybox
services:
ood:
image: ${OOD_IMAGE:?OOD_IMAGE is required}
env_file:
- /etc/sifybox/env/site.env
environment:
DOG_BASE_URL: ${DOG_BASE_URL:?DOG_BASE_URL is required}
FS_BASE_URL: ${FS_BASE_URL:?FS_BASE_URL is required}
ZST_BASE_URL: ${ZST_BASE_URL:?ZST_BASE_URL is required}
EPK_BASE_URL: ${EPK_BASE_URL:?EPK_BASE_URL is required}
CUL_BASE_URL: ${CUL_BASE_URL:?CUL_BASE_URL is required}
CULWS_BASE_URL: ${CULWS_BASE_URL:?CULWS_BASE_URL is required}
secrets:
- db_password
dog:
image: ${DOG_IMAGE:?DOG_IMAGE is required}
profiles: [dog-local]
networks: [sifybox-backend]
fs:
image: ${FS_IMAGE:?FS_IMAGE is required}
profiles: [fs-local]
networks: [sifybox-backend]
zst:
image: ${ZST_IMAGE:?ZST_IMAGE is required}
profiles: [zst-local]
networks: [sifybox-backend]
epk:
image: ${EPK_IMAGE:?EPK_IMAGE is required}
profiles: [epk-local]
networks: [sifybox-backend]
wscs:
image: ${WSCS_IMAGE:?WSCS_IMAGE is required}
profiles: [wscs-local]
networks: [sifybox-backend]
cul:
image: ${CUL_IMAGE:?CUL_IMAGE is required}
profiles: [cul-local]
networks: [sifybox-backend]
culws:
image: ${CULWS_IMAGE:?CULWS_IMAGE is required}
profiles: [culws-local]
networks: [sifybox-backend]
networks:
sifybox-backend:
internal: true
secrets:
db_password:
file: /etc/sifybox/secrets/db_password04
4. Mode local et distant
# Lokální sestava: služby běží jako kontejnery stejného Compose projektu
docker compose --env-file /etc/sifybox/env/release.env --env-file /etc/sifybox/env/site.env config --quiet
# Vzdálená služba: její profil se nezapne a BASE_URL vede na řízený endpoint.
# Příklad: WSCS_BASE_URL=https://<REMOTE_WSCS_FQDN>
docker compose --env-file /etc/sifybox/env/release.env --env-file /etc/sifybox/env/site.env config --quietRemarque : La simple désactivation du profil ne suffit pas. Avant de commencer, la validation doit vérifier la disponibilité du service distant, le protocole TLS, l'authentification, la compatibilité de la version de l'API et l'absence de toute redirection de flux réseau non souhaitée ou publiquement.
05
5. Règles pour chaque service optionnel
- Une seule cible active : conteneur local ou point de terminaison distant.
- Même contrat d'API versionné dans les deux modes.
- Test de santé/préparation distinct et résultat attendu clair.
- TLS et identité technique même au sein d'un réseau de confiance si le modèle de sécurité l'exige.
- Délai d'attente, nouvelle tentative, disjoncteur et ID de corrélation décrits dans le profil d'intégration.
- Le changement de mode est une modification contrôlée avec test et retour, et non une modification en direct.
06
6. Exemple de décision concernant la composition de l'équipe
- OOD localement : le cœur d’une installation spécifique et sa définition de processus.
- DOG en local ou partagé : selon la sensibilité des données d’entrée, les performances et la responsabilité du modèle.
- FS et ZST en local ou en tant que service interne géré : uniquement avec une séparation confirmée des locataires et des autorisations.
- EPK et WSCS en local ou à distance : selon l’architecture de signature, la disponibilité du HSM et du fournisseur de signature.
- CUL/CULWS par emplacement du document, conservation, performance et liaison eSSL.
- Chaque décision est consignée dans le journal d'installation, y compris le propriétaire, le flux de données et la méthode de récupération.
Guide suivant
