<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenProject on slash-root.fr</title><link>https://beta.slash-root.fr/categories/openproject/</link><description>Recent content in OpenProject on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Sun, 04 Sep 2022 18:37:04 +0200</lastBuildDate><atom:link href="https://beta.slash-root.fr/categories/openproject/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker-Compose : OpenProject</title><link>https://beta.slash-root.fr/docker-compose-openproject/</link><pubDate>Thu, 25 Aug 2022 11:55:11 +0200</pubDate><guid>https://beta.slash-root.fr/docker-compose-openproject/</guid><description>&lt;img src="https://beta.slash-root.fr/docker-compose-openproject/cover.png" alt="Featured image of post Docker-Compose : OpenProject" /&gt;&lt;h2 id="changelog"&gt;&lt;a href="#changelog" class="header-anchor"&gt;&lt;/a&gt;Changelog
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;04/09/2022 : Fix environnement&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="informations-importantes"&gt;&lt;a href="#informations-importantes" class="header-anchor"&gt;&lt;/a&gt;Informations importantes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Tous les services tournent dans un seul conteneur.&lt;/li&gt;
&lt;li&gt;Le compte par défaut est &lt;strong&gt;admin&lt;/strong&gt; avec le mot de passe &lt;strong&gt;admin&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;URL d'accès : &lt;a href="http://localhost:8080"&gt;http://localhost:8080&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Par défaut des connexions anonymes sont autorisées. Dans le menu Administration / Authentification, il est possible de modifier ce comportement :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="image-1661420855287.png" alt="file" /&gt;&lt;/p&gt;
&lt;h2 id="fichier-docker-composeyml"&gt;&lt;a href="#fichier-docker-composeyml" class="header-anchor"&gt;&lt;/a&gt;Fichier docker-compose.yml
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;3.3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;openproject&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;openproject/community:12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OPENPROJECT_HOST__NAME&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;localhost:8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OPENPROJECT_HTTPS&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;false&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32 ; echo &amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OPENPROJECT_SECRET_KEY_BASE&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;A_GENERER_AVEC_LA_CMD_CI-DESSUS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;pgdata:/var/openproject/pgdata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;assets:/var/openproject/assets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;pgdata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;driver&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;assets&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;driver&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="execution"&gt;&lt;a href="#execution" class="header-anchor"&gt;&lt;/a&gt;Execution
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>OpenProject : Mise en place du SSO avec Keycloak</title><link>https://beta.slash-root.fr/openproject-mise-en-place-du-sso-avec-keycloak/</link><pubDate>Thu, 28 Oct 2021 14:40:22 +0200</pubDate><guid>https://beta.slash-root.fr/openproject-mise-en-place-du-sso-avec-keycloak/</guid><description>&lt;img src="https://beta.slash-root.fr/openproject-mise-en-place-du-sso-avec-keycloak/cover.jpg" alt="Featured image of post OpenProject : Mise en place du SSO avec Keycloak" /&gt;&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Par défaut, OpenProject utilise une base locale d'utilisateurs pour gérer l'authentification. Afin de centraliser l'authentification sur un serveur dédié (avec OpenID-Connect) Keycloak, une configuration SSO est nécessaire sur OpenProject.&lt;/p&gt;
&lt;p&gt;OpenProject va utiliser OpenID-Connect pour faire du SSO. Ca tombe bien Keycloak aussi ! Un paramétrage concernant cela est disponible via la web UI d'administration d'OpenProject mais celle-ci ne concerne que Google et Azure. Fort heureusement, c'est tout de même possible en éditant un fichier.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Référence :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://beta.slash-root.fr/2021/10/20/installation-openproject/"&gt;OpenProject : Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://beta.slash-root.fr/2021/10/25/keycloak-installation-avec-docker-et-reverse-proxy-ssl-nginx/"&gt;Keycloak : Installation avec Docker et reverse-proxy SSL Nginx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="pré-requis"&gt;&lt;a href="#pr%c3%a9-requis" class="header-anchor"&gt;&lt;/a&gt;Pré-requis
&lt;/h2&gt;&lt;p&gt;Pour mener à bien cette procédure, il faut :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un serveur OpenProject installé avec une licence &lt;strong&gt;Entreprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Un serveur Keycloak installé&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour la licence OpenProject Entreprise, il est possible de faire un essai de 14 jours gratuitement. Sans licence Entreprise, le SSO n'est pas pris en charge par OpenProject. Lorsque l'essai de la version Entreprise arrive à son terme et que celle-ci n'est pas prolongé, alors la licence repasse automatique en Community Edition (Free).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="configuration-partie-keycloak"&gt;&lt;a href="#configuration-partie-keycloak" class="header-anchor"&gt;&lt;/a&gt;Configuration partie Keycloak
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Création d'un royaume :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="add_realm.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Création d'un client :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="add_client.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Root URL&lt;/code&gt; : L'URL d'accès au serveur OpenProject.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Dans les propriétés du client nouvellement créer, définir l' &lt;code&gt;Access Type&lt;/code&gt; sur &lt;code&gt;confidential&lt;/code&gt; afin de générer un secret :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="confidential.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bien penser à sauvegarder la modification en bas de la page.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Un nouvel onglet &lt;code&gt;Credentials&lt;/code&gt; est apparu dans les propriétés du client. Un secret a été généré :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="secret.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Créer un compte utilisateur si le serveur Keycloak est fraichement installé :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="add_user.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Attention : Sur l'illustration, seul le champ &lt;code&gt;Username&lt;/code&gt; est indiqué comme obligatoire. Lorsque qu'un utilisateur s'authentifiera avec son compte Keycloak sur OpenProject, les champs &lt;code&gt;Email&lt;/code&gt; , &lt;code&gt;First Name&lt;/code&gt; , &lt;code&gt;Last Name&lt;/code&gt; seront obligatoires. Ces propriétés ne peuvent en cas cas être communes à un autre compte.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Une fois l'utilisateur créé, dans l'onglet &lt;code&gt;Credentials&lt;/code&gt; , définir son mot de passe :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="password-1.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="configuration-partie-openproject"&gt;&lt;a href="#configuration-partie-openproject" class="header-anchor"&gt;&lt;/a&gt;Configuration partie OpenProject
&lt;/h2&gt;&lt;p&gt;Pour qu'un utilisateur puisse utiliser son compte Keycloak pour s'authentifier sur OpenProject, celui-ci doit être activé dans OpenProject. Par défaut l'activation se fait manuellement. Pour automatiser ce processus, une option d' &lt;code&gt;activation automatique du compte&lt;/code&gt; existe dans OpenProject.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se connecter en admin sur OpenProject puis &amp;quot;Administration -&amp;gt; Authentification&amp;quot;, modifier l'option &lt;code&gt;Auto-enregistrement&lt;/code&gt; comme suit :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="activation_auto.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour la suite des opérations, se connecter en SSH sur le serveur OpenProject.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Modifier le fichier &lt;code&gt;/opt/openproject/config/configuration.yml&lt;/code&gt; afin d'ajouter la possibilité de s'authentifier sur OpenProject au travers du serveur SSO Keycloak. Ajouter les lignes suivantes dans la section &lt;code&gt;default&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;default&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# omniauth_direct_login_provider: openid
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;openid_connect&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;openid&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;host&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keycloak.example.fr&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;identifier&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;MonOpenProject&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;secret&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;af90aced-0000-0000-0000-0959e6fd5226&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;icon&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;openid_connect/auth_provider-google.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;display_name&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;SSO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;authorization_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/auth&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;token_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/token&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;userinfo_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/userinfo&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;end_session_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/logout&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;check_session_iframe&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/login-status-iframe.html&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;sso&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;issuer&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;discovery&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Adapter les valeurs suivantes :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;host&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Le&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;FQDN&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;du&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;serveur&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Keycloak&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;identifier&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Le&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nom&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;du&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;client&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;créé&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dans&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Keycloak&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;secret&lt;/span&gt; &lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Le&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;secret&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;du&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;client&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;généré&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dans&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Keycloak&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Les URLS suivantes peuvent facilement être obtenues dans Keycloak
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Realm Settings -&amp;gt; Endpoints : OpenIP Endpoint Configuration
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;authorization_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/auth&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;token_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/token&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;userinfo_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/userinfo&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;end_session_endpoint&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/logout&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;check_session_iframe&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume/protocol/openid-connect/login-status-iframe.html&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;issuer&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https://keycloak.example.fr/auth/realms/MonRoyaume&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;La directive &lt;code&gt;omniauth_direct_login_provider&lt;/code&gt; indique que seul l'authentification passera par keycloak. Commenter cette directive pour avoir le choix d'authentification entre keycloak (SSO) ou la base locale d'OpenProject.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;OpenProject : Redémarrer le service openproject&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart openproject
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="vérification-du-fonctionnement"&gt;&lt;a href="#v%c3%a9rification-du-fonctionnement" class="header-anchor"&gt;&lt;/a&gt;Vérification du fonctionnement
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Dorénavant lors de la connexion sur OpenProject, une option de connexion SSO est disponible :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="sso.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le serveur Keycloak prends le relais pour demander les credentials :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="sso_keycloak.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Après la 1ère connexion d'un utilisateur au travers du SSO, celui-ci est présent dans OpenProject avec un fournisseur d'authentification &lt;code&gt;OpenID&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="openid.png" alt="" /&gt;&lt;/p&gt;</description></item><item><title>OpenProject : Installation</title><link>https://beta.slash-root.fr/installation-openproject/</link><pubDate>Wed, 20 Oct 2021 14:55:58 +0200</pubDate><guid>https://beta.slash-root.fr/installation-openproject/</guid><description>&lt;img src="https://beta.slash-root.fr/installation-openproject/cover.jpg" alt="Featured image of post OpenProject : Installation" /&gt;&lt;h2 id="contexte"&gt;&lt;a href="#contexte" class="header-anchor"&gt;&lt;/a&gt;Contexte
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenProject sera installé sur Debian 10.&lt;/li&gt;
&lt;li&gt;La base de données recommandée est PostgreSQL.&lt;/li&gt;
&lt;li&gt;Le serveur web recommandé est Apache.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;&lt;a href="#installation" class="header-anchor"&gt;&lt;/a&gt;Installation
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installer gnupg2 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install gnupg2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importer la clef PGP utilisées pour signer les paquets openproject :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget -qO- https://dl.packager.io/srv/opf/openproject/key | sudo apt-key add -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajouter le repo adéquat :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo wget -O /etc/apt/sources.list.d/openproject.list &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;https://dl.packager.io/srv/opf/openproject/stable/11/installer/debian/10.repo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Télécharger et installer openproject :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install openproject
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;&lt;a href="#configuration" class="header-anchor"&gt;&lt;/a&gt;Configuration
&lt;/h2&gt;&lt;h3 id="pré-requis"&gt;&lt;a href="#pr%c3%a9-requis" class="header-anchor"&gt;&lt;/a&gt;Pré-requis
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Si une base de données PostgreSQL externe veut être utilisée en lieu et place d'une base de données locale, s'assurer d'avoir les informations suivantes :
&lt;ul&gt;
&lt;li&gt;database hostname&lt;/li&gt;
&lt;li&gt;port&lt;/li&gt;
&lt;li&gt;username&lt;/li&gt;
&lt;li&gt;password&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;L'utilisateur utilisé pour la connexion à la base de données doit avoir le privilège CREATE DATABASE.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Si le HTTPS est utilisé, prévoir le chemin d'accès vers le :
&lt;ul&gt;
&lt;li&gt;certificate file&lt;/li&gt;
&lt;li&gt;private key file&lt;/li&gt;
&lt;li&gt;CA bundle file&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="lancer-le-wizard"&gt;&lt;a href="#lancer-le-wizard" class="header-anchor"&gt;&lt;/a&gt;Lancer le wizard
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Exécuter le wizard :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo openproject configure
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Si une erreur se produit et/ou une reconfiguration est nécessaire, annuler le wizard avec &lt;code&gt;CTRL+C&lt;/code&gt; et relancer le wizard avec &lt;code&gt;sudo openproject reconfigure&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Les choix fait durant le wizard sont persistent dans le fichier &lt;code&gt;/etc/openproject/installer.dat&lt;/code&gt;et l'exécution de &lt;code&gt;sudo openproject configure&lt;/code&gt;réutilise ces valeurs. Seul les options non présentes dans le fichier &lt;code&gt;installer.dat&lt;/code&gt;seront alors demandées.&lt;/li&gt;
&lt;li&gt;Pour relancer la demande de tous les paramètres : &lt;code&gt;sudo openproject reconfigure&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3 id="choisir-lédition"&gt;&lt;a href="#choisir-l%c3%a9dition" class="header-anchor"&gt;&lt;/a&gt;Choisir l&amp;rsquo;édition
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OpenProject est fournit avec 2 éditions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L'édition par défaut : Pour une gestion de projet générale.&lt;/li&gt;
&lt;li&gt;L'édition BIM : Pour une gestion de projet axée dans l'industrie du bâtiment/construction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="openproject_edition.png" alt="openproject_edition" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plus d'information sur la BIM Edition &lt;a href="https://www.openproject.org/bim-project-management/"&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La slection de l'édition est uniquement disponible sur les distributions suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RHEL/CentOS 8&lt;/li&gt;
&lt;li&gt;Ubuntu 20.04&lt;/li&gt;
&lt;li&gt;Ubuntu 18.04&lt;/li&gt;
&lt;li&gt;Debian 10&lt;/li&gt;
&lt;li&gt;Debian 11&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="configuration-base-de-données"&gt;&lt;a href="#configuration-base-de-donn%c3%a9es" class="header-anchor"&gt;&lt;/a&gt;Configuration base de données
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OpenProject requiert une base de données PostgreSQL pour stocker les données.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cette étape va permettre de sélectionner la méthode de connexion à cette base de données.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="postgre_autoinstall.png" alt="postgres_autoinstall" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3 options :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skip : Pas de connexion à une base de données. Il sera nécessaire de spécifier une base de données manuellement à l'aide de la variable &lt;code&gt;DATABASE_URL&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo openproject config:set DATABASE_URL&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;postgresql://[user[:password]@][host][:port][/dbname][?param1=value1&amp;amp;...]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install : Le wizard installe et configure une base de données PostgreSQL locale. C'est cette option qui sera retenu dans cette documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reuse : Pour utiliser une base de données PostgreSQL existante. Des paramètres de connexion supplémentaire sont demandés lors de ce choix.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="apache2"&gt;&lt;a href="#apache2" class="header-anchor"&gt;&lt;/a&gt;Apache2
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OpenProject comprend un serveur d'application en ruby interne. Seulement le serveur écoute uniquement sur une interface locale.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pour pouvoir y accéder d'Internet, il est nécessaire d'avoir un serveur web comme proxy transférer les connexions entrantes vers le serveur applicatif OpenProject.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le wizard propose d'installer automatiquement un serveur web Apache2 pour agir comme un proxy.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="server_autoinstall.png" alt="server_autoinstall" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2 options :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install : Option recommandée. Installe et configure un serveur web Apache2 avec un virtual host du nom de domaine fournit. C'est ce serveur qui fournira du SSL/TLS. Plusieurs options sont demandées par la suite.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le nom de domaine pleinement qualifié. Correspond à la valeur &lt;code&gt;ServerName&lt;/code&gt;du virtual host d'apache.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="server_hostname.png" alt="server_hostname" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pour spécifier un prefix afin d'accéder à l'applicatif (exemple : mondomaine.example.com/openproject) : &lt;code&gt;/openproject&lt;/code&gt;. Laisser vide si l'accès désiré à l'application est http(s)://mondomaine.example.com.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="server_path_prefix.png" alt="server_path_prefix" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pour utiliser des certificats SSL/TLS, 3 choix supplémentaires sont à faire pour spécifier l'accès aux certificats.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="server_ssl.png" alt="server_ssl" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Skip : Non recommandé. Un serveur web Apache ou Nginx doit être installé et configuré manuellement pour rediriger les requêtes entrantes vers &lt;code&gt;localhost:6000&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Attention avec un serveur Nginx, toutes les fonctionnalités ne sont pas disponible pour OpenProject.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="svngit-intégration"&gt;&lt;a href="#svngit-int%c3%a9gration" class="header-anchor"&gt;&lt;/a&gt;SVN/Git intégration
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Si le choix d'installer automatiquement Apache2 est fait, il est demandé si une intégration de SVN/Git doit être faites.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plus d'informations &lt;a href="https://www.openproject.org/docs/user-guide/repository"&gt;ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="repositories_svninstall.png" alt="repositories_svninstall" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="configuration-email"&gt;&lt;a href="#configuration-email" class="header-anchor"&gt;&lt;/a&gt;Configuration email
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configurer la méthode d'envoie de mail pour les diverses notifications.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="smtp_autoinstall.png" alt="smtp_autoinstall" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3 options :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sendmail : Utilisation d'une installation de sendmail en locale ou d'un serveur postfix local.&lt;/li&gt;
&lt;li&gt;SMTP : Option recommandée en production. Autorise la connexion à un serveur SMTP à travers une authentification de type : &lt;code&gt;NONE&lt;/code&gt;, &lt;code&gt;PLAIN&lt;/code&gt;, &lt;code&gt;LOGIN&lt;/code&gt;, &lt;code&gt;CRAM-MD5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Skip : Aucune configuration. Néanmoins, la configuration peut se faire plus tard en se rendant sur l'URL : &lt;code&gt;openproject.example.com/settings?tab=notifications&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="serveur-memcached"&gt;&lt;a href="#serveur-memcached" class="header-anchor"&gt;&lt;/a&gt;Serveur Memcached
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OpenProject a besoin d'un serveur local memcached. L'installation de celui-ci doit &amp;quot;toujours&amp;quot; être faites.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="memcached_install.png" alt="memcached_autoinstall" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="accès-openproject"&gt;&lt;a href="#acc%c3%a8s-openproject" class="header-anchor"&gt;&lt;/a&gt;Accès OpenProject
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;L'installation est terminée.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;L'application OpenProject est disponible à l'adresse : http(s)://openproject.example.com/server prefix.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Username = &lt;code&gt;admin&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Password = &lt;code&gt;admin&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Changer le mot de passe admin immédiatement&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="install_end.png" alt="install_end" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mise-à-jour-postgresql"&gt;&lt;a href="#mise-%c3%a0-jour-postgresql" class="header-anchor"&gt;&lt;/a&gt;Mise à jour PostgreSQL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;La version actuelle d'OpenProject est la 11.4.0.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La prochaine version majeure sera la 12.0 (fin 2021).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PostgreSQL v13 sera nécessaire.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Installer la nouvelle version de PostgreSQL :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install postgresql-13
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arrêter les serveurs PostgreSQL :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su - postgres -c &lt;span style="color:#e6db74"&gt;&amp;#34;/usr/lib/postgresql/10/bin/pg_ctl stop --wait --pgdata=/var/lib/postgresql/10/main&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su - postgres -c &lt;span style="color:#e6db74"&gt;&amp;#34;/usr/lib/postgresql/13/bin/pg_ctl stop --wait --pgdata=/var/lib/postgresql/13/main&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Migrer les données vers PostgreSQL v13 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su - postgres &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; CMD
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;/usr/lib/postgresql/13/bin/pg_upgrade \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;--old-bindir=/usr/lib/postgresql/10/bin \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;--new-bindir=/usr/lib/postgresql/13/bin \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;--old-datadir=/var/lib/postgresql/10/main \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;--new-datadir=/var/lib/postgresql/13/main \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;--old-options &amp;#39;-c config_file=/etc/postgresql/10/main/postgresql.conf&amp;#39; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;--new-options &amp;#39;-c config_file=/etc/postgresql/13/main/postgresql.conf&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;CMD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faire de PostgreSQL v13 le serveur par défaut sur le port 45432 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su - postgres -c &lt;span style="color:#e6db74"&gt;&amp;#34;cp /etc/postgresql/{10,13}/main/conf.d/custom.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su - postgres -c &lt;span style="color:#e6db74"&gt;&amp;#34;sed -i &amp;#39;s|45432|45433|&amp;#39; /etc/postgresql/10/main/conf.d/custom.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo su - postgres -c &lt;span style="color:#e6db74"&gt;&amp;#34;/usr/lib/postgresql/13/bin/pg_ctl start --wait --pgdata=/var/lib/postgresql/13/main -o &amp;#39;-c config_file=/etc/postgresql/13/main/postgresql.conf&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier dans OpenProject la version de PostgreSQL.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="postgre_v13.png" alt="postgre_v13" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supprimer l'ancienne version de PostgreSQL :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo rm -rf /var/lib/postgresql/10/main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get purge postgresql-10
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>