Gitea sous Apache : Différence entre versions
m |
(Aucune différence)
|
Version actuelle en date du 3 mai 2018 à 13:26
Gitea
étant une application indépendante qui démarre une serveur d'application sur le port 3000
par défaut.
Cet article présente la configuration Apache
mise en place pour exposer le serveur sur un site internet, en tant que sous domaine et en forçant l'accès par HTTPS
avec utilisation d'un certificat fourni par Let's Encrypt.
Sommaire
Votre avis
Nobody voted on this yet
|
|
Préparation environnement
Certbot sera utilisé pour demander et renouveler le certificat du site. Dans son fonctionnement, le process essaye d'accéder à un .well-known
à la racine du site. De plus, une bonne pratique consiste à fournir un répertoire racine pour les sites déployés sous Apache
. Le répertoire /var/www/git
est alors créé, ainsi que le sous répertoire .well-known
.
#sudo mkdir -p /var/www/git/.well-known
Il est recommandé de placer un fichier index.html
, avec un contenu vide, dans le répertoire racine, soit /var/www/git
.
<html>
<head>
</head>
<body>
</body>
</html>
De plus, un fichier robots.txt
y est placé avec les directives indiquant aux moteurs de recherche de ne rien indexer.
User-agent: *
Disallow: /
Les permissions mises en place donnent un accès uniquement aux compte du serveur, soit www-data
.
#sudo find /var/www/git -type f -exec chmod 0600 {} \; #sudo find /var/www/git -type d -exec chmod 0700 {} \; #sudo chown -R www-data:www-data /var/www/git
Configuration HTTP
Dans un premier temps, une configuration temporaire est mise en place pour accéder de façon non sécurisé.
Un fichier git
est créé dans le répertoire /etc/apache2/sites-available
avec le contenu suivant.
<VirtualHost *:80>
ServerAdmin contact-email@dummy.net
ServerName www.git.dummy.net
DocumentRoot /var/www/git
DirectoryIndex index.html
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/git_error.log
CustomLog ${APACHE_LOG_DIR}/git_access.log combined
<Directory /var/www/git>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyPreserveHost On
ProxyRequests off
ProxyPass /.well-known !
ProxyPass /robots.txt !
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Toutes les requêtes sont redirigées vers le serveur gitea
à l'adresse localhost:3000
, étant hébergé sur la même machine que le serveur Apache
. Les directives sur les accès /.well-known
et /robots.txt
permettent de ne pas tenir compte du proxy mis en place, et servira les éléments depuis la racine, soit /var/www/git
, du site.
Cette configuration doit être mise à disposition en plaçant un lien dans /etc/apache2/sites-enabled
.
#sudo ln -s /etc/apache2/sites-available/git /etc/apache2/sites-enabled/008-git.conf
Le nom du lien, à savoir 008-git.conf
, respecte une incrémentation sur la machine utilisée, il peut être remplacé pour tout autre nom valide pour Apache
.
Il suffit de relancer la configuration d'Apache
pour qu'elle soit prise en compte.
#sudo apache2ctl graceful
Certificat
L'application est à présent disponible avec l'URL http://www.git.dummy.net. Un certificat va être demandé à l'aide de Certbot.
#sudo certbot certonly --webroot -w /var/www/git -d www.git.dummy.net --email contact-email@dummy.net Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for www.git.dummy.net Using the webroot path /var/www/git for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.git.dummy.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.git.dummy.net/privkey.pem Your cert will expire on 2018-05-09. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Le certificat est stocké dans le répertoire /etc/letsencrypt/live/www.git.dummy.net/
.
Configuration HTTPS
Le certificat étant disponible, la configuration HTTPS
peut être mise en place.
Un fichier git-dummy-ssl
est créé dans le répertoire /etc/apache2/sites-available
avec le contenu suivant.
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin contact-email@dummy.net
ServerName www.git.dummy.net
DocumentRoot /var/www/git
DirectoryIndex index.html
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/git_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/git_ssl_access.log combined
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.git.dummy.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.git.dummy.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.git.dummy.net/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
<Directory /var/www/git>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyPreserveHost On
ProxyRequests off
ProxyPass /.well-known !
ProxyPassReverse /.well-known !
ProxyPass /robots.txt !
ProxyPassReverse /robots.txt !
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
</IfModule>
Les configurations mises en place dans le précédent paragraphe sont reprises et complétées avec la déclaration du certificat. De plus, une directive sur le Header
est mise en place afin de forcer l'accès au maximum l'accès sur le site sécurisé.
Cette configuration doit être mise à disposition en plaçant un lien dans /etc/apache2/sites-enabled
.
#sudo ln -s /etc/apache2/sites-available/git-dummy-ssl /etc/apache2/sites-enabled/009-git-ssl.conf
Le nom du lien, à savoir 009-git-ssl.conf
, respecte une incrémentation sur la machine utilisée, il peut être remplacé pour tout autre nom valide pour Apache
.
Enfin la configuration HTTP
, sur le port 80
, est modifiée pour forcer la redirection sur l'accès en HTTPS
. Le précédent fichier git
est modifié avec le contenu suivant.
<VirtualHost *:80>
contact-email@dummy.net
ServerName www.git.dummy.net
DocumentRoot /var/www/git
DirectoryIndex index.html
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/git_error.log
CustomLog ${APACHE_LOG_DIR}/git_access.log combined
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
Il suffit de relancer la configuration d'Apache
pour que les modifications soient prises en compte.
#sudo apache2ctl graceful