Post

LXC Debian trixie 105(devel) - Jekyll Chirpy static site

LXC Debian trixie 105(devel) - Jekyll Chirpy static site

Installer un générateur de site statique de type jekyll dans un conteneur proxmox LXC Debian 13

Proxmox LXC

Créer un container LXC Debian 13 , ouvrir la console shell et exécuter

1
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/debian.sh)"

Procédure manuelle Accès root avec mot de passe via ssh Ip fixe 192.168.0.227 gateway 192.168.0.254 dns 1.1.1.1 mémoire 2048Mb Dique 15Go

Debian 13

Se connecter en root via ssh

Créer utilisateur

Mise à jour debian

1
sudo apt update && sudo apt upgrade

Créer un utilisateur

1
2
3
4
adduser jek  # MP jek49
# droits root
apt install sudo
echo "jek     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/10-userx

Se reconnecter en mode utilisateur via ssh

Connexion avec clés

Sur le poste appelant Générer un jeu de clé

1
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/lxc-devel

Envoyer la clé publique sur le container lxc

1
ssh-copy-id -i ~/.ssh/lxc-devel.pub jek@192.168.0.227

Sur le container LXC

1
2
3
4
5
# passer en su
sudo -s
echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/jek.conf
# Redémarrer le serveur ssh
systemctl restart sshd

Sur le poste appelant Lancer la connexion SSH avec clé

1
ssh -i ~/.ssh/lxc-devel jek@192.168.0.227

Proxmox ajout partage NFS

Le partage NFS a été renommé chirpy et est monté sur /mnt/pve/chirpy

lxc.mount

Dans le conteneur LXC, commencez par créer le dossier qui va accueillir le point de montage.

1
2
mkdir /sav/media 
sudo chown 1000:1000 /srv/media

Dans le shell Proxmox ouvrir le fichier de configuration du conteneur LXC (conteneur 106).

1
nano /etc/pve/lxc/106.conf

Enfin, ajoutez la ligne suivante en pensant bien à l’adapter à votre configuration.

1
lxc.mount.entry = /mnt/pve/chirpy srv/media  none bind 0 0

Sauvegardez le tout (Ctrl+O), redémarrez le conteneur et normalement vous devriez avoir le point de montage qui apparait.

node

1
2
3
4
5
6
7
8
cd ~
sudo apt install curl -y
# Installer node v24
curl -sL https://deb.nodesource.com/setup_24.x -o nodesource_setup.sh
# lancez le script sous `sudo`:
sudo bash nodesource_setup.sh
# installer node
sudo apt install nodejs

Jekyll

Installation jekyll

1
2
3
4
5
6
sudo apt install ruby-full build-essential zlib1g-dev -y
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc 
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc 
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc 
source ~/.bashrc 
gem install jekyll bundler

jekyll-theme-chirpy

Générateur site statique (ruby+jekyll) Installer git et imagemagick

1
sudo apt install git imagemagick

Sur le home

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cd ~
git clone https://github.com/cotes2020/jekyll-theme-chirpy.git
# initialiser le dépôt
cd ~/jekyll-theme-chirpy
bash tools/init.sh
#
cd assets/img/favicons/
magick web-app-manifest-512x512.png -resize 16x16 favicon-16x16.png
magick web-app-manifest-512x512.png -resize 32x32 favicon-32x32.png
magick web-app-manifest-512x512.png -resize 150x150 mstile-150x150.png
magick web-app-manifest-512x512.png -resize 192x192 android-chrome-512x512.png
cp web-app-manifest-512x512.png android-chrome-512x512.png
# A partir d'un fichier svg
magick favicon.svg -resize 512x512 android-chrome-512x512.png
magick favicon.svg -resize 512x512 web-app-manifest-512x512.png
magick favicon.svg -resize 16x16 favicon-16x16.png
magick favicon.svg -resize 32x32 favicon-32x32.png
magick favicon.svg -resize 150x150 mstile-150x150.png
magick favicon.svg -resize 180x180 apple-touch-icon.png
magick favicon.svg -resize 192x192 android-chrome-512x512.png
magick favicon.svg favicon.ico
magick favicon.svg -resize 192x192 android-chrome-192x192.png
magick favicon.svg -resize 96x96 favicon-96x96.png

Retour racine

1
cd ~/jekyll-theme-chirpy

Modifier configuration _config.yml

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
# The Site Configuration

# Import the theme
theme: jekyll-theme-chirpy

# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
# If it has the same name as one of the files in folder `_data/locales`, the layout language wi>
# otherwise, the layout language will use the default value of 'en'.
lang: fr

# Change to your timezone › https://zones.arilyn.cc
timezone: Europe/Paris

# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
# ↓ --------------------------

title: Chirpy DEV # the main title

social:
  # Change to your full name.
  # It will be displayed as the default author of the posts and the copyright owner in the Foot>
  name: jek
  email: jek@cinay.eu # change to your email address

theme_mode: dark # [light | dark]

Modifier Gemfile

1
2
3
4
5
6
7
8
9
10
11
12
# frozen_string_literal: true

source "https://rubygems.org"

gemspec

gem "html-proofer", "~> 5.0", group: :test

gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"

gem "wdm", "~> 0.2.0"

Si Gemfile.lock existe, le supprimer Lancer

1
bundle

Info jekyll: bundle info jekyll

1
2
3
4
5
6
7
8
9
10
11
12
13
  * jekyll (4.4.1)
	Summary: A simple, blog aware, static site generator.
	Homepage: https://jekyllrb.com
	Source Code: https://github.com/jekyll/jekyll
	Changelog: https://github.com/jekyll/jekyll/releases
	Bug Tracker: https://github.com/jekyll/jekyll/issues
	Path: /home/jek/gems/gems/jekyll-4.4.1
	Reverse Dependencies: 
		jekyll-archives (2.3.0) depends on jekyll (>= 3.6, < 5.0)
		jekyll-include-cache (0.2.1) depends on jekyll (>= 3.7, < 5.0)
		jekyll-seo-tag (2.8.0) depends on jekyll (>= 3.8, < 5.0)
		jekyll-sitemap (1.4.0) depends on jekyll (>= 3.7, < 5.0)
		jekyll-theme-chirpy (7.4.1) depends on jekyll (~> 4.3)

Création des liens avec les dossiers files, images et _posts pour le générateur de site

1
2
3
ln -s /srv/media/statique/images $HOME/jekyll-theme-chirpy/images
ln -s /srv/media/statique/files $HOME/jekyll-theme-chirpy/files
ln -s /srv/media/statique/_posts $HOME/jekyll-theme-chirpy/_posts

Par défaut jekyll build génère le dossier _site

1
bundle exec jekyll serve --host 127.0.0.1

On utilise pour cela la commande bundle pour que la version de jekyll utilisée ainsi que celle des dépendances soient bien celles décrites dans les fichiers Gemfile et Gemfile.lock et ne dépendent pas de l’environnement de la machine.

Le serveur est lancé

1
2
3
4
5
6
7
8
9
10
Configuration file: /home/jek/jekyll-theme-chirpy/_config.yml
 Theme Config file: /home/jek/jekyll-theme-chirpy/_config.yml
            Source: /home/jek/jekyll-theme-chirpy
       Destination: /home/jek/jekyll-theme-chirpy/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
                    done in 59.712 seconds.
 Auto-regeneration: enabled for '/home/jek/jekyll-theme-chirpy'
    Server address: http://127.0.0.1:4000/
  Server running... press ctrl-c to stop.

Accès à la page par une redirection, lancer la commande depuis un terminal du réseau

1
ssh -L 9500:localhost:4000 jek@192.168.0.227
Cet article est sous licence CC BY 4.0 par l'auteur.