Installation
L'installation Docker exécute toute la plateforme sur un seul serveur Linux, sous la forme d'une
stack Docker Compose. Vous n'écrivez pas cette stack vous-même : octopize-deploy-tool vous pose
quelques questions, génère tous les fichiers (.env, docker-compose.yml, la configuration Nginx,
les secrets et la configuration d'Authentik), puis la démarre.
Avant de commencer
Passez en revue les prérequis communs aux deux modes d'auto-hébergement : matériel, identifiants du registre, nom de domaine, certificat TLS, serveur SMTP et flux réseau. Vérifiez ensuite le serveur lui-même :
- Linux. Ubuntu 22.04 LTS ou supérieur est recommandé.
- Une version récente de
dockeravec le plugin Compose (à l'heure de la rédaction,docker -v=29.4.3etdocker compose version=v5.1.3), ainsi quecurl. - L'utilisateur qui effectue le déploiement appartient au groupe
docker, voir les étapes de post-installation de Docker. - Python 3.13 ou supérieur pour exécuter l'outil de déploiement. À défaut, exécutez l'outil depuis son image Docker.
Docker derrière un proxy HTTP
Si le démon ou le client Docker utilise un proxy HTTP, les conteneurs Avatar n'arrivent pas à
communiquer entre eux, sans afficher d'erreur. Excluez le sous-réseau Compose en ajoutant
"noProxy": "172.18.0.0/16" au bloc proxies.default de /etc/docker/daemon.json ou de
~/.docker/config.json. Ce paramètre ne s'applique qu'aux conteneurs nouvellement créés.
Déplacer le stockage de Docker vers une partition plus grande
Par défaut, Docker stocke les images dans /var/lib/docker, et chaque mise à jour ajoute des
images. Pour utiliser une autre partition, définissez data-root dans /etc/docker/daemon.json :
{
"data-root": "/data/docker"
}
Déplacez-y les volumes existants, puis redémarrez le démon :
sudo systemctl daemon-reload
sudo systemctl restart docker
Ne supprimez pas le volume avatar_postgres_data : il contient la base de données.
Certificat TLS
L'outil de déploiement demande le chemin d'un certificat PEM (la chaîne complète) et celui de sa clé privée non chiffrée. Indiquez des chemins absolus, et restreignez l'accès à la clé :
chmod 600 /etc/ssl/avatar/server.key
chmod 644 /etc/ssl/avatar/fullchain.crt
Convertir un bundle PKCS#12 (.pfx) en PEM
# Clé privée, puis déchiffrée (Nginx a besoin d'une clé non chiffrée)
openssl pkcs12 -in certificate.pfx -nocerts -out server.encrypted.key
openssl rsa -in server.encrypted.key -out /etc/ssl/avatar/server.key
# Certificat et chaîne intermédiaire, concaténés en une chaîne complète
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out server.crt
openssl pkcs12 -in certificate.pfx -cacerts -nokeys -chain -out chain.crt
cat server.crt chain.crt > /etc/ssl/avatar/fullchain.crt
Générer un certificat auto-signé (déploiements de test uniquement)
Une fois l'outil de déploiement installé :
octopize-deploy-tool tasks create-self-signed-cert \
--domain avatar.company.com \
--output-dir /etc/ssl/avatar
Cette commande écrit fullchain.crt et server.key. Ajoutez --ip-address pour des SAN de type
adresse IP, et --valid-days pour modifier la durée de validité par défaut de 365 jours.
Installer
Toutes les commandes utilisent ./app/avatar comme répertoire de déploiement. Choisissez le
répertoire de votre choix, et utilisez le même pour toutes les commandes suivantes.
1. Se connecter au registre
Exécutez la commande docker login qu'Octopize vous a envoyée. Elle ressemble à :
docker login -u='octopize+CUSTOMER_NAME' quay.io
2. Installer l'outil de déploiement
pip install octopize-deploy-tool
Installez-le dans un environnement virtuel : la plupart des distributions refusent les installations
dans le Python système. Vous pouvez aussi l'exécuter sans l'installer, avec
uv : uvx octopize-deploy-tool --help.
3. Générer la configuration
octopize-deploy-tool install --app-root ./app/avatar
L'outil demande :
- le nom de domaine public, un nom d'environnement (par exemple
mycompany-prod) et le nom de votre organisation, - les chemins du certificat TLS et de la clé privée,
- les paramètres du serveur SMTP, ou s'il faut utiliser le service d'email d'Octopize,
- l'adresse email de l'administrateur Authentik (
akadmin), - s'il faut activer la télémétrie d'usage, et ses identifiants si vous les avez.
Il génère lui-même tous les secrets. Rien n'est encore démarré. Pour installer sans questions interactives, voir Installer sans questions interactives.
4. Démarrer la stack
octopize-deploy-tool start --app-root ./app/avatar
Le premier démarrage télécharge les images, crée les volumes Docker et les bases de données, et configure Authentik. Il prend quelques minutes.
5. Créer les premiers utilisateurs
octopize-deploy-tool tasks create-users --app-root ./app/avatar \
--admins admin@company.com \
--users alice@company.com,bob@company.com
Chaque utilisateur reçoit un email contenant un lien pour définir son mot de passe. Voir Gestion des utilisateurs pour ajouter des utilisateurs par la suite.
6. Vérifier le déploiement
octopize-deploy-tool tasks provision-admin --app-root ./app/avatar
octopize-deploy-tool verify --app-root ./app/avatar --test-email you@company.com
provision-admin crée la clé d'API administrateur qu'utilise verify. verify contrôle l'état de
santé de l'API et envoie un email de test. Connectez-vous ensuite sur https://<your-domain>/ avec
l'un des comptes que vous avez créés.
Si une vérification échoue, voir Vérification et dépannage.
Où se trouve la configuration
octopize-deploy-tool conserve la configuration dans le répertoire de déploiement (./app/avatar
dans ces pages) :
./app/avatar/
├── user_config/ # à vous : l'outil ne l'écrase jamais
│ ├── config.example.yaml # référence commentée, écrite par `install`
│ └── config.yaml # facultatif, vos valeurs
├── .deployment_states/ # un emplacement par configuration (v1, v2, …), conservé pour le retour arrière
│ └── currently_deployed -> v2
└── generated_files/ # ce qu'exécute Docker Compose : généré, ne pas modifier
├── .env
├── docker-compose.yml
├── nginx/nginx.conf
├── authentik/
└── .secrets/
Vous définissez les valeurs via le questionnaire ou dans un fichier YAML sous user_config/.
L'outil les reporte dans generated_files/. Ne modifiez pas generated_files/ à la main :
chaque update le régénère, et une modification manuelle bloque la mise à jour suivante jusqu'à ce
que vous résolviez le conflit.
Modifier une valeur
Placez uniquement les valeurs à modifier dans un fichier YAML, et passez-le à update. Tout le
reste est conservé :
SMTP_HOST: smtp.company.com
SMTP_PORT: 587
octopize-deploy-tool update --app-root ./app/avatar --from-config change.yaml
octopize-deploy-tool start --app-root ./app/avatar
update affiche le diff avant de l'appliquer. start recrée les conteneurs qui ont changé.
Installer sans questions interactives
Pour installer sans questions interactives, par exemple depuis un outil d'automatisation, partez de
user_config/config.example.yaml. Ce fichier minimal suffit :
PUBLIC_URL: avatar.company.com
ENV_NAME: company-prod
ORGANIZATION_NAME: MyCompany
NGINX_SSL_CERTIFICATE_PATH: /etc/ssl/avatar/fullchain.crt
NGINX_SSL_CERTIFICATE_KEY_PATH: /etc/ssl/avatar/server.key
octopize-deploy-tool install --app-root ./app/avatar \
--from-config ./app/avatar/user_config/config.yaml --non-interactive
ORGANIZATION_NAME est obligatoire, bien que config.example.yaml ne le mentionne pas.
Exécuter l'outil de déploiement depuis Docker
Si Python 3.13 n'est pas disponible, ou si PyPI est bloqué alors que quay.io ne l'est pas,
utilisez l'image de l'outil. Elle a besoin que le socket Docker et le plugin Compose soient montés :
export CP=$(docker info -f '{{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.Path}}{{end}}{{end}}')
docker run -it --rm --user "$(id -u):$(id -g)" --group-add "$(stat -c '%g' /var/run/docker.sock)" \
-v "$(pwd)/app/avatar:/app-root" -v /var/run/docker.sock:/var/run/docker.sock \
-v "$(which docker):/usr/local/bin/docker:ro" -v "$CP:$CP:ro" \
quay.io/octopize/deploy-tool:latest install --app-root /app-root
Remplacez install par n'importe quelle autre commande. Lors des questions, saisissez les chemins
de l'hôte (par exemple celui du certificat TLS), car Docker Compose les lit sur l'hôte. Le
README de l'outil de déploiement fournit un bloc
prêt à copier pour chaque commande.
Étapes suivantes
- Pour modifier un paramètre par la suite, voir Modifier une valeur. Toutes les variables sont listées dans Configuration.
- Pour passer à une nouvelle version d'Avatar, voir Mise à jour et retour arrière.
- Pour un serveur isolé, voir Déploiements isolés (air-gapped).