- CSS 50.6%
- HTML 44%
- JavaScript 3.9%
- Dockerfile 1.5%
| .forgejo/workflows | ||
| assets | ||
| content | ||
| deploy | ||
| i18n | ||
| layouts | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| hugo.toml | ||
| README.md | ||
Site web NGX Ops
Site vitrine bilingue (EN / FR) de NGX Ops, généré avec Hugo et déployé par une action Forgejo.
- Aucune dépendance : un binaire Hugo, pas de Node, pas de thème externe.
- Aucune ressource tierce : pas de Google Fonts, pas de CDN, pas de cookie → pas de bandeau cookies.
- Tout le texte est en Markdown / YAML dans
content/.
Modifier le contenu
| Je veux modifier… | Fichier |
|---|---|
| Le texte de la page d'accueil | content/_index.en.md et content/_index.fr.md |
| Les mentions légales | content/legal-notice.{en,fr}.md |
| La politique de confidentialité | content/privacy.{en,fr}.md |
| Éditeur, SIRET, hébergeur, e-mail… | hugo.toml → [params.legal] (repris automatiquement dans les 2 langues) |
| Tous les liens (dépôt, démo, docs, script d'install…) | hugo.toml → [params.links] |
| Le menu | hugo.toml → [languages.*.menus] |
| Les petits libellés (footer, boutons) | i18n/en.yaml, i18n/fr.yaml |
| Les couleurs | assets/css/main.css → variables :root |
Les valeurs entre crochets [comme ceci] dans [params.legal] s'affichent surlignées en jaune sur le site tant qu'elles ne sont pas remplies.
Liens = variables
Aucune URL n'est écrite en dur dans le contenu. Elles sont toutes définies une seule fois dans hugo.toml → [params.links], et référencées par @cle :
secondary: { label: "Démo en ligne", url: "@demo" }
text: "Voir le [guide d'installation](@docsInstall)."
code: |
bash <(wget -qO- @getScript) ngxops
- Variante par langue : définissez
docsetdocs_en;@docsprend automatiquementdocs_ensur la version anglaise. - Dans le corps Markdown d'une page (mentions légales…) :
[le dépôt]({{</* link "repo" */>}}). - Une clé inconnue est signalée par un avertissement au build.
Le jour du passage sur ngx-ops.net, il suffit de modifier ces lignes.
Page d'accueil
Chaque bloc du front matter (hero, philosophy, migration, features, workflow, images, intelligence, integrations, quickstart, cta) est une section. Supprimer un bloc masque la section. Les champs texte acceptent le Markdown.
Pour afficher une capture d'écran du dashboard : déposez-la dans static/images/ et renseignez screenshot.image: "/images/dashboard.png".
Ajouter une page
Créez content/ma-page.en.md et content/ma-page.fr.md (même nom = traductions liées automatiquement). Utilisez slug: pour une URL traduite.
En local
hugo server # http://localhost:1313 (FR sur /fr/)
hugo --gc --minify # build dans public/
Déploiement
Build de l'image (action Forgejo)
.forgejo/workflows/build-and-push.yml construit l'image Docker du site et la pousse sur forge.rdr-it.com/ngx-ops/ngx-ops-website :
- sur un tag
v*→ image:<tag>et:latest; - en manuel (workflow_dispatch) depuis une autre branche que
main→ image:<branche>uniquement (pratique pour une préprod). Le lancement depuismainest refusé.
Secrets à définir dans le dépôt : REGISTRY_USER et REGISTRY_TOKEN (jeton avec write:package).
git tag v1.0.0 && git push origin v1.0.0
Lancer le site
deploy/docker-compose.yml donne un exemple prêt à l'emploi (conteneur en lecture seule, réseau proxy partagé avec NGX Ops). Le conteneur écoute sur le port 8080 : déclarez un vhost dans NGX Ops vers http://ngx-ops-website:8080.
docker compose pull && docker compose up -d
Le vhost interne (deploy/nginx.conf) inclut une CSP stricte. Si vous modifiez le petit script inline de layouts/baseof.html, recalculez son hash :
printf '%s' 'document.documentElement.classList.add("js")' | openssl dgst -sha256 -binary | base64
Langues
L'anglais est servi à la racine (/), le français sous /fr/. Pour inverser : defaultContentLanguage = "fr" dans hugo.toml (et adaptez les URL du menu).
Structure
content/ textes (Markdown)
i18n/ libellés d'interface
layouts/ gabarits HTML (home, page, 404, partials, shortcode legal)
assets/css|js style et script (minifiés + fingerprintés au build)
static/ favicon, images
deploy/ vhost Nginx + docker-compose d'exemple
.forgejo/ workflow CI/CD