Skip to content
23 changes: 22 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,24 @@ No emojis in `.astro`, `.ts`, `.css`, `.mjs`, scripts, or GitHub Actions files.
Use `$HOME` or `~/` instead of `/Users/<name>/` or any specific username in docs, scripts, and
config.

### Always Run the Content Review Agent

After every documentation update, before handing back, you MUST run the
**[`content-review-agent`](~/.claude/agents/content-review-agent.md)** on the changed files. Every
engineer in the organization has this agent installed and configured, so it is a required step of
the development flow, not optional.

- Run it on each file you added or modified (diff against `HEAD` for edits; full content for new
files).
- It detects AI writing patterns (em dashes, banned/hyperbolic words, weak "not just X but Y"
constructions, filler adjectives, flowery marketing language) and fixes bad sentences.
- Apply its fixes so zero violations remain. Then run the validation commands below.
- Respect the docs constraints while it edits: keep Starlight markdown structure, valid aside types
(`note`/`tip`/`caution`/`danger`), vendor neutrality, env short forms, and all code/CLI examples
intact. Markdown is expected in these `.md`/`.mdx` docs — do not strip it.

Invoke it via the Agent tool with `subagent_type: content-review-agent`.

---

## Docs Authoring Conventions
Expand Down Expand Up @@ -115,7 +133,10 @@ Always use the short forms:

## Validating Changes

Run these to validate before handing back (do not commit afterward):
Before handing back (do not commit afterward), first run the
[`content-review-agent`](~/.claude/agents/content-review-agent.md) on every changed file and apply
its fixes (see [Always Run the Content Review Agent](#always-run-the-content-review-agent)), then
run these to validate:

| Command | Purpose |
| ---------------- | ------------------------------------------- |
Expand Down
18 changes: 18 additions & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ export default defineConfig({
// Prod builds (iaas play, no PUBLIC_SITE_URL) resolve to the canonical host;
// dev/stg Docker builds set PUBLIC_SITE_URL to their own host.
site: process.env.PUBLIC_SITE_URL ?? 'https://docs.zcp.zsoftly.ca',
// OS image pages moved from /compute/ to /operating-systems/; keep old URLs alive.
redirects: {
'/public-cloud/compute/windows-11': '/public-cloud/operating-systems/windows-11',
'/public-cloud/compute/windows-server': '/public-cloud/operating-systems/windows-server',
},
// Screenshots in src/assets are already optimized .webp exported at display
// size, so skip Sharp's build-time re-encoding — it produced near-identical
// files (one output was larger than its source) and required a native libvips
Expand Down Expand Up @@ -303,6 +308,19 @@ export default defineConfig({
{ label: 'Backups', slug: 'public-cloud/backups-snapshots/backups' },
],
},
{
label: 'Operating System Images',
collapsed: true,
items: [
{ label: 'Overview', slug: 'public-cloud/operating-systems' },
{ label: 'Ubuntu', slug: 'public-cloud/operating-systems/ubuntu' },
{ label: 'Rocky Linux', slug: 'public-cloud/operating-systems/rocky-linux' },
{ label: 'AlmaLinux', slug: 'public-cloud/operating-systems/alma-linux' },
{ label: 'Oracle Linux', slug: 'public-cloud/operating-systems/oracle-linux' },
{ label: 'Windows 11 Pro', slug: 'public-cloud/operating-systems/windows-11' },
{ label: 'Windows Server', slug: 'public-cloud/operating-systems/windows-server' },
],
},
{
label: 'Networking',
collapsed: true,
Expand Down
Binary file added public/icons/marketplace/drupal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
User-agent: *
Allow: /

Sitemap: https://docs.zcp.zsoftly.ca/sitemap-index.xml
Binary file added src/assets/compute/console-vm-overview.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/compute/console-vnc-session.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions src/content/docs/changelog/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,31 @@ One-click application images for compute instances.
The official command-line tool for the platform. The entries below mirror the CLI's
[`CHANGELOG.md`](https://github.com/zsoftly/zcp-cli/blob/main/CHANGELOG.md) on GitHub.

### v0.0.19: June 21, 2026

**Manage IAM from the CLI: sub-users, roles, and permissions.** Everything in the portal's Profile
area is now scriptable. These commands are account-level (no `--region`/`--project`). See
[Roles & Permissions](/public-cloud/iam/roles) and [Users](/public-cloud/iam/users).

- **`zcp permission list`**: browse the permission catalog (filter with `--category`) to find the
slugs you assign to roles.
- **`zcp role`**: `list`, `get <slug>` (shows permissions + assigned users), `create`, `update`, and
`delete`. `--permission` is repeatable and **replaces** the role's full set; the built-in
`owner`/`service-administrator`/`service-viewer` roles are protected from edits.
- **`zcp sub-user`**: `list` (with `--role`/`--blocked` filters), `create`, `update`, `block`,
`unblock`, and `delete`. Sub-users are referenced by **ID or email**; new sub-users start blocked
until you `unblock` them.

**Load balancers and instance references.**

- **`zcp loadbalancer create` works**: it now sends the required first rule
(`--public-port`/`--private-port`/`--algorithm`) and can attach back-ends with `--vm`.
- **Reference an instance by ID, name, or slug** in every `instance` subcommand, with a clear error
when a name is ambiguous; `instance list` now shows the `ID` column and returns **all** VMs (the
list is paginated).
- **`reboot` refuses a non-`Running` VM** instead of silently no-op'ing, and `-o json`/`-o yaml`
emit full objects.

### v0.0.18: June 19, 2026

**Region and project are now required for region- and project-scoped commands.** This makes results
Expand Down
28 changes: 28 additions & 0 deletions src/content/docs/fr/changelog/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,34 @@ Images d'applications en un clic pour les instances de calcul.
L'outil en ligne de commande officiel de la plateforme. Les entrées ci-dessous reflètent le
[`CHANGELOG.md`](https://github.com/zsoftly/zcp-cli/blob/main/CHANGELOG.md) du CLI sur GitHub.

### v0.0.19 : 21 juin 2026

**Gérer l'IAM depuis la CLI : sous-utilisateurs, rôles et permissions.** Tout ce qui se trouve dans
la section Profil du portail est maintenant scriptable. Ces commandes sont de niveau compte (aucun
`--region`/`--project`). Voir [Rôles et permissions](/fr/public-cloud/iam/roles) et
[Utilisateurs](/fr/public-cloud/iam/users).

- **`zcp permission list`** : parcourir le catalogue des permissions (filtrer avec `--category`)
pour trouver les slugs à attribuer aux rôles.
- **`zcp role`** : `list`, `get <slug>` (affiche les permissions et les utilisateurs assignés),
`create`, `update` et `delete`. `--permission` est répétable et **remplace** tout l'ensemble du
rôle ; les rôles intégrés `owner`/`service-administrator`/`service-viewer` sont protégés contre
les modifications.
- **`zcp sub-user`** : `list` (avec les filtres `--role`/`--blocked`), `create`, `update`, `block`,
`unblock` et `delete`. Les sous-utilisateurs sont désignés par **ID ou courriel** ; les nouveaux
sous-utilisateurs sont bloqués jusqu'à ce que vous les débloquiez.

**Équilibreurs de charge et références d'instances.**

- **`zcp loadbalancer create` fonctionne** : la commande envoie désormais la première règle requise
(`--public-port`/`--private-port`/`--algorithm`) et peut attacher des serveurs dorsaux avec
`--vm`.
- **Désigner une instance par ID, nom ou slug** dans chaque sous-commande `instance`, avec une
erreur claire quand un nom est ambigu ; `instance list` affiche maintenant la colonne `ID` et
renvoie **toutes** les VM (la liste est paginée).
- **`reboot` refuse une VM qui n'est pas `Running`** au lieu de l'ignorer silencieusement, et
`-o json`/`-o yaml` renvoient des objets complets.

### v0.0.18 : 19 juin 2026

**La région et le projet sont désormais requis pour les commandes liées à une région ou à un
Expand Down
6 changes: 1 addition & 5 deletions src/content/docs/fr/public-cloud/affinity-groups/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@ Les groupes d'affinité contrôlent le placement des VM sur les hôtes hypervise
l'infrastructure infonuagique. Utilisez-les pour regrouper des VM afin de réduire la latence ou pour
les répartir entre plusieurs hôtes afin d'améliorer la tolérance aux pannes.

:::note

Captures d'écran à venir.

:::
![Page des groupes d'affinité dans le portail ZCP](../../../../../assets/affinity-groups/affinity-groups-affinity-groups.webp)

### Créer un groupe d'affinité

Expand Down
6 changes: 1 addition & 5 deletions src/content/docs/fr/public-cloud/auto-scaling/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@ temps réel, afin d'assurer la disponibilité tout en réduisant les coûts.
- Dans le menu de gauche, cliquez sur **Auto-Scaling**.
- Cliquez sur **Créer New**.

:::note

Captures d'écran à venir.

:::
![Formulaire de création d'un groupe de mise à l'échelle automatique](../../../../../assets/auto-scaling/auto-scaling-create-an-auto-scaling-group.webp)

### Étapes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,7 @@ Les sauvegardes automatiques coûtent 20 % du prix de la machine virtuelle.
cliquer sur **Take One Immediate** pour lancer une sauvegarde immédiate.
5. **Créer** : facturation : Hourly seulement, règle Fixed Prorata. Cliquez sur **Créer Backup**.

:::note

Captures d'écran à venir.

:::
![Étapes de création d'un calendrier de sauvegarde](../../../../../assets/backups-snapshots/backups-steps.webp)

Voir aussi : [Instantanés de VM](/fr/public-cloud/backups-snapshots/vm-snapshots),
[Instantanés de volume](/fr/public-cloud/storage/block-storage/snapshots)
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ tests.
- Dans le menu de gauche, cliquez sur **Instantanés** → onglet **Instances Snapshot**.
- Cliquez sur **Take Snapshot** ou sur l'icône **+**.

:::note

Captures d'écran à venir.

:::
![Créer un instantané de VM](../../../../../assets/backups-snapshots/vm-snapshots-create-a-vm-snapshot.webp)

### Étapes

Expand All @@ -26,11 +22,7 @@ Captures d'écran à venir.
4. **Nom de l'instantané** : fournissez un nom unique.
5. **Créer** : facturation : Hourly seulement, règle Fixed Prorata. Cliquez sur **Take Snapshot**.

:::note

Captures d'écran à venir.

:::
![Étapes de création d'un instantané de VM](../../../../../assets/backups-snapshots/vm-snapshots-steps.webp)

Voir aussi : [Instantanés de volume](/fr/public-cloud/storage/block-storage/snapshots),
[Sauvegardes](/fr/public-cloud/backups-snapshots/backups)
28 changes: 25 additions & 3 deletions src/content/docs/fr/public-cloud/cli/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Référence CLI
sidebar_position: 4
---

Référence complète des commandes de la CLI ZCP v0.0.9.
Référence complète des commandes de la CLI ZCP v0.0.19.

Pour la référence interactive avec recherche, consultez la
[référence de la CLI ZCP sur le site principal](https://cloud.zcp.zsoftly.ca).
Expand All @@ -15,8 +15,9 @@ sont propres à une région/un projet). Définissez-les une fois avec `zcp profi
une région et un projet par défaut, comme `aws configure`), ou passez `--region`/`--project` / les
variables `ZCP_REGION`/`ZCP_PROJECT`. Les exemples ci-dessous supposent une valeur par défaut
configurée. Les commandes de niveau compte (`dns`, `auth`, `profile`, `region`, `project`,
`cloud-provider`, `currency`, `billing-cycle`, `server`, `billing`/`support`/`dashboard`) sont
exemptées. Voir [Configuration](/fr/public-cloud/cli/configuration).
`cloud-provider`, `currency`, `billing-cycle`, `server`, `billing`/`support`/`dashboard`, ainsi que
les commandes IAM `sub-user`/`role`/`permission`) sont exemptées. Voir
[Configuration](/fr/public-cloud/cli/configuration).

:::

Expand Down Expand Up @@ -143,5 +144,26 @@ exemptées. Voir [Configuration](/fr/public-cloud/cli/configuration).
| `zcp billing list` | Afficher le sommaire de facturation |
| `zcp support list` | Lister les billets de soutien |

### Identité et accès (IAM)

De niveau compte — aucun `--region`/`--project` requis. Voir
[Rôles et permissions](/fr/public-cloud/iam/roles) et [Utilisateurs](/fr/public-cloud/iam/users)
pour le modèle et le catalogue complet des permissions.

| Commande | Description |
| ---------------------------------- | ------------------------------------------------------------------------------------ |
| `zcp permission list` | Lister le catalogue des permissions (filtrer avec `--category`) |
| `zcp role list` | Lister les rôles |
| `zcp role get <slug>` | Afficher un rôle avec ses permissions et ses utilisateurs |
| `zcp role create` | Créer un rôle (`--name`, `--permission <slug>` répétable) |
| `zcp role update <slug>` | Modifier un rôle (`--permission` **remplace** l'ensemble) |
| `zcp role delete <slug>` | Supprimer un rôle |
| `zcp sub-user list` | Lister les sous-utilisateurs (filtres `--role`, `--blocked`) |
| `zcp sub-user create` | Créer un sous-utilisateur (`--name`, `--email`, `--password`, `--role`, `--project`) |
| `zcp sub-user update <id\|email>` | Modifier le nom, le courriel, le rôle ou les projets |
| `zcp sub-user block <id\|email>` | Bloquer un sous-utilisateur (révoquer l'accès sans le supprimer) |
| `zcp sub-user unblock <id\|email>` | Débloquer un sous-utilisateur |
| `zcp sub-user delete <id\|email>` | Supprimer un sous-utilisateur |

Pour la liste complète de plus de 200 commandes, consultez le
[dépôt GitHub](https://github.com/zsoftly/zcp-cli).
18 changes: 3 additions & 15 deletions src/content/docs/fr/public-cloud/compute/connect-rdp.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ de les gérer à distance.
- Dans l'onglet **VM Overview**, repérez et copiez les champs **Nom d'utilisateur** et **Mot de
passe**.

:::note

Captures d'écran à venir.

:::
![Vue d'ensemble de l'instance affichant le nom d'utilisateur et le mot de passe utilisés pour RDP](../../../../../assets/compute/connect-rdp-access-the-instance-overview.webp)

## Lancer le client RDP

Expand All @@ -26,11 +22,7 @@ Captures d'écran à venir.
- **Linux** : installez **Remmina** (`sudo apt install remmina` sur Ubuntu/Debian), ouvrez Remmina
et sélectionnez RDP.

:::note

Captures d'écran à venir.

:::
![Lancement du client RDP](../../../../../assets/compute/connect-rdp-launch-the-rdp-client.webp)

## Connexion

Expand All @@ -41,11 +33,7 @@ Captures d'écran à venir.
computer", puis cliquez sur **Yes**.
5. Cliquez sur **OK** ou **Connect**.

:::note

Captures d'écran à venir.

:::
![Connexion à la VM via RDP](../../../../../assets/compute/connect-rdp-connect.webp)

## Voir aussi

Expand Down
6 changes: 1 addition & 5 deletions src/content/docs/fr/public-cloud/compute/connect-ssh.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,7 @@ Exemple :
ssh root@192.168.1.1
```

:::note

Captures d'écran à venir.

:::
![Connexion à une VM en SSH depuis un terminal](../../../../../assets/compute/connect-ssh-connecting.webp)

## Voir aussi

Expand Down
Loading
Loading