Recherche de site Web

Comment installer le logiciel de gestion de projet Redmine sur Debian 11


Redmine est un logiciel de gestion de projet et un outil de suivi des problèmes gratuit et open source. Il est écrit à l'aide du framework Ruby on Rails et peut être intégré à divers systèmes de contrôle de version. Il comprend un navigateur de référentiel et un visualiseur de différences. Il peut être utilisé pour gérer les fonctionnalités des projets par wikis et forums de projet, le suivi du temps et le contrôle d'accès basé sur les rôles. Il est multiplateforme et multi-bases de données et prend en charge 49 langues.

Dans ce tutoriel, vous apprendrez comment installer Redmine sur un serveur Debian 11.

Conditions préalables

    Un serveur exécutant Debian 11.

    Un utilisateur non sudo avec les privilèges root.

    Le pare-feu simple (UFW) est activé et en cours d'exécution.

    Peu de packages dont votre système a besoin.

    $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y
    

    Certains de ces packages sont peut-être déjà installés sur votre système.

    Assurez-vous que tout est mis à jour.

    $ sudo apt update && sudo apt upgrade
    

Étape 1 - Configurer le pare-feu

La première étape avant d'installer un package consiste à configurer le pare-feu pour autoriser les connexions HTTP et HTTPS.

Vérifiez l'état du pare-feu.

$ sudo ufw status

Vous devriez voir quelque chose comme ce qui suit.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Autoriser les ports HTTP et HTTPs. Ouvrez également le port 3000 pour Redmine.

$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow 3000

Vérifiez à nouveau l'état pour confirmer.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
3000                       ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)             
3000 (v6)                  ALLOW       Anywhere (v6)

Étape 2 - Installer le serveur Apache

Nous utiliserons le serveur Web Apache pour déployer Redmine. Installez Apache à l'aide de la commande suivante.

$ sudo apt install apache2

Vérifiez l'état du service Apache.

$ sudo systemctl status apache2
? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-03-04 13:28:57 UTC; 41s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 3478 (apache2)
      Tasks: 55 (limit: 1129)
     Memory: 9.7M
        CPU: 27ms
     CGroup: /system.slice/apache2.service
             ??3478 /usr/sbin/apache2 -k start
             ??3481 /usr/sbin/apache2 -k start
             ??3482 /usr/sbin/apache2 -k start

Mar 04 13:28:56 redmine systemd[1]: Starting The Apache HTTP Server...
Mar 04 13:28:57 redmine systemd[1]: Started The Apache HTTP Server.

Étape 3 - Installer et configurer le serveur MySQL

Nous utiliserons la base de données MySQL pour stocker les données. Debian n'a plus MySQL dans ses dépôts. Nous utiliserons donc le référentiel officiel MySQL pour l'installation.

Importez la clé MySQL GPG.

$ curl https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | gpg --dearmor | sudo tee /usr/share/keyrings/mysql.gpg >/dev/null

Créez un fichier de référentiel MySQL.

$ echo "deb [signed-by=/usr/share/keyrings/mysql.gpg arch=amd64] http://repo.mysql.com/apt/debian/ `lsb_release -cs` mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql.list

Mettez à jour la liste des référentiels système.

$ sudo apt update

Installez MySQL.

$ sudo apt install mysql-server

Vous serez invité à définir un mot de passe root. Choisissez un mot de passe fort. Ensuite, vous serez invité à choisir entre le nouveau cryptage MySQL caching_sha2_password ou l'ancien cryptage mysql_native_password. Choisissez le plus récent car Redmine le prend en charge. Sélectionnez OK pour continuer et terminer l'installation.

Vérifiez l'état du service MySQL.

$ sudo systemctl status mysql
? mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-03-05 08:18:15 UTC; 4h 14min ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 10500 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1129)
     Memory: 391.5M
        CPU: 1min 49.904s
     CGroup: /system.slice/mysql.service
             ??10500 /usr/sbin/mysqld

Mar 05 08:18:14 redmine systemd[1]: Starting MySQL Community Server...
Mar 05 08:18:15 redmine systemd[1]: Started MySQL Community Server.

Installation sécurisée de MySQL.

$ sudo mysql_secure_installation

Tout d’abord, il vous sera demandé le mot de passe root. Entrez le mot de passe que vous avez choisi lors de l'installation. Ensuite, il vous sera demandé si vous souhaitez configurer le plugin Validate Password, que vous pouvez utiliser pour tester la force de votre mot de passe MySQL. Choisissez Y pour continuer. Il vous sera demandé de choisir le niveau de validation du mot de passe à l'étape suivante. Choisissez 2 qui est le niveau le plus fort et nécessitera que votre mot de passe comporte au moins huit caractères et comprenne un mélange de caractères majuscules, minuscules, numériques et spéciaux.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

La force de votre mot de passe root vous sera affichée et il vous sera demandé si vous souhaitez le modifier. Entrez N si vous ne souhaitez pas modifier et continuez. Si vous souhaitez le modifier, vous pouvez le faire maintenant en saisissant Y et en choisissant un mot de passe répondant aux exigences ci-dessus.

Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.

Appuyez sur Y puis sur la touche ENTER pour toutes les invites suivantes pour supprimer les utilisateurs anonymes et la base de données de test, désactiver les connexions root et charger les règles nouvellement définies.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Entrez dans le shell MySQL. Entrez votre mot de passe root pour continuer.

$ mysql -u root -p

Créez un utilisateur redmine. Assurez-vous que le mot de passe répond aux exigences définies auparavant.

mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'Your_password2';

Créez une base de données redmine.

mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;

Accordez les privilèges utilisateur à la base de données redmine.

mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

Quittez le Shell.

mysql> exit

Étape 4 - Installez Ruby et d'autres éléments requis

La dernière version de Redmine est compatible avec Ruby 3.1. Debian est livré avec Ruby 2.7, nous devrons donc installer la dernière version à l'aide de Ruby Version Manager (RVM).

Installez la clé GPG de RVM.

$ gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Installez RVM.

$ \curl -sSL https://get.rvm.io | bash -s stable

Sourcez les scripts RVM.

$ source ~/.rvm/scripts/rvm

Installez Ruby. Vous pouvez consulter la dernière version sur le site Web Ruby. Au moment de la rédaction de ce didacticiel, Ruby 3.1.3 est la dernière version de la série.

$ rvm install ruby-3.1.3

Vérifiez l'installation.

$ ruby -v
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]

Installez tous les packages restants requis par Redmine.

$ sudo apt install libxml2-dev libxslt1-dev zlib1g-dev imagemagick libmagickwand-dev libmysqlclient-dev apache2-dev build-essential libcurl4-openssl-dev

Étape 5 - Installer Redmine

Visitez la page de téléchargement de Redmine et vérifiez la dernière version stable disponible. Au moment de la rédaction de ce tutoriel, la dernière version disponible est la 5.0.5.

Utilisez wget pour télécharger Redmine.

$ wget https://www.redmine.org/releases/redmine-5.0.5.tar.gz

Vous pourriez obtenir l'erreur suivante lors du téléchargement de l'archive, car l'un des certificats racine du site Web a expiré.

WARNING: The certificate of ‘www.redmine.org’ is not trusted.
WARNING: The certificate of ‘www.redmine.org’ doesn't have a known issuer.
WARNING: The certificate of ‘www.redmine.org’ has expired.

Si vous obtenez cette erreur, exécutez plutôt la commande suivante pour télécharger.

$ wget https://www.redmine.org/releases/redmine-5.0.5.tar.gz --no-check-certificate

Extrayez et déplacez les fichiers vers le répertoire /var/www/redmine.

$ tar xfz redmine-5.0.5.tar.gz
$ sudo mv redmine-5.0.5 /var/www/redmine

Passez au répertoire /var/www/redmine.

$ cd /var/www/redmine

Vous obtiendrez le résultat suivant et un avertissement concernant la version de Ruby. Vous pouvez l’ignorer en toute sécurité.

RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,
you can ignore these warnings with 'rvm rvmrc warning ignore /var/www/redmine/Gemfile'.
To ignore the warning for all files run 'rvm rvmrc warning ignore allGemfiles'.

Unknown ruby interpreter version (do not know how to handle): >=2.5.0,<3.2.0.

Créez des fichiers de configuration Redmine à l'aide des exemples de fichiers fournis.

$ cp config/configuration.yml.example config/configuration.yml
$ cp config/database.yml.example config/database.yml
$ cp public/dispatch.fcgi.example public/dispatch.fcgi

Ouvrez le fichier database.yml pour le modifier.

$ nano config/database.yml

Recherchez et configurez les paramètres de votre base de données dans la section suivante.

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "Your_password2"
  # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
  encoding: utf8mb4

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Installez le bundler pour gérer les dépendances des gemmes Ruby.

$ gem install bundler

Définissez l'environnement pour l'installation des dépendances de gem.

$ bundle config set --local without 'development test'

Installez les dépendances de gem.

$ bundle install

Si vous rencontrez des problèmes avec les versions de gem, utilisez la commande suivante pour restaurer.

$ gem pristine --all

Ajoutez une dépendance webrick.

$ bundle add webrick

Générez une clé secrète aléatoire pour empêcher la falsification des cookies destinés au stockage des données de session.

$ bundle exec rake generate_secret_token

Créez la structure de la base de données.

$ RAILS_ENV=production bundle exec rake db:migrate

Insérez les données dans la base de données MySQL.

$ RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data

Créez les répertoires nécessaires et définissez les autorisations sur les fichiers.

$ mkdir -p tmp/pdf
$ mkdir -p public/plugin_assets
$ chown -R $USER:$USER files log tmp public/plugin_assets
$ chmod -R 755 /var/www/redmine/

Exécutez la commande suivante pour démarrer une instance de serveur Rails.

$ bundle exec rails server -u webrick -e production
=> Booting WEBrick
=> Rails 6.1.7.2 application starting in production http://0.0.0.0:3000
=> Run `bin/rails server --help` for more startup options
[2023-03-06 09:12:11] INFO  WEBrick 1.7.0
[2023-03-06 09:12:11] INFO  ruby 3.1.3 (2022-11-24) [x86_64-linux]
[2023-03-06 09:12:11] INFO  WEBrick::HTTPServer#start: pid=34652 port=3000

Ouvrez l'URL http://:3000/login pour obtenir l'écran de connexion Redmine.

Saisissez les informations d'identification par défaut (admin/admin) pour vous connecter. Il vous sera demandé de modifier le mot de passe.

Ensuite, vous serez redirigé vers la page Mon compte.

Redmine a été installé avec succès.

Ensuite, appuyez sur CTRL+C sur le terminal pour arrêter le serveur.

Étape 6 - Installer Phusion Passenger

Phusion Passenger est un serveur d'applications Ruby qui nous permet de servir Redmine via un serveur tiers. Dans notre cas, nous utiliserons Apache.

Installez Passager.

$ gem install passenger

Installez le module Passenger pour le serveur Apache.

$ passenger-install-apache2-module

Vous serez accueilli avec un message de bienvenue. Appuyez sur Entrée pour continuer.

Welcome to the Phusion Passenger Apache 2 module installer, v6.0.17.

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.
--------------------------------------------

Ensuite, il vous sera demandé la langue. Ruby est sélectionné par défaut, il suffit donc d'appuyer sur Entrée pour continuer.

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ? ?  Ruby
   ?  Python
   ?  Node.js
   ?  Meteor
--------------------------------------------

L’ensemble du processus prendra environ 10 à 15 minutes. Si vous obtenez une erreur comme celle-ci, cela est probablement dû à une RAM faible. Vous devez soit augmenter la RAM sur votre serveur, soit installer un espace de swap.

c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
rake aborted!

Une fois le processus terminé, vous recevrez le message suivant.

--------------------------------------------
Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /home/navjot/.rvm/gems/ruby-3.1.3/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/navjot/.rvm/gems/ruby-3.1.3/gems/passenger-6.0.17
     PassengerDefaultRuby /home/navjot/.rvm/gems/ruby-3.1.3/wrappers/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

N'appuyez pas encore sur Entrée. Ouvrez une nouvelle session sur votre serveur en tant qu'utilisateur actuel et effectuez les configurations suivantes.

Étape 7 - Configurer le serveur Apache

Créez un fichier de configuration de module Apache pour Phusion Passenger.

$ sudo nano /etc/apache2/conf-available/00-passenger.conf

Collez le code que vous avez obtenu à la fin de l'installation du passager.

 LoadModule passenger_module /home/navjot/.rvm/gems/ruby-3.1.3/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/navjot/.rvm/gems/ruby-3.1.3/gems/passenger-6.0.17
     PassengerDefaultRuby /home/navjot /.rvm/gems/ruby-3.1.3/wrappers/ruby
   </IfModule>

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Créez un autre fichier de configuration Apache pour le site Redmine.

$ sudo nano /etc/apache2/sites-available/redmine.conf

Collez-y le code suivant.

Listen 3000
<IfModule mod_passenger.c>
  PassengerRoot /home/navjot/.rvm/gems/ruby-3.1.3/gems/passenger-6.0.17
  PassengerDefaultRuby /home/navjot/.rvm/gems/ruby-3.1.3/wrappers/ruby
</IfModule>
<VirtualHost *:3000>
    ServerName redmine.example.com
    DocumentRoot "/var/www/redmine/public"

    CustomLog ${APACHE_LOG_DIR}/redmine_access.log combined
    ErrorLog ${APACHE_LOG_DIR}/redmine_error.log
    LogLevel warn

    <Directory "/var/www/redmine/public">
        Options Indexes ExecCGI FollowSymLinks
        Require all granted
        AllowOverride all
    </Directory>
</VirtualHost>

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Ouvrez le fichier de configuration principal d'Apache /etc/httpd/conf/httpd.conf pour le modifier.

$ sudo nano /etc/httpd/conf/httpd.conf

Recherchez la variable ServerName et décommentez en supprimant le hachage (#) devant elle et en définissant sa valeur comme suit.

ServerName localhost

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Activez le site Redmine et la configuration Phusion Passenger.

$ sudo a2ensite redmine.conf
$ sudo a2enconf 00-passenger.conf

Vérifiez votre configuration Apache.

$ sudo apachectl configtest
Syntax OK

Revenez en arrière et appuyez sur Entrée pour continuer votre installation Passager. Il effectuera quelques vérifications et vous devriez voir le message suivant une fois terminé.

Deploying a web application

To learn how to deploy a web app on Passenger, please follow the deployment
guide:

  https://www.phusionpassenger.com/library/deploy/apache/deploy/

Enjoy Phusion Passenger, a product of Phusion® (www.phusion.nl) :-)
https://www.phusionpassenger.com

Passenger® is a registered trademark of Phusion Holding B.V.

Redémarrez votre serveur Apache.

$ sudo systemctl restart apache2

Votre site Web devrait être disponible à l'adresse http://redmine.example.com:3000.

Ce n'est pas le moyen idéal pour accéder à Redmine. Il est toujours servi via le protocole HTTP non sécurisé et utilise un numéro de port. Nous installerons Nginx pour agir comme un proxy inverse et servirons Redmine en utilisant le protocole HTTPS pour améliorer cela. Avant de passer à l'installation et à la configuration de Nginx, nous devons configurer le certificat SSL.

Étape 8 - Installer Nginx

Debian 11 est livré avec une ancienne version de Nginx. Pour installer la dernière version, vous devez télécharger le référentiel officiel Nginx.

Importez la clé de signature de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ajoutez le référentiel pour la version stable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Mettez à jour les référentiels système.

$ sudo apt update

Installez Nginx.

$ sudo apt install nginx

Vérifiez l'installation. Debian nécessite que la commande suivante soit exécutée en utilisant sudo.

$ sudo nginx -v
nginx version: nginx/1.22.1

Changer le port d'écoute Apache

Pour éviter tout conflit avec Nginx, nous devons modifier le port par défaut qu'Apache écoute. Ouvrez le fichier /etc/apache2/ports.conf pour le modifier.

$ sudo nano /etc/apache2/ports.conf

Modifiez le port de 80 à 8080 comme suit.

Listen 8080

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Désactivez la configuration du site par défaut.

$ sudo a2dissite 000-default.conf

Redémarrez Apache.

$ sudo systemctl restart apache2

Démarrez le serveur Nginx.

$ sudo systemctl start nginx

Vérifiez l'état du serveur Nginx.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-03-06 10:29:44 UTC; 6s ago
       Docs: https://nginx.org/en/docs/
    Process: 53531 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 53532 (nginx)
      Tasks: 2 (limit: 1129)
     Memory: 1.7M
        CPU: 8ms
     CGroup: /system.slice/nginx.service
             ??53532 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
             ??53533 nginx: worker process

Étape 9 - Installer SSL

Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot à l'aide du référentiel Debian, soit récupérer la dernière version à l'aide de l'outil Snapd. Nous utiliserons la version Snapd.

Debian n'est pas fourni avec Snapd installé. Par conséquent, installez Snapd.

$ sudo apt install snapd

Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.

$ sudo snap install core && sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Générez le certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d redmine.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/redmine.example.com sur votre serveur.

Générez un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Vérifiez le service de planification de renouvellement Certbot.

$ sudo systemctl list-timers

Vous trouverez snap.certbot.renew.service comme l'un des services dont l'exécution est planifiée.

NEXT                        LEFT         LAST                        PASSED       UNIT                         ACTIVATES
Mon 2023-03-06 11:37:00 UTC 1h 2min left n/a                         n/a          snap.certbot.renew.timer     snap.certbot.renew.service
Mon 2023-03-06 13:37:15 UTC 3h 2min left Sun 2023-03-05 13:37:15 UTC 20h ago      systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Tue 2023-03-07 00:00:00 UTC 13h left     Mon 2023-03-06 00:00:15 UTC 10h ago      logrotate.timer              logrotate.service

Effectuez un essai à sec du processus pour vérifier si le renouvellement SSL fonctionne correctement.

$ sudo certbot renew --dry-run

Si vous ne voyez aucune erreur, vous êtes prêt. Votre certificat se renouvellera automatiquement.

Étape 10 - Configurer Nginx en tant que proxy inverse

Créez et ouvrez le fichier /etc/nginx/conf.d/redmine.conf pour le modifier.

$ sudo nano /etc/nginx/conf.d/redmine.conf

Collez-y le code suivant.

# Redirect all non-encrypted to encrypted
server {
    listen 80;
    server_name redmine.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;

    server_name redmine.example.com;

    ssl_certificate     /etc/letsencrypt/live/redmine.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/redmine.example.com/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/redmine.example.com/chain.pem;

	ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    access_log /var/log/nginx/redmine.access.log main;
    error_log  /var/log/nginx/redmine.error.log;

	location / {
        proxy_pass          http://localhost:3000;
        proxy_redirect      off;
        proxy_buffering     off;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.

Ouvrez le fichier /etc/nginx/nginx.conf pour le modifier.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Vérifiez la syntaxe du fichier de configuration Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le service Nginx pour activer la nouvelle configuration.

$ sudo systemctl restart nginx

Votre application Redmine doit être accessible sur https://redmine.example.com.

Vous devez supprimer l'entrée du port 3000 dans le pare-feu car elle n'est plus nécessaire.

$ sudo ufw delete allow 3000

Conclusion

Ceci conclut notre tutoriel dans lequel vous avez appris à installer Redmine Project Manager sur un serveur Debian 11. Vous avez également appris à servir l'application Redmine via Nginx en utilisant le protocole HTTPS. Si vous avez des questions, postez-les dans les commentaires ci-dessous.

Articles connexes: