Installation du blog

Contenu

Authors: steph Summary: résumé pour l'index et les flux rss

Choix techniques

Moteur : Pélican

J'ai choisi le moteur de blog Pelican pour :

Cependant avec les commandes à taper & co, ce n'est pas pour qui veut juste taper un article et glisser des photos dans une interface

Registrar : Gandi

J'ai choisi d'avoir un nom de domaine et de le prendre chez Gandi pour l'éthique.

Hébergement : Framagit

Je ne voulais pas de Github, racheté par Microsoft, donc ai en premier lieu fait le choix des Gitlab pages, puis ai découvert qu'une instance de Gitlab, comprenant les pages, est hébergée par l'association Framasoft. Cette instance s'appelle Framagit.

L'association Framasoft, que j'ai connue par son annuaire de logiciels libres, a mené beaucoup d'autres actions notamment la campagne dégooglisons internet sur laquelle elle est revenue sur son blog.

C'est grâce à Framasoft que les Gitlab Pages ont été libérées : l'histoire est racontée sur linuxfr.

Création du blog

J'ai largement suivi le tutoriel du blog fullstackpython et celui de mister-gold.

Ne refaisant pas les manipulations en écrivant ce texte, je ne prétends pas à l'exhaustivité et il est possible que certaines erreurs soient présentes.

Création d'un projet sur framagit

Je me créé un compte sur Framagit, de nom d'utilisateur stephavelo, et créé un projet de même nom pour qu'il soit accessible par l'url stephavelo.frama.io.

Au début j'avais mis sa visibilité en private mais pour la génération par Framagit du certificat Let's Encrypt (pour le nom de domaine perso) je l'ai plus tard passé en public.

Génération d'une clé ssh

Via l'aide de Framagit, on génère la clé avec la commande

ssh-keygen -t ed25519 -C "<monadressemailframagit>"

Création d'un environnement virtuel et installation de Pélican

Après avoir créé un dossier ~/Documents/blog/, j'y installe pelican et markdown dans un environnement virtuel :

python3 -m venv staticblog
source staticblog/bin/activate
pip install pelican markdown

Je clone ensuite le répertoire du projet framagit dans lequel je vais stocker le blog et y lance l'assistant de pelican :

git clone https://framagit.org/stephavelo/stephavelo.git
cd stephavelo/
pelican-quickstart

Configuration de Pélican pour la publication

Le répertoire de sortie est par défaut output mais pour publier sur les pages de Framagit (Gitlab) il faut qu'il soit configuré en public :

Ajouter

OUTPUT_PATH = 'public/'

dans pelicanconf.py et publishconf.py puis remplacer

OUTPUTDIR=$(BASEDIR)/output

par

OUTPUTDIR=$(BASEDIR)/public

dans le Makefile

Test de Pélican en local

On créé d'abord un article dans le répertoire content, exemple

Title: Mon premier article
Date: 2019-04-27 17:25
Modified: 2019-04-27 17:25
Category: python
Tags: pelican, gitlab
Slug: mon-premier-article
Authors: steph
Summary: résumé pour l'index et les flux rss

Ici mon contenu

On peut générer le blog avec la commande

make html

puis ouvrir un serveur http de test à l'adresse

http://localhost:8000

avec la commande

make devserver

Configuration pour la publication via les Gitlab pages

Création des fichiers de configuration

Pour la création des fichiers requirements.txt, .gitlab-ci.yml et .gitignore j'ai repris ce qui est dit par mister-pro sous forme d'un script bash, ma paresse aidant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# https://mister-gold.pro/posts/en/deploy-pelican-on-gitlab-pages/

project_folder="/home/stephbuntu/Documents/blog/stephavelo"
echo ${project_folder}

# requirements.txt
fichier_requirements=${project_folder}/requirements.txt

cat > ${fichier_requirements} << EOL
pelican
markdown
EOL

# .gitlab-ci.yml continuous integration
fichier_yml=${project_folder}/.gitlab-ci.yml

cat > ${fichier_yml} << EOL
image: python:3.6-alpine

pages:
  script:
  - pip install -r requirements.txt
  - pelican -s publishconf.py
  artifacts:
    paths:
    - public/
EOL

# gitignore

fichier_gitignore=${project_folder}/.gitignore

cat > ${fichier_gitignore} << EOL
public/
*.pyc
EOL

Activation de l'intégration continue

D'après la documentation de Gitlab l'intégration continue est active pour toutes les nouvelles installations. Il faut juste avoir un fichier valide .gitlab-ci.yml à la racine du projet.

Publication du blog

Il n'y a plus qu'à vérifiier les fichiers modifiés, commiter et pusher avec git :

git add .
git status
git commit -m "Création"
git push origin master

Nom de domaine perso

J'ai utilisé le forum framacolibri , la doc de Framasoft, un post de Framasky et le forum de gitlab pour trouver comment changer la visibilité d'un projet.

Acheter un domaine

Préalable au reste ;-)

Ajouter le domaine dans Framagit

On va suivre la procédure de Framasoft.

Allez dans Paramètres / Pages et cliquez sur le bouton New Domain en haut à droite, puis remplissez seulement le champ Domain et laissez le reste vide pour l'instant, puis cliquez sur Create New Domain.

En cliquant sur Create new domain j'obtiens une erreur :

Certificate must be present if HTTPS-only is enabled.

Key must be present if HTTPS-only is enabled.

En allant dans les settings des pages je vois que la case Force HTTPS (requires valid certificate) est cochée, je la décoche. En retournant dans l'ajout de nom de domaine je peux maintenant entrer mon domaine, cliquer sur Create New Domain et j'obtiens des configurations DNS :

stephavelo.fr CNAME stephavelo.frama.io

Cependant, la configuration que j'obtiens est une CNAME or j'ai déjà une adresse mail pour ce domaine chez Gandi, je ne peux donc pas utiliser cette configuration, comme le dit JosephK sur le forum framacolibri :

JosephK 2018-03-15 14:43:20 UTC #2

En fait la doc de Gitlab précise que si le nom de domaine sert pour plusieurs services (dont le mail que Gandi propose par défaut dans ses DNS) alors il faut utiliser l’adresse IP (enregistrement A et AAAA) au lieu du CNAME et ajouter l’enregistrement TXT au niveau du domaine et pas du sous domaine « _gitlab-pages-verification-code.exemple.org. »

Si j'essaie d'ajouter cet enregistrement DNS dans l'interface de Gandi, j'obtiens une erreur :

Erreur : CNAME record must be the only record for @

Alors qu'avant modification j'ai en A et TXT

@ 10800 IN A 217.70.184.38
@ 10800 IN TXT "v=spf1 include:_mailcust.gandi.net ?all"

Je fais comme Plumf et modifie les enregistrements A et AAAA vers les IP des pages Framagit en IPV4 et IPV6, et l'enregistrement TXT avec le code de vérification donné lors de la création du domaine dans Framagit :

@ 1800 IN A 144.76.206.44
@ 1800 IN AAAA 2a01:4f8:200:1302::44
@ 1800 IN TXT "gitlab-pages-verification-code=<mon_code_de_verif>"

Ensuite comme dit dans la procédure de Framasoft on revient dans la gestion du domaine dans Framagit, on clique sur le bouton Vérifier et il passe en vert.

Accéder au site en HTTPS sans avertissement

En accédant au site avec le nom de domaine perso, il est automatiquement redirigé en https (ou alors c'est parce que j'ai https everywhere ?) et Firefox affiche un énorme avertissement. Pas cool.

La procédure de Framasoft et un post de Framasky m'apprennent qu'un script génère un certificat toutes les heures mais que pour cela il faut que :

  • au moins une page web soit déployée (ça c'est bon)
  • le script puisse accéder au dépôt, il faut donc que je le passe en public.

Le forum de gitlab m'apprend que pour changer la visibilité d'un projet il faut ajouter /edit à son url. Je me rends donc sur la page

https://framagit.org/stephavelo/stephavelo/edit

et change la visibilité du projet à public.

Une heure après, enfin à la prochaine heure de la forme HH:38, le site s'affiche sans avertissement.

Et voilà, prochaine étape les thèmes/plugins :)

Top