Aller au contenu

Hugo CareerCanvas — Installation et pièges sur Debian 12

Comment j'ai déployé mon CV en ligne avec Hugo CareerCanvas — les 7 pièges à éviter absolument.

Pourquoi CareerCanvas ?

CareerCanvas est le thème Hugo utilisé par felipecordero.com — un portfolio technique multilingue FR/EN/ES avec dark mode, timeline d'expérience et section projets.

Les prérequis indispensables

# Hugo Extended (pas la version standard)
wget https://github.com/gohugoio/hugo/releases/download/v0.147.1/hugo_extended_0.147.1_linux-amd64.deb
sudo dpkg -i hugo_extended_0.147.1_linux-amd64.deb

# Node.js 24 + npm (pour Tailwind CSS)
sudo apt install -y nodejs npm

# Go (pour les modules Hugo)
sudo apt install -y golang

Installation

sudo mkdir /var/www/mycv
sudo chown -R loic:loic /var/www/mycv
cd /var/www/mycv

# Cloner le repo exemple officiel
git clone https://github.com/felipecordero/felipecordero.github.io.git .

# Initialiser le submodule thème
git config --global --add safe.directory /var/www/mycv
git submodule update --init --recursive

# Installer les dépendances
npm install

Les 7 pièges

Piège 1 — Mauvaise version Hugo

CareerCanvas nécessite Hugo 0.147.1 Extended minimum. La version standard (sans Extended) ne supporte pas SCSS.

Piège 2 — Submodule non initialisé

Après le clone, le dossier themes/careercanvas/ est vide. Toujours lancer git submodule update --init --recursive.

Piège 3 — Ordre de build obligatoire

    npm run build:css   # ← TOUJOURS en premier
    npm run build       # ← Ensuite seulement Hugo

Piège 4 — baseURL incorrect

Le repo cloné pointe vers felipecordero.com.

    sed -i 's|baseURL = "https://felipecordero.com"|baseURL = "https://cv.macintouch.cloud"|' config.toml

Piège 5 — Pas d'index.html à la racine

Site multilingue → pages générées dans /public/fr/ et /public/en/. Créer un fichier de redirection à la racine.

Piège 6 — Permissions après build

    sudo chown -R loic:www-data /var/www/mycv/public
    sudo chmod -R 755 /var/www/mycv/public

Piège 7 — Jobs sudo suspendus

Si sudo se bloque : fermer le terminal et rouvrir une session SSH.

Config Nginx

server {
    listen 443 ssl;
    server_name cv.macintouch.cloud;
    root /var/www/mycv/public;
    index index.html;

    location / {
        try_files $uri $uri/ $uri.html =404;
    }
}

Commande de déploiement

cd /var/www/mycv
npm run build:css && npm run build
sudo chown -R loic:www-data /var/www/mycv/public