No description
  • CSS 50.6%
  • HTML 44%
  • JavaScript 3.9%
  • Dockerfile 1.5%
Find a file
2026-10-08 18:29:13 +02:00
.forgejo/workflows Update build.yml 2026-10-05 18:30:28 +02:00
assets 3 2026-10-05 18:54:04 +02:00
content mise a jour installation guide 2026-10-08 18:29:13 +02:00
deploy init 2026-10-05 17:08:29 +02:00
i18n init 2026-10-05 17:08:29 +02:00
layouts 3 2026-10-05 18:54:04 +02:00
static init 2026-10-05 17:08:29 +02:00
.dockerignore init 2026-10-05 17:08:29 +02:00
.gitignore init 2026-10-05 17:08:29 +02:00
Dockerfile init 2026-10-05 17:08:29 +02:00
hugo.toml mise a jour installation guide 2026-10-08 18:29:13 +02:00
README.md 3 2026-10-05 18:54:04 +02:00

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 docs et docs_en ; @docs prend automatiquement docs_en sur 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 depuis main est 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