From 90b2c3cf8fd1875d32f726a5cea6121c200cac9b Mon Sep 17 00:00:00 2001 From: ditahkk Date: Wed, 8 Jul 2026 11:25:39 -0400 Subject: [PATCH 1/6] Update marketplace documentation for Keycloak, Ollama, Portainer, Prometheus, Supabase, and Vaultwarden - Keycloak: Added software version details, environment variables, and updated installation steps for production setup. - Ollama: Included software version, environment variables, and streamlined installation instructions with first-boot configuration. - Portainer: Updated software version, installation steps, and emphasized security practices for production use. - Prometheus: Added software version, environment variables, and clarified installation and configuration steps. - Supabase: Included software version, environment variables, and detailed first-boot configuration and dashboard access. - Vaultwarden: Updated software version, installation steps, and emphasized security practices for production use. --- .../fr/public-cloud/marketplace/authentik.md | 140 +-- .../fr/public-cloud/marketplace/coolify.md | 122 ++- .../docs/fr/public-cloud/marketplace/dify.md | 148 ++- .../fr/public-cloud/marketplace/drupal.md | 157 ++- .../docs/fr/public-cloud/marketplace/ghost.md | 138 ++- .../docs/fr/public-cloud/marketplace/index.md | 943 +++++++++++++----- .../fr/public-cloud/marketplace/jenkins.md | 109 +- .../fr/public-cloud/marketplace/keycloak.md | 188 ++-- .../fr/public-cloud/marketplace/ollama.md | 178 ++-- .../fr/public-cloud/marketplace/portainer.md | 116 ++- .../fr/public-cloud/marketplace/prometheus.md | 173 ++-- .../fr/public-cloud/marketplace/supabase.md | 146 ++- .../public-cloud/marketplace/vaultwarden.md | 148 ++- .../public-cloud/marketplace/authentik.md | 129 ++- .../docs/public-cloud/marketplace/coolify.md | 108 +- .../docs/public-cloud/marketplace/dify.md | 133 ++- .../docs/public-cloud/marketplace/drupal.md | 142 ++- .../docs/public-cloud/marketplace/ghost.md | 126 +-- .../docs/public-cloud/marketplace/index.md | 238 ++--- .../docs/public-cloud/marketplace/jenkins.md | 94 +- .../docs/public-cloud/marketplace/keycloak.md | 171 ++-- .../docs/public-cloud/marketplace/ollama.md | 117 +-- .../public-cloud/marketplace/portainer.md | 107 +- .../public-cloud/marketplace/prometheus.md | 156 ++- .../docs/public-cloud/marketplace/supabase.md | 131 ++- .../public-cloud/marketplace/vaultwarden.md | 135 +-- 26 files changed, 2333 insertions(+), 2160 deletions(-) diff --git a/src/content/docs/fr/public-cloud/marketplace/authentik.md b/src/content/docs/fr/public-cloud/marketplace/authentik.md index 7fa6937..92ffe2c 100644 --- a/src/content/docs/fr/public-cloud/marketplace/authentik.md +++ b/src/content/docs/fr/public-cloud/marketplace/authentik.md @@ -2,18 +2,22 @@ title: Authentik --- -Authentik est un fournisseur d'identité libre qui centralise l'authentification de vos applications. -Il prend en charge le SSO via OAuth 2.0, OpenID Connect, SAML, LDAP et le proxy/forward-auth, avec -des flux, des politiques et un portail utilisateur en libre-service flexibles. Ce guide déploie -Authentik avec sa pile Docker Compose officielle. +Authentik est un fournisseur d'identité open source qui centralise l'authentification de vos +applications. Il prend en charge le SSO avec OAuth 2.0, OpenID Connect, SAML, LDAP et +proxy/forward-auth, avec des flux, des politiques et un portail utilisateur en libre-service. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Authentik préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu -24.04 LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installer Authentik -vous-même. +| Composant | Version | +| ---------- | --------------- | +| Authentik | 2025.6.3 | +| PostgreSQL | 16 | +| Redis | Alpine | +| Docker | Dernière stable | +| Ubuntu | 24.04 LTS | -::: +Authentik exécute ses conteneurs serveur et worker avec PostgreSQL et Redis, sous forme de pile +Docker Compose. ## Prérequis @@ -23,100 +27,96 @@ vous-même. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 40 Go | -## Déployer l'instance de base +## Variables d'environnement -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **Authentik** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Les deux - vous donnent une VM Ubuntu 24.04 propre. -2. Choisissez un forfait conforme aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +Vous pouvez les définir au déploiement d'Authentik depuis le Marketplace. Laissez un champ de mot de +passe vide pour générer automatiquement une valeur aléatoire sécurisée. -```bash -ssh ubuntu@ -``` +| Variable | Description | +| -------------------------- | ------------------------------------------------------- | +| `AUTHENTIK_ADMIN_EMAIL` | Adresse courriel du compte initial `akadmin` | +| `AUTHENTIK_ADMIN_PASSWORD` | Mot de passe du compte initial `akadmin` | +| `PG_PASS` | Mot de passe de la base PostgreSQL interne | +| `AUTHENTIK_SECRET_KEY` | Cle secrete utilisée pour signer les sessions et jetons | + +## Démarrage -4. Mettez le système à jour: +### 1. Se connecter à la VM ```bash -sudo apt update && sudo apt upgrade -y +ssh ubuntu@ ``` -## Installer Authentik - -Authentik fournit une pile Docker Compose officielle. Installez donc d'abord Docker Engine et le -plugin Compose. +### 2. Attendre la configuration au premier démarrage -Configurez le dépôt APT officiel de Docker pour Ubuntu 24.04 LTS (`noble`): +Au premier démarrage, un script génère les valeurs d'administration, de base de données et de clé +secrete, écrit le fichier d'environnement, puis démarre la pile avec Docker Compose. Cela prend 1 a +2 minutes. Suivez la progression: ```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:9000 ``` -## Configurer Authentik +Connectez-vous avec l'adresse courriel `akadmin` et le mot de passe génère. HTTPS est aussi +disponible sur le port 9443 avec un certificat autosigné. + +## Gérer Authentik -Téléchargez les images et démarrez la pile: +Authentik s'exécute comme pile Docker Compose dans `/opt/authentik`. ```bash -sudo docker compose pull -sudo docker compose up -d -``` +# Vérifier l'état +cd /opt/authentik && docker compose ps -Authentik sert HTTP sur le port 9000 et HTTPS sur le port 9443 par défaut. Terminez la configuration -de premier démarrage en accédant au flux initial-setup, qui crée le compte `akadmin` par défaut et -définit son mot de passe: +# Redémarrer +cd /opt/authentik && docker compose restart -```text -http://:9000/if/flow/initial-setup/ +# Voir les journaux +cd /opt/authentik && docker compose logs -f ``` -Pour un déploiement de production, faites pointer un enregistrement DNS vers la VM et placez -Authentik derrière TLS. Vous pouvez utiliser le HTTPS intégré sur le port 9443, ou le placer -derrière un reverse proxy (Caddy, nginx ou Traefik) qui termine TLS et redirige vers le port 9000. +Configuration d'environnement: `/opt/authentik/.env`. Les données de base de données, médias et +certificats sont stockées sous `/opt/authentik`. -## Ouvrir le pare-feu +## Sécurité -L'instance n'autorise que SSH (port 22) en externe par défaut. Ouvrez les ports qu'Authentik sert et -ajoutez-les aux règles réseau/sécurité de l'instance dans le portail: +Les ports 9000 (HTTP) et 9443 (HTTPS) sont ouverts sur l'interface réseau de la VM. UFW est activé +et autorise ces ports ainsi que SSH (port 22). Authentik sert un certificat autosigné par defaut +sur 9443. + +**Pour limiter l'accès à une adresse IP précise:** ```bash -sudo ufw allow 9000/tcp -sudo ufw allow 9443/tcp +sudo ufw delete allow 9000/tcp +sudo ufw delete allow 9443/tcp +sudo ufw allow from to any port 9000 +sudo ufw allow from to any port 9443 ``` -## Étapes suivantes +**En production**, pointez un enregistrement DNS vers la VM et placez Authentik derriere TLS, soit +avec le HTTPS intégré sur 9443 et votre propre certificat, soit avec un proxy inverse (Caddy, nginx +ou Traefik) qui termine TLS et relaie vers le port 9000. + +## Prochaines étapes - [Documentation Authentik](https://docs.goauthentik.io/) -- [Guide d'installation d'Authentik](https://docs.goauthentik.io/install-config/install/docker-compose/) +- [Reference de configuration](https://docs.goauthentik.io/docs/install-config/configuration/) diff --git a/src/content/docs/fr/public-cloud/marketplace/coolify.md b/src/content/docs/fr/public-cloud/marketplace/coolify.md index b926fcc..b3963be 100644 --- a/src/content/docs/fr/public-cloud/marketplace/coolify.md +++ b/src/content/docs/fr/public-cloud/marketplace/coolify.md @@ -2,17 +2,18 @@ title: Coolify --- -Coolify est une PaaS open source et auto-hébergée, alternative directe à Heroku, Netlify et Vercel. -Elle déploie des applications, des bases de données et des services sur votre propre serveur grâce à -des workflows basés sur Git et à un tableau de bord web, tout en gardant l'ensemble de vos données -sous votre contrôle. +Coolify est un PaaS open source auto-hébergé et une solution de remplacement a Heroku, Netlify et +Vercel. Il déploie des applications, bases de données et services sur votre propre serveur avec des +flux Git et un tableau de bord web, tout en gardant vos données sous votre contrôle. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Coolify préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu 24.04 -LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installer Coolify vous-même. - -::: +| Composant | Version | +| -------------- | --------------- | +| Coolify | 4.1.2 | +| Docker | Dernière stable | +| Docker Compose | Dernière stable | +| Ubuntu | 24.04 LTS | ## Prérequis @@ -22,74 +23,93 @@ LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installe | RAM | 2 Go | 4 Go | | Stockage | 30 Go | 60 Go | -## Déployer l'instance de base +Coolify exécute aussi les applications que vous déployez. Dimensionnez donc l'instance pour ces +charges de travail. -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +## Variables d'environnement - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +Vous pouvez définir cette variable au déploiement de Coolify depuis le Marketplace. - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +| Variable | Description | +| -------------- | --------------------------------------------------------------------------- | +| `COOLIFY_FQDN` | Nom de domaine complet du tableau de bord, par exemple `deploy.example.com` | -2. Choisissez un plan qui répond aux prérequis ci-dessus. +## Démarrage -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script génère les secrets de l'application et démarre toute la pile Coolify +avec Docker Compose. Cela prend 1 à 2 minutes. Suivez la progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u coolify-first-boot.service -f ``` -## Installer Coolify +Le message de connexion (MOTD) confirme quand Coolify est prêt. -Coolify fournit un installeur officiel en une ligne qui met en place Docker, Docker Compose et la -pile Coolify complète pour vous. Exécutez-le en tant que root: +### 3. Creer le compte administrateur -```bash -curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash +Ouvrez le tableau de bord dans votre navigateur: + +```text +http://:8000 ``` -L'installeur télécharge les images requises et démarre chaque service. Une fois terminé, il affiche -l'URL du tableau de bord. Rien d'autre n'a besoin d'être installé manuellement. +Le premier compte cree devient l'administrateur racine. Definissez immediatement une adresse +courriel et un mot de passe forts, car l'inscription se ferme apres le premier utilisateur. + +### 4. Configurer l'instance + +1. Dans **Settings**, definissez le domaine de l'instance afin que Coolify emette des certificats + TLS Let's Encrypt et serve le tableau de bord en HTTPS. Coolify inclut un proxy inverse intégré + qui gère le routage et les certificats pour le tableau de bord et vos applications déployées. Le + DNS doit pointer vers la VM avant l'emission des certificats. +2. Connectez une source Git (GitHub, GitLab ou dépôt générique) pour commencer a déployer des + applications. + +## Gérer Coolify + +Coolify s'exécute comme pile Docker Compose dans `/data/coolify/source`. + +```bash +# Vérifier l'état +cd /data/coolify/source && docker compose ps + +# Redémarrer +cd /data/coolify/source && docker compose restart + +# Voir les journaux +cd /data/coolify/source && docker compose logs -f +``` -## Configurer Coolify +Un resume des URL et des chemins est écrit dans `/data/coolify/info.txt`. -1. Ouvrez le tableau de bord dans votre navigateur à l'adresse `http://:8000`. -2. Le premier compte que vous créez devient l'administrateur racine. Définissez immédiatement une - adresse e-mail et un mot de passe robustes, car les inscriptions se ferment après le premier - utilisateur. -3. Sous **Settings**, définissez le domaine de votre instance afin que Coolify puisse émettre des - certificats TLS Let's Encrypt et servir le tableau de bord en HTTPS. Coolify inclut un reverse - proxy Traefik intégré qui gère le routage et les certificats à la fois pour le tableau de bord et - pour vos applications déployées, aucun proxy distinct n'est donc nécessaire. -4. Ajoutez la clé SSH publique de votre serveur et connectez une source Git (GitHub, GitLab ou un - dépôt générique) pour commencer à déployer des applications. +## Sécurité -## Ouvrir le pare-feu +Les ports 8000 (tableau de bord), 6001 (temps reel), 6002 (terminal), 80 et 443 sont ouverts sur +l'interface réseau de la VM. UFW est activé et autorise ces ports ainsi que SSH (port 22). Les ports +80 et 443 servent vos applications déployées et TLS. -Par défaut, l'instance n'autorise que le SSH (port 22) depuis l'extérieur. Ouvrez les ports dont -Coolify a besoin et ajoutez-les aux règles réseau/sécurité de l'instance dans le portail: +Lorsque vous configurez un domaine personnalise avec Let's Encrypt, accedez au tableau de bord en +HTTPS sur le port 443. Vous pouvez ensuite fermer les ports 8000, 6001 et 6002 si l'accès direct +n'est plus necessaire: ```bash -sudo ufw allow 8000/tcp -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -sudo ufw allow 6001/tcp -sudo ufw allow 6002/tcp +sudo ufw delete allow 8000/tcp +sudo ufw delete allow 6001/tcp +sudo ufw delete allow 6002/tcp ``` -Les ports 80 et 443 servent vos applications déployées et le TLS. Les ports 6001 et 6002 sont -utilisés par les fonctionnalités temps réel et terminal de Coolify. +Terminez rapidement la configuration administrateur apres le premier démarrage afin que personne +d'autre ne puisse reclamer le compte racine. -## Étapes suivantes +## Prochaines étapes - [Documentation Coolify](https://coolify.io/docs) -- [Guide d'installation de Coolify](https://coolify.io/docs/get-started/installation) +- [Demarrer avec Coolify](https://coolify.io/docs/get-started/introduction) diff --git a/src/content/docs/fr/public-cloud/marketplace/dify.md b/src/content/docs/fr/public-cloud/marketplace/dify.md index b7afd74..f4edba6 100644 --- a/src/content/docs/fr/public-cloud/marketplace/dify.md +++ b/src/content/docs/fr/public-cloud/marketplace/dify.md @@ -2,17 +2,22 @@ title: Dify --- -Dify est une plateforme libre pour créer des applications LLM et des agents d'IA. Elle combine un -constructeur de flux de travail visuel, des pipelines de génération augmentée par récupération -(RAG), la gestion des invites et un cadre d'agents, afin que les équipes puissent concevoir, tester -et déployer des applications d'IA générative depuis une seule interface. +Dify est une plateforme open source pour creer des applications LLM et des agents IA. Elle combine +un constructeur visuel de workflows, des pipelines de génération augmentée par récupération (RAG), +la gestion des prompts et un cadre d'agents pour concevoir, tester et déployer des applications d'IA +générative depuis une seule interface. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Dify préconstruite arrive bientôt. Pour l'instant, déployez une instance **Ubuntu 24.04 -LTS** neuve depuis la place de marché et suivez les étapes ci-dessous pour installer Dify vous-même. +| Composant | Version | +| -------------- | --------------- | +| Dify | 1.15.0 | +| Docker | Dernière stable | +| Docker Compose | Dernière stable | +| Ubuntu | 24.04 LTS | -::: +Dify s'exécute comme pile Docker Compose multi-conteneurs (API, worker, web, PostgreSQL, Redis, +stockage vectoriel Weaviate et nginx). ## Prérequis @@ -22,121 +27,96 @@ LTS** neuve depuis la place de marché et suivez les étapes ci-dessous pour ins | RAM | 4 Go | 8 Go | | Stockage | 40 Go | 80 Go | -Dify fonctionne comme une pile Docker Compose multi-conteneurs (API, worker, web, base de données, -magasin de vecteurs et nginx), de sorte que les besoins en RAM et en stockage augmentent avec -l'utilisation. +Les besoins en RAM et en stockage augmentent avec l'utilisation. -## Déployer l'instance de base +## Variables d'environnement -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +Vous pouvez les définir au déploiement de Dify depuis le Marketplace. Laissez un champ vide pour +générer automatiquement une valeur aléatoire sécurisée. - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +| Variable | Description | +| -------------------- | ------------------------------------------------------------------------------------------- | +| `DIFY_PUBLIC_URL` | URL de base publique (par exemple `https://dify.example.com`) pour console, API et webhooks | +| `DIFY_INIT_PASSWORD` | Mot de passe facultatif qui protege l'assistant unique `/install` | +| `DIFY_ENABLE_HTTPS` | Definir a `true` pour que nginx intégré serve HTTPS. Par defaut: `false` | - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +## Démarrage -2. Choisissez un plan qui répond aux prérequis ci-dessus. - -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script génère les secrets internes de base de données et Redis, écrit le +fichier d'environnement, puis démarre la pile avec Docker Compose. Cela prend quelques minutes, le +temps que les conteneurs deviennent sains. Suivez la progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u dify-first-boot.service -f ``` -## Installer Dify +Le message de connexion (MOTD) confirme quand Dify est prêt et affiche les identifiants internes. -Dify est fourni sous forme de pile Docker Compose, installez donc d'abord Docker Engine et le plugin -Compose. +### 3. Terminer la configuration administrateur -Configurez le dépôt APT officiel de Docker pour Ubuntu 24.04 LTS (`noble`): +Ouvrez un navigateur et terminez la configuration administrateur unique: -```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null </install ``` -Installez Docker Engine et le plugin Compose: +Creez le compte administrateur (adresse courriel et mot de passe de votre choix), puis +connectez-vous a `http:///`. Si vous avez defini `DIFY_INIT_PASSWORD`, saisissez-le +d'abord pour ouvrir l'assistant. -```bash -sudo apt update -sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -``` +### 4. Ajouter un fournisseur de modèle -Autorisez l'utilisateur `ubuntu` à exécuter Docker sans sudo, puis rouvrez votre session SSH: +Depuis **Settings → Model Provider**, ajoutez un fournisseur LLM (comme OpenAI, Anthropic ou un +point de terminaison Ollama auto-hébergé) avant de creer des applications. -```bash -sudo usermod -aG docker ubuntu -``` +### 5. Consulter les identifiants génères -Clonez la dernière version de Dify, copiez le fichier d'environnement et démarrez la pile: +Les mots de passe internes de PostgreSQL et Redis sont écrits dans un fichier réservé à root: ```bash -sudo apt install -y git jq -git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git -cd dify/docker -cp .env.example .env -docker compose up -d +sudo cat /etc/dify/credentials.txt ``` -Confirmez que tous les conteneurs sont actifs: +## Gérer Dify -```bash -docker compose ps -``` +Dify s'exécute comme pile Docker Compose dans `/opt/dify/docker`. -## Configurer Dify +```bash +# Vérifier l'état +cd /opt/dify/docker && docker compose ps -Le conteneur nginx de la pile publie les ports 80 et 443. Ouvrez un navigateur et effectuez la -configuration initiale de l'administrateur: +# Redémarrer +cd /opt/dify/docker && docker compose restart -```text -http:///install +# Voir les journaux +cd /opt/dify/docker && docker compose logs -f ``` -Créez le compte administrateur, puis connectez-vous à `http:///`. Depuis **Settings → -Model Provider**, ajoutez un fournisseur de LLM (tel qu'OpenAI, Anthropic ou un point de terminaison -Ollama auto-hébergé) avant de créer des applications. - -Pour la production, modifiez `dify/docker/.env` afin de définir une URL publique et d'activer HTTPS. -Dify peut terminer TLS via son nginx intégré (définissez `NGINX_HTTPS_ENABLED=true` et montez les -certificats), ou vous pouvez l'exécuter derrière votre propre proxy inverse. Appliquez les -modifications avec: +Configuration d'environnement: `/opt/dify/docker/.env`. Les données persistantes sont stockées sous +`/opt/dify/docker/volumes`. -```bash -cd ~/dify/docker -docker compose down && docker compose up -d -``` +## Sécurité -## Ouvrir le pare-feu +Les ports 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise SSH +(port 22), HTTP (80) et HTTPS (443). -L'instance n'autorise par défaut que SSH (port 22) en externe. Ouvrez les ports dont Dify a besoin -et ajoutez-les aux règles réseau/sécurité de l'instance dans le portail: +Dify sert HTTP en clair par defaut. **En production**, definissez `DIFY_PUBLIC_URL` avec votre +domaine et activéz HTTPS, soit avec le nginx intégré (`DIFY_ENABLE_HTTPS=true` avec vos propres +certificats), soit avec votre propre proxy inverse. Appliquez les changements `.env` avec: ```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp +cd /opt/dify/docker && docker compose down && docker compose up -d ``` -## Étapes suivantes +## Prochaines étapes - [Documentation Dify](https://docs.dify.ai/) -- [Guide d'installation Dify](https://docs.dify.ai/en/getting-started/install-self-hosted/docker-compose) +- [Guide d'auto-hébergément Dify](https://docs.dify.ai/en/getting-started/install-self-hosted/docker-compose) diff --git a/src/content/docs/fr/public-cloud/marketplace/drupal.md b/src/content/docs/fr/public-cloud/marketplace/drupal.md index cdf64fb..5af6c83 100644 --- a/src/content/docs/fr/public-cloud/marketplace/drupal.md +++ b/src/content/docs/fr/public-cloud/marketplace/drupal.md @@ -2,18 +2,24 @@ title: Drupal --- -Drupal est un système de gestion de contenu libre pour créer aussi bien des sites simples que des -applications complexes riches en contenu. Son modèle d'entités, sa taxonomie et son écosystème de -modules permettent aux équipes de définir des types de contenu personnalisés, des flux éditoriaux et -des sites multilingues sans écrire la tuyauterie elles-mêmes. +Drupal est un système de gestion de contenu open source pour les sites et applications riches en +contenu. Son modèle d'entités, sa taxonomie et son écosystème de modules permettent aux équipes de +créer des types de contenu personnalisés, des flux éditoriaux et des sites multilingues sans écrire +elles-mêmes le code sous-jacent. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Drupal préconstruite arrive bientôt. Pour l'instant, déployez une instance **Ubuntu 24.04 -LTS** neuve depuis la place de marché et suivez les étapes ci-dessous pour installer Drupal -vous-même. +| Composant | Version | +| --------- | --------- | +| Drupal | 11.4.1 | +| PHP | 8.3 | +| Apache | Dernière | +| MariaDB | Dernière | +| Drush | 13 | +| Ubuntu | 24.04 LTS | -::: +Drupal s'exécute sur une pile LAMP native (Apache, MariaDB, PHP). Le site est préinstallé avec le +profil **Standard**. Il est donc prêt à utiliser dès que la VM démarre. ## Prérequis @@ -23,117 +29,98 @@ vous-même. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 40 Go | -Drupal 11 fonctionne sur une pile LAMP (Linux, Apache, MySQL/MariaDB, PHP 8.3+). Les besoins en -stockage augmentent avec les téléversements de médias et le nombre de modules installés. - -## Déployer l'instance de base - -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +Les besoins de stockage augmentent avec les téléversements de médias et le nombre de modules +installés. - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +## Démarrage - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) - -2. Choisissez un plan qui répond aux prérequis ci-dessus. - -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script crée la base de données, installe le site Drupal avec Drush, puis +génère les mots de passe administrateur et base de données. Cela prend 1 à 2 minutes. Suivez la +progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u drupal-first-boot.service -f ``` -## Installer la pile LAMP +Le message de connexion (MOTD) confirme quand Drupal est prêt. -Installez Apache, MariaDB, PHP 8.3 et les extensions PHP dont Drupal a besoin: +### 3. Récupérer les identifiants administrateur + +Le mot de passe administrateur, ainsi que les identifiants de base de données, sont écrits dans un +fichier réservé à root: ```bash -sudo apt install -y apache2 mariadb-server \ - php php-cli php-mysql php-gd php-xml php-mbstring php-curl php-zip php-intl php-apcu \ - libapache2-mod-php composer git unzip +sudo cat /root/.credentials/drupal.txt ``` -Sécurisez la base de données et répondez aux invites (définissez un mot de passe root, supprimez les -utilisateurs anonymes et interdisez la connexion root à distance): +### 4. Se connecter à l'administration -```bash -sudo mysql_secure_installation +Ouvrez le site dans un navigateur: + +```text +http:/// ``` -Créez une base de données et un utilisateur dédié pour Drupal: +Connectez-vous depuis la page d'administration: -```bash -sudo mysql <<'SQL' -CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'change-this-password'; -GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost'; -FLUSH PRIVILEGES; -SQL +```text +http:///user/login ``` -## Installer Drupal +| Champ | Valeur | +| ----------------- | -------------------------------------- | +| Nom d'utilisateur | `admin` | +| Mot de passe | Depuis `/root/.credentials/drupal.txt` | + +## Gérer Drupal -Créez le projet avec Composer et confiez la propriété du répertoire racine à Apache: +Drupal est servi par Apache avec MariaDB. Les deux services sont gérés par systemd. ```bash -cd /var/www -sudo composer create-project drupal/recommended-project drupal -sudo chown -R www-data:www-data /var/www/drupal -``` +# Etat des services +systemctl status apache2 +systemctl status mariadb -Pointez Apache vers le répertoire racine `web/` et activez la réécriture d'URL: +# Redémarrer le serveur web +sudo systemctl restart apache2 -```bash -sudo tee /etc/apache2/sites-available/drupal.conf >/dev/null <<'EOF' - - DocumentRoot /var/www/drupal/web - - AllowOverride All - Require all granted - - ErrorLog ${APACHE_LOG_DIR}/drupal-error.log - CustomLog ${APACHE_LOG_DIR}/drupal-access.log combined - -EOF -sudo a2ensite drupal -sudo a2dissite 000-default -sudo a2enmod rewrite -sudo systemctl reload apache2 +# Exécuter des commandes Drush depuis la racine du projet +cd /var/www/drupal && vendor/bin/drush status +cd /var/www/drupal && vendor/bin/drush cache:rebuild ``` -## Terminer l'installateur Web +| Chemin | Rôle | +| ------------------------------------------------ | ----------------------------- | +| `/var/www/drupal` | Racine du projet | +| `/var/www/drupal/web` | Racine web | +| `/var/www/drupal/web/sites/default/settings.php` | Configuration du site | +| `/var/www/drupal/web/sites/default/files` | Fichiers et médias téléversés | -Ouvrez le site dans un navigateur et suivez l'assistant de configuration: +## Sécurité -```text -http:/// -``` +Le port 80 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et +HTTP (port 80). L'image sert uniquement HTTP en clair. -Choisissez le profil **Standard**, puis saisissez le nom de la base de données, l'utilisateur et le -mot de passe créés ci-dessus. L'installateur écrit `web/sites/default/settings.php` et crée le -compte administrateur. Pour la production, placez l'instance derrière votre propre domaine et -activez HTTPS (par exemple avec Certbot et le greffon Apache). +:::caution -## Ouvrir le pare-feu +Le site est livré avec `$settings['trusted_host_patterns']` configuré pour autoriser tout hôte +(`^.+$`). Avant de publier le site sur un domaine public, resserrez ce réglage dans +`/var/www/drupal/web/sites/default/settings.php` afin qu'il corresponde à votre nom d'hôte. -L'instance n'autorise par défaut que SSH (port 22) en externe. Ouvrez HTTP et HTTPS, et ajoutez les -mêmes ports aux règles réseau/sécurité de l'instance dans le portail: +::: -```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -``` +**En production**, placez l'instance derrière un proxy inverse avec TLS (par exemple Nginx ou Caddy) +afin que le site soit servi en HTTPS, puis mettez à jour `trusted_host_patterns` en conséquence. -## Étapes suivantes +## Prochaines étapes - [Documentation Drupal](https://www.drupal.org/docs) -- [Installer Drupal](https://www.drupal.org/docs/getting-started/installing-drupal) +- [Documentation Drush](https://www.drush.org/) diff --git a/src/content/docs/fr/public-cloud/marketplace/ghost.md b/src/content/docs/fr/public-cloud/marketplace/ghost.md index df19af2..4588912 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ghost.md +++ b/src/content/docs/fr/public-cloud/marketplace/ghost.md @@ -2,18 +2,19 @@ title: Ghost --- -Ghost est une plateforme de publication open source pour les blogs, les infolettres et les sites -d'adhésion. Elle associe un éditeur rapide et une distribution d'e-mails intégrée à une interface -épurée pilotée par des thèmes. L'outil officiel `ghost-cli` installe et gère un déploiement de -production sur Ubuntu. +Ghost est une plateforme de publication open source pour blogues, infolettres et sites avec +abonnements. Elle associe un éditeur rapide et l'envoi de courriels intégré à une interface publique +rapide, pilotée par des thèmes. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Ghost préconfigurée arrive bientôt. Pour l'instant, déployez une nouvelle instance -**Ubuntu 24.04 LTS** depuis la marketplace et suivez les étapes ci-dessous pour installer Ghost -vous-même. - -::: +| Composant | Version | +| --------- | --------- | +| Ghost | 5.97.0 | +| Node.js | 20.x | +| MySQL | 8.0 | +| nginx | Dernière | +| Ubuntu | 24.04 LTS | ## Prérequis @@ -23,104 +24,97 @@ vous-même. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 40 Go | -## Déployer l'instance de base +:::caution + +Ghost exige un nom de domaine. Il ne fonctionne pas avec une simple adresse IP. Fournissez +`GHOST_URL` au déploiement (voir ci-dessous) et pointez le DNS de ce domaine vers la VM. + +::: -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +## Variables d'environnement - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +Vous pouvez les définir au déploiement de Ghost depuis le Marketplace. Laissez `GHOST_DB_PASSWORD` +vide pour générer automatiquement une valeur aléatoire sécurisée. - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +| Variable | Description | +| ------------------- | ------------------------------------------------------------ | +| `GHOST_URL` | URL complète du site, par exemple `https://blog.example.com` | +| `GHOST_DB_PASSWORD` | Mot de passe de l'utilisateur MySQL `ghost` | -2. Choisissez un plan qui répond aux prérequis ci-dessus. +Si `GHOST_URL` n'est pas définie, la VM sert une page temporaire et laisse Ghost non configuré +jusqu'à ce que vous fournissiez un domaine. -3. Lorsque l'instance est **Running**, connectez-vous en SSH : +## Démarrage + +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour : +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script crée la base MySQL, configure Ghost pour votre `GHOST_URL`, écrit +l'hôte virtuel nginx et démarre le site comme service systemd. Cela prend 1 à 2 minutes. Suivez la +progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u ghost-first-boot.service -f ``` -## Installer Ghost +Le message de connexion (MOTD) confirme quand Ghost est prêt. -Le guide officiel de Ghost vise **Ubuntu 24.04 LTS**. Une installation de production nécessite -**nginx**, **MySQL 8**, une version LTS de **Node.js** et un **nom de domaine** enregistré. Ghost -échoue lorsqu'il est installé sur une adresse IP nue. +### 3. Terminer la configuration administrateur -Installez nginx et MySQL 8 : +Ouvrez l'administration dans un navigateur et créez le premier compte administrateur: -```bash -sudo apt install -y nginx mysql-server -sudo ufw allow 'Nginx Full' +```text +https://your-domain.com/ghost ``` -Installez une version LTS prise en charge de Node.js (Ghost prend en charge les lignes LTS actives, -cet exemple utilise la 22) : +Les identifiants de base de données générés sont écrits dans un fichier réservé à root: ```bash -sudo apt-get install -y ca-certificates curl gnupg -sudo mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ - | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" \ - | sudo tee /etc/apt/sources.list.d/nodesource.list -sudo apt-get update && sudo apt-get install -y nodejs +sudo cat /etc/ghost/credentials.txt ``` -Installez la CLI Ghost globalement : +### 4. Activer HTTPS -```bash -sudo npm install ghost-cli@latest -g -``` - -Créez le répertoire d'installation (appartenant à l'utilisateur `ubuntu`) et lancez l'installateur -depuis l'intérieur de celui-ci : +TLS n'est pas configuré automatiquement, car le DNS de votre domaine doit d'abord pointer vers la +VM. Une fois la résolution DNS active, provisionnez un certificat Let's Encrypt gratuit: ```bash -sudo mkdir -p /var/www/ghost -sudo chown ubuntu:ubuntu /var/www/ghost -sudo chmod 775 /var/www/ghost cd /var/www/ghost -ghost install +ghost setup ssl ``` -## Configurer Ghost +## Gérer Ghost -`ghost install` est interactif. Il demande l'URL de votre site (utilisez `https://your-domain.com`), -configure la base de données MySQL, met en place le service systemd et l'hôte virtuel nginx, et -propose de provisionner un certificat TLS Let's Encrypt gratuit. Acceptez-le pour un site de -production. +Ghost s'exécute comme service systemd par site nommé `ghost_` (par exemple +`ghost_blog-example-com`). Gérez-le depuis le répertoire d'installation: -À l'invite de la connexion MySQL, fournissez le mot de passe root que vous avez défini ci-dessus. -Ghost crée sa propre base de données et son propre utilisateur. Après l'installation, terminez la -configuration de l'administration à l'adresse : +```bash +# Afficher l'instance en cours et son nom de service +cd /var/www/ghost && ghost ls -```text -https://your-domain.com/ghost +# Redémarrer, arrêter et démarrer +ghost restart +ghost stop +ghost start ``` -Gérez l'instance avec les commandes `ghost` depuis `/var/www/ghost` (`ghost ls`, `ghost stop`, -`ghost start`, `ghost restart`). +Répertoire d'installation: `/var/www/ghost`. Le contenu (thèmes, images et données) se trouve sous +`/var/www/ghost/content`. -## Ouvrir le pare-feu +## Sécurité -L'instance n'autorise par défaut que le SSH (port 22) en externe. Ouvrez le ou les ports dont Ghost -a besoin et ajoutez-les aux règles réseau/de sécurité de l'instance dans le portail : +Les ports 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise SSH +(port 22), HTTP (80) et HTTPS (443). -```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -``` +**En production**, terminez l'étape Let's Encrypt ci-dessus afin que le site soit servi en HTTPS, et +limitez l'accès SSH aux plages IP connues. -## Étapes suivantes +## Prochaines étapes -- [Documentation Ghost](https://docs.ghost.org/) -- [Guide d'installation Ghost](https://docs.ghost.org/install/ubuntu) +- [Documentation Ghost](https://ghost.org/docs/) +- [Configurer Ghost](https://ghost.org/docs/config/) diff --git a/src/content/docs/fr/public-cloud/marketplace/index.md b/src/content/docs/fr/public-cloud/marketplace/index.md index b26eb89..0828a7e 100644 --- a/src/content/docs/fr/public-cloud/marketplace/index.md +++ b/src/content/docs/fr/public-cloud/marketplace/index.md @@ -3,147 +3,30 @@ title: Marketplace tableOfContents: false --- -Les images du Marketplace ZCP sont des modèles de VM préconfigurés qui se déploient en quelques -minutes depuis la console ZCP. Chaque image est fournie sur **Ubuntu 24.04 LTS** avec un service de -premier démarrage qui termine automatiquement la configuration. Les identifiants sont générés, les -services sont configurés et l'image est prête à utiliser. +Les images du Marketplace ZCP sont des modèles de VM préconfigurés qui se déploient en +quelques minutes depuis la console ZCP. Chaque image est fournie sur **Ubuntu 24.04 LTS** avec un +service de premier démarrage qui termine la configuration automatiquement. Les identifiants sont +générés, les services sont configurés et l’image est prête à utiliser.
- 20 + 32 images actives
- 21 - bientôt + 33 + à venir
- 7 - catégories + 11 + catégories
- Premier démarrage + Premier démarrage configuration automatique
-
-
-
- -
-

Bientôt disponible

-
-
- - -
-

Dify Bientôt

Créez des applications LLM et des agents IA avec workflows, RAG, prompts et fournisseurs de modèles.

-
- - -
-

Ollama Bientôt

Exécutez des LLM locaux sur votre VM et servez des modèles via l'API Ollama.

-
- - -
-

Qdrant Bientôt

Base vectorielle pour recherche sémantique, recommandations et pipelines de récupération IA.

-
- - -
-

Directus Bientôt

CMS headless et plateforme de données au-dessus de bases SQL existantes.

-
- - -
-

NocoDB Bientôt

Alternative libre à Airtable pour transformer des bases de données en tables collaboratives.

-
- - -
-

Coolify Bientôt

PaaS auto-hébergé pour déployer applications, bases de données et services depuis Git.

-
- - -
-

Ghost Bientôt

Plateforme de publication pour blogues, infolettres, abonnements et sites de créateurs.

-
- - -
-

Bagisto Bientôt

Plateforme e-commerce Laravel avec boutique, administration, inventaire et commandes.

-
- - -
-

ERPNext Bientôt

ERP libre pour comptabilité, CRM, inventaire, projets, RH et plus.

-
- - -
-

Medusa Bientôt

Backend de commerce composable pour vitrines personnalisées et marketplaces.

-
- - -
-

Zammad Bientôt

Plateforme d'assistance client pour tickets, courriel, clavardage et workflows.

-
- - -
-

Vaultwarden Bientôt

Serveur léger compatible Bitwarden pour la gestion des mots de passe.

-
- - -
-

Uptime Kuma Bientôt

Surveillance de disponibilité auto-hébergée avec pages de statut, alertes et tableaux de bord.

-
- - -
-

Gatus Bientôt

Tableau de bord de santé de services avec contrôles d'endpoint et alertes.

-
- - -
-

Prometheus Bientôt

Collecte de métriques et alertes pour infrastructure et applications.

-
- - -
-

Zabbix Bientôt

Surveillance d'entreprise pour serveurs, réseaux, applications et services.

-
- - -
-

Beszel Bientôt

Surveillance légère de serveurs avec agents, métriques, alertes et historique.

-
- - -
-

Headplane Bientôt

Interface Web pour administrer un serveur de contrôle Headscale auto-hébergé.

-
- - -
-

Pelican Panel Bientôt

Panneau de gestion pour exécuter et administrer des serveurs de jeu.

-
- - -
-

Pterodactyl Bientôt

Panneau de contrôle de serveurs de jeu avec conteneurs isolés et administration Web.

-
- - -
-

Drupal Bientôt

CMS libre et flexible pour sites et applications riches en contenu.

-
- -
-
- - - + + +
+
+
+ +
+

Panneaux de contrôle

+
+
+ +
- +
-

InfluxDB 2

-

Base de séries temporelles conçue pour les métriques et l'analyse en temps réel

+

cPanel

+

Panneau de contrôle d’hébergement web standard avec WHM. Gérez sites web, courriels, DNS et bases de données depuis une interface unique

@@ -291,29 +164,19 @@ services sont configurés et l'image est prête à utiliser.
- +
-

Piles Web

+

Serveurs web

-

Pile LEMP

-

Linux, Nginx, MariaDB et PHP. Pile haute performance avec Docker Compose

+

LEMP Stack

+

Linux, Nginx, MariaDB et PHP. Pile haute performance via Docker Compose

@@ -332,30 +195,40 @@ services sont configurés et l'image est prête à utiliser.
-
- +
+
-

Surveillance et automatisation

+

CMS

@@ -377,7 +250,7 @@ services sont configurés et l'image est prête à utiliser.

Docker

-

Environnement d'exécution de conteneurs avec Docker CE et Docker Compose préinstallés

+

Moteur de conteneurs avec Docker CE et Docker Compose préinstallés

@@ -387,39 +260,47 @@ services sont configurés et l'image est prête à utiliser.

Node.js 24

-

Environnement d'exécution Node.js LTS avec PM2 pour les processus persistants

+

Environnement Node.js LTS avec PM2 pour la gestion persistante des processus

- +
- +
-

OpenClaw

-

Outil basé sur Node.js pour flux de travail et intégrations automatisés

+

GitLab CE 18.11

+

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets in one application

-
-
+ +
+ +
+
+

Jenkins

+

Serveur d’automatisation pour compiler, tester et déployer.

+
+
-
-
-
- -
-

DevOps et gestion du code source

-
-
+ +
+ +
+
+

Portainer

+

Interface web pour gérer Docker, Swarm et Kubernetes.

+
+
- +
- +
-

GitLab CE 18.11

-

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets dans une seule application

+

Coolify

+

PaaS auto-hébergé pour déployer applications, bases de données et services.

@@ -428,53 +309,591 @@ services sont configurés et l'image est prête à utiliser.
- - + + + + + + + + + +
+
+
+ +
+

À venir

+
+
+ + +
+ +
+
+

Qdrant À venir

+

Base vectorielle pour recherche sémantique et pipelines de récupération IA.

+
+
+ + +
+ +
+
+

Medusa À venir

+

Moteur de commerce headless API-first pour boutiques en ligne personnalisées.

+
+
+ + +
+ +
+
+

Bagisto À venir

+

Plateforme e-commerce Laravel open source pour boutiques en ligne.

+
+
+ + +
+ +
+
+

Pterodactyl À venir

+

Gérez des serveurs de jeu dans des conteneurs isolés via un panneau web.

+
+
+ + +
+ +
+
+

Pelican Panel À venir

+

Panneau de contrôle open source moderne et rapide pour serveurs de jeu.

+
+
+ + +
+ +
+
+

ERPNext À venir

+

CRM, comptabilité, RH et inventaire dans une suite open source.

+
+
+ + +
+ +
+
+

NocoDB À venir

+

Alternative open source à Airtable qui transforme des bases de données en tables.

+
+
+ + +
+ +
+
+

Directus À venir

+

CMS headless et plateforme de données au-dessus de bases SQL.

+
+
+ + +
+ +
+
+

Uptime Kuma À venir

+

Surveillez sites et services avec tableaux de bord et alertes.

+
+
+ + +
+ +
+
+

Beszel À venir

+

Surveillance serveur légère en temps réel avec un petit agent.

+
+
+ + +
+ +
+
+

Gatus À venir

+

Page de statut automatisée et tableau de santé pour services.

+
+
+ + +
+ +
+
+

Headplane À venir

+

Interface web pour gérer votre réseau Headscale auto-hébergé.

+
+
+ + +
+ +
+
+

Zammad À venir

+

Centre d’assistance et billetterie auto-hébergés pour support client.

+
+
+ + +
+ +
+
+

Zabbix À venir

+

Surveillance d’infrastructure et d applications de niveau entreprise.

+
+
+ + +
+ +
+
+

OpenBao À venir

+

Gestion open source des secrets et chiffrement des données.

+
+
+ + +
+ +
+
+

Rancher À venir

+

Gérez des clusters Kubernetes depuis une console web unique.

+
+
+ + +
+ +
+
+

Nginx Proxy Manager À venir

+

Gestion du proxy inverse et SSL avec une interface web simple.

+
+
+ + +
+ +
+
+

Nginx À venir

+

Serveur web et proxy inverse haute performance.

+
+
+ + +
+ +
+
+

HAProxy À venir

+

Répartiteur de charge TCP et HTTP fiable et haute performance.

+
+
+ + +
+ +
+
+

Apache Tomcat À venir

+

Java servlet container for running web applications.

+
+
+ + +
+ +
+
+

RabbitMQ À venir

+

Reliable message broker for queues and event-driven apps.

+
+
+ + +
+ +
+
+

Apache Kafka À venir

+

Distributed event streaming platform for real-time data.

+
+
+ + +
+ +
+
+

SeaweedFS À venir

+

Fast distributed file and object storage system.

+
+
+ + +
+ +
+
+

Nexus À venir

+

Dépôt universel d’artefacts pour builds et dépendances.

+
+
+ + +
+ +
+
+

Artifactory À venir

+

Dépôt d’artefacts JFrog pour binaires et paquets.

+
+
+ + +
+ +
+
+

Harbor À venir

+

Registre de conteneurs sécurisé avec analyse des vulnérabilités.

+
+
+ + +
+ +
+
+

Forgejo À venir

+

Forge Git auto-hébergée légère, dérivée de Gitea.

+
+
+ + +
+ +
+
+

Gitea À venir

+

Service Git auto-hébergé léger.

+
+
+ + +
+ +
+
+

Neo4j À venir

+

Base de données graphe pour données connectées et requêtes relationnelles.

+
+
+ + +
+ +
+
+

ClickHouse À venir

+

Base de données en colonnes rapide pour analyses en temps réel (OLAP).

+
+
+ + +
+ +
+
+

Mattermost À venir

+

Plateforme auto-hébergée de messagerie d’équipe et de collaboration.

+
+
+ + +
+ +
+
+

Wiki.js À venir

+

Modern self-hosted wiki and documentation platform.

+
+
+ + +
+ +
+
+

WG-Easy À venir

+

The easiest way to run WireGuard VPN with a web UI.

diff --git a/src/content/docs/fr/public-cloud/marketplace/jenkins.md b/src/content/docs/fr/public-cloud/marketplace/jenkins.md index 5c8ee0e..a47596c 100644 --- a/src/content/docs/fr/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/fr/public-cloud/marketplace/jenkins.md @@ -2,18 +2,18 @@ title: Jenkins --- -Jenkins est un serveur d'automatisation open source pour la construction, les tests et le -déploiement de logiciels. Son modèle de pipeline-as-code et son vaste écosystème de plugins vous -permettent de mettre en place l'intégration continue et la livraison continue pour presque n'importe -quelle chaîne d'outils. L'interface web s'exécute sur le port 8080. +Jenkins est un serveur d'automatisation open source pour compiler, tester et déployer des logiciels. +Son modèle pipeline-as-code et son grand écosystème de plugins permettent de connecter l'intégration +continue et la livraison continue à presque n'importe quelle chaîne d'outils. L'interface web +s'exécute sur le port 8080. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Jenkins préconfigurée arrive bientôt. Pour l'instant, déployez une nouvelle instance -**Ubuntu 24.04 LTS** depuis la marketplace et suivez les étapes ci-dessous pour installer Jenkins -vous-même. - -::: +| Composant | Version | +| --------- | ------------- | +| Jenkins | 2.555.3 (LTS) | +| OpenJDK | 21 (JRE) | +| Ubuntu | 24.04 LTS | ## Prérequis @@ -23,83 +23,84 @@ vous-même. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 50 Go | -## Déployer l'instance de base +## Démarrage -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **Jenkins** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Dans les - deux cas, vous obtenez une VM Ubuntu 24.04 propre. -2. Choisissez un plan qui répond aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH : +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour : +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script lance Jenkins. Jenkins génère ensuite un mot de passe administrateur +initial unique pour cette instance. Le premier démarrage peut prendre quelques minutes. Suivez la +progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u jenkins-first-boot.service -f ``` -## Installer Jenkins +Le message de connexion (MOTD) confirme quand Jenkins est prêt. -Jenkins s'exécute sur la JVM. Installez d'abord un OpenJDK pris en charge (17 ou 21) : +### 3. Récupérer le mot de passe administrateur initial ```bash -sudo apt install -y fontconfig openjdk-21-jre -java -version +sudo cat /var/lib/jenkins/secrets/initialAdminPassword ``` -Ajoutez la clé de signature et la liste de sources du dépôt apt Jenkins LTS : +### 4. Terminer l'assistant de configuration -```bash -sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \ - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key +Ouvrez un navigateur et allez à: -echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" \ - | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null +```text +http://:8080 ``` -Installez Jenkins : +Collez le mot de passe administrateur initial, installez les plugins suggérés, puis créez votre +premier compte administrateur. -```bash -sudo apt update -sudo apt install -y jenkins -``` +## Gérer Jenkins -Le paquet installe un service systemd qui démarre au démarrage du système. Vérifiez qu'il est en -cours d'exécution : +Jenkins s'exécute comme service systemd. ```bash -sudo systemctl enable --now jenkins -sudo systemctl status jenkins +# Vérifier l'état +systemctl status jenkins + +# Redémarrer +sudo systemctl restart jenkins + +# Voir les journaux +sudo journalctl -u jenkins -f ``` -## Configurer Jenkins +Répertoire Jenkins home (tâches, plugins et configuration): `/var/lib/jenkins`. -Jenkins écoute sur le port 8080. Ouvrez `http://:8080` dans un navigateur pour démarrer -l'assistant de configuration. L'assistant demande d'abord le mot de passe de déverrouillage généré -automatiquement. Affichez-le depuis le serveur : +## Sécurité -```bash -sudo cat /var/lib/jenkins/secrets/initialAdminPassword -``` +Le port 8080 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et +Jenkins (port 8080). Aucun port d'agent de build (50000) n'est ouvert par défaut. -Collez la valeur, installez les plugins suggérés et créez votre premier compte administrateur. Pour -une configuration de production, placez Jenkins derrière un reverse proxy tel que nginx avec un -certificat TLS, puis servez l'interface en HTTPS au lieu d'exposer directement le port 8080. +**Pour limiter l'interface à une adresse IP précise:** -## Ouvrir le pare-feu +```bash +sudo ufw delete allow 8080/tcp +sudo ufw allow from to any port 8080 +``` -L'instance n'autorise par défaut que le SSH (port 22) en externe. Ouvrez le ou les ports dont -Jenkins a besoin et ajoutez-les aux règles réseau/de sécurité de l'instance dans le portail : +**Pour accéder à l'interface sans ouvrir le pare-feu, utilisez un tunnel SSH:** ```bash -sudo ufw allow 8080/tcp +# Exécuter cette commande sur votre machine locale +ssh -L 8080:localhost:8080 ubuntu@ ``` -## Étapes suivantes +**En production**, placez Jenkins derrière un proxy inverse comme nginx avec un certificat TLS, et +servez l'interface en HTTPS au lieu d'exposer directement le port 8080. + +## Prochaines étapes - [Documentation Jenkins](https://www.jenkins.io/doc/) -- [Guide d'installation Jenkins](https://www.jenkins.io/doc/book/installing/linux/) +- [Gérer les plugins](https://www.jenkins.io/doc/book/managing/plugins/) +- [Référence Pipeline](https://www.jenkins.io/doc/book/pipeline/) diff --git a/src/content/docs/fr/public-cloud/marketplace/keycloak.md b/src/content/docs/fr/public-cloud/marketplace/keycloak.md index 25355cb..8eb2b15 100644 --- a/src/content/docs/fr/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/fr/public-cloud/marketplace/keycloak.md @@ -2,19 +2,21 @@ title: Keycloak --- -Keycloak est une plateforme libre de gestion des identités et des accès. Elle fournit -l'authentification unique (SSO), la fédération d'utilisateurs, la connexion via les réseaux sociaux -et le courtage d'identité, ainsi qu'une autorisation fine grâce à des protocoles standards comme -OpenID Connect, OAuth 2.0 et SAML. Ce guide exécute le conteneur Keycloak officiel, avec des notes -pour un démarrage rapide en développement et pour une mise en production. +Keycloak est une plateforme open source de gestion des identités et des accès. Elle fournit le SSO, +la fédération d'utilisateurs, la connexion sociale ou par courtier d'identité, et des autorisations +fines avec des protocoles standard comme OpenID Connect, OAuth 2.0 et SAML. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Keycloak préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu -24.04 LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installer Keycloak -vous-même. +| Composant | Version | +| ---------- | --------------- | +| Keycloak | 26.0.7 | +| PostgreSQL | 16 | +| Docker | Dernière stable | +| Ubuntu | 24.04 LTS | -::: +Keycloak s'exécute en mode production (`start`) avec une base PostgreSQL, sous forme de pile Docker +Compose. ## Prérequis @@ -24,134 +26,106 @@ vous-même. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 40 Go | -## Déployer l'instance de base +## Variables d'environnement + +Vous pouvez les définir au déploiement de Keycloak depuis le Marketplace. Laissez un champ de mot de +passe vide pour générer automatiquement une valeur aléatoire sécurisée. + +| Variable | Description | +| ------------------------- | ----------------------------------------------------------------------------------- | +| `KEYCLOAK_ADMIN_PASSWORD` | Mot de passe du compte initial `admin` | +| `KC_DB_PASSWORD` | Mot de passe de la base PostgreSQL interne | +| `KC_HOSTNAME` | Nom d'hôte public ou IP depuis lequel Keycloak est servi. Par défaut: l'IP de la VM | +| `KC_BEHIND_PROXY` | Définir à `true` seulement si vous utilisez votre propre proxy inverse TLS | -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **Keycloak** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Les deux - vous donnent une VM Ubuntu 24.04 propre. -2. Choisissez un forfait conforme aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +## Démarrage + +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script génère les mots de passe administrateur et base de données, écrit le +fichier d'environnement, puis démarre la pile avec Docker Compose. Cela prend 1 à 2 minutes. Suivez +la progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u keycloak-first-boot.service -f ``` -## Installer Keycloak +Le message de connexion (MOTD) confirme quand Keycloak est prêt et affiche les identifiants +administrateur. -Keycloak est distribué sous forme d'image Docker officielle depuis `quay.io`. Installez donc d'abord -Docker Engine. +### 3. Récupérer les identifiants administrateur -Configurez le dépôt APT officiel de Docker pour Ubuntu 24.04 LTS (`noble`): +Les identifiants sont aussi écrits dans un fichier réservé à root: ```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:8080 ``` -Pour essayer Keycloak rapidement, démarrez-le en mode développement. Cela amorce un utilisateur -administrateur initial et sert la console sur le port 8080: +Connectez-vous avec l'utilisateur `admin` et le mot de passe généré. -```bash -sudo docker run -d --name keycloak --restart unless-stopped \ - -p 8080:8080 \ - -e KEYCLOAK_ADMIN=admin \ - -e KEYCLOAK_ADMIN_PASSWORD='' \ - quay.io/keycloak/keycloak:latest start-dev -``` +| Champ | Valeur | +| ----------------- | -------------------------------------- | +| Nom d'utilisateur | `admin` | +| Mot de passe | Depuis `/etc/keycloak/credentials.txt` | -Ouvrez `http://:8080` et connectez-vous à la console d'administration avec les -identifiants ci-dessus. - -## Configurer Keycloak - -Le mode développement utilise une base de données en mémoire et des valeurs par défaut non -sécurisées. Il ne convient donc pas à la production. Pour un déploiement de production, exécutez -Keycloak avec la commande `start`, une base de données externe, HTTPS sur le port 8443 et un nom -d'hôte explicite. - -L'exemple ci-dessous utilise Docker Compose avec PostgreSQL. Créez `docker-compose.yml`: - -```yaml -services: - postgres: - image: postgres:16 - restart: unless-stopped - environment: - POSTGRES_DB: keycloak - POSTGRES_USER: keycloak - POSTGRES_PASSWORD: - volumes: - - postgres_data:/var/lib/postgresql/data - - keycloak: - image: quay.io/keycloak/keycloak:latest - restart: unless-stopped - command: start - environment: - KEYCLOAK_ADMIN: admin - KEYCLOAK_ADMIN_PASSWORD: - KC_DB: postgres - KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak - KC_DB_USERNAME: keycloak - KC_DB_PASSWORD: - KC_HOSTNAME: auth.example.com - KC_PROXY_HEADERS: xforwarded - KC_HTTP_ENABLED: 'true' - ports: - - '8080:8080' - depends_on: - - postgres - -volumes: - postgres_data: -``` +## Gérer Keycloak -Démarrez la pile: +Keycloak s'exécute comme pile Docker Compose dans `/opt/keycloak`. ```bash -sudo docker compose up -d +# Vérifier l'état +cd /opt/keycloak && docker compose ps + +# Redémarrer +cd /opt/keycloak && docker compose restart + +# Voir les journaux +cd /opt/keycloak && docker compose logs -f ``` -Faites pointer `auth.example.com` vers la VM et placez Keycloak derrière un reverse proxy (Caddy, -nginx ou Traefik) qui termine TLS sur 443 et redirige vers le port 8080 de l'hôte. +Configuration d'environnement: `/opt/keycloak/.env`. Les données PostgreSQL sont stockées sous +`/opt/keycloak/data/postgres` et ne sont pas exposées hors du réseau Docker. + +## Sécurité + +Le port 8080 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et +Keycloak (port 8080). Keycloak sert HTTP en clair sur 8080. -## Ouvrir le pare-feu +:::caution -L'instance n'autorise que SSH (port 22) en externe par défaut. Ouvrez le port que Keycloak sert et -ajoutez-le aux règles réseau/sécurité de l'instance dans le portail: +`KC_HOSTNAME` prend par défaut l'IP privée de la VM. Si vous associez ensuite une IP publique, un +nom DNS ou un proxy inverse, définissez `KC_HOSTNAME` au déploiement (ou modifiez +`/opt/keycloak/.env` et exécutez `cd /opt/keycloak && docker compose up -d`), sinon les +vérifications de nom d'hôte en mode production peuvent rejeter les requêtes provenant de la nouvelle +adresse. + +::: + +**En production**, placez Keycloak derrière un proxy inverse (Caddy, nginx ou Traefik) qui termine +TLS sur le port 443 et relaie vers le port 8080, puis définissez `KC_BEHIND_PROXY=true`. Limitez +l'accès direct au port 8080: ```bash -sudo ufw allow 8080/tcp +sudo ufw delete allow 8080/tcp +sudo ufw allow from to any port 8080 ``` -Si vous placez Keycloak derrière un reverse proxy, ouvrez plutôt le port 443 et gardez le 8080 en -interne. - -## Étapes suivantes +## Prochaines étapes - [Documentation Keycloak](https://www.keycloak.org/documentation) -- [Guide d'installation de Keycloak](https://www.keycloak.org/getting-started/getting-started-docker) +- [Configurer le nom d'hôte](https://www.keycloak.org/server/hostname) +- [Configuration avec proxy inverse](https://www.keycloak.org/server/reverseproxy) diff --git a/src/content/docs/fr/public-cloud/marketplace/ollama.md b/src/content/docs/fr/public-cloud/marketplace/ollama.md index 91adb68..1cf86d4 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ollama.md +++ b/src/content/docs/fr/public-cloud/marketplace/ollama.md @@ -2,47 +2,49 @@ title: Ollama --- -Ollama est un environnement d'exécution local pour grands modèles de langage (LLM) qui télécharge, -exécute et sert des modèles ouverts tels que Llama, Qwen, Gemma et DeepSeek sur votre propre -matériel. Il expose une API REST simple et une interface en ligne de commande, ce qui vous permet -d'effectuer de l'inférence en privé sans envoyer vos données à un fournisseur tiers. +Ollama est un environnement d'exécution local pour grands modèles de langage (LLM). Il télécharge, +exécute et sert des modèles ouverts comme Llama, Qwen, Gemma et DeepSeek sur votre propre matériel. +Il expose une API REST simple et une interface en ligne de commande, afin d'exécuter l'inférence en +privé sans envoyer de données à un fournisseur tiers. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Ollama préconstruite arrive bientôt. Pour l'instant, déployez une instance **Ubuntu 24.04 -LTS** neuve depuis la place de marché et suivez les étapes ci-dessous pour installer Ollama -vous-même. +| Composant | Version | +| --------- | --------- | +| Ollama | 0.9.2 | +| Ubuntu | 24.04 LTS | -::: +Aucun modèle n'est préchargé. Téléchargez les modèles nécessaires au premier démarrage (voir +[Démarrage](#démarrage)). ## Prérequis -Ollama fonctionne sur **CPU et RAM**. Un GPU est optionnel et accélère l'inférence. Deux éléments -déterminent le forfait dont vous avez besoin : +Ollama fonctionne avec **CPU et RAM**. Un GPU est facultatif et accélère l'inférence. Deux éléments +déterminent le forfait nécessaire: -- **RAM** : elle doit contenir le modèle que vous exécutez (environ la taille du fichier du modèle - plus une marge pour le contexte). Un modèle qui ne tient pas en RAM ne s'exécutera pas. -- **Stockage** : il doit contenir les fichiers de modèles que vous téléchargez, plus le système - d'exploitation et l'espace de travail. Ajoutez la taille de chaque modèle supplémentaire que vous - conservez, car ils s'accumulent vite. +- La **RAM** doit contenir le modèle exécuté (environ la taille du fichier modèle plus une marge + pour le contexte). Un modèle qui ne tient pas en RAM ne s'exécute pas. +- Le **stockage** doit contenir les fichiers de modèles téléchargés, ainsi que le système + d'exploitation et l'espace de travail. Ajoutez la taille de chaque modèle supplémentaire conservé, + car ils s'accumulent vite. -Dimensionnez l'instance pour le plus grand modèle que vous prévoyez d'exécuter. Les valeurs -ci-dessous utilisent la quantification Q4, celle par défaut d'Ollama. +Dimensionnez l'instance pour le plus grand modèle prévu. Les valeurs ci-dessous utilisent la +quantification Q4, le réglage par défaut d'Ollama. -| Taille du modèle | Exemple | Fichier du modèle (approx.) | RAM minimale | Disque suggéré | -| ---------------- | ------------- | --------------------------- | ------------ | -------------- | -| 1-3B | Llama 3.2 3B | 2-3 Go | 8 Go | 20 Go | -| 7-8B | Llama 3.1 8B | 5 Go | 8 Go | 30 Go | -| 13-14B | Llama 2 13B | 9 Go | 16 Go | 40 Go | -| 32-34B | Qwen 2.5 32B | 20 Go | 32 Go | 60 Go | -| 70B | Llama 3.3 70B | 40 Go | 64 Go | 100 Go | +| Taille du modèle | Exemple | Fichier modèle (approx.) | RAM minimale | Disque suggéré | +| ---------------- | ------------- | ------------------------ | ------------ | -------------- | +| 1-3B | Llama 3.2 3B | 2-3 Go | 8 Go | 20 Go | +| 7-8B | Llama 3.1 8B | 5 Go | 8 Go | 30 Go | +| 13-14B | Llama 2 13B | 9 Go | 16 Go | 40 Go | +| 32-34B | Qwen 2.5 32B | 20 Go | 32 Go | 60 Go | +| 70B | Llama 3.3 70B | 40 Go | 64 Go | 100 Go | ## Forfaits recommandés par région -Les noms de forfaits et les tiers de stockage diffèrent selon la région. Les forfaits à usage -général ci-dessous couvrent la RAM dont chaque modèle a besoin, et leur disque système contient les -fichiers de modèles. Consultez [Types d'instances](/fr/public-cloud/compute/instance-types/) et la -[page des tarifs](https://zcp.zsoftly.ca/pricing) pour les spécifications et prix à jour. +Les noms de forfaits et les niveaux de stockage varient selon la région. Les forfaits généraux +ci-dessous fournissent assez de RAM pour chaque modèle, et leur disque racine contient les fichiers +de modèles. Consultez [Types d'instances](/fr/public-cloud/compute/instance-types/) et la +[page de tarification](https://zcp.zsoftly.ca/pricing) pour les spécifications et prix actuels. | Taille du modèle | YOW-1 (Ottawa) | YUL-1 (Montréal) | | ---------------- | ---------------------------------- | ---------------------------------- | @@ -51,67 +53,54 @@ fichiers de modèles. Consultez [Types d'instances](/fr/public-cloud/compute/ins | 32-34B | `ci1.2xl` (8 vCPU, 32 Go, 200 Go) | `ca2.2xl` (8 vCPU, 32 Go, 200 Go) | | 70B | `ci1.4xl` (16 vCPU, 64 Go, 320 Go) | `ca2.4xl` (16 vCPU, 64 Go, 320 Go) | -Ajustez ensuite : +Ajustez ensuite: -- **Même RAM, coût réduit** : la famille à mémoire optimisée offre la même RAM avec moins de vCPU, - pratique pour un usage occasionnel. Utilisez `cim1.*` dans YOW-1 ou `cam2.*` dans YUL-1 (par +- **Même RAM, coût inférieur**: la famille axée mémoire fournit la même RAM avec moins de vCPU, ce + qui convient aux usages occasionnels. Utilisez `cim1.*` dans YOW-1 ou `cam2.*` dans YUL-1 (par exemple `cim1.xl` ou `cam2.xl` pour 64 Go). -- **Réponses plus rapides** : ajoutez des vCPU avec la famille à processeur optimisé (`cac1.*` dans - YOW-1, `cac2.*` dans YUL-1), ou choisissez un forfait avec GPU pour les modèles de 13B et plus. -- **Plusieurs grands modèles sur une instance** : attachez un - [volume de stockage en mode bloc](/fr/public-cloud/compute/settings/block-storage/) au lieu de - passer à un forfait plus grand. +- **Réponses plus rapides**: ajoutez des vCPU avec la famille axée CPU (`cac1.*` dans YOW-1, + `cac2.*` dans YUL-1), ou choisissez un forfait GPU pour les modèles 13B et plus. +- **Plusieurs grands modèles sur une instance**: attachez un + [volume de stockage bloc](/fr/public-cloud/compute/settings/block-storage/) au lieu de passer à un + forfait plus grand. -## Déployer l'instance de base +## Variables d'environnement -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +Vous pouvez définir cette variable au déploiement d'Ollama depuis le Marketplace. - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +| Variable | Description | +| ------------- | ---------------------------------------------------------------------------------- | +| `OLLAMA_HOST` | Adresse et port d'écoute de l'API. Par défaut: `0.0.0.0:11434` (toutes interfaces) | - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +## Démarrage -2. Choisissez un plan qui répond aux prérequis ci-dessus. - -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: - -```bash -sudo apt update && sudo apt upgrade -y -``` - -## Installer Ollama +### 2. Attendre la configuration au premier démarrage -Exécutez le script d'installation officiel. Il installe le binaire `ollama`, crée un utilisateur -système `ollama` dédié et configure un service systemd qui démarre automatiquement: +Au premier démarrage, un script applique l'adresse d'écoute et lance le service. Cela prend moins +d'une minute. Suivez la progression: ```bash -curl -fsSL https://ollama.com/install.sh | sh +journalctl -u ollama-first-boot.service -f ``` -Confirmez que le service est en cours d'exécution et vérifiez la version: +Le message de connexion (MOTD) confirme quand Ollama est prêt. -```bash -systemctl status ollama --no-pager -ollama --version -``` - -Téléchargez un modèle et exécutez une invite rapide: +### 3. Télécharger un modèle et exécuter un prompt ```bash ollama pull llama3.2 ollama run llama3.2 "Hello, what can you do?" ``` -L'API écoute sur `127.0.0.1:11434` par défaut. Testez-la localement: +### 4. Utiliser l'API + +L'API écoute sur le port `11434`. Testez-la depuis la VM: ```bash curl http://localhost:11434/api/generate -d '{ @@ -121,43 +110,54 @@ curl http://localhost:11434/api/generate -d '{ }' ``` -## Configurer Ollama +Depuis un autre hôte, remplacez `localhost` par l'IP de la VM. + +## Gérer Ollama -Par défaut, Ollama ne se lie qu'à localhost. Pour accepter les connexions d'autres hôtes, définissez -`OLLAMA_HOST` dans le service systemd: +Ollama s'exécute comme service systemd. ```bash -sudo systemctl edit ollama -``` +# Vérifier l'état +systemctl status ollama + +# Redémarrer +sudo systemctl restart ollama -Ajoutez la surcharge suivante, puis enregistrez: +# Voir les journaux +sudo journalctl -u ollama -f -```ini -[Service] -Environment="OLLAMA_HOST=0.0.0.0:11434" +# Lister, télécharger et supprimer des modèles +ollama list +ollama pull qwen2.5 +ollama rm qwen2.5 ``` -Rechargez et redémarrez: +Les modèles sont stockés dans `/usr/share/ollama/.ollama/models`. Un résumé des URL et commandes est +écrit dans `/etc/ollama/info.txt`. -```bash -sudo systemctl daemon-reload -sudo systemctl restart ollama -``` +## Sécurité -Ollama n'a aucune authentification intégrée. Si vous exposez le port 11434, placez-le derrière un -proxy inverse qui applique TLS et l'authentification, ou restreignez l'accès aux adresses IP de -confiance uniquement. +Le port 11434 est ouvert sur l'interface réseau de la VM, et Ollama n'a **pas d'authentification +intégrée**. UFW est activé et autorise SSH (port 22) et l'API Ollama (port 11434). -## Ouvrir le pare-feu +**Pour limiter l'API à une adresse IP précise:** -L'instance n'autorise par défaut que SSH (port 22) en externe. Ouvrez le port dont Ollama a besoin -et ajoutez-le aux règles réseau/sécurité de l'instance dans le portail: +```bash +sudo ufw delete allow 11434/tcp +sudo ufw allow from to any port 11434 +``` + +**Pour accéder à l'API sans ouvrir le pare-feu, utilisez un tunnel SSH:** ```bash -sudo ufw allow 11434/tcp +# Exécuter cette commande sur votre machine locale +ssh -L 11434:localhost:11434 ubuntu@ ``` -## Étapes suivantes +**En production**, placez Ollama derrière un proxy inverse qui impose TLS et l'authentification, ou +limitez l'accès aux seules adresses IP de confiance. + +## Prochaines étapes - [Documentation Ollama](https://docs.ollama.com/) -- [Guide d'installation Ollama](https://docs.ollama.com/linux) +- [Référence de l'API Ollama](https://docs.ollama.com/api) diff --git a/src/content/docs/fr/public-cloud/marketplace/portainer.md b/src/content/docs/fr/public-cloud/marketplace/portainer.md index 6c10cf8..4bb0a17 100644 --- a/src/content/docs/fr/public-cloud/marketplace/portainer.md +++ b/src/content/docs/fr/public-cloud/marketplace/portainer.md @@ -3,17 +3,16 @@ title: Portainer --- Portainer est une interface de gestion légère pour les environnements Docker et Kubernetes. Elle -vous permet de déployer des conteneurs, de gérer les images, les volumes et les réseaux, et de -surveiller vos piles depuis une seule console web. L'interface s'exécute sur le port 9443 en HTTPS -(port 9000 pour le HTTP simple). +permet de déployer des conteneurs, gérer les images, volumes et réseaux, et surveiller vos piles +depuis une console web unique. L'interface s'exécute sur le port 9443 en HTTPS. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Portainer préinstallée arrive bientôt. Pour l'instant, déployez une nouvelle instance -**Ubuntu 24.04 LTS** depuis la marketplace et suivez les étapes ci-dessous pour installer Portainer -vous-même. - -::: +| Composant | Version | +| ------------ | --------------- | +| Portainer CE | 2.27.9 | +| Docker | Dernière stable | +| Ubuntu | 24.04 LTS | ## Prérequis @@ -23,88 +22,87 @@ vous-même. | RAM | 1 Go | 2 Go | | Stockage | 20 Go | 40 Go | -## Déployer l'instance de base +## Démarrage -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **Portainer** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Les deux - vous donnent une VM Ubuntu 24.04 propre. -2. Choisissez un plan répondant aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script lance le conteneur Portainer avec Docker Compose. Cela prend moins +d'une minute. Suivez la progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u portainer-first-boot.service -f ``` -## Installer Portainer +Le message de connexion (MOTD) confirme quand Portainer est prêt. -Portainer s'exécute en tant que conteneur Docker. Installez donc d'abord Docker Engine à l'aide du -script d'installation officiel: +### 3. Créer le compte administrateur -```bash -curl -fsSL https://get.docker.com | sudo sh +Ouvrez un navigateur et allez à: + +```text +https://:9443 ``` -Vérifiez que Docker fonctionne: +Au premier chargement, créez votre compte administrateur en définissant un nom d'utilisateur et un +mot de passe fort. Portainer se connecte à l'environnement Docker local via le socket monté. Vos +conteneurs, images et volumes apparaissent donc immédiatement. -```bash -docker version -``` +:::caution -Créez un volume pour les données persistantes de Portainer: +Portainer verrouille la configuration initiale si aucun compte administrateur n'est créé peu après +le démarrage du conteneur. Si la fenêtre de configuration expire, redémarrez Portainer et rechargez +la page: ```bash -docker volume create portainer_data +cd /opt/portainer && docker compose restart ``` -Exécutez le conteneur du serveur Portainer CE: +L'interface utilise un certificat autosigné. Votre navigateur affiche donc un avertissement de +sécurité. Acceptez l'exception pour continuer. -```bash -sudo docker run -d \ - -p 8000:8000 \ - -p 9443:9443 \ - --name portainer \ - --restart=always \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v portainer_data:/data \ - portainer/portainer-ce:lts -``` +::: -Vérifiez que le conteneur est en cours d'exécution: +## Gérer Portainer + +Portainer s'exécute comme pile Docker Compose dans `/opt/portainer`. ```bash -docker ps -``` +# Vérifier l'état +cd /opt/portainer && docker compose ps -## Configurer Portainer +# Redémarrer +cd /opt/portainer && docker compose restart -Portainer sert l'interface sur le port 9443 en HTTPS avec un certificat auto-signé. Ouvrez -`https://:9443` dans un navigateur dans les quelques minutes suivant le démarrage du -conteneur. Pour des raisons de sécurité, Portainer verrouille la configuration initiale si aucun -compte administrateur n'est créé peu après le premier démarrage. +# Voir les journaux +cd /opt/portainer && docker compose logs -f +``` -Au premier chargement, créez votre compte administrateur en définissant un nom d'utilisateur et un -mot de passe fort. Portainer se connecte ensuite à l'environnement Docker local via le socket monté, -de sorte que vos conteneurs, images et volumes apparaissent immédiatement. Le certificat auto-signé -déclenche un avertissement du navigateur. Pour un déploiement de production, placez Portainer -derrière un reverse proxy tel que nginx avec un certificat TLS de confiance. +Les données persistantes de Portainer sont stockées dans `/var/lib/portainer`. Un résumé des URL et +chemins est écrit dans `/etc/portainer/info.txt`. -## Ouvrir le pare-feu +## Sécurité -L'instance n'autorise que le SSH (port 22) en externe par défaut. Ouvrez le ou les ports dont -Portainer a besoin et ajoutez-les aux règles réseau/sécurité de l'instance dans le portail: +Le port 9443 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et +Portainer (port 9443). Les ports 8000, 9000 et l'API Docker ne sont pas ouverts par défaut. + +Portainer monte le socket Docker de l'hôte, ce qui lui donne le contrôle complet du démon Docker de +la VM. Limitez l'accès au port 9443: ```bash -sudo ufw allow 9443/tcp +sudo ufw delete allow 9443/tcp +sudo ufw allow from to any port 9443 ``` -## Étapes suivantes +**En production**, placez Portainer derrière un proxy inverse comme nginx avec un certificat TLS de +confiance. + +## Prochaines étapes - [Documentation Portainer](https://docs.portainer.io/) -- [Guide d'installation Portainer](https://docs.portainer.io/start/install-ce/server/docker/linux) +- [Gérer les environnements Docker](https://docs.portainer.io/user/docker) diff --git a/src/content/docs/fr/public-cloud/marketplace/prometheus.md b/src/content/docs/fr/public-cloud/marketplace/prometheus.md index 39f9ed5..c00ff96 100644 --- a/src/content/docs/fr/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/fr/public-cloud/marketplace/prometheus.md @@ -2,19 +2,21 @@ title: Prometheus --- -Prometheus est une boîte à outils libre de surveillance des systèmes et d'alerte. Il collecte des -métriques auprès de cibles configurées à intervalles réguliers, les stocke dans une base de données -de séries temporelles et évalue des règles pour déclencher des alertes. Il expose une interface de -requête et un navigateur d'expressions intégré sur le port 9090, et s'associe bien à Grafana pour -les tableaux de bord. +Prometheus est une boîte à outils open source de surveillance et d'alerte système. Il collecte les +métriques de cibles configurées à intervalles réguliers, les stocke dans une base de données de +séries temporelles et évalue des règles pour déclencher des alertes. Il expose une interface de +requêtes et un navigateur d'expressions intégré sur le port 9090, et fonctionne bien avec Grafana +pour les tableaux de bord. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Prometheus préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu -24.04 LTS** vierge depuis la marketplace et suivez les étapes ci-dessous pour installer Prometheus -vous-même. +| Composant | Version | +| ---------- | --------- | +| Prometheus | 3.4.1 | +| Ubuntu | 24.04 LTS | -::: +L'image inclut seulement le serveur Prometheus. Ajoutez les exporters (comme `node_exporter`) et +Alertmanager comme cibles séparées. ## Prérequis @@ -24,144 +26,99 @@ vous-même. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 50 Go | -## Déployer l'instance de base +Les besoins de stockage augmentent avec le nombre de séries et la période de rétention. -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +## Variables d'environnement - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +Vous pouvez définir cette variable au déploiement de Prometheus depuis le Marketplace. - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +| Variable | Description | +| ------------------------------- | ---------------------------------------------------------------- | +| `PROMETHEUS_WEB_LISTEN_ADDRESS` | Adresse et port d'écoute de l'UI/API. Par défaut: `0.0.0.0:9090` | -2. Choisissez un plan qui répond aux prérequis ci-dessus. +## Démarrage -3. Lorsque l'instance est **Running**, connectez-vous en SSH : +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour : +### 2. Attendre la configuration au premier démarrage + +Au premier démarrage, un script applique l'adresse d'écoute et lance le service. Cela prend moins +d'une minute. Suivez la progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u prometheus-first-boot.service -f ``` -## Installer Prometheus +Le message de connexion (MOTD) confirme quand Prometheus est prêt. -Installez Prometheus depuis la version binaire officielle et exécutez-le comme service systemd. -C'est la méthode de production courante, qui vous donne un contrôle total sur la version. +### 3. Accéder à l'interface Prometheus -Créez un utilisateur système dédié et non privilégié, ainsi que les répertoires de configuration et -de données : +Ouvrez un navigateur et allez au navigateur d'expressions et à l'interface intégrée: -```bash -sudo useradd --no-create-home --shell /bin/false prometheus -sudo mkdir -p /etc/prometheus /var/lib/prometheus +```text +http://:9090 ``` -Téléchargez la dernière version depuis prometheus.io et extrayez-la. Consultez la -[page des versions](https://prometheus.io/download/) pour connaître la version actuelle et mettez-la -à jour ci-dessous : - -```bash -PROM_VERSION=3.4.1 -cd /tmp -curl -fsSLO https://github.com/prometheus/prometheus/releases/download/v${PROM_VERSION}/prometheus-${PROM_VERSION}.linux-amd64.tar.gz -tar -xzf prometheus-${PROM_VERSION}.linux-amd64.tar.gz -cd prometheus-${PROM_VERSION}.linux-amd64 -``` +### 4. Ajouter des cibles de collecte -Installez les binaires et les fichiers de support, puis attribuez la propriété à l'utilisateur -`prometheus` : +Modifiez la configuration de collecte, validez-la, puis rechargez sans redémarrage: ```bash -sudo cp prometheus promtool /usr/local/bin/ -sudo cp -r consoles console_libraries /etc/prometheus/ -sudo cp prometheus.yml /etc/prometheus/prometheus.yml -sudo chown -R prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool /etc/prometheus /var/lib/prometheus +sudo nano /etc/prometheus/prometheus.yml +promtool check config /etc/prometheus/prometheus.yml +sudo systemctl reload prometheus ``` -Écrivez une configuration de collecte minimale. Par défaut, elle collecte les métriques de -Prometheus lui-même sur le port 9090. Ajoutez vos propres cibles sous `scrape_configs` : +## Gérer Prometheus + +Prometheus s'exécute comme service systemd avec un utilisateur dédié `prometheus`. ```bash -sudo tee /etc/prometheus/prometheus.yml > /dev/null <<'EOF' -global: - scrape_interval: 15s - evaluation_interval: 15s - -scrape_configs: - - job_name: prometheus - static_configs: - - targets: ["localhost:9090"] -EOF -sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml -``` +# Vérifier l'état +systemctl status prometheus -Créez l'unité de service systemd : +# Redémarrer +sudo systemctl restart prometheus -```bash -sudo tee /etc/systemd/system/prometheus.service > /dev/null <<'EOF' -[Unit] -Description=Prometheus -Wants=network-online.target -After=network-online.target - -[Service] -User=prometheus -Group=prometheus -Type=simple -ExecStart=/usr/local/bin/prometheus \ - --config.file=/etc/prometheus/prometheus.yml \ - --storage.tsdb.path=/var/lib/prometheus/ \ - --web.console.templates=/etc/prometheus/consoles \ - --web.console.libraries=/etc/prometheus/console_libraries \ - --web.listen-address=0.0.0.0:9090 -Restart=on-failure - -[Install] -WantedBy=multi-user.target -EOF +# Recharger la configuration sans redémarrer +sudo systemctl reload prometheus + +# Voir les journaux +sudo journalctl -u prometheus -f ``` -Rechargez systemd, puis activez et démarrez le service : +| Chemin | Rôle | +| -------------------------------- | ------------------------------------- | +| `/etc/prometheus/prometheus.yml` | Configuration principale | +| `/var/lib/prometheus/` | Base de données de séries temporelles | -```bash -sudo systemctl daemon-reload -sudo systemctl enable --now prometheus -sudo systemctl status prometheus -``` +## Sécurité -## Configurer Prometheus +Le port 9090 est ouvert sur l'interface réseau de la VM, et Prometheus n'a **pas d'authentification +intégrée**. UFW est activé et autorise SSH (port 22) et Prometheus (port 9090). -1. Ouvrez `http://:9090` dans un navigateur pour accéder au navigateur d'expressions - Prometheus et à l'interface intégrée. -2. Ajoutez des cibles de collecte en modifiant `/etc/prometheus/prometheus.yml` (par exemple, un - `node_exporter` exécuté sur un hôte), puis validez et rechargez : +**Pour limiter l'interface à une adresse IP précise:** ```bash -promtool check config /etc/prometheus/prometheus.yml -sudo systemctl reload prometheus +sudo ufw delete allow 9090/tcp +sudo ufw allow from to any port 9090 ``` -3. Prometheus ne dispose d'aucune authentification propre. En production, placez-le derrière un - reverse proxy tel que Nginx ou Caddy pour ajouter le TLS et le contrôle d'accès sur le port 443, - et restreignez l'accès direct au port 9090. - -## Ouvrir le pare-feu - -L'instance n'autorise par défaut que le SSH (port 22) en externe. Ouvrez le port dont Prometheus a -besoin et ajoutez-le aux règles réseau/sécurité de l'instance dans le portail : +**Pour accéder à l'interface sans ouvrir le pare-feu, utilisez un tunnel SSH:** ```bash -sudo ufw allow 9090/tcp +# Exécuter cette commande sur votre machine locale +ssh -L 9090:localhost:9090 ubuntu@ ``` -## Étapes suivantes +**En production**, placez Prometheus derrière un proxy inverse comme Nginx ou Caddy pour ajouter TLS +et un contrôle d'accès sur le port 443, puis limitez l'accès direct au port 9090. + +## Prochaines étapes - [Documentation Prometheus](https://prometheus.io/docs/introduction/overview/) -- [Guide d'installation Prometheus](https://prometheus.io/docs/prometheus/latest/installation/) +- [Référence de configuration](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) diff --git a/src/content/docs/fr/public-cloud/marketplace/supabase.md b/src/content/docs/fr/public-cloud/marketplace/supabase.md index bbd93e3..d09cb37 100644 --- a/src/content/docs/fr/public-cloud/marketplace/supabase.md +++ b/src/content/docs/fr/public-cloud/marketplace/supabase.md @@ -2,18 +2,23 @@ title: Supabase --- -Supabase est une alternative open source à Firebase, construite sur PostgreSQL. Elle regroupe une -base de données Postgres, l'authentification, des API REST et GraphQL instantanées, les abonnements -en temps réel, le stockage et un tableau de bord d'administration Studio dans une seule pile -auto-hébergeable. Le Studio et les API sont servis via la passerelle Kong sur le port 8000. +Supabase est une alternative open source à Firebase basée sur PostgreSQL. Elle regroupe une base +Postgres, l'authentification, des API REST et GraphQL instantanées, les abonnements en temps réel, +le stockage et un tableau de bord Studio dans une pile auto-hébergeable. Studio et les API sont +servis par la passerelle Kong sur le port 8000. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Supabase préconfigurée arrive bientôt. Pour l'instant, déployez une nouvelle instance -**Ubuntu 24.04 LTS** depuis la marketplace et suivez les étapes ci-dessous pour installer Supabase -vous-même. +| Composant | Version | +| -------------- | ------------------ | +| Supabase | Pile auto-hébergée | +| PostgreSQL | 17 | +| Docker | Dernière stable | +| Docker Compose | Dernière stable | +| Ubuntu | 24.04 LTS | -::: +La pile inclut Studio, la passerelle API Kong, Auth (GoTrue), PostgREST, Realtime, Storage et +postgres-meta, le tout sur PostgreSQL 17. ## Prérequis @@ -23,112 +28,85 @@ vous-même. | RAM | 4 Go | 8 Go | | Stockage | 30 Go | 80 Go | -## Déployer l'instance de base +## Variables d'environnement -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **Supabase** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Dans les - deux cas, vous obtenez une VM Ubuntu 24.04 propre. -2. Choisissez un plan qui répond aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH : +Vous pouvez définir cette variable au déploiement de Supabase depuis le Marketplace. -```bash -ssh ubuntu@ -``` +| Variable | Description | +| --------------- | ------------------------------------------------------------------ | +| `SUPABASE_FQDN` | Nom de domaine complet de l'instance, par exemple `db.example.com` | -4. Mettez le système à jour : +## Démarrage + +### 1. Se connecter à la VM ```bash -sudo apt update && sudo apt upgrade -y +ssh ubuntu@ ``` -## Installer Supabase +### 2. Attendre la configuration au premier démarrage -Supabase s'auto-héberge sous forme de pile Docker Compose. Installez donc d'abord Docker Engine et -le plugin Compose. - -Configurez le dépôt APT officiel de Docker pour Ubuntu 24.04 LTS (`noble`) : +Au premier démarrage, un script génère le mot de passe de base de données, le secret JWT, les clés +API et les identifiants Studio, puis télécharge les images de conteneurs et démarre la pile. Le +téléchargement est volumineux. Cela prend environ 15 à 20 minutes. Suivez la progression: ```bash -sudo apt install -y ca-certificates curl git -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:8000 +``` -Le dépôt fournit des scripts d'aide pour générer des secrets et des clés d'API cohérents : +Connectez-vous avec le nom d'utilisateur `supabase` et le mot de passe généré. Les API REST et Auth +sont servies par la même passerelle à `http://:8000/rest/v1/` et +`http://:8000/auth/v1/`. -```bash -sh utils/generate-keys.sh -sh utils/add-new-auth-keys.sh -``` +## Gérer Supabase -Téléchargez les images et démarrez la pile : +Supabase s'exécute comme pile Docker Compose dans `/data/supabase`. ```bash -sudo docker compose pull -sudo docker compose up -d --wait -``` +# Vérifier l'état +cd /data/supabase && docker compose ps -Une fois les conteneurs sains, le tableau de bord Studio et les API sont servis via Kong sur le port -8000 : +# Redémarrer +cd /data/supabase && docker compose restart -- Tableau de bord Studio : `http://:8000` (connectez-vous avec `DASHBOARD_USERNAME` / - `DASHBOARD_PASSWORD`) -- API REST : `http://:8000/rest/v1/` -- API Auth : `http://:8000/auth/v1/` +# Voir les journaux +cd /data/supabase && docker compose logs -f +``` -Pour une configuration de production, placez Supabase derrière un reverse proxy tel que nginx avec -un certificat TLS, puis servez le Studio et les API en HTTPS au lieu d'exposer directement le -port 8000. +Configuration d'environnement: `/data/supabase/.env`. Les données de base de données et de stockage +sont stockées sous `/data/supabase/volumes`. -## Ouvrir le pare-feu +## Sécurité -L'instance n'autorise par défaut que le SSH (port 22) en externe. Ouvrez le ou les ports dont -Supabase a besoin et ajoutez-les aux règles réseau/de sécurité de l'instance dans le portail : +Les ports 8000, 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise +ces ports ainsi que SSH (port 22). L'accès PostgreSQL direct (5432) n'est pas exposé. -```bash -sudo ufw allow 8000/tcp -``` +Changez le mot de passe du tableau de bord Studio après la première connexion. **En production**, +définissez `SUPABASE_PUBLIC_URL`, `API_EXTERNAL_URL` et `SITE_URL` dans `/data/supabase/.env` avec +votre domaine, redémarrez la pile, puis placez Supabase derrière un proxy inverse comme nginx avec +un certificat TLS afin que Studio et les API soient servis en HTTPS au lieu d'exposer directement le +port 8000. -## Étapes suivantes +## Prochaines étapes - [Documentation Supabase](https://supabase.com/docs) -- [Guide d'auto-hébergement Supabase](https://supabase.com/docs/guides/self-hosting/docker) +- [Guide d'auto-hébergement](https://supabase.com/docs/guides/self-hosting/docker) diff --git a/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md b/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md index de0c4cb..e85c7c3 100644 --- a/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md +++ b/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md @@ -4,16 +4,20 @@ title: Vaultwarden Vaultwarden est un gestionnaire de mots de passe léger et auto-hébergé qui implémente l'API Bitwarden. Il est entièrement compatible avec les applications clientes et extensions de navigateur -officielles de Bitwarden, ce qui vous permet de stocker et de synchroniser mots de passe, notes -sécurisées et autres secrets sur une infrastructure que vous contrôlez. +Bitwarden officielles, ce qui permet de stocker et synchroniser mots de passe, notes sécurisées et +autres secrets sur une infrastructure que vous contrôlez. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Vaultwarden préconstruite arrive bientôt. Pour l'instant, déployez une instance **Ubuntu -24.04 LTS** neuve depuis la place de marché et suivez les étapes ci-dessous pour installer -Vaultwarden vous-même. +| Composant | Version | +| -------------- | --------------- | +| Vaultwarden | 1.36.0 | +| Docker | Dernière stable | +| Docker Compose | Dernière stable | +| Ubuntu | 24.04 LTS | -::: +Vaultwarden stocke ses données dans une base SQLite intégrée et sert le coffre web en HTTPS sur le +port 8000 avec un certificat autosigné généré au premier démarrage. ## Prérequis @@ -23,121 +27,91 @@ Vaultwarden vous-même. | RAM | 1 Go | 2 Go | | Stockage | 10 Go | 20 Go | -Vaultwarden est léger en ressources. Un nom de domaine et un certificat TLS sont fortement -recommandés, car les clients Bitwarden exigent HTTPS pour se connecter. - -## Déployer l'instance de base - -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. - - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) - - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +Vaultwarden consomme peu de ressources. -2. Choisissez un plan qui répond aux prérequis ci-dessus. +## Démarrage -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Se connecter à la VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: - -```bash -sudo apt update && sudo apt upgrade -y -``` - -## Installer Vaultwarden - -Vaultwarden est distribué sous forme d'image Docker officielle, installez donc d'abord Docker Engine -et le plugin Compose. +### 2. Attendre la configuration au premier démarrage -Configurez le dépôt APT officiel de Docker pour Ubuntu 24.04 LTS (`noble`): +Au premier démarrage, un script génère un certificat TLS autosigné et le jeton administrateur, puis +démarre le conteneur avec Docker Compose. Cela prend moins d'une minute. Suivez la progression: ```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:8000 ``` -## Configurer Vaultwarden +Le certificat autosigné déclenche un avertissement du navigateur. Acceptez l'exception pour +continuer. Le panneau d'administration se trouve à `https://:8000/admin`. -:::caution +:::note -Les applications clientes Bitwarden refusent de se connecter en HTTP simple. N'exposez pas -Vaultwarden directement. Placez-le toujours derrière un proxy inverse (Caddy, nginx ou Traefik) qui -termine TLS et transfère vers le port hôte 8080. +L'inscription libre des utilisateurs est désactivée par défaut (`SIGNUPS_ALLOWED=false`). Pour +ajouter des utilisateurs, ouvrez le panneau d'administration et invitez-les sous **Users**, ou +activez l'inscription ouverte sous **General Settings**. ::: -Un proxy inverse Caddy minimal vous offre HTTPS automatique. Faites pointer le DNS de votre domaine -vers la VM, puis: +## Gérer Vaultwarden + +Vaultwarden s'exécute comme pile Docker Compose dans `/data/vaultwarden`. ```bash -sudo apt install -y caddy -echo 'vault.example.com { - reverse_proxy 127.0.0.1:8080 -}' | sudo tee /etc/caddy/Caddyfile -sudo systemctl restart caddy +# Vérifier l'état +cd /data/vaultwarden && docker compose ps + +# Redémarrer +cd /data/vaultwarden && docker compose restart + +# Voir les journaux +cd /data/vaultwarden && docker compose logs -f ``` -Définissez `DOMAIN` dans la commande `docker run` ci-dessus avec votre véritable URL `https://` afin -que les icônes des éléments du coffre, les pièces jointes et WebAuthn fonctionnent correctement. Une -fois TLS actif, accédez à la page d'administration à `https://vault.example.com/admin` et -connectez-vous avec le mot de passe que vous avez haché dans `ADMIN_TOKEN`. Traitez ce jeton comme -un mot de passe root. +Configuration d'environnement: `/data/vaultwarden/vaultwarden.env`. La base du coffre et le +certificat sont stockés sous `/data/vaultwarden/data`. + +## Sécurité + +Le port 8000 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et +le coffre web Vaultwarden (port 8000). Les clients Bitwarden exigent HTTPS, que l'image sert avec un +certificat autosigné par défaut. -## Ouvrir le pare-feu +Traitez le jeton administrateur comme un mot de passe root. -L'instance n'autorise par défaut que SSH (port 22) en externe. Ouvrez le port HTTPS que votre proxy -inverse sert et ajoutez-le aux règles réseau/sécurité de l'instance dans le portail: +**En production**, définissez `DOMAIN` avec votre IP publique ou nom d'hôte dans +`/data/vaultwarden/vaultwarden.env`, remplacez le certificat autosigné par un certificat de +confiance (ou placez Vaultwarden derrière un proxy inverse comme Caddy qui termine TLS), puis +redémarrez la pile: ```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp +cd /data/vaultwarden && docker compose restart ``` -## Étapes suivantes +## Prochaines étapes - [Documentation Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki) -- [Guide d'installation Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki/Starting-with-Docker) +- [Activer HTTPS](https://github.com/dani-garcia/vaultwarden/wiki/Enabling-HTTPS) diff --git a/src/content/docs/public-cloud/marketplace/authentik.md b/src/content/docs/public-cloud/marketplace/authentik.md index 289e1b9..ba587f9 100644 --- a/src/content/docs/public-cloud/marketplace/authentik.md +++ b/src/content/docs/public-cloud/marketplace/authentik.md @@ -4,15 +4,20 @@ title: Authentik Authentik is an open-source identity provider that centralises authentication for your applications. It supports SSO over OAuth 2.0, OpenID Connect, SAML, LDAP, and proxy/forward-auth, with flexible -flows, policies, and a self-service user portal. This guide deploys Authentik with its official -Docker Compose stack. +flows, policies, and a self-service user portal. -:::note[Coming soon] +## Software included -A pre-built Authentik image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance -from the marketplace and follow the steps below to install Authentik yourself. +| Component | Version | +| ---------- | ------------- | +| Authentik | 2025.6.3 | +| PostgreSQL | 16 | +| Redis | Alpine | +| Docker | Latest stable | +| Ubuntu | 24.04 LTS | -::: +Authentik runs its server and worker containers with PostgreSQL and Redis, as a Docker Compose +stack. ## Requirements @@ -22,99 +27,93 @@ from the marketplace and follow the steps below to install Authentik yourself. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 40 GB | -## Deploy the base instance +## Environment variables -1. In the ZSoftly Cloud portal, open **Apps**, select **Authentik**, and click **Deploy**, or create - an **Ubuntu 24.04 LTS** instance from **Instances → Create**. Both give you a clean Ubuntu 24.04 - VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +You can optionally set these when deploying Authentik from the marketplace. Leave a password field +blank to have a secure random value generated automatically. -```bash -ssh ubuntu@ -``` +| Variable | Description | +| -------------------------- | --------------------------------------------- | +| `AUTHENTIK_ADMIN_EMAIL` | Email for the initial `akadmin` account | +| `AUTHENTIK_ADMIN_PASSWORD` | Password for the initial `akadmin` account | +| `PG_PASS` | Password for the internal PostgreSQL database | +| `AUTHENTIK_SECRET_KEY` | Secret key used to sign sessions and tokens | -4. Update the system: +## Getting started + +### 1. Connect to your VM ```bash -sudo apt update && sudo apt upgrade -y +ssh ubuntu@ ``` -## Install Authentik +### 2. Wait for first-boot configuration -Authentik ships an official Docker Compose stack, so install Docker Engine and the Compose plugin -first. - -Set up Docker's official APT repository for Ubuntu 24.04 LTS (`noble`): +On the first boot, a setup script generates the admin, database, and secret-key values, writes the +environment file, and starts the stack with Docker Compose. This takes 1-2 minutes. Track progress: ```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:9000 ``` -## Configure Authentik +Sign in with the `akadmin` email and the generated password. HTTPS is also available on port 9443 +with a self-signed certificate. + +## Managing Authentik -Pull the images and start the stack: +Authentik runs as a Docker Compose stack in `/opt/authentik`. ```bash -sudo docker compose pull -sudo docker compose up -d -``` +# Check status +cd /opt/authentik && docker compose ps -Authentik serves HTTP on port 9000 and HTTPS on port 9443 by default. Complete the first-run setup -by browsing to the initial-setup flow, which creates the default `akadmin` account and sets its -password: +# Restart +cd /opt/authentik && docker compose restart -```text -http://:9000/if/flow/initial-setup/ +# View logs +cd /opt/authentik && docker compose logs -f ``` -For a production deployment, point a DNS record at the VM and front Authentik with TLS. You can use -the built-in HTTPS on port 9443, or place it behind a reverse proxy (Caddy, nginx, or Traefik) that -terminates TLS and forwards to port 9000. +Environment configuration: `/opt/authentik/.env`. Database, media, and certificate data are stored +under `/opt/authentik`. + +## Security -## Open the firewall +Ports 9000 (HTTP) and 9443 (HTTPS) are open on the VM's network interface. UFW is enabled and allows +those ports plus SSH (port 22). Authentik serves a default self-signed certificate on 9443. -The instance allows only SSH (port 22) externally by default. Open the ports Authentik serves and -add them to the instance's network/security rules in the portal: +**To restrict access to a specific IP:** ```bash -sudo ufw allow 9000/tcp -sudo ufw allow 9443/tcp +sudo ufw delete allow 9000/tcp +sudo ufw delete allow 9443/tcp +sudo ufw allow from to any port 9000 +sudo ufw allow from to any port 9443 ``` +**For production use**, point a DNS record at the VM and front Authentik with TLS, either using the +built-in HTTPS on 9443 with your own certificate, or a reverse proxy (Caddy, nginx, or Traefik) that +terminates TLS and forwards to port 9000. + ## Next steps - [Authentik documentation](https://docs.goauthentik.io/) -- [Authentik installation guide](https://docs.goauthentik.io/install-config/install/docker-compose/) +- [Configuration reference](https://docs.goauthentik.io/docs/install-config/configuration/) diff --git a/src/content/docs/public-cloud/marketplace/coolify.md b/src/content/docs/public-cloud/marketplace/coolify.md index 83a9e29..10655a8 100644 --- a/src/content/docs/public-cloud/marketplace/coolify.md +++ b/src/content/docs/public-cloud/marketplace/coolify.md @@ -6,12 +6,14 @@ Coolify is an open-source, self-hosted PaaS and a drop-in alternative to Heroku, Vercel. It deploys applications, databases, and services to your own server with Git-based workflows and a web dashboard, while keeping all your data under your control. -:::note[Coming soon] +## Software included -A pre-built Coolify image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Coolify yourself. - -::: +| Component | Version | +| -------------- | ------------- | +| Coolify | 4.1.2 | +| Docker | Latest stable | +| Docker Compose | Latest stable | +| Ubuntu | 24.04 LTS | ## Requirements @@ -21,72 +23,90 @@ the marketplace and follow the steps below to install Coolify yourself. | RAM | 2 GB | 4 GB | | Storage | 30 GB | 60 GB | -## Deploy the base instance +Coolify also runs the applications you deploy, so size the instance for those workloads too. -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +## Environment variables - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +You can optionally set this when deploying Coolify from the marketplace. - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +| Variable | Description | +| -------------- | ------------------------------------------------------------------------------- | +| `COOLIFY_FQDN` | Fully qualified domain name for the dashboard, for example `deploy.example.com` | -2. Choose a plan that meets the requirements above. +## Getting started -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script generates the application secrets and starts the full Coolify +stack with Docker Compose. This takes 1-2 minutes. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u coolify-first-boot.service -f ``` -## Install Coolify +The login message (MOTD) confirms when Coolify is ready. -Coolify ships an official one-line installer that sets up Docker, Docker Compose, and the full -Coolify stack for you. Run it as root: +### 3. Create the administrator account -```bash -curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash +Open the dashboard in your browser: + +```text +http://:8000 ``` -The installer pulls the required images and starts every service. When it finishes, it prints the -dashboard URL. Nothing else needs to be installed by hand. +The first account you create becomes the root administrator. Set a strong email and password +immediately, since registration closes after the first user. + +### 4. Configure your instance + +1. Under **Settings**, set your instance's domain so Coolify can issue Let's Encrypt TLS + certificates and serve the dashboard over HTTPS. Coolify includes a built-in reverse proxy that + handles routing and certificates for both the dashboard and your deployed apps. DNS must point at + the VM before certificates can be issued. +2. Connect a Git source (GitHub, GitLab, or a generic repository) to start deploying applications. + +## Managing Coolify + +Coolify runs as a Docker Compose stack in `/data/coolify/source`. + +```bash +# Check status +cd /data/coolify/source && docker compose ps + +# Restart +cd /data/coolify/source && docker compose restart + +# View logs +cd /data/coolify/source && docker compose logs -f +``` -## Configure Coolify +A summary of URLs and paths is written to `/data/coolify/info.txt`. -1. Open the dashboard in your browser at `http://:8000`. -2. The first account you create becomes the root administrator. Set a strong email and password - immediately, as registration closes after the first user. -3. Under **Settings**, set your instance's domain so Coolify can issue Let's Encrypt TLS - certificates and serve the dashboard over HTTPS. Coolify includes a built-in Traefik reverse - proxy that handles routing and certificates for both the dashboard and your deployed apps, so no - separate proxy is required. -4. Add your server's public SSH key and connect a Git source (GitHub, GitLab, or a generic - repository) to start deploying applications. +## Security -## Open the firewall +Ports 8000 (dashboard), 6001 (realtime), 6002 (terminal), 80, and 443 are open on the VM's network +interface. UFW is enabled and allows those ports plus SSH (port 22). Ports 80 and 443 serve your +deployed apps and TLS. -The instance allows only SSH (port 22) externally by default. Open the ports Coolify needs and add -them to the instance's network/security rules in the portal: +Once you configure a custom domain with Let's Encrypt, reach the dashboard over HTTPS on port 443. +You can then close ports 8000, 6001, and 6002 if you no longer need direct access: ```bash -sudo ufw allow 8000/tcp -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -sudo ufw allow 6001/tcp -sudo ufw allow 6002/tcp +sudo ufw delete allow 8000/tcp +sudo ufw delete allow 6001/tcp +sudo ufw delete allow 6002/tcp ``` -Ports 80 and 443 serve your deployed apps and TLS. Ports 6001 and 6002 are used by Coolify's -realtime and terminal features. +Complete the administrator setup promptly after first boot so no one else can claim the root +account. ## Next steps - [Coolify documentation](https://coolify.io/docs) -- [Coolify installation guide](https://coolify.io/docs/get-started/installation) +- [Getting started with Coolify](https://coolify.io/docs/get-started/introduction) diff --git a/src/content/docs/public-cloud/marketplace/dify.md b/src/content/docs/public-cloud/marketplace/dify.md index 7832d80..4af89cb 100644 --- a/src/content/docs/public-cloud/marketplace/dify.md +++ b/src/content/docs/public-cloud/marketplace/dify.md @@ -6,12 +6,17 @@ Dify is an open-source platform for building LLM applications and AI agents. It workflow builder, retrieval-augmented generation (RAG) pipelines, prompt management, and an agent framework so teams can design, test, and deploy generative-AI apps from one interface. -:::note[Coming soon] +## Software included -A pre-built Dify image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from the -marketplace and follow the steps below to install Dify yourself. +| Component | Version | +| -------------- | ------------- | +| Dify | 1.15.0 | +| Docker | Latest stable | +| Docker Compose | Latest stable | +| Ubuntu | 24.04 LTS | -::: +Dify runs as a multi-container Docker Compose stack (API, worker, web, PostgreSQL, Redis, Weaviate +vector store, and nginx). ## Requirements @@ -21,117 +26,95 @@ marketplace and follow the steps below to install Dify yourself. | RAM | 4 GB | 8 GB | | Storage | 40 GB | 80 GB | -Dify runs as a multi-container Docker Compose stack (API, worker, web, database, vector store, and -nginx), so RAM and storage requirements grow with usage. +RAM and storage requirements grow with usage. -## Deploy the base instance +## Environment variables -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +You can optionally set these when deploying Dify from the marketplace. Leave any field blank to have +a secure random value generated automatically. - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +| Variable | Description | +| -------------------- | --------------------------------------------------------------------------------------- | +| `DIFY_PUBLIC_URL` | Public base URL (for example `https://dify.example.com`) for console, API, and webhooks | +| `DIFY_INIT_PASSWORD` | Optional password that gates the one-time `/install` setup wizard | +| `DIFY_ENABLE_HTTPS` | Set to `true` to have the bundled nginx serve HTTPS. Defaults to `false` | - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +## Getting started -2. Choose a plan that meets the requirements above. - -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script generates the internal database and Redis secrets, writes the +environment file, and starts the stack with Docker Compose. This takes a few minutes while the +containers become healthy. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u dify-first-boot.service -f ``` -## Install Dify +The login message (MOTD) confirms when Dify is ready and prints the internal credentials. -Dify ships as a Docker Compose stack, so install Docker Engine and the Compose plugin first. +### 3. Complete the admin setup -Set up Docker's official APT repository for Ubuntu 24.04 LTS (`noble`): +Open a browser and complete the one-time admin setup: -```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null </install ``` -Install Docker Engine and the Compose plugin: +Create the admin account (email and password of your choice), then sign in at +`http:///`. If you set `DIFY_INIT_PASSWORD`, enter it first to open the wizard. -```bash -sudo apt update -sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -``` +### 4. Add a model provider -Allow the `ubuntu` user to run Docker without sudo, then re-open your SSH session: +From **Settings → Model Provider**, add an LLM provider (such as OpenAI, Anthropic, or a self-hosted +Ollama endpoint) before building apps. -```bash -sudo usermod -aG docker ubuntu -``` +### 5. Review the generated credentials -Clone the latest Dify release, copy the environment file, and start the stack: +The internal database and Redis passwords are written to a root-only file: ```bash -sudo apt install -y git jq -git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git -cd dify/docker -cp .env.example .env -docker compose up -d +sudo cat /etc/dify/credentials.txt ``` -Confirm all containers are up: +## Managing Dify -```bash -docker compose ps -``` +Dify runs as a Docker Compose stack in `/opt/dify/docker`. -## Configure Dify +```bash +# Check status +cd /opt/dify/docker && docker compose ps -The stack's nginx container publishes ports 80 and 443. Open a browser and complete the one-time -admin setup: +# Restart +cd /opt/dify/docker && docker compose restart -```text -http:///install +# View logs +cd /opt/dify/docker && docker compose logs -f ``` -Create the admin account, then sign in at `http:///`. From **Settings → Model -Provider**, add an LLM provider (such as OpenAI, Anthropic, or a self-hosted Ollama endpoint) before -building apps. - -For production, edit `dify/docker/.env` to set a public-facing URL and enable HTTPS. Dify can -terminate TLS through its bundled nginx (set `NGINX_HTTPS_ENABLED=true` and mount certificates), or -you can run it behind your own reverse proxy. Apply changes with: +Environment configuration: `/opt/dify/docker/.env`. Persistent data is stored under +`/opt/dify/docker/volumes`. -```bash -cd ~/dify/docker -docker compose down && docker compose up -d -``` +## Security -## Open the firewall +Ports 80 and 443 are open on the VM's network interface. UFW is enabled and allows SSH (port 22), +HTTP (80), and HTTPS (443). -The instance allows only SSH (port 22) externally by default. Open the ports Dify needs and add them -to the instance's network/security rules in the portal: +Dify serves plain HTTP by default. **For production use**, set `DIFY_PUBLIC_URL` to your domain and +enable HTTPS, either through the bundled nginx (`DIFY_ENABLE_HTTPS=true` with your own certificates) +or your own reverse proxy. Apply `.env` changes with: ```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp +cd /opt/dify/docker && docker compose down && docker compose up -d ``` ## Next steps - [Dify documentation](https://docs.dify.ai/) -- [Dify installation guide](https://docs.dify.ai/en/getting-started/install-self-hosted/docker-compose) +- [Dify self-hosting guide](https://docs.dify.ai/en/getting-started/install-self-hosted/docker-compose) diff --git a/src/content/docs/public-cloud/marketplace/drupal.md b/src/content/docs/public-cloud/marketplace/drupal.md index 310dbca..0dd3249 100644 --- a/src/content/docs/public-cloud/marketplace/drupal.md +++ b/src/content/docs/public-cloud/marketplace/drupal.md @@ -6,12 +6,19 @@ Drupal is an open-source content management system for content-heavy websites an entity model, taxonomy, and module ecosystem let teams build custom content types, editorial workflows, and multilingual sites without writing the underlying code themselves. -:::note[Coming soon] +## Software included -A pre-built Drupal image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Drupal yourself. +| Component | Version | +| --------- | --------- | +| Drupal | 11.4.1 | +| PHP | 8.3 | +| Apache | Latest | +| MariaDB | Latest | +| Drush | 13 | +| Ubuntu | 24.04 LTS | -::: +Drupal runs on a native LAMP stack (Apache, MariaDB, PHP). The site is pre-installed with the +**Standard** profile, so it is ready to use as soon as the VM boots. ## Requirements @@ -21,116 +28,95 @@ the marketplace and follow the steps below to install Drupal yourself. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 40 GB | -Drupal 11 runs on a LAMP stack (Linux, Apache, MySQL/MariaDB, PHP 8.3+). Storage needs grow with -media uploads and the number of installed modules. - -## Deploy the base instance - -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +Storage needs grow with media uploads and the number of installed modules. - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +## Getting started - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) - -2. Choose a plan that meets the requirements above. - -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script creates the database, installs the Drupal site with Drush, and +generates the admin and database passwords. This takes 1-2 minutes. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u drupal-first-boot.service -f ``` -## Install the LAMP stack +The login message (MOTD) confirms when Drupal is ready. -Install Apache, MariaDB, PHP 8.3, and the PHP extensions Drupal needs: +### 3. Retrieve the admin credentials + +The admin password, along with the database credentials, is written to a root-only file: ```bash -sudo apt install -y apache2 mariadb-server \ - php php-cli php-mysql php-gd php-xml php-mbstring php-curl php-zip php-intl php-apcu \ - libapache2-mod-php composer git unzip +sudo cat /root/.credentials/drupal.txt ``` -Lock down the database and answer the prompts (set a root password, remove anonymous users, and -disallow remote root login): +### 4. Sign in to the admin area -```bash -sudo mysql_secure_installation +Open the site in a browser: + +```text +http:/// ``` -Create a database and a dedicated user for Drupal: +Sign in at the admin login page: -```bash -sudo mysql <<'SQL' -CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'change-this-password'; -GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost'; -FLUSH PRIVILEGES; -SQL +```text +http:///user/login ``` -## Install Drupal +| Field | Value | +| -------- | ------------------------------------ | +| Username | `admin` | +| Password | From `/root/.credentials/drupal.txt` | + +## Managing Drupal -Create the project with Composer and hand ownership of the docroot to Apache: +Drupal is served by Apache with MariaDB, both managed by systemd. ```bash -cd /var/www -sudo composer create-project drupal/recommended-project drupal -sudo chown -R www-data:www-data /var/www/drupal -``` +# Service status +systemctl status apache2 +systemctl status mariadb -Point Apache at the `web/` docroot and enable URL rewriting: +# Restart the web server +sudo systemctl restart apache2 -```bash -sudo tee /etc/apache2/sites-available/drupal.conf >/dev/null <<'EOF' - - DocumentRoot /var/www/drupal/web - - AllowOverride All - Require all granted - - ErrorLog ${APACHE_LOG_DIR}/drupal-error.log - CustomLog ${APACHE_LOG_DIR}/drupal-access.log combined - -EOF -sudo a2ensite drupal -sudo a2dissite 000-default -sudo a2enmod rewrite -sudo systemctl reload apache2 +# Run Drush commands from the project root +cd /var/www/drupal && vendor/bin/drush status +cd /var/www/drupal && vendor/bin/drush cache:rebuild ``` -## Complete the web installer +| Path | Purpose | +| ------------------------------------------------ | ------------------------ | +| `/var/www/drupal` | Project root | +| `/var/www/drupal/web` | Web docroot | +| `/var/www/drupal/web/sites/default/settings.php` | Site configuration | +| `/var/www/drupal/web/sites/default/files` | Uploaded files and media | -Open the site in a browser and follow the setup wizard: +## Security -```text -http:/// -``` +Port 80 is open on the VM's network interface. UFW is enabled and allows SSH (port 22) and HTTP +(port 80). The image serves plain HTTP only. -Choose the **Standard** profile, then enter the database name, user, and password you created above. -The installer writes `web/sites/default/settings.php` and creates the admin account. For production, -put the instance behind your own domain and enable HTTPS (for example with Certbot and the Apache -plugin). +:::caution -## Open the firewall +The site ships with `$settings['trusted_host_patterns']` set to allow any host (`^.+$`). Before +putting the site on a public domain, tighten this in +`/var/www/drupal/web/sites/default/settings.php` to match your hostname. -The instance allows only SSH (port 22) externally by default. Open HTTP and HTTPS, and add the same -ports to the instance's network/security rules in the portal: +::: -```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -``` +**For production use**, put the instance behind a reverse proxy with TLS (for example Nginx or +Caddy) so the site is served over HTTPS, and update `trusted_host_patterns` accordingly. ## Next steps - [Drupal documentation](https://www.drupal.org/docs) -- [Installing Drupal](https://www.drupal.org/docs/getting-started/installing-drupal) +- [Drush documentation](https://www.drush.org/) diff --git a/src/content/docs/public-cloud/marketplace/ghost.md b/src/content/docs/public-cloud/marketplace/ghost.md index 1edddf7..71184a3 100644 --- a/src/content/docs/public-cloud/marketplace/ghost.md +++ b/src/content/docs/public-cloud/marketplace/ghost.md @@ -3,15 +3,17 @@ title: Ghost --- Ghost is an open-source publishing platform for blogs, newsletters, and membership sites. It pairs a -fast editor and built-in email delivery with a clean, theme-driven front end. The official -`ghost-cli` tool installs and manages a production deployment on Ubuntu. +fast editor and built-in email delivery with a clean, theme-driven front end. -:::note[Coming soon] +## Software included -A pre-built Ghost image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Ghost yourself. - -::: +| Component | Version | +| --------- | --------- | +| Ghost | 5.97.0 | +| Node.js | 20.x | +| MySQL | 8.0 | +| nginx | Latest | +| Ubuntu | 24.04 LTS | ## Requirements @@ -21,99 +23,97 @@ the marketplace and follow the steps below to install Ghost yourself. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 40 GB | -## Deploy the base instance +:::caution + +Ghost requires a domain name. It does not run against a bare IP address. Provide `GHOST_URL` at +deploy time (see below) and point that domain's DNS at the VM. + +::: -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +## Environment variables - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +You can optionally set these when deploying Ghost from the marketplace. Leave `GHOST_DB_PASSWORD` +blank to have a secure random value generated automatically. - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +| Variable | Description | +| ------------------- | ----------------------------------------------------- | +| `GHOST_URL` | Full site URL, for example `https://blog.example.com` | +| `GHOST_DB_PASSWORD` | Password for the MySQL `ghost` database user | -2. Choose a plan that meets the requirements above. +If `GHOST_URL` is not set, the VM serves a placeholder page and leaves Ghost unconfigured until you +provide a domain. -3. When the instance is **Running**, connect over SSH: +## Getting started + +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script creates the MySQL database, configures Ghost for your `GHOST_URL`, +writes the nginx virtual host, and starts the site as a systemd service. This takes 1-2 minutes. +Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u ghost-first-boot.service -f ``` -## Install Ghost +The login message (MOTD) confirms when Ghost is ready. -Ghost's official guide targets **Ubuntu 24.04 LTS**. A production install requires **nginx**, -**MySQL 8**, an LTS version of **Node.js**, and a registered **domain name**. Ghost errors out when -installed against a bare IP address. +### 3. Finish admin setup -Install nginx and MySQL 8: +Open the admin area in a browser and create the first administrator account: -```bash -sudo apt install -y nginx mysql-server -sudo ufw allow 'Nginx Full' +```text +https://your-domain.com/ghost ``` -Install a supported Node.js LTS (Ghost supports the active LTS lines, this example uses 22): +The generated database credentials are written to a root-only file: ```bash -sudo apt-get install -y ca-certificates curl gnupg -sudo mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ - | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" \ - | sudo tee /etc/apt/sources.list.d/nodesource.list -sudo apt-get update && sudo apt-get install -y nodejs +sudo cat /etc/ghost/credentials.txt ``` -Install the Ghost CLI globally: +### 4. Enable HTTPS -```bash -sudo npm install ghost-cli@latest -g -``` - -Create the install directory (owned by the `ubuntu` user) and run the installer from inside it: +TLS is not configured automatically, because it requires your domain's DNS to point at the VM first. +Once that resolves, provision a free Let's Encrypt certificate: ```bash -sudo mkdir -p /var/www/ghost -sudo chown ubuntu:ubuntu /var/www/ghost -sudo chmod 775 /var/www/ghost cd /var/www/ghost -ghost install +ghost setup ssl ``` -## Configure Ghost +## Managing Ghost -`ghost install` is interactive. It prompts for your site URL (use `https://your-domain.com`), -configures the MySQL database, sets up the systemd service and the nginx virtual host, and offers to -provision a free Let's Encrypt TLS certificate. Accept it for a production site. +Ghost runs as a per-site systemd service named `ghost_` (for example +`ghost_blog-example-com`). Manage it from the install directory: -When prompted for the MySQL connection, supply the root password you set above. Ghost creates its -own database and user. After install, complete admin setup at: +```bash +# Show the running instance and its service name +cd /var/www/ghost && ghost ls -```text -https://your-domain.com/ghost +# Restart, stop, and start +ghost restart +ghost stop +ghost start ``` -Manage the instance with `ghost` commands from `/var/www/ghost` (`ghost ls`, `ghost stop`, -`ghost start`, `ghost restart`). +Install directory: `/var/www/ghost`. Content (themes, images, and data) lives under +`/var/www/ghost/content`. -## Open the firewall +## Security -The instance allows only SSH (port 22) externally by default. Open the port(s) Ghost needs and add -them to the instance's network/security rules in the portal: +Ports 80 and 443 are open on the VM's network interface. UFW is enabled and allows SSH (port 22), +HTTP (80), and HTTPS (443). -```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -``` +**For production use**, complete the Let's Encrypt step above so the site is served over HTTPS, and +restrict SSH access to known IP ranges. ## Next steps -- [Ghost documentation](https://docs.ghost.org/) -- [Ghost installation guide](https://docs.ghost.org/install/ubuntu) +- [Ghost documentation](https://ghost.org/docs/) +- [Configuring Ghost](https://ghost.org/docs/config/) diff --git a/src/content/docs/public-cloud/marketplace/index.md b/src/content/docs/public-cloud/marketplace/index.md index 85957e4..8e6c686 100644 --- a/src/content/docs/public-cloud/marketplace/index.md +++ b/src/content/docs/public-cloud/marketplace/index.md @@ -9,11 +9,11 @@ automatically. Credentials are generated, services are configured, and the image
- 20 + 32 live images
- 45 + 33 coming soon
@@ -199,7 +199,7 @@ automatically. Credentials are generated, services are configured, and the image

CMS

- @@ -253,6 +273,36 @@ automatically. Credentials are generated, services are configured, and the image
+ +
+ +
+
+

Jenkins

+

Automation server for building, testing, and deploying.

+
+
+ + +
+ +
+
+

Portainer

+

Web UI to manage Docker, Swarm, and Kubernetes.

+
+
+ + +
+ +
+
+

Coolify

+

Self-hosted PaaS for deploying apps, databases, and services.

+
+
+
@@ -335,6 +385,16 @@ automatically. Credentials are generated, services are configured, and the image
+ +
+ +
+
+

Supabase

+

Open-source Firebase alternative built on PostgreSQL.

+
+
+
@@ -390,6 +450,36 @@ automatically. Credentials are generated, services are configured, and the image
+ +
+ +
+
+

Keycloak

+

Open-source identity and access management with SSO.

+
+
+ + +
+ +
+
+

Authentik

+

Flexible identity provider for SSO, OAuth, and SAML.

+
+
+ + +
+ +
+
+

Vaultwarden

+

Lightweight self-hosted Bitwarden-compatible password manager.

+
+
+ @@ -400,7 +490,7 @@ automatically. Credentials are generated, services are configured, and the image

Monitoring

- @@ -422,7 +522,7 @@ automatically. Credentials are generated, services are configured, and the image

AI & Agents

- - -
-
-
- -
-

Coming soon

-
-
-
-

Ollama Coming soon

+

Ollama

Run local LLMs on your VM and serve models through the Ollama API.

@@ -461,11 +549,23 @@ automatically. Credentials are generated, services are configured, and the image
-

Dify Coming soon

+

Dify

Build LLM apps and AI agents with workflows, RAG, and model providers.

+
+ + +
+
+
+ +
+

Coming soon

+
+
+
@@ -546,16 +646,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Ghost Coming soon

-

Publishing platform for newsletters, blogs, and memberships.

-
-
-
@@ -586,36 +676,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Prometheus Coming soon

-

Metrics collection and alerting toolkit for infrastructure.

-
-
- - -
- -
-
-

Coolify Coming soon

-

Self-hosted PaaS for deploying apps, databases, and services.

-
-
- - -
- -
-
-

Vaultwarden Coming soon

-

Lightweight self-hosted Bitwarden-compatible password manager.

-
-
-
@@ -736,36 +796,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Jenkins Coming soon

-

Automation server for building, testing, and deploying.

-
-
- - -
- -
-
-

Keycloak Coming soon

-

Open-source identity and access management with SSO.

-
-
- - -
- -
-
-

Authentik Coming soon

-

Flexible identity provider for SSO, OAuth, and SAML.

-
-
-
@@ -776,16 +806,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Portainer Coming soon

-

Web UI to manage Docker, Swarm, and Kubernetes.

-
-
-
@@ -826,16 +846,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Supabase Coming soon

-

Open-source Firebase alternative built on PostgreSQL.

-
-
-
@@ -886,15 +896,5 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Drupal Coming soon

-

Flexible open-source CMS for content-heavy sites and applications.

-
-
-
diff --git a/src/content/docs/public-cloud/marketplace/jenkins.md b/src/content/docs/public-cloud/marketplace/jenkins.md index d6fa4b6..6407c35 100644 --- a/src/content/docs/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/public-cloud/marketplace/jenkins.md @@ -6,12 +6,13 @@ Jenkins is an open-source automation server for building, testing, and deploying pipeline-as-code model and large plugin ecosystem let you wire up continuous integration and continuous delivery for almost any toolchain. The web UI runs on port 8080. -:::note[Coming soon] +## Software included -A pre-built Jenkins image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Jenkins yourself. - -::: +| Component | Version | +| --------- | ------------- | +| Jenkins | 2.555.3 (LTS) | +| OpenJDK | 21 (JRE) | +| Ubuntu | 24.04 LTS | ## Requirements @@ -21,80 +22,83 @@ the marketplace and follow the steps below to install Jenkins yourself. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 50 GB | -## Deploy the base instance +## Getting started -1. In the ZSoftly Cloud portal, open **Apps**, select **Jenkins**, and click **Deploy**, or create - an **Ubuntu 24.04 LTS** instance from **Instances → Create**. Both give you a clean Ubuntu 24.04 - VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script starts Jenkins, which generates a unique initial admin password +for this instance. This can take a few minutes on the first start. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u jenkins-first-boot.service -f ``` -## Install Jenkins +The login message (MOTD) confirms when Jenkins is ready. -Jenkins runs on the JVM. Install a supported OpenJDK (17 or 21) first: +### 3. Retrieve the initial admin password ```bash -sudo apt install -y fontconfig openjdk-21-jre -java -version +sudo cat /var/lib/jenkins/secrets/initialAdminPassword ``` -Add the Jenkins LTS apt repository signing key and source list: +### 4. Complete the setup wizard -```bash -sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \ - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key +Open a browser and navigate to: -echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" \ - | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null +```text +http://:8080 ``` -Install Jenkins: +Paste the initial admin password, install the suggested plugins, and create your first administrator +account. -```bash -sudo apt update -sudo apt install -y jenkins -``` +## Managing Jenkins -The package installs a systemd service that starts on boot. Confirm it is running: +Jenkins runs as a systemd service. ```bash -sudo systemctl enable --now jenkins -sudo systemctl status jenkins +# Check status +systemctl status jenkins + +# Restart +sudo systemctl restart jenkins + +# View logs +sudo journalctl -u jenkins -f ``` -## Configure Jenkins +Jenkins home (jobs, plugins, and configuration): `/var/lib/jenkins`. -Jenkins listens on port 8080. Open `http://:8080` in a browser to start the setup -wizard. The wizard first asks for the auto-generated setup password. Print it from the server: +## Security -```bash -sudo cat /var/lib/jenkins/secrets/initialAdminPassword -``` +Port 8080 is open on the VM's network interface. UFW is enabled and allows SSH (port 22) and Jenkins +(port 8080). No build-agent port (50000) is opened by default. -Paste the value, install the suggested plugins, and create your first administrator account. For a -production setup, put Jenkins behind a reverse proxy such as nginx with a TLS certificate, then -serve the UI over HTTPS instead of exposing port 8080 directly. +**To restrict the UI to a specific IP:** -## Open the firewall +```bash +sudo ufw delete allow 8080/tcp +sudo ufw allow from to any port 8080 +``` -The instance allows only SSH (port 22) externally by default. Open the port(s) Jenkins needs and add -them to the instance's network/security rules in the portal: +**To reach the UI without opening the firewall, use an SSH tunnel:** ```bash -sudo ufw allow 8080/tcp +# Run this on your local machine +ssh -L 8080:localhost:8080 ubuntu@ ``` +**For production use**, place Jenkins behind a reverse proxy such as nginx with a TLS certificate +and serve the UI over HTTPS instead of exposing port 8080 directly. + ## Next steps - [Jenkins documentation](https://www.jenkins.io/doc/) -- [Jenkins installation guide](https://www.jenkins.io/doc/book/installing/linux/) +- [Managing plugins](https://www.jenkins.io/doc/book/managing/plugins/) +- [Pipeline reference](https://www.jenkins.io/doc/book/pipeline/) diff --git a/src/content/docs/public-cloud/marketplace/keycloak.md b/src/content/docs/public-cloud/marketplace/keycloak.md index e926ede..9684457 100644 --- a/src/content/docs/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/public-cloud/marketplace/keycloak.md @@ -4,15 +4,18 @@ title: Keycloak Keycloak is an open-source identity and access management platform. It provides single sign-on (SSO), user federation, social and identity-broker login, and fine-grained authorization through -standard protocols such as OpenID Connect, OAuth 2.0, and SAML. This guide runs the official -Keycloak container, with notes for both a quick development start and a production setup. +standard protocols such as OpenID Connect, OAuth 2.0, and SAML. -:::note[Coming soon] +## Software included -A pre-built Keycloak image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Keycloak yourself. +| Component | Version | +| ---------- | ------------- | +| Keycloak | 26.0.7 | +| PostgreSQL | 16 | +| Docker | Latest stable | +| Ubuntu | 24.04 LTS | -::: +Keycloak runs in production mode (`start`) with a PostgreSQL database, as a Docker Compose stack. ## Requirements @@ -22,129 +25,103 @@ the marketplace and follow the steps below to install Keycloak yourself. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 40 GB | -## Deploy the base instance +## Environment variables + +You can optionally set these when deploying Keycloak from the marketplace. Leave a password field +blank to have a secure random value generated automatically. + +| Variable | Description | +| ------------------------- | ------------------------------------------------------------------------- | +| `KEYCLOAK_ADMIN_PASSWORD` | Password for the initial `admin` account | +| `KC_DB_PASSWORD` | Password for the internal PostgreSQL database | +| `KC_HOSTNAME` | Public hostname or IP Keycloak is served from. Defaults to the VM's IP | +| `KC_BEHIND_PROXY` | Set to `true` only when fronting Keycloak with your own TLS reverse proxy | -1. In the ZSoftly Cloud portal, open **Apps**, select **Keycloak**, and click **Deploy**, or create - an **Ubuntu 24.04 LTS** instance from **Instances → Create**. Both give you a clean Ubuntu 24.04 - VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +## Getting started + +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script generates the admin and database passwords, writes the environment +file, and starts the stack with Docker Compose. This takes 1-2 minutes. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u keycloak-first-boot.service -f ``` -## Install Keycloak +The login message (MOTD) confirms when Keycloak is ready and prints the admin credentials. -Keycloak is distributed as an official Docker image from `quay.io`, so install Docker Engine first. +### 3. Retrieve the admin credentials -Set up Docker's official APT repository for Ubuntu 24.04 LTS (`noble`): +The credentials are also written to a root-only file: ```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:8080 ``` -To try Keycloak quickly, start it in development mode. This bootstraps an initial admin user and -serves the console on port 8080: +Sign in with the `admin` user and the generated password. -```bash -sudo docker run -d --name keycloak --restart unless-stopped \ - -p 8080:8080 \ - -e KEYCLOAK_ADMIN=admin \ - -e KEYCLOAK_ADMIN_PASSWORD='' \ - quay.io/keycloak/keycloak:latest start-dev -``` +| Field | Value | +| -------- | ------------------------------------ | +| Username | `admin` | +| Password | From `/etc/keycloak/credentials.txt` | -Open `http://:8080` and sign in to the admin console with the credentials above. - -## Configure Keycloak - -Development mode uses an in-memory database and insecure defaults, so it is not suitable for -production. For a production deployment, run Keycloak with the `start` command, an external -database, HTTPS on port 8443, and an explicit hostname. - -The example below uses Docker Compose with PostgreSQL. Create `docker-compose.yml`: - -```yaml -services: - postgres: - image: postgres:16 - restart: unless-stopped - environment: - POSTGRES_DB: keycloak - POSTGRES_USER: keycloak - POSTGRES_PASSWORD: - volumes: - - postgres_data:/var/lib/postgresql/data - - keycloak: - image: quay.io/keycloak/keycloak:latest - restart: unless-stopped - command: start - environment: - KEYCLOAK_ADMIN: admin - KEYCLOAK_ADMIN_PASSWORD: - KC_DB: postgres - KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak - KC_DB_USERNAME: keycloak - KC_DB_PASSWORD: - KC_HOSTNAME: auth.example.com - KC_PROXY_HEADERS: xforwarded - KC_HTTP_ENABLED: 'true' - ports: - - '8080:8080' - depends_on: - - postgres - -volumes: - postgres_data: -``` +## Managing Keycloak -Start the stack: +Keycloak runs as a Docker Compose stack in `/opt/keycloak`. ```bash -sudo docker compose up -d +# Check status +cd /opt/keycloak && docker compose ps + +# Restart +cd /opt/keycloak && docker compose restart + +# View logs +cd /opt/keycloak && docker compose logs -f ``` -Point `auth.example.com` at the VM and place Keycloak behind a reverse proxy (Caddy, nginx, or -Traefik) that terminates TLS on 443 and forwards to host port 8080. +Environment configuration: `/opt/keycloak/.env`. PostgreSQL data is stored under +`/opt/keycloak/data/postgres` and is not exposed outside the Docker network. + +## Security + +Port 8080 is open on the VM's network interface. UFW is enabled and allows SSH (port 22) and +Keycloak (port 8080). Keycloak serves plain HTTP on 8080. -## Open the firewall +:::caution -The instance allows only SSH (port 22) externally by default. Open the port Keycloak serves and add -it to the instance's network/security rules in the portal: +`KC_HOSTNAME` defaults to the VM's private IP. If you later attach a public IP, DNS name, or reverse +proxy, set `KC_HOSTNAME` at deploy time (or edit `/opt/keycloak/.env` and run +`cd /opt/keycloak && docker compose up -d`), otherwise production-mode hostname checks can reject +requests from the new address. + +::: + +**For production use**, front Keycloak with a reverse proxy (Caddy, nginx, or Traefik) that +terminates TLS on port 443 and forwards to port 8080, and set `KC_BEHIND_PROXY=true`. Restrict +direct access to port 8080: ```bash -sudo ufw allow 8080/tcp +sudo ufw delete allow 8080/tcp +sudo ufw allow from to any port 8080 ``` -If you front Keycloak with a reverse proxy, open 443 instead and keep 8080 internal. - ## Next steps - [Keycloak documentation](https://www.keycloak.org/documentation) -- [Keycloak installation guide](https://www.keycloak.org/getting-started/getting-started-docker) +- [Configuring the hostname](https://www.keycloak.org/server/hostname) +- [Reverse proxy setup](https://www.keycloak.org/server/reverseproxy) diff --git a/src/content/docs/public-cloud/marketplace/ollama.md b/src/content/docs/public-cloud/marketplace/ollama.md index 8cc523e..748adb8 100644 --- a/src/content/docs/public-cloud/marketplace/ollama.md +++ b/src/content/docs/public-cloud/marketplace/ollama.md @@ -7,12 +7,15 @@ such as Llama, Qwen, Gemma, and DeepSeek on your own hardware. It exposes a simp command-line interface, so you can run inference privately without sending data to a third-party provider. -:::note[Coming soon] +## Software included -A pre-built Ollama image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Ollama yourself. +| Component | Version | +| --------- | --------- | +| Ollama | 0.9.2 | +| Ubuntu | 24.04 LTS | -::: +No models are pre-loaded. You pull the models you need on first boot (see +[Getting started](#getting-started)). ## Requirements @@ -51,64 +54,52 @@ enough RAM, and their root disk holds the model files. See Adjust from there: -- **Same RAM, lower cost**: the memory-optimized family gives the same RAM with fewer vCPUs, good - for occasional use. Use `cim1.*` in YOW-1 or `cam2.*` in YUL-1 (for example `cim1.xl` or `cam2.xl` - for 64 GB). -- **Faster responses**: add vCPUs with the cpu-optimized family (`cac1.*` in YOW-1, `cac2.*` in +- **Same RAM, lower cost**: the memory-focused family gives the same RAM with fewer vCPUs, good for + occasional use. Use `cim1.*` in YOW-1 or `cam2.*` in YUL-1 (for example `cim1.xl` or `cam2.xl` for + 64 GB). +- **Faster responses**: add vCPUs with the CPU-focused family (`cac1.*` in YOW-1, `cac2.*` in YUL-1), or choose a GPU plan for 13B and larger models. - **Several large models on one instance**: attach a [block storage volume](/public-cloud/compute/settings/block-storage/) instead of moving to a bigger plan. -## Deploy the base instance +## Environment variables -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +You can optionally set this when deploying Ollama from the marketplace. - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +| Variable | Description | +| ------------- | ------------------------------------------------------------------------------- | +| `OLLAMA_HOST` | Address and port the API binds to. Defaults to `0.0.0.0:11434` (all interfaces) | - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +## Getting started -2. Choose a plan that meets the requirements above. - -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: - -```bash -sudo apt update && sudo apt upgrade -y -``` - -## Install Ollama +### 2. Wait for first-boot configuration -Run the official install script. It installs the `ollama` binary, creates a dedicated `ollama` -system user, and sets up a systemd service that starts automatically: +On the first boot, a setup script applies the listen address and starts the service. This takes +under a minute. Track progress: ```bash -curl -fsSL https://ollama.com/install.sh | sh +journalctl -u ollama-first-boot.service -f ``` -Confirm the service is running and check the version: +The login message (MOTD) confirms when Ollama is ready. -```bash -systemctl status ollama --no-pager -ollama --version -``` - -Pull a model and run a quick prompt: +### 3. Pull a model and run a prompt ```bash ollama pull llama3.2 ollama run llama3.2 "Hello, what can you do?" ``` -The API listens on `127.0.0.1:11434` by default. Test it locally: +### 4. Use the API + +The API listens on port `11434`. Test it from the VM: ```bash curl http://localhost:11434/api/generate -d '{ @@ -118,42 +109,54 @@ curl http://localhost:11434/api/generate -d '{ }' ``` -## Configure Ollama +From another host, replace `localhost` with the VM's IP. + +## Managing Ollama -By default Ollama binds only to localhost. To accept connections from other hosts, set `OLLAMA_HOST` -on the systemd service: +Ollama runs as a systemd service. ```bash -sudo systemctl edit ollama -``` +# Check status +systemctl status ollama + +# Restart +sudo systemctl restart ollama -Add the following override, then save: +# View logs +sudo journalctl -u ollama -f -```ini -[Service] -Environment="OLLAMA_HOST=0.0.0.0:11434" +# List, pull, and remove models +ollama list +ollama pull qwen2.5 +ollama rm qwen2.5 ``` -Reload and restart: +Models are stored in `/usr/share/ollama/.ollama/models`. A summary of URLs and commands is written +to `/etc/ollama/info.txt`. -```bash -sudo systemctl daemon-reload -sudo systemctl restart ollama -``` +## Security -Ollama has no built-in authentication. If you expose port 11434, place it behind a reverse proxy -that enforces TLS and authentication, or restrict access to trusted IPs only. +Port 11434 is open on the VM's network interface, and Ollama has **no built-in authentication**. UFW +is enabled and allows SSH (port 22) and the Ollama API (port 11434). -## Open the firewall +**To restrict the API to a specific IP:** -The instance allows only SSH (port 22) externally by default. Open the port Ollama needs and add it -to the instance's network/security rules in the portal: +```bash +sudo ufw delete allow 11434/tcp +sudo ufw allow from to any port 11434 +``` + +**To reach the API without opening the firewall, use an SSH tunnel:** ```bash -sudo ufw allow 11434/tcp +# Run this on your local machine +ssh -L 11434:localhost:11434 ubuntu@ ``` +**For production use**, place Ollama behind a reverse proxy that enforces TLS and authentication, or +restrict access to trusted IPs only. + ## Next steps - [Ollama documentation](https://docs.ollama.com/) -- [Ollama installation guide](https://docs.ollama.com/linux) +- [Ollama API reference](https://docs.ollama.com/api) diff --git a/src/content/docs/public-cloud/marketplace/portainer.md b/src/content/docs/public-cloud/marketplace/portainer.md index 5670ff5..e95a2bd 100644 --- a/src/content/docs/public-cloud/marketplace/portainer.md +++ b/src/content/docs/public-cloud/marketplace/portainer.md @@ -4,14 +4,15 @@ title: Portainer Portainer is a lightweight management UI for Docker and Kubernetes environments. It lets you deploy containers, manage images, volumes, and networks, and monitor your stacks from a single web console. -The UI runs on port 9443 over HTTPS (port 9000 for plain HTTP). +The UI runs on port 9443 over HTTPS. -:::note[Coming soon] +## Software included -A pre-built Portainer image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance -from the marketplace and follow the steps below to install Portainer yourself. - -::: +| Component | Version | +| ------------ | ------------- | +| Portainer CE | 2.27.9 | +| Docker | Latest stable | +| Ubuntu | 24.04 LTS | ## Requirements @@ -21,86 +22,86 @@ from the marketplace and follow the steps below to install Portainer yourself. | RAM | 1 GB | 2 GB | | Storage | 20 GB | 40 GB | -## Deploy the base instance +## Getting started -1. In the ZSoftly Cloud portal, open **Apps**, select **Portainer**, and click **Deploy**, or create - an **Ubuntu 24.04 LTS** instance from **Instances → Create**. Both give you a clean Ubuntu 24.04 - VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script starts the Portainer container with Docker Compose. This takes +under a minute. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u portainer-first-boot.service -f ``` -## Install Portainer +The login message (MOTD) confirms when Portainer is ready. -Portainer runs as a Docker container, so install Docker Engine first using the official convenience -script: +### 3. Create the administrator account -```bash -curl -fsSL https://get.docker.com | sudo sh +Open a browser and navigate to: + +```text +https://:9443 ``` -Confirm Docker is running: +On first load, create your administrator account by setting a username and a strong password. +Portainer connects to the local Docker environment through the mounted socket, so your containers, +images, and volumes appear immediately. -```bash -docker version -``` +:::caution -Create a volume for Portainer's persistent data: +Portainer locks initial setup if no admin account is created shortly after the container starts. If +the setup window expires, restart Portainer and reload the page: ```bash -docker volume create portainer_data +cd /opt/portainer && docker compose restart ``` -Run the Portainer CE server container: +The UI uses a self-signed certificate, so your browser shows a security warning. Accept the +exception to proceed. -```bash -sudo docker run -d \ - -p 8000:8000 \ - -p 9443:9443 \ - --name portainer \ - --restart=always \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v portainer_data:/data \ - portainer/portainer-ce:lts -``` +::: -Confirm the container is running: +## Managing Portainer + +Portainer runs as a Docker Compose stack in `/opt/portainer`. ```bash -docker ps -``` +# Check status +cd /opt/portainer && docker compose ps -## Configure Portainer +# Restart +cd /opt/portainer && docker compose restart -Portainer serves the UI on port 9443 over HTTPS with a self-signed certificate. Open -`https://:9443` in a browser within a few minutes of starting the container. For -security, Portainer locks initial setup if no admin account is created shortly after first boot. +# View logs +cd /opt/portainer && docker compose logs -f +``` -On first load, create your administrator account by setting a username and a strong password. -Portainer then connects to the local Docker environment through the mounted socket, so your -containers, images, and volumes appear immediately. The self-signed certificate triggers a browser -warning. For a production setup, put Portainer behind a reverse proxy such as nginx with a trusted -TLS certificate. +Portainer's persistent data is stored in `/var/lib/portainer`. A summary of URLs and paths is +written to `/etc/portainer/info.txt`. -## Open the firewall +## Security -The instance allows only SSH (port 22) externally by default. Open the port(s) Portainer needs and -add them to the instance's network/security rules in the portal: +Port 9443 is open on the VM's network interface. UFW is enabled and allows SSH (port 22) and +Portainer (port 9443). Ports 8000, 9000, and the Docker API are not opened by default. + +Portainer bind-mounts the host Docker socket, giving it full control of the VM's Docker daemon. +Restrict access to port 9443: ```bash -sudo ufw allow 9443/tcp +sudo ufw delete allow 9443/tcp +sudo ufw allow from to any port 9443 ``` +**For production use**, place Portainer behind a reverse proxy such as nginx with a trusted TLS +certificate. + ## Next steps - [Portainer documentation](https://docs.portainer.io/) -- [Portainer installation guide](https://docs.portainer.io/start/install-ce/server/docker/linux) +- [Managing Docker environments](https://docs.portainer.io/user/docker) diff --git a/src/content/docs/public-cloud/marketplace/prometheus.md b/src/content/docs/public-cloud/marketplace/prometheus.md index ed95bc7..1b5734e 100644 --- a/src/content/docs/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/public-cloud/marketplace/prometheus.md @@ -7,12 +7,15 @@ configured targets at intervals, stores them in a time-series database, and eval trigger alerts. It exposes a query interface and built-in expression browser on port 9090, and pairs well with Grafana for dashboards. -:::note[Coming soon] +## Software included -A pre-built Prometheus image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance -from the marketplace and follow the steps below to install Prometheus yourself. +| Component | Version | +| ---------- | --------- | +| Prometheus | 3.4.1 | +| Ubuntu | 24.04 LTS | -::: +The image ships the Prometheus server only. Add exporters (such as `node_exporter`) and Alertmanager +as separate targets. ## Requirements @@ -22,140 +25,99 @@ from the marketplace and follow the steps below to install Prometheus yourself. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 50 GB | -## Deploy the base instance +Storage requirements grow with the number of series and the retention period. -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +## Environment variables - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +You can optionally set this when deploying Prometheus from the marketplace. - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +| Variable | Description | +| ------------------------------- | ---------------------------------------------------------------- | +| `PROMETHEUS_WEB_LISTEN_ADDRESS` | Address and port the UI/API binds to. Defaults to `0.0.0.0:9090` | -2. Choose a plan that meets the requirements above. +## Getting started -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script applies the listen address and starts the service. This takes +under a minute. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u prometheus-first-boot.service -f ``` -## Install Prometheus +The login message (MOTD) confirms when Prometheus is ready. -Install Prometheus from the official binary release and run it as a systemd service. This is the -common production method and gives you full control over the version. +### 3. Access the Prometheus UI -Create a dedicated, unprivileged system user and the config and data directories: +Open a browser and navigate to the expression browser and built-in UI: -```bash -sudo useradd --no-create-home --shell /bin/false prometheus -sudo mkdir -p /etc/prometheus /var/lib/prometheus +```text +http://:9090 ``` -Download the latest release from prometheus.io and extract it. Check the -[releases page](https://prometheus.io/download/) for the current version and update it below: - -```bash -PROM_VERSION=3.4.1 -cd /tmp -curl -fsSLO https://github.com/prometheus/prometheus/releases/download/v${PROM_VERSION}/prometheus-${PROM_VERSION}.linux-amd64.tar.gz -tar -xzf prometheus-${PROM_VERSION}.linux-amd64.tar.gz -cd prometheus-${PROM_VERSION}.linux-amd64 -``` +### 4. Add scrape targets -Install the binaries and supporting files, then set ownership to the `prometheus` user: +Edit the scrape configuration, validate it, and reload without a restart: ```bash -sudo cp prometheus promtool /usr/local/bin/ -sudo cp -r consoles console_libraries /etc/prometheus/ -sudo cp prometheus.yml /etc/prometheus/prometheus.yml -sudo chown -R prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool /etc/prometheus /var/lib/prometheus +sudo nano /etc/prometheus/prometheus.yml +promtool check config /etc/prometheus/prometheus.yml +sudo systemctl reload prometheus ``` -Write a minimal scrape configuration. The default scrapes Prometheus itself on port 9090. Add your -own targets under `scrape_configs`: +## Managing Prometheus + +Prometheus runs as a systemd service under a dedicated `prometheus` user. ```bash -sudo tee /etc/prometheus/prometheus.yml > /dev/null <<'EOF' -global: - scrape_interval: 15s - evaluation_interval: 15s - -scrape_configs: - - job_name: prometheus - static_configs: - - targets: ["localhost:9090"] -EOF -sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml -``` +# Check status +systemctl status prometheus -Create the systemd service unit: +# Restart +sudo systemctl restart prometheus -```bash -sudo tee /etc/systemd/system/prometheus.service > /dev/null <<'EOF' -[Unit] -Description=Prometheus -Wants=network-online.target -After=network-online.target - -[Service] -User=prometheus -Group=prometheus -Type=simple -ExecStart=/usr/local/bin/prometheus \ - --config.file=/etc/prometheus/prometheus.yml \ - --storage.tsdb.path=/var/lib/prometheus/ \ - --web.console.templates=/etc/prometheus/consoles \ - --web.console.libraries=/etc/prometheus/console_libraries \ - --web.listen-address=0.0.0.0:9090 -Restart=on-failure - -[Install] -WantedBy=multi-user.target -EOF +# Reload the config without restarting +sudo systemctl reload prometheus + +# View logs +sudo journalctl -u prometheus -f ``` -Reload systemd, then enable and start the service: +| Path | Purpose | +| -------------------------------- | --------------------------- | +| `/etc/prometheus/prometheus.yml` | Main configuration | +| `/var/lib/prometheus/` | Time-series database (TSDB) | -```bash -sudo systemctl daemon-reload -sudo systemctl enable --now prometheus -sudo systemctl status prometheus -``` +## Security -## Configure Prometheus +Port 9090 is open on the VM's network interface, and Prometheus has **no built-in authentication**. +UFW is enabled and allows SSH (port 22) and Prometheus (port 9090). -1. Open `http://:9090` in a browser to reach the Prometheus expression browser and - built-in UI. -2. Add scrape targets by editing `/etc/prometheus/prometheus.yml` (for example, a `node_exporter` - running on a host), then validate and reload: +**To restrict the UI to a specific IP:** ```bash -promtool check config /etc/prometheus/prometheus.yml -sudo systemctl reload prometheus +sudo ufw delete allow 9090/tcp +sudo ufw allow from to any port 9090 ``` -3. Prometheus has no authentication of its own. For production, place it behind a reverse proxy such - as Nginx or Caddy to add TLS and access control on port 443, and restrict direct access to - port 9090. - -## Open the firewall - -The instance allows only SSH (port 22) externally by default. Open the port Prometheus needs and add -it to the instance's network/security rules in the portal: +**To reach the UI without opening the firewall, use an SSH tunnel:** ```bash -sudo ufw allow 9090/tcp +# Run this on your local machine +ssh -L 9090:localhost:9090 ubuntu@ ``` +**For production use**, place Prometheus behind a reverse proxy such as Nginx or Caddy to add TLS +and access control on port 443, and restrict direct access to port 9090. + ## Next steps - [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) -- [Prometheus installation guide](https://prometheus.io/docs/prometheus/latest/installation/) +- [Configuration reference](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) diff --git a/src/content/docs/public-cloud/marketplace/supabase.md b/src/content/docs/public-cloud/marketplace/supabase.md index ba87401..2cb199b 100644 --- a/src/content/docs/public-cloud/marketplace/supabase.md +++ b/src/content/docs/public-cloud/marketplace/supabase.md @@ -7,12 +7,18 @@ authentication, instant REST and GraphQL APIs, realtime subscriptions, storage, dashboard into one self-hostable stack. The Studio and APIs are served through the Kong gateway on port 8000. -:::note[Coming soon] +## Software included -A pre-built Supabase image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Supabase yourself. +| Component | Version | +| -------------- | ----------------- | +| Supabase | Self-hosted stack | +| PostgreSQL | 17 | +| Docker | Latest stable | +| Docker Compose | Latest stable | +| Ubuntu | 24.04 LTS | -::: +The stack includes Studio, the Kong API gateway, Auth (GoTrue), PostgREST, Realtime, Storage, and +postgres-meta, all on PostgreSQL 17. ## Requirements @@ -22,109 +28,84 @@ the marketplace and follow the steps below to install Supabase yourself. | RAM | 4 GB | 8 GB | | Storage | 30 GB | 80 GB | -## Deploy the base instance +## Environment variables -1. In the ZSoftly Cloud portal, open **Apps**, select **Supabase**, and click **Deploy**, or create - an **Ubuntu 24.04 LTS** instance from **Instances → Create**. Both give you a clean Ubuntu 24.04 - VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +You can optionally set this when deploying Supabase from the marketplace. -```bash -ssh ubuntu@ -``` +| Variable | Description | +| --------------- | -------------------------------------------------------------------------- | +| `SUPABASE_FQDN` | Fully qualified domain name for the instance, for example `db.example.com` | + +## Getting started -4. Update the system: +### 1. Connect to your VM ```bash -sudo apt update && sudo apt upgrade -y +ssh ubuntu@ ``` -## Install Supabase - -Supabase self-hosts as a Docker Compose stack, so install Docker Engine and the Compose plugin -first. +### 2. Wait for first-boot configuration -Set up Docker's official APT repository for Ubuntu 24.04 LTS (`noble`): +On the first boot, a setup script generates the database password, JWT secret, API keys, and Studio +credentials, then pulls the container images and starts the stack. The image pull is large, so this +takes roughly 15-20 minutes. Track progress: ```bash -sudo apt install -y ca-certificates curl git -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:8000 +``` -The repository ships helper scripts to generate matching secrets and API keys for you: +Sign in with the `supabase` username and the generated password. The REST and Auth APIs are served +through the same gateway at `http://:8000/rest/v1/` and +`http://:8000/auth/v1/`. -```bash -sh utils/generate-keys.sh -sh utils/add-new-auth-keys.sh -``` +## Managing Supabase -Pull the images and start the stack: +Supabase runs as a Docker Compose stack in `/data/supabase`. ```bash -sudo docker compose pull -sudo docker compose up -d --wait -``` +# Check status +cd /data/supabase && docker compose ps -Once the containers are healthy, the Studio dashboard and APIs are served through Kong on port 8000: +# Restart +cd /data/supabase && docker compose restart -- Studio dashboard: `http://:8000` (log in with `DASHBOARD_USERNAME` / - `DASHBOARD_PASSWORD`) -- REST API: `http://:8000/rest/v1/` -- Auth API: `http://:8000/auth/v1/` +# View logs +cd /data/supabase && docker compose logs -f +``` -For a production setup, put Supabase behind a reverse proxy such as nginx with a TLS certificate, -then serve Studio and the APIs over HTTPS instead of exposing port 8000 directly. +Environment configuration: `/data/supabase/.env`. Database and storage data are stored under +`/data/supabase/volumes`. -## Open the firewall +## Security -The instance allows only SSH (port 22) externally by default. Open the port(s) Supabase needs and -add them to the instance's network/security rules in the portal: +Ports 8000, 80, and 443 are open on the VM's network interface. UFW is enabled and allows those +ports plus SSH (port 22). Direct PostgreSQL access (5432) is not exposed. -```bash -sudo ufw allow 8000/tcp -``` +Change the Studio dashboard password after first login. **For production use**, set +`SUPABASE_PUBLIC_URL`, `API_EXTERNAL_URL`, and `SITE_URL` in `/data/supabase/.env` to your domain, +restart the stack, and place Supabase behind a reverse proxy such as nginx with a TLS certificate so +Studio and the APIs are served over HTTPS instead of exposing port 8000 directly. ## Next steps - [Supabase documentation](https://supabase.com/docs) -- [Supabase self-hosting guide](https://supabase.com/docs/guides/self-hosting/docker) +- [Self-hosting guide](https://supabase.com/docs/guides/self-hosting/docker) diff --git a/src/content/docs/public-cloud/marketplace/vaultwarden.md b/src/content/docs/public-cloud/marketplace/vaultwarden.md index 8e9d532..4ecf3db 100644 --- a/src/content/docs/public-cloud/marketplace/vaultwarden.md +++ b/src/content/docs/public-cloud/marketplace/vaultwarden.md @@ -6,12 +6,17 @@ Vaultwarden is a lightweight, self-hosted password manager that implements the B fully compatible with official Bitwarden client apps and browser extensions, letting you store and sync passwords, secure notes, and other secrets on infrastructure you control. -:::note[Coming soon] +## Software included -A pre-built Vaultwarden image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance -from the marketplace and follow the steps below to install Vaultwarden yourself. +| Component | Version | +| -------------- | ------------- | +| Vaultwarden | 1.36.0 | +| Docker | Latest stable | +| Docker Compose | Latest stable | +| Ubuntu | 24.04 LTS | -::: +Vaultwarden stores its data in an embedded SQLite database and serves the web vault over HTTPS on +port 8000 with a self-signed certificate generated on first boot. ## Requirements @@ -21,118 +26,88 @@ from the marketplace and follow the steps below to install Vaultwarden yourself. | RAM | 1 GB | 2 GB | | Storage | 10 GB | 20 GB | -Vaultwarden is resource-light. A domain name and TLS certificate are strongly recommended, since -Bitwarden clients require HTTPS to connect. - -## Deploy the base instance - -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. - - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) - - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +Vaultwarden is resource-light. -2. Choose a plan that meets the requirements above. +## Getting started -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: - -```bash -sudo apt update && sudo apt upgrade -y -``` - -## Install Vaultwarden - -Vaultwarden is distributed as an official Docker image, so install Docker Engine and the Compose -plugin first. +### 2. Wait for first-boot configuration -Set up Docker's official APT repository for Ubuntu 24.04 LTS (`noble`): +On the first boot, a setup script generates a self-signed TLS certificate and the admin token, then +starts the container with Docker Compose. This takes under a minute. Track progress: ```bash -sudo apt install -y ca-certificates curl -sudo install -m 0755 -d /etc/apt/keyrings -sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -sudo chmod a+r /etc/apt/keyrings/docker.asc -sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <:8000 ``` -## Configure Vaultwarden +The self-signed certificate triggers a browser warning. Accept the exception to proceed. The admin +panel is at `https://:8000/admin`. -:::caution +:::note -Bitwarden client apps refuse to connect over plain HTTP. Do not expose Vaultwarden directly. Always -place it behind a reverse proxy (Caddy, nginx, or Traefik) that terminates TLS and forwards to host -port 8080. +User self-registration is disabled by default (`SIGNUPS_ALLOWED=false`). To add users, open the +admin panel and invite them under **Users**, or enable open registration under **General Settings**. ::: -A minimal Caddy reverse proxy gives you automatic HTTPS. Point your domain's DNS at the VM, then: +## Managing Vaultwarden + +Vaultwarden runs as a Docker Compose stack in `/data/vaultwarden`. ```bash -sudo apt install -y caddy -echo 'vault.example.com { - reverse_proxy 127.0.0.1:8080 -}' | sudo tee /etc/caddy/Caddyfile -sudo systemctl restart caddy +# Check status +cd /data/vaultwarden && docker compose ps + +# Restart +cd /data/vaultwarden && docker compose restart + +# View logs +cd /data/vaultwarden && docker compose logs -f ``` -Set `DOMAIN` in the `docker run` command above to your real `https://` URL so vault item icons, -attachments, and WebAuthn work correctly. Once TLS is live, reach the admin page at -`https://vault.example.com/admin` and sign in with the password you hashed into `ADMIN_TOKEN`. Treat -that token like a root password. +Environment configuration: `/data/vaultwarden/vaultwarden.env`. The vault database and certificate +are stored under `/data/vaultwarden/data`. + +## Security + +Port 8000 is open on the VM's network interface. UFW is enabled and allows SSH (port 22) and the +Vaultwarden web vault (port 8000). Bitwarden clients require HTTPS, which the image serves with a +self-signed certificate by default. -## Open the firewall +Treat the admin token like a root password. -The instance allows only SSH (port 22) externally by default. Open the HTTPS port your reverse proxy -serves and add it to the instance's network/security rules in the portal: +**For production use**, set `DOMAIN` to your public IP or hostname in +`/data/vaultwarden/vaultwarden.env`, replace the self-signed certificate with a trusted one (or +front Vaultwarden with a reverse proxy such as Caddy that terminates TLS), and restart the stack: ```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp +cd /data/vaultwarden && docker compose restart ``` ## Next steps - [Vaultwarden documentation](https://github.com/dani-garcia/vaultwarden/wiki) -- [Vaultwarden installation guide](https://github.com/dani-garcia/vaultwarden/wiki/Starting-with-Docker) +- [Enabling HTTPS](https://github.com/dani-garcia/vaultwarden/wiki/Enabling-HTTPS) From 13c6ae2121ae75f0b284168a669dba52b1d21e78 Mon Sep 17 00:00:00 2001 From: ditahkk Date: Wed, 8 Jul 2026 15:14:29 -0400 Subject: [PATCH 2/6] Update marketplace documentation for various applications - Added environment variables section for Jenkins, Keycloak, Portainer, Vaultwarden, and Supabase, detailing initial admin credentials and other configuration options. - Revised descriptions for Keycloak and Prometheus to clarify usage and configuration. - Removed unnecessary environment variable sections for Ollama and Dify. - Updated service descriptions for SeaweedFS and Ghost in the marketplace index. - Enhanced clarity and consistency across documentation for better user guidance. --- .../fr/public-cloud/marketplace/authentik.md | 11 +- .../fr/public-cloud/marketplace/coolify.md | 8 - .../docs/fr/public-cloud/marketplace/dify.md | 20 +- .../docs/fr/public-cloud/marketplace/ghost.md | 1 + .../docs/fr/public-cloud/marketplace/index.md | 222 +++++++++--------- .../fr/public-cloud/marketplace/jenkins.md | 10 + .../fr/public-cloud/marketplace/keycloak.md | 15 +- .../fr/public-cloud/marketplace/ollama.md | 12 +- .../fr/public-cloud/marketplace/portainer.md | 9 + .../fr/public-cloud/marketplace/prometheus.md | 17 +- .../fr/public-cloud/marketplace/supabase.md | 13 +- .../public-cloud/marketplace/vaultwarden.md | 19 +- .../public-cloud/marketplace/authentik.md | 11 +- .../docs/public-cloud/marketplace/coolify.md | 8 - .../docs/public-cloud/marketplace/dify.md | 18 +- .../docs/public-cloud/marketplace/ghost.md | 1 + .../docs/public-cloud/marketplace/index.md | 2 +- .../docs/public-cloud/marketplace/jenkins.md | 10 + .../docs/public-cloud/marketplace/keycloak.md | 15 +- .../docs/public-cloud/marketplace/ollama.md | 11 +- .../public-cloud/marketplace/portainer.md | 9 + .../public-cloud/marketplace/prometheus.md | 15 +- .../docs/public-cloud/marketplace/supabase.md | 13 +- .../public-cloud/marketplace/vaultwarden.md | 13 +- 24 files changed, 237 insertions(+), 246 deletions(-) diff --git a/src/content/docs/fr/public-cloud/marketplace/authentik.md b/src/content/docs/fr/public-cloud/marketplace/authentik.md index 92ffe2c..8c986a3 100644 --- a/src/content/docs/fr/public-cloud/marketplace/authentik.md +++ b/src/content/docs/fr/public-cloud/marketplace/authentik.md @@ -32,12 +32,11 @@ Docker Compose. Vous pouvez les définir au déploiement d'Authentik depuis le Marketplace. Laissez un champ de mot de passe vide pour générer automatiquement une valeur aléatoire sécurisée. -| Variable | Description | -| -------------------------- | ------------------------------------------------------- | -| `AUTHENTIK_ADMIN_EMAIL` | Adresse courriel du compte initial `akadmin` | -| `AUTHENTIK_ADMIN_PASSWORD` | Mot de passe du compte initial `akadmin` | -| `PG_PASS` | Mot de passe de la base PostgreSQL interne | -| `AUTHENTIK_SECRET_KEY` | Cle secrete utilisée pour signer les sessions et jetons | +| Variable | Description | +| ------------------------------ | --------------------------------------------------------- | +| `AUTHENTIK_HOSTNAME` | Nom d'hôte public ou IP depuis lequel Authentik est servi | +| `AUTHENTIK_BOOTSTRAP_EMAIL` | Adresse courriel du compte initial `akadmin` | +| `AUTHENTIK_BOOTSTRAP_PASSWORD` | Mot de passe du compte initial `akadmin` | ## Démarrage diff --git a/src/content/docs/fr/public-cloud/marketplace/coolify.md b/src/content/docs/fr/public-cloud/marketplace/coolify.md index b3963be..cc676d0 100644 --- a/src/content/docs/fr/public-cloud/marketplace/coolify.md +++ b/src/content/docs/fr/public-cloud/marketplace/coolify.md @@ -26,14 +26,6 @@ flux Git et un tableau de bord web, tout en gardant vos données sous votre cont Coolify exécute aussi les applications que vous déployez. Dimensionnez donc l'instance pour ces charges de travail. -## Variables d'environnement - -Vous pouvez définir cette variable au déploiement de Coolify depuis le Marketplace. - -| Variable | Description | -| -------------- | --------------------------------------------------------------------------- | -| `COOLIFY_FQDN` | Nom de domaine complet du tableau de bord, par exemple `deploy.example.com` | - ## Démarrage ### 1. Se connecter à la VM diff --git a/src/content/docs/fr/public-cloud/marketplace/dify.md b/src/content/docs/fr/public-cloud/marketplace/dify.md index f4edba6..0ec7856 100644 --- a/src/content/docs/fr/public-cloud/marketplace/dify.md +++ b/src/content/docs/fr/public-cloud/marketplace/dify.md @@ -29,17 +29,6 @@ stockage vectoriel Weaviate et nginx). Les besoins en RAM et en stockage augmentent avec l'utilisation. -## Variables d'environnement - -Vous pouvez les définir au déploiement de Dify depuis le Marketplace. Laissez un champ vide pour -générer automatiquement une valeur aléatoire sécurisée. - -| Variable | Description | -| -------------------- | ------------------------------------------------------------------------------------------- | -| `DIFY_PUBLIC_URL` | URL de base publique (par exemple `https://dify.example.com`) pour console, API et webhooks | -| `DIFY_INIT_PASSWORD` | Mot de passe facultatif qui protege l'assistant unique `/install` | -| `DIFY_ENABLE_HTTPS` | Definir a `true` pour que nginx intégré serve HTTPS. Par defaut: `false` | - ## Démarrage ### 1. Se connecter à la VM @@ -69,8 +58,7 @@ http:///install ``` Creez le compte administrateur (adresse courriel et mot de passe de votre choix), puis -connectez-vous a `http:///`. Si vous avez defini `DIFY_INIT_PASSWORD`, saisissez-le -d'abord pour ouvrir l'assistant. +connectez-vous a `http:///`. ### 4. Ajouter un fournisseur de modèle @@ -108,9 +96,9 @@ Configuration d'environnement: `/opt/dify/docker/.env`. Les données persistante Les ports 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22), HTTP (80) et HTTPS (443). -Dify sert HTTP en clair par defaut. **En production**, definissez `DIFY_PUBLIC_URL` avec votre -domaine et activéz HTTPS, soit avec le nginx intégré (`DIFY_ENABLE_HTTPS=true` avec vos propres -certificats), soit avec votre propre proxy inverse. Appliquez les changements `.env` avec: +Dify sert HTTP en clair par défaut. **En production**, placez Dify derrière votre propre proxy +inverse avec TLS, ou configurez HTTPS et l'URL publique dans `/opt/dify/docker/.env`. Appliquez les +changements `.env` avec: ```bash cd /opt/dify/docker && docker compose down && docker compose up -d diff --git a/src/content/docs/fr/public-cloud/marketplace/ghost.md b/src/content/docs/fr/public-cloud/marketplace/ghost.md index 4588912..b35eabb 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ghost.md +++ b/src/content/docs/fr/public-cloud/marketplace/ghost.md @@ -39,6 +39,7 @@ vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | | ------------------- | ------------------------------------------------------------ | | `GHOST_URL` | URL complète du site, par exemple `https://blog.example.com` | +| `GHOST_ADMIN_EMAIL` | Adresse courriel du compte administrateur Ghost | | `GHOST_DB_PASSWORD` | Mot de passe de l'utilisateur MySQL `ghost` | Si `GHOST_URL` n'est pas définie, la VM sert une page temporaire et laisse Ghost non configuré diff --git a/src/content/docs/fr/public-cloud/marketplace/index.md b/src/content/docs/fr/public-cloud/marketplace/index.md index 0828a7e..33e763a 100644 --- a/src/content/docs/fr/public-cloud/marketplace/index.md +++ b/src/content/docs/fr/public-cloud/marketplace/index.md @@ -3,10 +3,10 @@ title: Marketplace tableOfContents: false --- -Les images du Marketplace ZCP sont des modèles de VM préconfigurés qui se déploient en -quelques minutes depuis la console ZCP. Chaque image est fournie sur **Ubuntu 24.04 LTS** avec un -service de premier démarrage qui termine la configuration automatiquement. Les identifiants sont -générés, les services sont configurés et l’image est prête à utiliser. +Les images du Marketplace ZCP sont des modèles de VM préconfigurés qui se déploient en quelques +minutes depuis la console ZCP. Chaque image est fournie sur **Ubuntu 24.04 LTS** avec un service de +premier démarrage qui termine la configuration automatiquement. Les identifiants sont générés, les +services sont configurés et l'image est prête à utiliser.
@@ -15,14 +15,14 @@ générés, les services sont configurés et l’imag
33 - à venir + à venir
11 - catégories + catégories
- Premier démarrage + Premier démarrage configuration automatique
@@ -42,7 +42,7 @@ générés, les services sont configurés et l’imag

OpenClaw

-

Assistant IA personnel auto-hébergé et passerelle multicanal.

+

Assistant IA personnel auto-hébergé et passerelle multicanal.

@@ -52,7 +52,7 @@ générés, les services sont configurés et l’imag

WordPress

-

CMS le plus populaire au monde, avec pile LAMP préconfigurée

+

CMS le plus populaire au monde, avec pile LAMP préconfigurée

@@ -62,7 +62,7 @@ générés, les services sont configurés et l’imag

Docker

-

Moteur de conteneurs avec Docker CE et Docker Compose préinstallés

+

Moteur de conteneurs avec Docker CE et Docker Compose préinstallés

@@ -72,7 +72,7 @@ générés, les services sont configurés et l’imag

cPanel

-

Panneau de contrôle d’hébergement web standard avec WHM

+

Panneau de contrôle d'hébergement web standard avec WHM

@@ -82,7 +82,7 @@ générés, les services sont configurés et l’imag

GitLab CE 18.11

-

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets

+

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets

@@ -92,7 +92,7 @@ générés, les services sont configurés et l’imag

n8n

-

Plateforme d’automatisation de workflows avec éditeur visuel à nœuds

+

Plateforme d'automatisation de workflows avec éditeur visuel à nœuds

@@ -102,7 +102,7 @@ générés, les services sont configurés et l’imag

NetBird

-

Réseau superposé WireGuard open source avec connexions pair à pair

+

Réseau superposé WireGuard open source avec connexions pair à pair

@@ -112,7 +112,7 @@ générés, les services sont configurés et l’imag

PostgreSQL 17

-

Base de données relationnelle open source avancée et très extensible

+

Base de données relationnelle open source avancée et très extensible

@@ -122,7 +122,7 @@ générés, les services sont configurés et l’imag

MariaDB 11.4

-

Base de données relationnelle open source et remplacement direct de MySQL

+

Base de données relationnelle open source et remplacement direct de MySQL

@@ -132,7 +132,7 @@ générés, les services sont configurés et l’imag

Grafana

-

Plateforme open source pour visualiser métriques, journaux et traces

+

Plateforme open source pour visualiser métriques, journaux et traces

@@ -144,7 +144,7 @@ générés, les services sont configurés et l’imag
-

Panneaux de contrôle

+

Panneaux de contrôle

@@ -154,7 +154,7 @@ générés, les services sont configurés et l’imag

cPanel

-

Panneau de contrôle d’hébergement web standard avec WHM. Gérez sites web, courriels, DNS et bases de données depuis une interface unique

+

Panneau de contrôle d'hébergement web standard avec WHM. Gérez sites web, courriels, DNS et bases de données depuis une interface unique

@@ -208,7 +208,7 @@ générés, les services sont configurés et l’imag

WordPress

-

Système de gestion de contenu le plus populaire au monde, avec pile LAMP complète

+

Système de gestion de contenu le plus populaire au monde, avec pile LAMP complète

@@ -240,7 +240,7 @@ générés, les services sont configurés et l’imag
-

Outils développeur

+

Outils développeur

@@ -250,7 +250,7 @@ générés, les services sont configurés et l’imag

Docker

-

Moteur de conteneurs avec Docker CE et Docker Compose préinstallés

+

Moteur de conteneurs avec Docker CE et Docker Compose préinstallés

@@ -270,7 +270,7 @@ générés, les services sont configurés et l’imag

GitLab CE 18.11

-

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets in one application

+

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets in one application

@@ -280,7 +280,7 @@ générés, les services sont configurés et l’imag

Jenkins

-

Serveur d’automatisation pour compiler, tester et déployer.

+

Serveur d'automatisation pour compiler, tester et déployer.

@@ -290,7 +290,7 @@ générés, les services sont configurés et l’imag

Portainer

-

Interface web pour gérer Docker, Swarm et Kubernetes.

+

Interface web pour gérer Docker, Swarm et Kubernetes.

@@ -300,7 +300,7 @@ générés, les services sont configurés et l’imag

Coolify

-

PaaS auto-hébergé pour déployer applications, bases de données et services.

+

PaaS auto-hébergé pour déployer applications, bases de données et services.

@@ -312,7 +312,7 @@ générés, les services sont configurés et l’imag
-

Bases de données

+

Bases de données

@@ -322,7 +322,7 @@ générés, les services sont configurés et l’imag

MariaDB 11.4

-

Base de données relationnelle open source et remplacement direct de MySQL

+

Base de données relationnelle open source et remplacement direct de MySQL

@@ -332,7 +332,7 @@ générés, les services sont configurés et l’imag

PostgreSQL 17

-

Base de données relationnelle open source avancée et très extensible

+

Base de données relationnelle open source avancée et très extensible

@@ -342,7 +342,7 @@ générés, les services sont configurés et l’imag

MySQL 8.4

-

Base de données relationnelle open source la plus déployée au monde

+

Base de données relationnelle open source la plus déployée au monde

@@ -352,7 +352,7 @@ générés, les services sont configurés et l’imag

Valkey 9.0

-

Stockage de données en mémoire haute performance, compatible Redis

+

Stockage de données en mémoire haute performance, compatible Redis

@@ -362,7 +362,7 @@ générés, les services sont configurés et l’imag

Elasticsearch 8

-

Moteur distribué de recherche et d’analyse basé sur Apache Lucene

+

Moteur distribué de recherche et d'analyse basé sur Apache Lucene

@@ -372,7 +372,7 @@ générés, les services sont configurés et l’imag

InfluxDB 2

-

Base de données de séries temporelles conçue pour métriques et analyses en temps réel

+

Base de données de séries temporelles conçue pour métriques et analyses en temps réel

@@ -382,7 +382,7 @@ générés, les services sont configurés et l’imag

MongoDB 8.0

-

Base NoSQL orientée documents pour stockage flexible de données de type JSON

+

Base NoSQL orientée documents pour stockage flexible de données de type JSON

@@ -392,7 +392,7 @@ générés, les services sont configurés et l’imag

Supabase

-

Alternative open source à Firebase basée sur PostgreSQL.

+

Alternative open source à Firebase basée sur PostgreSQL.

@@ -404,7 +404,7 @@ générés, les services sont configurés et l’imag
-

Applications métier

+

Applications métier

@@ -414,7 +414,7 @@ générés, les services sont configurés et l’imag

n8n

-

Plateforme d’automatisation de workflows avec éditeur visuel à nœuds

+

Plateforme d'automatisation de workflows avec éditeur visuel à nœuds

@@ -426,7 +426,7 @@ générés, les services sont configurés et l’imag
-

Sécurité et VPN

+

Sécurité et VPN

@@ -436,7 +436,7 @@ générés, les services sont configurés et l’imag

NetBird

-

Réseau superposé WireGuard open source avec connexions pair à pair

+

Réseau superposé WireGuard open source avec connexions pair à pair

@@ -447,7 +447,7 @@ générés, les services sont configurés et l’imag

Tailscale

-

Zero-config WireGuard-based VPN for connecting devices and servers

+

VPN WireGuard sans configuration pour connecter appareils et serveurs

@@ -457,7 +457,7 @@ générés, les services sont configurés et l’imag

Keycloak

-

Gestion open source des identités et des accès avec SSO.

+

Gestion open source des identités et des accès avec SSO.

@@ -467,7 +467,7 @@ générés, les services sont configurés et l’imag

Authentik

-

Fournisseur d’identité flexible pour SSO, OAuth et SAML.

+

Fournisseur d'identité flexible pour SSO, OAuth et SAML.

@@ -477,7 +477,7 @@ générés, les services sont configurés et l’imag

Vaultwarden

-

Gestionnaire de mots de passe léger, auto-hébergé et compatible Bitwarden.

+

Gestionnaire de mots de passe léger, auto-hébergé et compatible Bitwarden.

@@ -499,7 +499,7 @@ générés, les services sont configurés et l’imag

Grafana

-

Plateforme open source pour visualiser métriques, journaux et traces

+

Plateforme open source pour visualiser métriques, journaux et traces

@@ -509,7 +509,7 @@ générés, les services sont configurés et l’imag

Prometheus

-

Outil de collecte de métriques et d’alerte pour infrastructure.

+

Outil de collecte de métriques et d'alerte pour infrastructure.

@@ -531,7 +531,7 @@ générés, les services sont configurés et l’imag

OpenClaw

-

Assistant IA personnel auto-hébergé et passerelle multicanal.

+

Assistant IA personnel auto-hébergé et passerelle multicanal.

@@ -541,7 +541,7 @@ générés, les services sont configurés et l’imag

Ollama

-

Exécutez des LLM locaux sur votre VM et servez des modèles avec l’API Ollama.

+

Exécutez des LLM locaux sur votre VM et servez des modèles avec l'API Ollama.

@@ -551,7 +551,7 @@ générés, les services sont configurés et l’imag

Dify

-

Créez des applications LLM et agents IA avec workflows, RAG et fournisseurs de modèles.

+

Créez des applications LLM et agents IA avec workflows, RAG et fournisseurs de modèles.

@@ -563,7 +563,7 @@ générés, les services sont configurés et l’imag
-

À venir

+

À venir

@@ -572,8 +572,8 @@ générés, les services sont configurés et l’imag
-

Qdrant À venir

-

Base vectorielle pour recherche sémantique et pipelines de récupération IA.

+

Qdrant À venir

+

Base vectorielle pour recherche sémantique et pipelines de récupération IA.

@@ -582,8 +582,8 @@ générés, les services sont configurés et l’imag
-

Medusa À venir

-

Moteur de commerce headless API-first pour boutiques en ligne personnalisées.

+

Medusa À venir

+

Moteur de commerce headless API-first pour boutiques en ligne personnalisées.

@@ -592,7 +592,7 @@ générés, les services sont configurés et l’imag
-

Bagisto À venir

+

Bagisto À venir

Plateforme e-commerce Laravel open source pour boutiques en ligne.

@@ -602,8 +602,8 @@ générés, les services sont configurés et l’imag
-

Pterodactyl À venir

-

Gérez des serveurs de jeu dans des conteneurs isolés via un panneau web.

+

Pterodactyl À venir

+

Gérez des serveurs de jeu dans des conteneurs isolés via un panneau web.

@@ -612,8 +612,8 @@ générés, les services sont configurés et l’imag
-

Pelican Panel À venir

-

Panneau de contrôle open source moderne et rapide pour serveurs de jeu.

+

Pelican Panel À venir

+

Panneau de contrôle open source moderne et rapide pour serveurs de jeu.

@@ -622,8 +622,8 @@ générés, les services sont configurés et l’imag
-

ERPNext À venir

-

CRM, comptabilité, RH et inventaire dans une suite open source.

+

ERPNext À venir

+

CRM, comptabilité, RH et inventaire dans une suite open source.

@@ -632,8 +632,8 @@ générés, les services sont configurés et l’imag
-

NocoDB À venir

-

Alternative open source à Airtable qui transforme des bases de données en tables.

+

NocoDB À venir

+

Alternative open source à Airtable qui transforme des bases de données en tables.

@@ -642,8 +642,8 @@ générés, les services sont configurés et l’imag
-

Directus À venir

-

CMS headless et plateforme de données au-dessus de bases SQL.

+

Directus À venir

+

CMS headless et plateforme de données au-dessus de bases SQL.

@@ -652,7 +652,7 @@ générés, les services sont configurés et l’imag
-

Uptime Kuma À venir

+

Uptime Kuma À venir

Surveillez sites et services avec tableaux de bord et alertes.

@@ -662,8 +662,8 @@ générés, les services sont configurés et l’imag
-

Beszel À venir

-

Surveillance serveur légère en temps réel avec un petit agent.

+

Beszel À venir

+

Surveillance serveur légère en temps réel avec un petit agent.

@@ -672,8 +672,8 @@ générés, les services sont configurés et l’imag
-

Gatus À venir

-

Page de statut automatisée et tableau de santé pour services.

+

Gatus À venir

+

Page de statut automatisée et tableau de santé pour services.

@@ -682,8 +682,8 @@ générés, les services sont configurés et l’imag
-

Headplane À venir

-

Interface web pour gérer votre réseau Headscale auto-hébergé.

+

Headplane À venir

+

Interface web pour gérer votre réseau Headscale auto-hébergé.

@@ -692,8 +692,8 @@ générés, les services sont configurés et l’imag
-

Zammad À venir

-

Centre d’assistance et billetterie auto-hébergés pour support client.

+

Zammad À venir

+

Centre d'assistance et billetterie auto-hébergés pour support client.

@@ -702,8 +702,8 @@ générés, les services sont configurés et l’imag
-

Zabbix À venir

-

Surveillance d’infrastructure et d applications de niveau entreprise.

+

Zabbix À venir

+

Surveillance d'infrastructure et d applications de niveau entreprise.

@@ -712,8 +712,8 @@ générés, les services sont configurés et l’imag
-

OpenBao À venir

-

Gestion open source des secrets et chiffrement des données.

+

OpenBao À venir

+

Gestion open source des secrets et chiffrement des données.

@@ -722,8 +722,8 @@ générés, les services sont configurés et l’imag
-

Rancher À venir

-

Gérez des clusters Kubernetes depuis une console web unique.

+

Rancher À venir

+

Gérez des clusters Kubernetes depuis une console web unique.

@@ -732,7 +732,7 @@ générés, les services sont configurés et l’imag
-

Nginx Proxy Manager À venir

+

Nginx Proxy Manager À venir

Gestion du proxy inverse et SSL avec une interface web simple.

@@ -742,7 +742,7 @@ générés, les services sont configurés et l’imag
-

Nginx À venir

+

Nginx À venir

Serveur web et proxy inverse haute performance.

@@ -752,8 +752,8 @@ générés, les services sont configurés et l’imag
-

HAProxy À venir

-

Répartiteur de charge TCP et HTTP fiable et haute performance.

+

HAProxy À venir

+

Répartiteur de charge TCP et HTTP fiable et haute performance.

@@ -762,8 +762,8 @@ générés, les services sont configurés et l’imag
-

Apache Tomcat À venir

-

Java servlet container for running web applications.

+

Apache Tomcat À venir

+

Conteneur de servlets Java pour exécuter des applications web.

@@ -772,8 +772,8 @@ générés, les services sont configurés et l’imag
-

RabbitMQ À venir

-

Reliable message broker for queues and event-driven apps.

+

RabbitMQ À venir

+

Broker de messages fiable pour files d'attente et applications événementielles.

@@ -782,8 +782,8 @@ générés, les services sont configurés et l’imag
-

Apache Kafka À venir

-

Distributed event streaming platform for real-time data.

+

Apache Kafka À venir

+

Plateforme de streaming d'événements distribuée pour données en temps réel.

@@ -792,8 +792,8 @@ générés, les services sont configurés et l’imag
-

SeaweedFS À venir

-

Fast distributed file and object storage system.

+

SeaweedFS À venir

+

Stockage de fichiers et d'objets distribué, compatible S3.

@@ -802,8 +802,8 @@ générés, les services sont configurés et l’imag
-

Nexus À venir

-

Dépôt universel d’artefacts pour builds et dépendances.

+

Nexus À venir

+

Dépôt universel d'artefacts pour builds et dépendances.

@@ -812,8 +812,8 @@ générés, les services sont configurés et l’imag
-

Artifactory À venir

-

Dépôt d’artefacts JFrog pour binaires et paquets.

+

Artifactory À venir

+

Dépôt d'artefacts JFrog pour binaires et paquets.

@@ -822,8 +822,8 @@ générés, les services sont configurés et l’imag
-

Harbor À venir

-

Registre de conteneurs sécurisé avec analyse des vulnérabilités.

+

Harbor À venir

+

Registre de conteneurs sécurisé avec analyse des vulnérabilités.

@@ -832,8 +832,8 @@ générés, les services sont configurés et l’imag
-

Forgejo À venir

-

Forge Git auto-hébergée légère, dérivée de Gitea.

+

Forgejo À venir

+

Forge Git auto-hébergée légère, dérivée de Gitea.

@@ -842,8 +842,8 @@ générés, les services sont configurés et l’imag
-

Gitea À venir

-

Service Git auto-hébergé léger.

+

Gitea À venir

+

Service Git auto-hébergé léger.

@@ -852,8 +852,8 @@ générés, les services sont configurés et l’imag
-

Neo4j À venir

-

Base de données graphe pour données connectées et requêtes relationnelles.

+

Neo4j À venir

+

Base de données graphe pour données connectées et requêtes relationnelles.

@@ -862,8 +862,8 @@ générés, les services sont configurés et l’imag
-

ClickHouse À venir

-

Base de données en colonnes rapide pour analyses en temps réel (OLAP).

+

ClickHouse À venir

+

Base de données en colonnes rapide pour analyses en temps réel (OLAP).

@@ -872,8 +872,8 @@ générés, les services sont configurés et l’imag
-

Mattermost À venir

-

Plateforme auto-hébergée de messagerie d’équipe et de collaboration.

+

Mattermost À venir

+

Plateforme auto-hébergée de messagerie d'équipe et de collaboration.

@@ -882,8 +882,8 @@ générés, les services sont configurés et l’imag
-

Wiki.js À venir

-

Modern self-hosted wiki and documentation platform.

+

Wiki.js À venir

+

Wiki et plateforme de documentation moderne, auto-hébergé.

@@ -892,8 +892,8 @@ générés, les services sont configurés et l’imag
-

WG-Easy À venir

-

The easiest way to run WireGuard VPN with a web UI.

+

WG-Easy À venir

+

La façon la plus simple d'exécuter un VPN WireGuard avec une interface web.

diff --git a/src/content/docs/fr/public-cloud/marketplace/jenkins.md b/src/content/docs/fr/public-cloud/marketplace/jenkins.md index a47596c..a1e963f 100644 --- a/src/content/docs/fr/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/fr/public-cloud/marketplace/jenkins.md @@ -23,6 +23,16 @@ s'exécute sur le port 8080. | RAM | 2 Go | 4 Go | | Stockage | 20 Go | 50 Go | +## Variables d'environnement + +Vous pouvez les définir au déploiement de Jenkins depuis le Marketplace. Laissez un champ de mot de +passe vide pour générer automatiquement une valeur aléatoire sécurisée. + +| Variable | Description | +| ------------------------ | -------------------------------------------------- | +| `JENKINS_ADMIN_USER` | Nom d'utilisateur du compte administrateur initial | +| `JENKINS_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | + ## Démarrage ### 1. Se connecter à la VM diff --git a/src/content/docs/fr/public-cloud/marketplace/keycloak.md b/src/content/docs/fr/public-cloud/marketplace/keycloak.md index 8eb2b15..a71b01a 100644 --- a/src/content/docs/fr/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/fr/public-cloud/marketplace/keycloak.md @@ -31,12 +31,11 @@ Compose. Vous pouvez les définir au déploiement de Keycloak depuis le Marketplace. Laissez un champ de mot de passe vide pour générer automatiquement une valeur aléatoire sécurisée. -| Variable | Description | -| ------------------------- | ----------------------------------------------------------------------------------- | -| `KEYCLOAK_ADMIN_PASSWORD` | Mot de passe du compte initial `admin` | -| `KC_DB_PASSWORD` | Mot de passe de la base PostgreSQL interne | -| `KC_HOSTNAME` | Nom d'hôte public ou IP depuis lequel Keycloak est servi. Par défaut: l'IP de la VM | -| `KC_BEHIND_PROXY` | Définir à `true` seulement si vous utilisez votre propre proxy inverse TLS | +| Variable | Description | +| ------------------------- | ------------------------------------------------------------------------------------------ | +| `KEYCLOAK_ADMIN` | Nom d'utilisateur du compte administrateur initial. Par défaut: `admin` | +| `KEYCLOAK_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | +| `KC_HOSTNAME` | Nom d'hôte public ou IP depuis lequel Keycloak est servi. Par défaut: l'IP privée de la VM | ## Démarrage @@ -116,8 +115,8 @@ adresse. ::: **En production**, placez Keycloak derrière un proxy inverse (Caddy, nginx ou Traefik) qui termine -TLS sur le port 443 et relaie vers le port 8080, puis définissez `KC_BEHIND_PROXY=true`. Limitez -l'accès direct au port 8080: +TLS sur le port 443 et relaie vers le port 8080, puis définissez `KC_PROXY_HEADERS=xforwarded` dans +`/opt/keycloak/.env`. Limitez l'accès direct au port 8080: ```bash sudo ufw delete allow 8080/tcp diff --git a/src/content/docs/fr/public-cloud/marketplace/ollama.md b/src/content/docs/fr/public-cloud/marketplace/ollama.md index 1cf86d4..59a301b 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ollama.md +++ b/src/content/docs/fr/public-cloud/marketplace/ollama.md @@ -64,14 +64,6 @@ Ajustez ensuite: [volume de stockage bloc](/fr/public-cloud/compute/settings/block-storage/) au lieu de passer à un forfait plus grand. -## Variables d'environnement - -Vous pouvez définir cette variable au déploiement d'Ollama depuis le Marketplace. - -| Variable | Description | -| ------------- | ---------------------------------------------------------------------------------- | -| `OLLAMA_HOST` | Adresse et port d'écoute de l'API. Par défaut: `0.0.0.0:11434` (toutes interfaces) | - ## Démarrage ### 1. Se connecter à la VM @@ -82,8 +74,8 @@ ssh ubuntu@ ### 2. Attendre la configuration au premier démarrage -Au premier démarrage, un script applique l'adresse d'écoute et lance le service. Cela prend moins -d'une minute. Suivez la progression: +Au premier démarrage, un script lance le service. Cela prend moins d'une minute. Suivez la +progression: ```bash journalctl -u ollama-first-boot.service -f diff --git a/src/content/docs/fr/public-cloud/marketplace/portainer.md b/src/content/docs/fr/public-cloud/marketplace/portainer.md index 4bb0a17..dbaa17e 100644 --- a/src/content/docs/fr/public-cloud/marketplace/portainer.md +++ b/src/content/docs/fr/public-cloud/marketplace/portainer.md @@ -22,6 +22,15 @@ depuis une console web unique. L'interface s'exécute sur le port 9443 en HTTPS. | RAM | 1 Go | 2 Go | | Stockage | 20 Go | 40 Go | +## Variables d'environnement + +Vous pouvez définir cette variable au déploiement de Portainer depuis le Marketplace. Laissez-la +vide pour créer le compte administrateur dans l'interface au premier accès. + +| Variable | Description | +| -------------------------- | --------------------------------------------- | +| `PORTAINER_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | + ## Démarrage ### 1. Se connecter à la VM diff --git a/src/content/docs/fr/public-cloud/marketplace/prometheus.md b/src/content/docs/fr/public-cloud/marketplace/prometheus.md index c00ff96..ee96955 100644 --- a/src/content/docs/fr/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/fr/public-cloud/marketplace/prometheus.md @@ -15,8 +15,9 @@ pour les tableaux de bord. | Prometheus | 3.4.1 | | Ubuntu | 24.04 LTS | -L'image inclut seulement le serveur Prometheus. Ajoutez les exporters (comme `node_exporter`) et -Alertmanager comme cibles séparées. +L'image inclut seulement le serveur Prometheus. Ajoutez les exporters (comme `node_exporter`) comme +cibles de collecte, et exécutez Alertmanager séparément, en tant que composant distinct, pour gérer +le routage des alertes. ## Prérequis @@ -28,14 +29,6 @@ Alertmanager comme cibles séparées. Les besoins de stockage augmentent avec le nombre de séries et la période de rétention. -## Variables d'environnement - -Vous pouvez définir cette variable au déploiement de Prometheus depuis le Marketplace. - -| Variable | Description | -| ------------------------------- | ---------------------------------------------------------------- | -| `PROMETHEUS_WEB_LISTEN_ADDRESS` | Adresse et port d'écoute de l'UI/API. Par défaut: `0.0.0.0:9090` | - ## Démarrage ### 1. Se connecter à la VM @@ -46,8 +39,8 @@ ssh ubuntu@ ### 2. Attendre la configuration au premier démarrage -Au premier démarrage, un script applique l'adresse d'écoute et lance le service. Cela prend moins -d'une minute. Suivez la progression: +Au premier démarrage, un script lance le service. Cela prend moins d'une minute. Suivez la +progression: ```bash journalctl -u prometheus-first-boot.service -f diff --git a/src/content/docs/fr/public-cloud/marketplace/supabase.md b/src/content/docs/fr/public-cloud/marketplace/supabase.md index d09cb37..3580ba1 100644 --- a/src/content/docs/fr/public-cloud/marketplace/supabase.md +++ b/src/content/docs/fr/public-cloud/marketplace/supabase.md @@ -30,11 +30,14 @@ postgres-meta, le tout sur PostgreSQL 17. ## Variables d'environnement -Vous pouvez définir cette variable au déploiement de Supabase depuis le Marketplace. - -| Variable | Description | -| --------------- | ------------------------------------------------------------------ | -| `SUPABASE_FQDN` | Nom de domaine complet de l'instance, par exemple `db.example.com` | +Vous pouvez les définir au déploiement de Supabase depuis le Marketplace. Laissez un champ de mot de +passe vide pour générer automatiquement une valeur aléatoire sécurisée. + +| Variable | Description | +| -------------------- | ---------------------------------------------------------------- | +| `SITE_URL` | URL publique de l'instance Supabase et du tableau de bord Studio | +| `POSTGRES_PASSWORD` | Mot de passe de la base PostgreSQL | +| `DASHBOARD_PASSWORD` | Mot de passe de connexion au tableau de bord Studio | ## Démarrage diff --git a/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md b/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md index e85c7c3..9d69d8b 100644 --- a/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md +++ b/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md @@ -29,6 +29,16 @@ port 8000 avec un certificat autosigné généré au premier démarrage. Vaultwarden consomme peu de ressources. +## Variables d'environnement + +Vous pouvez les définir au déploiement de Vaultwarden depuis le Marketplace. Laissez `ADMIN_TOKEN` +vide pour générer automatiquement une valeur aléatoire sécurisée. + +| Variable | Description | +| -------------------- | --------------------------------------------------------------------------------------- | +| `VAULTWARDEN_DOMAIN` | URL publique complète utilisée par les clients, par exemple `https://vault.example.com` | +| `ADMIN_TOKEN` | Jeton du panneau `/admin` | + ## Démarrage ### 1. Se connecter à la VM @@ -102,10 +112,11 @@ certificat autosigné par défaut. Traitez le jeton administrateur comme un mot de passe root. -**En production**, définissez `DOMAIN` avec votre IP publique ou nom d'hôte dans -`/data/vaultwarden/vaultwarden.env`, remplacez le certificat autosigné par un certificat de -confiance (ou placez Vaultwarden derrière un proxy inverse comme Caddy qui termine TLS), puis -redémarrez la pile: +**En production**, définissez `DOMAIN` avec l'URL publique complète utilisée par les clients, y +compris le schéma et le port ou chemin éventuel (par exemple `https://vault.example.com` ou +`https://:8000`), dans `/data/vaultwarden/vaultwarden.env`, remplacez le certificat +autosigné par un certificat de confiance (ou placez Vaultwarden derrière un proxy inverse comme +Caddy qui termine TLS), puis redémarrez la pile: ```bash cd /data/vaultwarden && docker compose restart diff --git a/src/content/docs/public-cloud/marketplace/authentik.md b/src/content/docs/public-cloud/marketplace/authentik.md index ba587f9..837bff3 100644 --- a/src/content/docs/public-cloud/marketplace/authentik.md +++ b/src/content/docs/public-cloud/marketplace/authentik.md @@ -32,12 +32,11 @@ stack. You can optionally set these when deploying Authentik from the marketplace. Leave a password field blank to have a secure random value generated automatically. -| Variable | Description | -| -------------------------- | --------------------------------------------- | -| `AUTHENTIK_ADMIN_EMAIL` | Email for the initial `akadmin` account | -| `AUTHENTIK_ADMIN_PASSWORD` | Password for the initial `akadmin` account | -| `PG_PASS` | Password for the internal PostgreSQL database | -| `AUTHENTIK_SECRET_KEY` | Secret key used to sign sessions and tokens | +| Variable | Description | +| ------------------------------ | ---------------------------------------------- | +| `AUTHENTIK_HOSTNAME` | Public hostname or IP Authentik is served from | +| `AUTHENTIK_BOOTSTRAP_EMAIL` | Email for the initial `akadmin` account | +| `AUTHENTIK_BOOTSTRAP_PASSWORD` | Password for the initial `akadmin` account | ## Getting started diff --git a/src/content/docs/public-cloud/marketplace/coolify.md b/src/content/docs/public-cloud/marketplace/coolify.md index 10655a8..979ce60 100644 --- a/src/content/docs/public-cloud/marketplace/coolify.md +++ b/src/content/docs/public-cloud/marketplace/coolify.md @@ -25,14 +25,6 @@ and a web dashboard, while keeping all your data under your control. Coolify also runs the applications you deploy, so size the instance for those workloads too. -## Environment variables - -You can optionally set this when deploying Coolify from the marketplace. - -| Variable | Description | -| -------------- | ------------------------------------------------------------------------------- | -| `COOLIFY_FQDN` | Fully qualified domain name for the dashboard, for example `deploy.example.com` | - ## Getting started ### 1. Connect to your VM diff --git a/src/content/docs/public-cloud/marketplace/dify.md b/src/content/docs/public-cloud/marketplace/dify.md index 4af89cb..88ad3fb 100644 --- a/src/content/docs/public-cloud/marketplace/dify.md +++ b/src/content/docs/public-cloud/marketplace/dify.md @@ -28,17 +28,6 @@ vector store, and nginx). RAM and storage requirements grow with usage. -## Environment variables - -You can optionally set these when deploying Dify from the marketplace. Leave any field blank to have -a secure random value generated automatically. - -| Variable | Description | -| -------------------- | --------------------------------------------------------------------------------------- | -| `DIFY_PUBLIC_URL` | Public base URL (for example `https://dify.example.com`) for console, API, and webhooks | -| `DIFY_INIT_PASSWORD` | Optional password that gates the one-time `/install` setup wizard | -| `DIFY_ENABLE_HTTPS` | Set to `true` to have the bundled nginx serve HTTPS. Defaults to `false` | - ## Getting started ### 1. Connect to your VM @@ -68,7 +57,7 @@ http:///install ``` Create the admin account (email and password of your choice), then sign in at -`http:///`. If you set `DIFY_INIT_PASSWORD`, enter it first to open the wizard. +`http:///`. ### 4. Add a model provider @@ -106,9 +95,8 @@ Environment configuration: `/opt/dify/docker/.env`. Persistent data is stored un Ports 80 and 443 are open on the VM's network interface. UFW is enabled and allows SSH (port 22), HTTP (80), and HTTPS (443). -Dify serves plain HTTP by default. **For production use**, set `DIFY_PUBLIC_URL` to your domain and -enable HTTPS, either through the bundled nginx (`DIFY_ENABLE_HTTPS=true` with your own certificates) -or your own reverse proxy. Apply `.env` changes with: +Dify serves plain HTTP by default. **For production use**, put it behind your own reverse proxy with +TLS, or configure HTTPS and the public URL in `/opt/dify/docker/.env`. Apply `.env` changes with: ```bash cd /opt/dify/docker && docker compose down && docker compose up -d diff --git a/src/content/docs/public-cloud/marketplace/ghost.md b/src/content/docs/public-cloud/marketplace/ghost.md index 71184a3..b962e43 100644 --- a/src/content/docs/public-cloud/marketplace/ghost.md +++ b/src/content/docs/public-cloud/marketplace/ghost.md @@ -38,6 +38,7 @@ blank to have a secure random value generated automatically. | Variable | Description | | ------------------- | ----------------------------------------------------- | | `GHOST_URL` | Full site URL, for example `https://blog.example.com` | +| `GHOST_ADMIN_EMAIL` | Email for the Ghost admin account | | `GHOST_DB_PASSWORD` | Password for the MySQL `ghost` database user | If `GHOST_URL` is not set, the VM serves a placeholder page and leaves Ghost unconfigured until you diff --git a/src/content/docs/public-cloud/marketplace/index.md b/src/content/docs/public-cloud/marketplace/index.md index 8e6c686..1c2e254 100644 --- a/src/content/docs/public-cloud/marketplace/index.md +++ b/src/content/docs/public-cloud/marketplace/index.md @@ -792,7 +792,7 @@ automatically. Credentials are generated, services are configured, and the image

SeaweedFS Coming soon

-

Fast distributed file and object storage system.

+

Fast distributed file store with S3-compatible object storage.

diff --git a/src/content/docs/public-cloud/marketplace/jenkins.md b/src/content/docs/public-cloud/marketplace/jenkins.md index 6407c35..bb515a8 100644 --- a/src/content/docs/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/public-cloud/marketplace/jenkins.md @@ -22,6 +22,16 @@ continuous delivery for almost any toolchain. The web UI runs on port 8080. | RAM | 2 GB | 4 GB | | Storage | 20 GB | 50 GB | +## Environment variables + +You can optionally set these when deploying Jenkins from the marketplace. Leave a password field +blank to have a secure random value generated automatically. + +| Variable | Description | +| ------------------------ | -------------------------------------- | +| `JENKINS_ADMIN_USER` | Username for the initial admin account | +| `JENKINS_ADMIN_PASSWORD` | Password for the initial admin account | + ## Getting started ### 1. Connect to your VM diff --git a/src/content/docs/public-cloud/marketplace/keycloak.md b/src/content/docs/public-cloud/marketplace/keycloak.md index 9684457..2cda4e5 100644 --- a/src/content/docs/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/public-cloud/marketplace/keycloak.md @@ -30,12 +30,11 @@ Keycloak runs in production mode (`start`) with a PostgreSQL database, as a Dock You can optionally set these when deploying Keycloak from the marketplace. Leave a password field blank to have a secure random value generated automatically. -| Variable | Description | -| ------------------------- | ------------------------------------------------------------------------- | -| `KEYCLOAK_ADMIN_PASSWORD` | Password for the initial `admin` account | -| `KC_DB_PASSWORD` | Password for the internal PostgreSQL database | -| `KC_HOSTNAME` | Public hostname or IP Keycloak is served from. Defaults to the VM's IP | -| `KC_BEHIND_PROXY` | Set to `true` only when fronting Keycloak with your own TLS reverse proxy | +| Variable | Description | +| ------------------------- | ------------------------------------------------------------------------------ | +| `KEYCLOAK_ADMIN` | Username for the initial admin account. Defaults to `admin` | +| `KEYCLOAK_ADMIN_PASSWORD` | Password for the initial admin account | +| `KC_HOSTNAME` | Public hostname or IP Keycloak is served from. Defaults to the VM's private IP | ## Getting started @@ -112,8 +111,8 @@ requests from the new address. ::: **For production use**, front Keycloak with a reverse proxy (Caddy, nginx, or Traefik) that -terminates TLS on port 443 and forwards to port 8080, and set `KC_BEHIND_PROXY=true`. Restrict -direct access to port 8080: +terminates TLS on port 443 and forwards to port 8080, and set `KC_PROXY_HEADERS=xforwarded` in +`/opt/keycloak/.env`. Restrict direct access to port 8080: ```bash sudo ufw delete allow 8080/tcp diff --git a/src/content/docs/public-cloud/marketplace/ollama.md b/src/content/docs/public-cloud/marketplace/ollama.md index 748adb8..cfbff30 100644 --- a/src/content/docs/public-cloud/marketplace/ollama.md +++ b/src/content/docs/public-cloud/marketplace/ollama.md @@ -63,14 +63,6 @@ Adjust from there: [block storage volume](/public-cloud/compute/settings/block-storage/) instead of moving to a bigger plan. -## Environment variables - -You can optionally set this when deploying Ollama from the marketplace. - -| Variable | Description | -| ------------- | ------------------------------------------------------------------------------- | -| `OLLAMA_HOST` | Address and port the API binds to. Defaults to `0.0.0.0:11434` (all interfaces) | - ## Getting started ### 1. Connect to your VM @@ -81,8 +73,7 @@ ssh ubuntu@ ### 2. Wait for first-boot configuration -On the first boot, a setup script applies the listen address and starts the service. This takes -under a minute. Track progress: +On the first boot, a setup script starts the service. This takes under a minute. Track progress: ```bash journalctl -u ollama-first-boot.service -f diff --git a/src/content/docs/public-cloud/marketplace/portainer.md b/src/content/docs/public-cloud/marketplace/portainer.md index e95a2bd..2c8485b 100644 --- a/src/content/docs/public-cloud/marketplace/portainer.md +++ b/src/content/docs/public-cloud/marketplace/portainer.md @@ -22,6 +22,15 @@ The UI runs on port 9443 over HTTPS. | RAM | 1 GB | 2 GB | | Storage | 20 GB | 40 GB | +## Environment variables + +You can optionally set this when deploying Portainer from the marketplace. Leave it blank to create +the admin account in the UI on first visit. + +| Variable | Description | +| -------------------------- | -------------------------------------- | +| `PORTAINER_ADMIN_PASSWORD` | Password for the initial admin account | + ## Getting started ### 1. Connect to your VM diff --git a/src/content/docs/public-cloud/marketplace/prometheus.md b/src/content/docs/public-cloud/marketplace/prometheus.md index 1b5734e..e6ab0f5 100644 --- a/src/content/docs/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/public-cloud/marketplace/prometheus.md @@ -14,8 +14,8 @@ well with Grafana for dashboards. | Prometheus | 3.4.1 | | Ubuntu | 24.04 LTS | -The image ships the Prometheus server only. Add exporters (such as `node_exporter`) and Alertmanager -as separate targets. +The image ships the Prometheus server only. Add exporters (such as `node_exporter`) as scrape +targets, and run Alertmanager separately as its own component to handle alert routing. ## Requirements @@ -27,14 +27,6 @@ as separate targets. Storage requirements grow with the number of series and the retention period. -## Environment variables - -You can optionally set this when deploying Prometheus from the marketplace. - -| Variable | Description | -| ------------------------------- | ---------------------------------------------------------------- | -| `PROMETHEUS_WEB_LISTEN_ADDRESS` | Address and port the UI/API binds to. Defaults to `0.0.0.0:9090` | - ## Getting started ### 1. Connect to your VM @@ -45,8 +37,7 @@ ssh ubuntu@ ### 2. Wait for first-boot configuration -On the first boot, a setup script applies the listen address and starts the service. This takes -under a minute. Track progress: +On the first boot, a setup script starts the service. This takes under a minute. Track progress: ```bash journalctl -u prometheus-first-boot.service -f diff --git a/src/content/docs/public-cloud/marketplace/supabase.md b/src/content/docs/public-cloud/marketplace/supabase.md index 2cb199b..8bfdd83 100644 --- a/src/content/docs/public-cloud/marketplace/supabase.md +++ b/src/content/docs/public-cloud/marketplace/supabase.md @@ -30,11 +30,14 @@ postgres-meta, all on PostgreSQL 17. ## Environment variables -You can optionally set this when deploying Supabase from the marketplace. - -| Variable | Description | -| --------------- | -------------------------------------------------------------------------- | -| `SUPABASE_FQDN` | Fully qualified domain name for the instance, for example `db.example.com` | +You can optionally set these when deploying Supabase from the marketplace. Leave a password field +blank to have a secure random value generated automatically. + +| Variable | Description | +| -------------------- | --------------------------------------------------------- | +| `SITE_URL` | Public URL for the Supabase instance and Studio dashboard | +| `POSTGRES_PASSWORD` | Password for the PostgreSQL database | +| `DASHBOARD_PASSWORD` | Password for the Studio dashboard login | ## Getting started diff --git a/src/content/docs/public-cloud/marketplace/vaultwarden.md b/src/content/docs/public-cloud/marketplace/vaultwarden.md index 4ecf3db..f76b941 100644 --- a/src/content/docs/public-cloud/marketplace/vaultwarden.md +++ b/src/content/docs/public-cloud/marketplace/vaultwarden.md @@ -28,6 +28,16 @@ port 8000 with a self-signed certificate generated on first boot. Vaultwarden is resource-light. +## Environment variables + +You can optionally set these when deploying Vaultwarden from the marketplace. Leave `ADMIN_TOKEN` +blank to have a secure random value generated automatically. + +| Variable | Description | +| -------------------- | -------------------------------------------------------------------- | +| `VAULTWARDEN_DOMAIN` | Full public URL clients use, for example `https://vault.example.com` | +| `ADMIN_TOKEN` | Token for the `/admin` panel | + ## Getting started ### 1. Connect to your VM @@ -99,7 +109,8 @@ self-signed certificate by default. Treat the admin token like a root password. -**For production use**, set `DOMAIN` to your public IP or hostname in +**For production use**, set `DOMAIN` to the full public URL clients use, including the scheme and +any port or path (for example `https://vault.example.com` or `https://:8000`), in `/data/vaultwarden/vaultwarden.env`, replace the self-signed certificate with a trusted one (or front Vaultwarden with a reverse proxy such as Caddy that terminates TLS), and restart the stack: From 4f3e6777f3238ce78e147c869ee62474939064a0 Mon Sep 17 00:00:00 2001 From: ditahkk Date: Wed, 8 Jul 2026 15:27:41 -0400 Subject: [PATCH 3/6] docs(marketplace): align env-var tables with CMP contract; polish FR (accents, la Marketplace, machine virtuelle) --- .../fr/public-cloud/marketplace/authentik.md | 16 +++--- .../fr/public-cloud/marketplace/coolify.md | 54 ++++++++++--------- .../docs/fr/public-cloud/marketplace/dify.md | 6 +-- .../fr/public-cloud/marketplace/drupal.md | 8 +-- .../docs/fr/public-cloud/marketplace/ghost.md | 18 ++++--- .../docs/fr/public-cloud/marketplace/index.md | 10 ++-- .../fr/public-cloud/marketplace/jenkins.md | 8 +-- .../fr/public-cloud/marketplace/keycloak.md | 22 ++++---- .../fr/public-cloud/marketplace/ollama.md | 11 ++-- .../fr/public-cloud/marketplace/portainer.md | 11 ++-- .../fr/public-cloud/marketplace/prometheus.md | 6 +-- .../fr/public-cloud/marketplace/supabase.md | 9 ++-- .../public-cloud/marketplace/vaultwarden.md | 10 ++-- 13 files changed, 99 insertions(+), 90 deletions(-) diff --git a/src/content/docs/fr/public-cloud/marketplace/authentik.md b/src/content/docs/fr/public-cloud/marketplace/authentik.md index 8c986a3..68d7483 100644 --- a/src/content/docs/fr/public-cloud/marketplace/authentik.md +++ b/src/content/docs/fr/public-cloud/marketplace/authentik.md @@ -29,7 +29,7 @@ Docker Compose. ## Variables d'environnement -Vous pouvez les définir au déploiement d'Authentik depuis le Marketplace. Laissez un champ de mot de +Vous pouvez les définir au déploiement d'Authentik depuis la Marketplace. Laissez un champ de mot de passe vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | @@ -40,7 +40,7 @@ passe vide pour générer automatiquement une valeur aléatoire sécurisée. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -98,9 +98,9 @@ certificats sont stockées sous `/opt/authentik`. ## Sécurité -Les ports 9000 (HTTP) et 9443 (HTTPS) sont ouverts sur l'interface réseau de la VM. UFW est activé -et autorise ces ports ainsi que SSH (port 22). Authentik sert un certificat autosigné par defaut -sur 9443. +Les ports 9000 (HTTP) et 9443 (HTTPS) sont ouverts sur l'interface réseau de la machine virtuelle. +UFW est activé et autorise ces ports ainsi que SSH (port 22). Authentik sert un certificat autosigné +par defaut sur 9443. **Pour limiter l'accès à une adresse IP précise:** @@ -111,9 +111,9 @@ sudo ufw allow from to any port 9000 sudo ufw allow from to any port 9443 ``` -**En production**, pointez un enregistrement DNS vers la VM et placez Authentik derriere TLS, soit -avec le HTTPS intégré sur 9443 et votre propre certificat, soit avec un proxy inverse (Caddy, nginx -ou Traefik) qui termine TLS et relaie vers le port 9000. +**En production**, pointez un enregistrement DNS vers la machine virtuelle et placez Authentik +derriere TLS, soit avec le HTTPS intégré sur 9443 et votre propre certificat, soit avec un proxy +inverse (Caddy, nginx ou Traefik) qui termine TLS et relaie vers le port 9000. ## Prochaines étapes diff --git a/src/content/docs/fr/public-cloud/marketplace/coolify.md b/src/content/docs/fr/public-cloud/marketplace/coolify.md index cc676d0..c4cb1d0 100644 --- a/src/content/docs/fr/public-cloud/marketplace/coolify.md +++ b/src/content/docs/fr/public-cloud/marketplace/coolify.md @@ -2,9 +2,10 @@ title: Coolify --- -Coolify est un PaaS open source auto-hébergé et une solution de remplacement a Heroku, Netlify et -Vercel. Il déploie des applications, bases de données et services sur votre propre serveur avec des -flux Git et un tableau de bord web, tout en gardant vos données sous votre contrôle. +Coolify est une plateforme PaaS (Platform as a Service) open source auto-hébergée qui constitue une +alternative à Heroku, Netlify et Vercel. Elle permet de déployer des applications, des bases de +données et des services sur votre propre infrastructure à l'aide de flux Git et d'un tableau de bord +web, tout en conservant un contrôle total sur vos données. ## Logiciels inclus @@ -23,12 +24,13 @@ flux Git et un tableau de bord web, tout en gardant vos données sous votre cont | RAM | 2 Go | 4 Go | | Stockage | 30 Go | 60 Go | -Coolify exécute aussi les applications que vous déployez. Dimensionnez donc l'instance pour ces -charges de travail. +Coolify héberge également les applications, les bases de données et les services que vous déployez. +Il est donc important de dimensionner correctement l'instance en fonction des charges de travail +prévues. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -36,8 +38,9 @@ ssh ubuntu@ ### 2. Attendre la configuration au premier démarrage -Au premier démarrage, un script génère les secrets de l'application et démarre toute la pile Coolify -avec Docker Compose. Cela prend 1 à 2 minutes. Suivez la progression: +Lors du premier démarrage, un script génère les secrets de l'application et démarre l'ensemble de la +pile Coolify avec Docker Compose. Cette opération prend environ 1 à 2 minutes. Vous pouvez suivre la +progression avec la commande suivante: ```bash journalctl -u coolify-first-boot.service -f @@ -45,7 +48,7 @@ journalctl -u coolify-first-boot.service -f Le message de connexion (MOTD) confirme quand Coolify est prêt. -### 3. Creer le compte administrateur +### 3. Créer le compte administrateur Ouvrez le tableau de bord dans votre navigateur: @@ -53,16 +56,17 @@ Ouvrez le tableau de bord dans votre navigateur: http://:8000 ``` -Le premier compte cree devient l'administrateur racine. Definissez immediatement une adresse -courriel et un mot de passe forts, car l'inscription se ferme apres le premier utilisateur. +Le premier compte créé devient l'administrateur racine. Définissez immédiatement une adresse +courriel et un mot de passe forts, car l'inscription se ferme après le premier utilisateur. ### 4. Configurer l'instance -1. Dans **Settings**, definissez le domaine de l'instance afin que Coolify emette des certificats - TLS Let's Encrypt et serve le tableau de bord en HTTPS. Coolify inclut un proxy inverse intégré - qui gère le routage et les certificats pour le tableau de bord et vos applications déployées. Le - DNS doit pointer vers la VM avant l'emission des certificats. -2. Connectez une source Git (GitHub, GitLab ou dépôt générique) pour commencer a déployer des +1. Dans les **paramètres (Settings)**, définissez le domaine de l'instance afin que Coolify émette + des certificats TLS Let's Encrypt et serve le tableau de bord en HTTPS. Coolify inclut un proxy + inverse intégré qui gère le routage et les certificats pour le tableau de bord et vos + applications déployées. Le DNS doit pointer vers la machine virtuelle avant l'émission des + certificats. +2. Connectez une source Git (GitHub, GitLab ou dépôt générique) pour commencer à déployer des applications. ## Gérer Coolify @@ -80,17 +84,17 @@ cd /data/coolify/source && docker compose restart cd /data/coolify/source && docker compose logs -f ``` -Un resume des URL et des chemins est écrit dans `/data/coolify/info.txt`. +Un résumé des URL et des chemins est écrit dans `/data/coolify/info.txt`. ## Sécurité -Les ports 8000 (tableau de bord), 6001 (temps reel), 6002 (terminal), 80 et 443 sont ouverts sur -l'interface réseau de la VM. UFW est activé et autorise ces ports ainsi que SSH (port 22). Les ports -80 et 443 servent vos applications déployées et TLS. +Les ports 8000 (tableau de bord), 6001 (temps réel), 6002 (terminal), 80 et 443 sont ouverts sur +l'interface réseau de la machine virtuelle. UFW est activé et autorise ces ports ainsi que SSH (port +22). Les ports 80 et 443 servent vos applications déployées et TLS. -Lorsque vous configurez un domaine personnalise avec Let's Encrypt, accedez au tableau de bord en +Lorsque vous configurez un domaine personnalisé avec Let's Encrypt, accédez au tableau de bord en HTTPS sur le port 443. Vous pouvez ensuite fermer les ports 8000, 6001 et 6002 si l'accès direct -n'est plus necessaire: +n'est plus nécessaire: ```bash sudo ufw delete allow 8000/tcp @@ -98,10 +102,10 @@ sudo ufw delete allow 6001/tcp sudo ufw delete allow 6002/tcp ``` -Terminez rapidement la configuration administrateur apres le premier démarrage afin que personne -d'autre ne puisse reclamer le compte racine. +Terminez rapidement la configuration administrateur après le premier démarrage afin que personne +d'autre ne puisse réclamer le compte racine. ## Prochaines étapes - [Documentation Coolify](https://coolify.io/docs) -- [Demarrer avec Coolify](https://coolify.io/docs/get-started/introduction) +- [Démarrer avec Coolify](https://coolify.io/docs/get-started/introduction) diff --git a/src/content/docs/fr/public-cloud/marketplace/dify.md b/src/content/docs/fr/public-cloud/marketplace/dify.md index 0ec7856..2079d44 100644 --- a/src/content/docs/fr/public-cloud/marketplace/dify.md +++ b/src/content/docs/fr/public-cloud/marketplace/dify.md @@ -31,7 +31,7 @@ Les besoins en RAM et en stockage augmentent avec l'utilisation. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -93,8 +93,8 @@ Configuration d'environnement: `/opt/dify/docker/.env`. Les données persistante ## Sécurité -Les ports 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise SSH -(port 22), HTTP (80) et HTTPS (443). +Les ports 80 et 443 sont ouverts sur l'interface réseau de la machine virtuelle. UFW est activé et +autorise SSH (port 22), HTTP (80) et HTTPS (443). Dify sert HTTP en clair par défaut. **En production**, placez Dify derrière votre propre proxy inverse avec TLS, ou configurez HTTPS et l'URL publique dans `/opt/dify/docker/.env`. Appliquez les diff --git a/src/content/docs/fr/public-cloud/marketplace/drupal.md b/src/content/docs/fr/public-cloud/marketplace/drupal.md index 5af6c83..b925d44 100644 --- a/src/content/docs/fr/public-cloud/marketplace/drupal.md +++ b/src/content/docs/fr/public-cloud/marketplace/drupal.md @@ -19,7 +19,7 @@ elles-mêmes le code sous-jacent. | Ubuntu | 24.04 LTS | Drupal s'exécute sur une pile LAMP native (Apache, MariaDB, PHP). Le site est préinstallé avec le -profil **Standard**. Il est donc prêt à utiliser dès que la VM démarre. +profil **Standard**. Il est donc prêt à utiliser dès que la machine virtuelle démarre. ## Prérequis @@ -34,7 +34,7 @@ installés. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -106,8 +106,8 @@ cd /var/www/drupal && vendor/bin/drush cache:rebuild ## Sécurité -Le port 80 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et -HTTP (port 80). L'image sert uniquement HTTP en clair. +Le port 80 est ouvert sur l'interface réseau de la machine virtuelle. UFW est activé et autorise SSH +(port 22) et HTTP (port 80). L'image sert uniquement HTTP en clair. :::caution diff --git a/src/content/docs/fr/public-cloud/marketplace/ghost.md b/src/content/docs/fr/public-cloud/marketplace/ghost.md index b35eabb..dcffd17 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ghost.md +++ b/src/content/docs/fr/public-cloud/marketplace/ghost.md @@ -27,13 +27,14 @@ rapide, pilotée par des thèmes. :::caution Ghost exige un nom de domaine. Il ne fonctionne pas avec une simple adresse IP. Fournissez -`GHOST_URL` au déploiement (voir ci-dessous) et pointez le DNS de ce domaine vers la VM. +`GHOST_URL` au déploiement (voir ci-dessous) et pointez le DNS de ce domaine vers la machine +virtuelle. ::: ## Variables d'environnement -Vous pouvez les définir au déploiement de Ghost depuis le Marketplace. Laissez `GHOST_DB_PASSWORD` +Vous pouvez les définir au déploiement de Ghost depuis la Marketplace. Laissez `GHOST_DB_PASSWORD` vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | @@ -42,12 +43,12 @@ vide pour générer automatiquement une valeur aléatoire sécurisée. | `GHOST_ADMIN_EMAIL` | Adresse courriel du compte administrateur Ghost | | `GHOST_DB_PASSWORD` | Mot de passe de l'utilisateur MySQL `ghost` | -Si `GHOST_URL` n'est pas définie, la VM sert une page temporaire et laisse Ghost non configuré -jusqu'à ce que vous fournissiez un domaine. +Si `GHOST_URL` n'est pas définie, la machine virtuelle sert une page temporaire et laisse Ghost non +configuré jusqu'à ce que vous fournissiez un domaine. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -82,7 +83,8 @@ sudo cat /etc/ghost/credentials.txt ### 4. Activer HTTPS TLS n'est pas configuré automatiquement, car le DNS de votre domaine doit d'abord pointer vers la -VM. Une fois la résolution DNS active, provisionnez un certificat Let's Encrypt gratuit: +machine virtuelle. Une fois la résolution DNS active, provisionnez un certificat Let's Encrypt +gratuit: ```bash cd /var/www/ghost @@ -109,8 +111,8 @@ Répertoire d'installation: `/var/www/ghost`. Le contenu (thèmes, images et don ## Sécurité -Les ports 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise SSH -(port 22), HTTP (80) et HTTPS (443). +Les ports 80 et 443 sont ouverts sur l'interface réseau de la machine virtuelle. UFW est activé et +autorise SSH (port 22), HTTP (80) et HTTPS (443). **En production**, terminez l'étape Let's Encrypt ci-dessus afin que le site soit servi en HTTPS, et limitez l'accès SSH aux plages IP connues. diff --git a/src/content/docs/fr/public-cloud/marketplace/index.md b/src/content/docs/fr/public-cloud/marketplace/index.md index 33e763a..0e73eb5 100644 --- a/src/content/docs/fr/public-cloud/marketplace/index.md +++ b/src/content/docs/fr/public-cloud/marketplace/index.md @@ -3,10 +3,10 @@ title: Marketplace tableOfContents: false --- -Les images du Marketplace ZCP sont des modèles de VM préconfigurés qui se déploient en quelques -minutes depuis la console ZCP. Chaque image est fournie sur **Ubuntu 24.04 LTS** avec un service de -premier démarrage qui termine la configuration automatiquement. Les identifiants sont générés, les -services sont configurés et l'image est prête à utiliser. +Les images de la Marketplace ZCP sont des modèles de machine virtuelle préconfigurés qui se +déploient en quelques minutes depuis la console ZCP. Chaque image est fournie sur **Ubuntu 24.04 +LTS** avec un service de premier démarrage qui termine la configuration automatiquement. Les +identifiants sont générés, les services sont configurés et l'image est prête à utiliser.
@@ -541,7 +541,7 @@ services sont configurés et l'image est prête à utiliser.

Ollama

-

Exécutez des LLM locaux sur votre VM et servez des modèles avec l'API Ollama.

+

Exécutez des LLM locaux sur votre machine virtuelle et servez des modèles avec l'API Ollama.

diff --git a/src/content/docs/fr/public-cloud/marketplace/jenkins.md b/src/content/docs/fr/public-cloud/marketplace/jenkins.md index a1e963f..a1142ed 100644 --- a/src/content/docs/fr/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/fr/public-cloud/marketplace/jenkins.md @@ -25,7 +25,7 @@ s'exécute sur le port 8080. ## Variables d'environnement -Vous pouvez les définir au déploiement de Jenkins depuis le Marketplace. Laissez un champ de mot de +Vous pouvez les définir au déploiement de Jenkins depuis la Marketplace. Laissez un champ de mot de passe vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | @@ -35,7 +35,7 @@ passe vide pour générer automatiquement une valeur aléatoire sécurisée. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -89,8 +89,8 @@ Répertoire Jenkins home (tâches, plugins et configuration): `/var/lib/jenkins` ## Sécurité -Le port 8080 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et -Jenkins (port 8080). Aucun port d'agent de build (50000) n'est ouvert par défaut. +Le port 8080 est ouvert sur l'interface réseau de la machine virtuelle. UFW est activé et autorise +SSH (port 22) et Jenkins (port 8080). Aucun port d'agent de build (50000) n'est ouvert par défaut. **Pour limiter l'interface à une adresse IP précise:** diff --git a/src/content/docs/fr/public-cloud/marketplace/keycloak.md b/src/content/docs/fr/public-cloud/marketplace/keycloak.md index a71b01a..9604016 100644 --- a/src/content/docs/fr/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/fr/public-cloud/marketplace/keycloak.md @@ -28,18 +28,18 @@ Compose. ## Variables d'environnement -Vous pouvez les définir au déploiement de Keycloak depuis le Marketplace. Laissez un champ de mot de +Vous pouvez les définir au déploiement de Keycloak depuis la Marketplace. Laissez un champ de mot de passe vide pour générer automatiquement une valeur aléatoire sécurisée. -| Variable | Description | -| ------------------------- | ------------------------------------------------------------------------------------------ | -| `KEYCLOAK_ADMIN` | Nom d'utilisateur du compte administrateur initial. Par défaut: `admin` | -| `KEYCLOAK_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | -| `KC_HOSTNAME` | Nom d'hôte public ou IP depuis lequel Keycloak est servi. Par défaut: l'IP privée de la VM | +| Variable | Description | +| ------------------------- | --------------------------------------------------------------------------------------------------------- | +| `KEYCLOAK_ADMIN` | Nom d'utilisateur du compte administrateur initial. Par défaut: `admin` | +| `KEYCLOAK_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | +| `KC_HOSTNAME` | Nom d'hôte public ou IP depuis lequel Keycloak est servi. Par défaut: l'IP privée de la machine virtuelle | ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -101,13 +101,13 @@ Configuration d'environnement: `/opt/keycloak/.env`. Les données PostgreSQL son ## Sécurité -Le port 8080 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et -Keycloak (port 8080). Keycloak sert HTTP en clair sur 8080. +Le port 8080 est ouvert sur l'interface réseau de la machine virtuelle. UFW est activé et autorise +SSH (port 22) et Keycloak (port 8080). Keycloak sert HTTP en clair sur 8080. :::caution -`KC_HOSTNAME` prend par défaut l'IP privée de la VM. Si vous associez ensuite une IP publique, un -nom DNS ou un proxy inverse, définissez `KC_HOSTNAME` au déploiement (ou modifiez +`KC_HOSTNAME` prend par défaut l'IP privée de la machine virtuelle. Si vous associez ensuite une IP +publique, un nom DNS ou un proxy inverse, définissez `KC_HOSTNAME` au déploiement (ou modifiez `/opt/keycloak/.env` et exécutez `cd /opt/keycloak && docker compose up -d`), sinon les vérifications de nom d'hôte en mode production peuvent rejeter les requêtes provenant de la nouvelle adresse. diff --git a/src/content/docs/fr/public-cloud/marketplace/ollama.md b/src/content/docs/fr/public-cloud/marketplace/ollama.md index 59a301b..11b7e55 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ollama.md +++ b/src/content/docs/fr/public-cloud/marketplace/ollama.md @@ -66,7 +66,7 @@ Ajustez ensuite: ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -92,7 +92,7 @@ ollama run llama3.2 "Hello, what can you do?" ### 4. Utiliser l'API -L'API écoute sur le port `11434`. Testez-la depuis la VM: +L'API écoute sur le port `11434`. Testez-la depuis la machine virtuelle: ```bash curl http://localhost:11434/api/generate -d '{ @@ -102,7 +102,7 @@ curl http://localhost:11434/api/generate -d '{ }' ``` -Depuis un autre hôte, remplacez `localhost` par l'IP de la VM. +Depuis un autre hôte, remplacez `localhost` par l'IP de la machine virtuelle. ## Gérer Ollama @@ -129,8 +129,9 @@ Les modèles sont stockés dans `/usr/share/ollama/.ollama/models`. Un résumé ## Sécurité -Le port 11434 est ouvert sur l'interface réseau de la VM, et Ollama n'a **pas d'authentification -intégrée**. UFW est activé et autorise SSH (port 22) et l'API Ollama (port 11434). +Le port 11434 est ouvert sur l'interface réseau de la machine virtuelle, et Ollama n'a **pas +d'authentification intégrée**. UFW est activé et autorise SSH (port 22) et l'API Ollama (port +11434). **Pour limiter l'API à une adresse IP précise:** diff --git a/src/content/docs/fr/public-cloud/marketplace/portainer.md b/src/content/docs/fr/public-cloud/marketplace/portainer.md index dbaa17e..28d2486 100644 --- a/src/content/docs/fr/public-cloud/marketplace/portainer.md +++ b/src/content/docs/fr/public-cloud/marketplace/portainer.md @@ -24,7 +24,7 @@ depuis une console web unique. L'interface s'exécute sur le port 9443 en HTTPS. ## Variables d'environnement -Vous pouvez définir cette variable au déploiement de Portainer depuis le Marketplace. Laissez-la +Vous pouvez définir cette variable au déploiement de Portainer depuis la Marketplace. Laissez-la vide pour créer le compte administrateur dans l'interface au premier accès. | Variable | Description | @@ -33,7 +33,7 @@ vide pour créer le compte administrateur dans l'interface au premier accès. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -97,11 +97,12 @@ chemins est écrit dans `/etc/portainer/info.txt`. ## Sécurité -Le port 9443 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et -Portainer (port 9443). Les ports 8000, 9000 et l'API Docker ne sont pas ouverts par défaut. +Le port 9443 est ouvert sur l'interface réseau de la machine virtuelle. UFW est activé et autorise +SSH (port 22) et Portainer (port 9443). Les ports 8000, 9000 et l'API Docker ne sont pas ouverts par +défaut. Portainer monte le socket Docker de l'hôte, ce qui lui donne le contrôle complet du démon Docker de -la VM. Limitez l'accès au port 9443: +la machine virtuelle. Limitez l'accès au port 9443: ```bash sudo ufw delete allow 9443/tcp diff --git a/src/content/docs/fr/public-cloud/marketplace/prometheus.md b/src/content/docs/fr/public-cloud/marketplace/prometheus.md index ee96955..abcb6fe 100644 --- a/src/content/docs/fr/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/fr/public-cloud/marketplace/prometheus.md @@ -31,7 +31,7 @@ Les besoins de stockage augmentent avec le nombre de séries et la période de r ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -91,8 +91,8 @@ sudo journalctl -u prometheus -f ## Sécurité -Le port 9090 est ouvert sur l'interface réseau de la VM, et Prometheus n'a **pas d'authentification -intégrée**. UFW est activé et autorise SSH (port 22) et Prometheus (port 9090). +Le port 9090 est ouvert sur l'interface réseau de la machine virtuelle, et Prometheus n'a **pas +d'authentification intégrée**. UFW est activé et autorise SSH (port 22) et Prometheus (port 9090). **Pour limiter l'interface à une adresse IP précise:** diff --git a/src/content/docs/fr/public-cloud/marketplace/supabase.md b/src/content/docs/fr/public-cloud/marketplace/supabase.md index 3580ba1..7da8d7f 100644 --- a/src/content/docs/fr/public-cloud/marketplace/supabase.md +++ b/src/content/docs/fr/public-cloud/marketplace/supabase.md @@ -30,7 +30,7 @@ postgres-meta, le tout sur PostgreSQL 17. ## Variables d'environnement -Vous pouvez les définir au déploiement de Supabase depuis le Marketplace. Laissez un champ de mot de +Vous pouvez les définir au déploiement de Supabase depuis la Marketplace. Laissez un champ de mot de passe vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | @@ -41,7 +41,7 @@ passe vide pour générer automatiquement une valeur aléatoire sécurisée. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -100,8 +100,9 @@ sont stockées sous `/data/supabase/volumes`. ## Sécurité -Les ports 8000, 80 et 443 sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise -ces ports ainsi que SSH (port 22). L'accès PostgreSQL direct (5432) n'est pas exposé. +Les ports 8000, 80 et 443 sont ouverts sur l'interface réseau de la machine virtuelle. UFW est +activé et autorise ces ports ainsi que SSH (port 22). L'accès PostgreSQL direct (5432) n'est pas +exposé. Changez le mot de passe du tableau de bord Studio après la première connexion. **En production**, définissez `SUPABASE_PUBLIC_URL`, `API_EXTERNAL_URL` et `SITE_URL` dans `/data/supabase/.env` avec diff --git a/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md b/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md index 9d69d8b..ed2f147 100644 --- a/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md +++ b/src/content/docs/fr/public-cloud/marketplace/vaultwarden.md @@ -31,7 +31,7 @@ Vaultwarden consomme peu de ressources. ## Variables d'environnement -Vous pouvez les définir au déploiement de Vaultwarden depuis le Marketplace. Laissez `ADMIN_TOKEN` +Vous pouvez les définir au déploiement de Vaultwarden depuis la Marketplace. Laissez `ADMIN_TOKEN` vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | @@ -41,7 +41,7 @@ vide pour générer automatiquement une valeur aléatoire sécurisée. ## Démarrage -### 1. Se connecter à la VM +### 1. Se connecter à la machine virtuelle ```bash ssh ubuntu@ @@ -106,9 +106,9 @@ certificat sont stockés sous `/data/vaultwarden/data`. ## Sécurité -Le port 8000 est ouvert sur l'interface réseau de la VM. UFW est activé et autorise SSH (port 22) et -le coffre web Vaultwarden (port 8000). Les clients Bitwarden exigent HTTPS, que l'image sert avec un -certificat autosigné par défaut. +Le port 8000 est ouvert sur l'interface réseau de la machine virtuelle. UFW est activé et autorise +SSH (port 22) et le coffre web Vaultwarden (port 8000). Les clients Bitwarden exigent HTTPS, que +l'image sert avec un certificat autosigné par défaut. Traitez le jeton administrateur comme un mot de passe root. From 4b3a308aed6ab924fdf32b35b64f5114d2b191c6 Mon Sep 17 00:00:00 2001 From: ditahkk Date: Thu, 9 Jul 2026 08:48:59 -0400 Subject: [PATCH 4/6] Update marketplace documentation and components - Added Docker Engine 29 note to Docker marketplace documentation. - Updated Elasticsearch version from 8.x to 9.x. - Updated Forgejo details including version, PostgreSQL version, and deployment instructions. - Updated Ghost version from 5.97.0 to 6.51.0 and Node.js version from 20.x to 22.x. - Updated GitLab CE version from 18.11 to 19.1. - Updated Headplane to include both Headscale and Headplane versions and deployment instructions. - Updated Keycloak version from 26.0.7 to 26.6.4. - Updated LAMP stack PHP version from 8.3 to 8.4. - Updated LEMP stack PHP-FPM version from 8.3 to 8.4. - Updated MariaDB version from 11.4 to 11.8. - Updated MySQL documentation to reflect LTS version options. - Updated n8n version from 1.121.0 to 2.29.8. - Updated NetBird version from 0.71.4 to 0.74.3. - Updated Ollama version from 0.9.2 to 0.31.2. - Updated Portainer CE version from 2.27.9 to 2.39.4. - Updated PostgreSQL documentation to reflect version options. - Updated Prometheus version from 3.4.1 to 3.13.0. - Updated Valkey version from 9.0 to 9.1. - Added tutorial for managing ZCP with Terraform or OpenTofu. --- astro.config.mjs | 4 + public/icons/marketplace/headplane-dark.svg | 13 + public/icons/marketplace/headplane.png | Bin 24998 -> 0 bytes public/icons/marketplace/headplane.svg | 13 + src/content/docs/changelog/index.md | 72 ++++- src/content/docs/fr/changelog/index.md | 80 +++++- src/content/docs/fr/index.mdx | 2 +- .../docs/fr/public-cloud/api/quickstart.mdx | 12 +- .../fr/public-cloud/marketplace/authentik.md | 11 +- .../fr/public-cloud/marketplace/docker.md | 9 + .../public-cloud/marketplace/elasticsearch.md | 2 +- .../fr/public-cloud/marketplace/forgejo.md | 152 +++++----- .../docs/fr/public-cloud/marketplace/ghost.md | 4 +- .../fr/public-cloud/marketplace/gitlab.md | 4 +- .../fr/public-cloud/marketplace/headplane.md | 195 ++++++------- .../docs/fr/public-cloud/marketplace/index.md | 40 +-- .../fr/public-cloud/marketplace/keycloak.md | 4 +- .../docs/fr/public-cloud/marketplace/lamp.md | 4 +- .../docs/fr/public-cloud/marketplace/lemp.md | 2 +- .../fr/public-cloud/marketplace/mariadb.md | 4 +- .../docs/fr/public-cloud/marketplace/mysql.md | 20 +- .../docs/fr/public-cloud/marketplace/n8n.md | 2 +- .../fr/public-cloud/marketplace/netbird.md | 2 +- .../fr/public-cloud/marketplace/ollama.md | 2 +- .../fr/public-cloud/marketplace/portainer.md | 2 +- .../fr/public-cloud/marketplace/postgresql.md | 17 +- .../fr/public-cloud/marketplace/prometheus.md | 2 +- .../fr/public-cloud/marketplace/valkey.md | 4 +- src/content/docs/fr/tutorials/index.md | 14 + src/content/docs/index.mdx | 2 +- .../docs/public-cloud/api/quickstart.mdx | 11 +- .../public-cloud/marketplace/authentik.md | 10 +- .../docs/public-cloud/marketplace/docker.md | 8 + .../public-cloud/marketplace/elasticsearch.md | 2 +- .../docs/public-cloud/marketplace/forgejo.md | 142 ++++++---- .../docs/public-cloud/marketplace/ghost.md | 4 +- .../docs/public-cloud/marketplace/gitlab.md | 4 +- .../public-cloud/marketplace/headplane.md | 182 ++++++------ .../docs/public-cloud/marketplace/index.md | 40 +-- .../docs/public-cloud/marketplace/keycloak.md | 4 +- .../docs/public-cloud/marketplace/lamp.md | 4 +- .../docs/public-cloud/marketplace/lemp.md | 2 +- .../docs/public-cloud/marketplace/mariadb.md | 4 +- .../docs/public-cloud/marketplace/mysql.md | 18 +- .../docs/public-cloud/marketplace/n8n.md | 2 +- .../docs/public-cloud/marketplace/netbird.md | 2 +- .../docs/public-cloud/marketplace/ollama.md | 2 +- .../public-cloud/marketplace/portainer.md | 2 +- .../public-cloud/marketplace/postgresql.md | 17 +- .../public-cloud/marketplace/prometheus.md | 2 +- .../docs/public-cloud/marketplace/valkey.md | 4 +- src/content/docs/tutorials/index.md | 13 + .../manage-infrastructure-terraform.mdx | 261 ++++++++++++++++++ 53 files changed, 964 insertions(+), 470 deletions(-) create mode 100644 public/icons/marketplace/headplane-dark.svg delete mode 100644 public/icons/marketplace/headplane.png create mode 100644 public/icons/marketplace/headplane.svg create mode 100644 src/content/docs/tutorials/manage-infrastructure-terraform.mdx diff --git a/astro.config.mjs b/astro.config.mjs index 0a75f4c..53762d4 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -215,6 +215,10 @@ export default defineConfig({ label: 'Deploy OpenClaw (Marketplace, CLI)', slug: 'tutorials/deploy-openclaw-marketplace-cli', }, + { + label: 'Manage ZCP with Terraform / OpenTofu', + slug: 'tutorials/manage-infrastructure-terraform', + }, ], }, diff --git a/public/icons/marketplace/headplane-dark.svg b/public/icons/marketplace/headplane-dark.svg new file mode 100644 index 0000000..6178374 --- /dev/null +++ b/public/icons/marketplace/headplane-dark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/icons/marketplace/headplane.png b/public/icons/marketplace/headplane.png deleted file mode 100644 index 1e9a4e52e4ad986c778ff1a01d2595abfe741550..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24998 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

@K0hME3&i*kJ3~le4m2IU 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 + + + + + + + + + + + + diff --git a/src/content/docs/changelog/index.md b/src/content/docs/changelog/index.md index f4331c9..5a2e718 100644 --- a/src/content/docs/changelog/index.md +++ b/src/content/docs/changelog/index.md @@ -38,6 +38,52 @@ 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.23: July 8, 2026 + +**`--wait` now reports the real instance state.** The platform's cached state sometimes lags minutes +behind reality, so `instance create/start/stop --wait` kept waiting on a VM already up. The CLI now +polls the live state endpoint, which reconciles with the hypervisor, and returns as soon as the VM +is running. + +- **Corrected `instance delete --delete-public-ip` help**: the platform does not release the + auto-assigned public IP on delete yet (an API-side fix is in progress). The option, prompt, and + help now say so plainly. Release the address manually with `zcp ip release ` after + deleting. + +### v0.0.22: July 7, 2026 + +**DNS records display and delete correctly.** The DNS service models records as record sets +addressed by name and type. `zcp dns show` and `record-create` now display record content +(multi-value sets included), and `dns record-delete` works with `--name` and `--type`. Record names +are relative: the CLI appends the zone for you. + +- **`egress create` reports honestly** when the platform accepts a rule but never lists it, instead + of failing with a confusing lookup error. +- **Automated validation now covers the command reference**: a script checks all 264 examples + against the built CLI, and we rewrote six sections to match the real command trees. +- **L2 instances work, and `instance create` examples run as pasted**, contributed by first-time + community contributor [@cokerrd](https://github.com/cokerrd): the new `--is-public` option + unblocks `--network-type L2`, and the required `--network-plan` and `--storage-category` options + are now in every example. + +### v0.0.21: July 2, 2026 + +**Profile defaults now apply to create commands.** With defaults configured through +`zcp profile add`, create and mutate commands no longer error asking for `--region`/`--project`. Set +them once. List and get commands already worked this way. + +- **First-run guidance**: the installers print copy-paste setup for the production defaults + (`--region yul-1 --project default-9`), and the docs use them throughout. +- **We verify every example slug against the live catalog** (templates, plans, backup and load + balancer plans), so examples run as pasted. + +### v0.0.20: June 30, 2026 + +**`zcp instance delete` requests release of the VM's auto-assigned public IP by default**, so no +address stays allocated and billed after the VM is gone. Pass `--delete-public-ip=false` to keep the +address. Manually acquired and source-NAT addresses are unaffected. See the v0.0.23 note: the +platform-side release is not active yet. + ### v0.0.19: June 21, 2026 **Manage IAM from the CLI: sub-users, roles, and permissions.** Everything in the portal's Profile @@ -227,6 +273,28 @@ consistent response format. A large set of command groups arrived: ## Terraform / OpenTofu provider -Manage ZCP infrastructure as code. The provider is in active development at +Manage ZCP infrastructure as code with the official provider, published as `zsoftly/zcp` on the +[OpenTofu registry](https://search.opentofu.org/provider/zsoftly/zcp) and the +[Terraform Registry](https://registry.terraform.io/providers/zsoftly/zcp). Source code lives at [github.com/zsoftly/terraform-provider-zcp](https://github.com/zsoftly/terraform-provider-zcp). -Released versions will be listed here. + +### v0.1.0: July 8, 2026 + +**First public release, live on both registries.** 38 resources and 12 data sources cover everything +the `zcp` CLI supports: instances, volumes, snapshots and backups, VPCs and networks, firewall and +egress rules, load balancers, auto-scaling, Kubernetes clusters, DNS, object storage, VPN, and +account governance. Every resource supports `terraform import`, and we sign every release. + +```hcl +terraform { + required_providers { + zcp = { + source = "zsoftly/zcp" + version = "~> 0.1" + } + } +} +``` + +Set `ZCP_BEARER_TOKEN` in your environment, then run `terraform init` or `tofu init`. Generate the +token in the console under **Account → API Keys**. diff --git a/src/content/docs/fr/changelog/index.md b/src/content/docs/fr/changelog/index.md index a8d8734..929ba2a 100644 --- a/src/content/docs/fr/changelog/index.md +++ b/src/content/docs/fr/changelog/index.md @@ -40,6 +40,57 @@ 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.23 : 8 juillet 2026 + +**`--wait` rapporte désormais l'état réel de l'instance.** L'état en cache de la plateforme accuse +parfois plusieurs minutes de retard sur la réalité, si bien que `instance create/start/stop --wait` +continuait d'attendre une VM déjà démarrée. Le CLI interroge maintenant le point de terminaison +d'état en direct, réconcilié avec l'hyperviseur, et rend la main dès que la VM est en marche. + +- **Aide corrigée pour `instance delete --delete-public-ip`** : la plateforme ne libère pas encore + l'adresse IP publique attribuée automatiquement lors de la suppression (un correctif est en cours + côté API). L'option, l'invite et l'aide l'indiquent désormais clairement. Libérez l'adresse + manuellement avec `zcp ip release ` après la suppression. + +### v0.0.22 : 7 juillet 2026 + +**Les enregistrements DNS s'affichent et se suppriment correctement.** Le service DNS modélise les +enregistrements comme des ensembles d'enregistrements adressés par nom et type. `zcp dns show` et +`record-create` affichent maintenant le contenu des enregistrements (ensembles à valeurs multiples +inclus), et `dns record-delete` fonctionne avec `--name` et `--type`. Les noms d'enregistrements +sont relatifs : le CLI ajoute la zone pour vous. + +- **`egress create` rapporte honnêtement** lorsque la plateforme accepte une règle qui n'apparaît + jamais dans la liste des règles, au lieu d'échouer avec une erreur de recherche déroutante. +- **La validation automatisée couvre désormais la référence des commandes** : un script confronte + les 264 exemples au CLI compilé, et nous avons réécrit six sections selon les arborescences + réelles des commandes. +- **Les instances L2 fonctionnent et les exemples de `instance create` s'exécutent tels quels**, + contribution de [@cokerrd](https://github.com/cokerrd), qui signe ici sa première contribution + communautaire : la nouvelle option `--is-public` débloque `--network-type L2`, et les options + requises `--network-plan` et `--storage-category` figurent désormais dans chaque exemple. + +### v0.0.21 : 2 juillet 2026 + +**Les valeurs par défaut du profil s'appliquent maintenant aux commandes de création.** Avec des +valeurs par défaut configurées via `zcp profile add`, les commandes de création et de modification +n'exigent plus `--region`/`--project`. Configurez-les une fois, comme le permettaient déjà les +commandes de liste et de lecture. + +- **Accompagnement au premier lancement** : les installateurs affichent la configuration à + copier-coller pour les valeurs par défaut de production (`--region yul-1 --project default-9`), + reprises dans toute la documentation. +- **Nous confrontons chaque slug d'exemple au catalogue en production** (modèles, plans, plans de + sauvegarde et d'équilibreur de charge), donc les exemples s'exécutent tels quels. + +### v0.0.20 : 30 juin 2026 + +**`zcp instance delete` demande par défaut la libération de l'adresse IP publique attribuée +automatiquement**, pour ne plus laisser d'adresses allouées et facturées après la suppression de la +VM. Passez `--delete-public-ip=false` pour conserver l'adresse. Les adresses acquises manuellement +et les adresses source-NAT ne sont pas touchées. Voir la note de la v0.0.23 : la libération côté +plateforme n'est pas encore active. + ### 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 @@ -254,6 +305,29 @@ arrivé : ## Fournisseur Terraform / OpenTofu -Gérez l'infrastructure ZCP comme du code. Le fournisseur est en développement actif sur -[github.com/zsoftly/terraform-provider-zcp](https://github.com/zsoftly/terraform-provider-zcp) ; les -versions publiées seront listées ici. +Gérez l'infrastructure ZCP comme du code avec le fournisseur officiel, publié sous `zsoftly/zcp` sur +le [registre OpenTofu](https://search.opentofu.org/provider/zsoftly/zcp) et le +[registre Terraform](https://registry.terraform.io/providers/zsoftly/zcp). Le code source se trouve +sur [github.com/zsoftly/terraform-provider-zcp](https://github.com/zsoftly/terraform-provider-zcp). + +### v0.1.0 : 8 juillet 2026 + +**Première version publique, disponible sur les deux registres.** 38 ressources et 12 sources de +données couvrent tout ce que le CLI `zcp` prend en charge : instances, volumes, instantanés et +sauvegardes, VPC et réseaux, règles de pare-feu et de sortie, équilibreurs de charge, mise à +l'échelle automatique, grappes Kubernetes, DNS, stockage objet, VPN et gouvernance de compte. Chaque +ressource prend en charge `terraform import`, et nous signons chaque version publiée. + +```hcl +terraform { + required_providers { + zcp = { + source = "zsoftly/zcp" + version = "~> 0.1" + } + } +} +``` + +Définissez `ZCP_BEARER_TOKEN` dans votre environnement, puis exécutez `terraform init` ou +`tofu init`. Générez le jeton dans la console sous **Compte → Clés API**. diff --git a/src/content/docs/fr/index.mdx b/src/content/docs/fr/index.mdx index 303bef1..fc9fb37 100644 --- a/src/content/docs/fr/index.mdx +++ b/src/content/docs/fr/index.mdx @@ -184,7 +184,7 @@ hero:

Terraform / OpenTofu

-

Gérez l'infrastructure ZCP comme du code. Fournisseur en développement sur github.com/zsoftly/terraform-provider-zcp.

+

Gérez l'infrastructure ZCP comme du code. Offert sous le nom zsoftly/zcp dans les registres Terraform et OpenTofu.

diff --git a/src/content/docs/fr/public-cloud/api/quickstart.mdx b/src/content/docs/fr/public-cloud/api/quickstart.mdx index 347e586..142906f 100644 --- a/src/content/docs/fr/public-cloud/api/quickstart.mdx +++ b/src/content/docs/fr/public-cloud/api/quickstart.mdx @@ -757,13 +757,11 @@ echo $body["message"] . "\n"; ### Infrastructure comme code (IaC) -:::note - -Un fournisseur **Terraform** ZSoftly sera bientôt disponible. Il permettra de gérer les machines -virtuelles, les réseaux et le stockage de manière déclarative. Des exemples de configuration seront -publiés ici. - -::: +Le fournisseur officiel **Terraform / OpenTofu** gère les machines virtuelles, les réseaux, +Kubernetes, le DNS, le stockage et plus encore, de manière déclarative. Vous le trouvez sous +`zsoftly/zcp` dans le [registre Terraform](https://registry.terraform.io/providers/zsoftly/zcp) et +le [registre OpenTofu](https://search.opentofu.org/provider/zsoftly/zcp). Commencez par le +[tutoriel Terraform / OpenTofu](/tutorials/manage-infrastructure-terraform) (en anglais). ### Gestion de la configuration diff --git a/src/content/docs/fr/public-cloud/marketplace/authentik.md b/src/content/docs/fr/public-cloud/marketplace/authentik.md index 68d7483..0decdd6 100644 --- a/src/content/docs/fr/public-cloud/marketplace/authentik.md +++ b/src/content/docs/fr/public-cloud/marketplace/authentik.md @@ -10,14 +10,15 @@ proxy/forward-auth, avec des flux, des politiques et un portail utilisateur en l | Composant | Version | | ---------- | --------------- | -| Authentik | 2025.6.3 | -| PostgreSQL | 16 | -| Redis | Alpine | +| Authentik | 2026.5.4 | +| PostgreSQL | 18 | | Docker | Dernière stable | | Ubuntu | 24.04 LTS | -Authentik exécute ses conteneurs serveur et worker avec PostgreSQL et Redis, sous forme de pile -Docker Compose. +Authentik exécute ses conteneurs serveur et worker avec PostgreSQL, sous forme de pile Docker +Compose. Redis n'est plus requis. Authentik a déplacé la mise en cache, les tâches d'arrière-plan et +la communication WebSocket vers PostgreSQL, si bien que la pile se limite à PostgreSQL, au serveur +et au worker. ## Prérequis diff --git a/src/content/docs/fr/public-cloud/marketplace/docker.md b/src/content/docs/fr/public-cloud/marketplace/docker.md index 4f380f1..001d68d 100644 --- a/src/content/docs/fr/public-cloud/marketplace/docker.md +++ b/src/content/docs/fr/public-cloud/marketplace/docker.md @@ -14,6 +14,15 @@ Compose préinstallés, prêt pour déployer toute charge de travail conteneuris | Plugin Docker Compose | Dernière stable | | Ubuntu | 24.04 LTS | +:::note + +Docker Engine 29 stocke les images dans le magasin d'images containerd lors d'une installation +neuve. Les images que vous téléchargez ou construisez y sont conservées plutôt que dans l'ancien +pilote de stockage, ce qui modifie la sortie de certaines commandes `docker image` et active les +images multiplateformes par défaut. + +::: + ## Bien démarrer ### 1. Connectez-vous à votre VM diff --git a/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md b/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md index 5037060..19734a9 100644 --- a/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md +++ b/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md @@ -10,7 +10,7 @@ l'analyse de données en temps réel. | Composant | Version | | ------------- | --------- | -| Elasticsearch | 8.x | +| Elasticsearch | 9.x | | Ubuntu | 24.04 LTS | ## Variables d'environnement diff --git a/src/content/docs/fr/public-cloud/marketplace/forgejo.md b/src/content/docs/fr/public-cloud/marketplace/forgejo.md index 43cae9b..9a5df3d 100644 --- a/src/content/docs/fr/public-cloud/marketplace/forgejo.md +++ b/src/content/docs/fr/public-cloud/marketplace/forgejo.md @@ -4,16 +4,20 @@ title: Forgejo Forgejo est une forge Git auto-hébergée, maintenue comme un fork communautaire de Gitea. Elle regroupe l'hébergement de dépôts, les pull requests, le suivi des tickets, les paquets et les -actions CI dans un seul binaire Go qui tourne bien sur du matériel modeste. L'interface web -s'exécute sur le port 3000 et Git via SSH sur le port 22. +actions CI dans un seul binaire Go qui tourne bien sur du matériel modeste. Cette image fournit la +ligne LTS de Forgejo, publiée chaque mois d'avril et prise en charge environ 15 mois. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Forgejo préconfigurée arrive bientôt. Pour l'instant, déployez une nouvelle instance -**Ubuntu 24.04 LTS** depuis la marketplace et suivez les étapes ci-dessous pour installer Forgejo -vous-même. +| Composant | Version | +| ---------- | --------------- | +| Forgejo | 15.0.3 (LTS) | +| PostgreSQL | 18 | +| Docker | Dernière stable | +| Ubuntu | 24.04 LTS | -::: +Forgejo s'exécute avec PostgreSQL sous forme de pile Docker Compose. L'interface web est servie sur +le port 3000 et Git via SSH sur le port 2222, ce qui laisse le démon SSH de la VM sur le port 22. ## Prérequis @@ -23,102 +27,120 @@ vous-même. | RAM | 1 Go | 2 Go | | Stockage | 20 Go | 40 Go | -## Déployer l'instance de base +## Variables d'environnement + +Vous pouvez définir ces variables au moment du déploiement depuis la marketplace. Laissez un champ +de mot de passe vide pour qu'une valeur aléatoire sûre soit générée automatiquement. + +| Variable | Description | +| ------------------------ | ------------------------------------------------------------------ | +| `FORGEJO_ADMIN_PASSWORD` | Mot de passe du compte initial `zadmin` | +| `FORGEJO_DB_PASSWORD` | Mot de passe de l'utilisateur PostgreSQL `forgejo` | +| `FORGEJO_DOMAIN` | Nom d'hôte public utilisé dans les URL de clonage, par défaut l'IP | -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **Forgejo** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Dans les - deux cas, vous obtenez une VM Ubuntu 24.04 propre. -2. Choisissez un plan qui répond aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH : +## Démarrage + +### 1. Connectez-vous à votre VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour : +### 2. Attendez la configuration au premier démarrage + +Au premier démarrage, un script génère le mot de passe de la base de données, démarre Forgejo et +PostgreSQL avec Docker Compose, puis crée le compte administrateur. Comptez 1 à 2 minutes. Suivez la +progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u forgejo-first-boot.service -f ``` -## Installer Forgejo +Le message de connexion (MOTD) confirme que Forgejo est prêt et affiche les identifiants +d'administration. + +### 3. Récupérez les identifiants d'administration -Installez d'abord Git et quelques dépendances : +Les identifiants sont aussi écrits dans un fichier réservé à root: ```bash -sudo apt install -y git git-lfs +sudo cat /etc/forgejo/credentials.txt ``` -Téléchargez le dernier binaire Forgejo et installez-le dans `/usr/local/bin`. Consultez la -[page de téléchargement Forgejo](https://forgejo.org/download/) pour la version actuelle et -remplacez `15.0.3` ci-dessous si une version plus récente est disponible : +### 4. Accédez à l'interface web -```bash -wget -O forgejo \ - https://codeberg.org/forgejo/forgejo/releases/download/v15.0.3/forgejo-15.0.3-linux-amd64 -sudo cp forgejo /usr/local/bin/forgejo -sudo chmod 755 /usr/local/bin/forgejo +Ouvrez un navigateur à l'adresse: + +```text +http://:3000 ``` -Créez un utilisateur système `git` dédié sous lequel Forgejo s'exécute : +Connectez-vous en tant que `zadmin` avec le mot de passe généré. L'installateur web est verrouillé, +l'instance est donc configurée dès son démarrage. -```bash -sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \ - --group --disabled-password --home /home/git git -``` +:::note -Créez les répertoires de données et de configuration : +`admin` est un nom d'utilisateur réservé dans Forgejo, le compte administrateur s'appelle donc +`zadmin`. + +::: + +### 5. Clonez via SSH + +Ajoutez votre clé publique dans **Paramètres → Clés SSH / GPG**, puis clonez sur le port 2222: ```bash -sudo mkdir -p /var/lib/forgejo -sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo -sudo mkdir /etc/forgejo -sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo +git clone ssh://git@:2222//.git ``` -Installez le service systemd fourni avec Forgejo, puis activez-le et démarrez-le : +## Gérer Forgejo + +Forgejo et PostgreSQL s'exécutent sous forme de pile Docker Compose dans `/opt/forgejo`. ```bash -sudo wget -O /etc/systemd/system/forgejo.service \ - https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service -sudo systemctl daemon-reload -sudo systemctl enable --now forgejo -sudo systemctl status forgejo +# Vérifier l'état +cd /opt/forgejo && docker compose ps + +# Redémarrer +cd /opt/forgejo && docker compose restart + +# Consulter les journaux +cd /opt/forgejo && docker compose logs -f server ``` -## Configurer Forgejo +Les données des dépôts se trouvent dans `/opt/forgejo/data/forgejo` et la base de données dans +`/opt/forgejo/data/postgres`. La configuration est générée dans +`/opt/forgejo/data/forgejo/gitea/conf/app.ini`, et la plupart des réglages peuvent être remplacés +par des variables d'environnement `FORGEJO__section__KEY` dans le fichier compose. -Forgejo écoute sur le port 3000. Ouvrez `http://:3000` dans un navigateur pour exécuter -l'assistant d'installation initial. Acceptez la base de données SQLite par défaut pour une petite -instance, ou orientez Forgejo vers PostgreSQL/MySQL pour des déploiements plus importants. +## Sécurité -Avant de terminer, définissez l'**Application URL** sur l'adresse de votre serveur et créez le -premier compte administrateur en bas du formulaire. Le premier utilisateur enregistré devient -l'administrateur. L'assistant écrit ses paramètres dans `/etc/forgejo/app.ini`. Renforcez donc les -permissions des fichiers ensuite : +Les ports 3000 (HTTP) et 2222 (Git via SSH) sont ouverts sur l'interface réseau de la VM. UFW est +activé et autorise ces ports ainsi que SSH (port 22). -```bash -sudo chmod 750 /etc/forgejo -sudo chmod 640 /etc/forgejo/app.ini -``` +Chaque VM génère ses propres `SECRET_KEY` et `INTERNAL_TOKEN` au premier démarrage de Forgejo, si +bien qu'aucun déploiement ne partage ses secrets de chiffrement avec un autre. -Pour une configuration de production, placez Forgejo derrière un reverse proxy tel que nginx avec un -certificat TLS, puis servez l'interface en HTTPS au lieu d'exposer directement le port 3000. +:::caution -## Ouvrir le pare-feu +Ne copiez pas `app.ini` d'une VM à l'autre et ne changez pas `SECRET_KEY` après usage. Les secrets +de double authentification et les identifiants stockés deviendraient impossibles à déchiffrer. + +::: -L'instance n'autorise par défaut que le SSH (port 22) en externe. Ouvrez le ou les ports dont -Forgejo a besoin et ajoutez-les aux règles réseau/de sécurité de l'instance dans le portail : +**Pour restreindre l'accès à une adresse IP précise:** ```bash -sudo ufw allow 3000/tcp +sudo ufw delete allow 3000/tcp +sudo ufw allow from to any port 3000 ``` -Git via SSH utilise le port 22 existant. Pour exécuter plutôt le serveur SSH intégré de Forgejo sur -un port distinct, ouvrez également ce port (par exemple `sudo ufw allow 2222/tcp`). +**En production**, pointez un enregistrement DNS vers la VM et placez Forgejo derrière un reverse +proxy TLS (Caddy, nginx ou Traefik), puis définissez `FORGEJO_DOMAIN` pour que les URL de clonage +correspondent. -## Étapes suivantes +## Prochaines étapes - [Documentation Forgejo](https://forgejo.org/docs/latest/) -- [Guide d'installation Forgejo](https://forgejo.org/docs/latest/admin/installation/binary/) +- [Guide d'administration Forgejo](https://forgejo.org/docs/latest/admin/) +- [Forgejo Actions](https://forgejo.org/docs/latest/user/actions/) diff --git a/src/content/docs/fr/public-cloud/marketplace/ghost.md b/src/content/docs/fr/public-cloud/marketplace/ghost.md index dcffd17..5479363 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ghost.md +++ b/src/content/docs/fr/public-cloud/marketplace/ghost.md @@ -10,8 +10,8 @@ rapide, pilotée par des thèmes. | Composant | Version | | --------- | --------- | -| Ghost | 5.97.0 | -| Node.js | 20.x | +| Ghost | 6.51.0 | +| Node.js | 22.x | | MySQL | 8.0 | | nginx | Dernière | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/fr/public-cloud/marketplace/gitlab.md b/src/content/docs/fr/public-cloud/marketplace/gitlab.md index 732c72c..8baad66 100644 --- a/src/content/docs/fr/public-cloud/marketplace/gitlab.md +++ b/src/content/docs/fr/public-cloud/marketplace/gitlab.md @@ -1,5 +1,5 @@ --- -title: GitLab CE 18.11 +title: GitLab CE 19.1 --- GitLab Community Edition est une plateforme DevOps complète fournie sous forme d'application unique. @@ -10,7 +10,7 @@ conteneurs et plus encore. L'ensemble s'exécute sur votre propre infrastructure | Composant | Version | | --------- | --------- | -| GitLab CE | 18.11.x | +| GitLab CE | 19.1.x | | Ubuntu | 24.04 LTS | ## Variables d'environnement diff --git a/src/content/docs/fr/public-cloud/marketplace/headplane.md b/src/content/docs/fr/public-cloud/marketplace/headplane.md index 6bbd16f..0e300dc 100644 --- a/src/content/docs/fr/public-cloud/marketplace/headplane.md +++ b/src/content/docs/fr/public-cloud/marketplace/headplane.md @@ -6,15 +6,7 @@ Headplane est une interface web complète pour [Headscale](https://headscale.net open source et auto-hébergée du serveur de contrôle Tailscale. Elle permet de gérer les nœuds, les clés de pré-authentification, les ACL et le DNS depuis un navigateur plutôt que via la CLI Headscale. Headplane ne remplace pas Headscale. Elle gère un serveur Headscale en cours d'exécution, -vous déployez donc les deux ensemble sur cette instance. - -:::note[Bientôt disponible] - -Une image Headplane préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu -24.04 LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installer Headplane -vous-même. - -::: +c'est pourquoi cette image fournit les deux ensemble. :::tip[Headscale est le serveur, pas le client] @@ -25,6 +17,19 @@ clients Tailscale vers l'URL de ce serveur. ::: +## Logiciels inclus + +| Composant | Version | +| --------- | --------------- | +| Headplane | 0.7.0 | +| Headscale | 0.29.2 | +| Docker | Dernière stable | +| Ubuntu | 24.04 LTS | + +Headplane ne peut pas fonctionner seule, car chacune de ses actions est un appel à l'API Headscale. +Cette image exécute le serveur de contrôle Headscale et l'interface Headplane ensemble, sous forme +de pile Docker Compose. + ## Prérequis | Ressource | Minimum | Recommandé | @@ -33,144 +38,118 @@ clients Tailscale vers l'URL de ce serveur. | RAM | 1 Go | 2 Go | | Stockage | 10 Go | 20 Go | -## Déployer l'instance de base +## Variables d'environnement -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. +Vous pouvez définir ces variables au moment du déploiement depuis la marketplace. Laissez-les vides +pour utiliser l'adresse de la machine virtuelle. - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +| Variable | Description | +| ---------------------- | ---------------------------------------------------------------------------- | +| `HEADSCALE_SERVER_URL` | URL publique par laquelle vos appareils joignent Headscale, un domaine HTTPS | +| `HEADPLANE_BASE_URL` | URL publique depuis laquelle l'interface Headplane est servie | - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +Définissez-les lorsque vous placez la machine virtuelle derrière un nom DNS ou un reverse proxy TLS. +`HEADSCALE_SERVER_URL` doit être une adresse que vos appareils peuvent réellement joindre, sinon +l'enregistrement des nœuds échoue. -2. Choisissez un plan qui répond aux prérequis ci-dessus. +## Démarrage -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Connectez-vous à votre VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendez la configuration au premier démarrage + +Au premier démarrage, un script écrit l'adresse de la VM dans les configurations Headscale et +Headplane, génère un secret de session, démarre les deux services, crée un utilisateur Headscale +nommé `default` et génère une clé d'API. Comptez 1 à 2 minutes. Suivez la progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u headplane-first-boot.service -f ``` -## Installer Headplane +Le message de connexion (MOTD) confirme que Headplane est prête et affiche la clé d'API. + +### 3. Récupérez la clé d'API -Headplane et Headscale sont distribués sous forme d'images Docker et s'exécutent ensemble via Docker -Compose. Installez d'abord Docker: +La clé est aussi écrite dans un fichier réservé à root: ```bash -curl -fsSL https://get.docker.com | sudo sh -sudo usermod -aG docker ubuntu +sudo cat /etc/headplane/credentials.txt ``` -Déconnectez-vous puis reconnectez-vous pour que votre utilisateur prenne en compte le groupe -`docker`, puis créez un répertoire de travail: +### 4. Connectez-vous à Headplane -```bash -mkdir -p ~/headplane && cd ~/headplane -mkdir -p config data +Ouvrez un navigateur à l'adresse: + +```text +http://:3000/admin ``` -Créez `~/headplane/compose.yaml`: - -```yaml -services: - headscale: - image: headscale/headscale:0.26.0 - container_name: headscale - restart: unless-stopped - command: serve - ports: - - '8080:8080' - volumes: - - './config/headscale.yaml:/etc/headscale/config.yaml' - - './data/headscale:/var/lib/headscale' - labels: - me.tale.headplane.target: headscale - - headplane: - image: ghcr.io/tale/headplane:latest - container_name: headplane - restart: unless-stopped - ports: - - '3000:3000' - volumes: - - './config/headplane.yaml:/etc/headplane/config.yaml' - - './config/headscale.yaml:/etc/headscale/config.yaml' - - './data/headplane:/var/lib/headplane' - - '/var/run/docker.sock:/var/run/docker.sock:ro' +Headplane s'authentifie auprès de Headscale avec une clé d'API. Collez la clé de l'étape précédente +dans le formulaire de connexion. La clé expire après 90 jours. Vous pouvez en générer une nouvelle à +tout moment: + +```bash +docker exec headscale headscale apikeys create --expiration 90d ``` -Téléchargez une configuration Headscale dans `config/headscale.yaml` et définissez `server_url` sur -votre URL publique (par exemple `https://hs.example.com`). Créez ensuite `config/headplane.yaml` -avec l'intégration Headscale et un secret de cookie: - -```yaml -server: - host: '0.0.0.0' - port: 3000 - cookie_secret: '<32-character-random-string>' - cookie_secure: false - -headscale: - url: 'http://headscale:8080' - config_path: '/etc/headscale/config.yaml' - config_strict: true - -integration: - docker: - enabled: true - container_name: 'headscale' - socket: 'unix:///var/run/docker.sock' +### 5. Rattachez un appareil + +Pointez n'importe quel client Tailscale vers votre serveur Headscale: + +```bash +tailscale up --login-server http://:8080 ``` -Générez un secret de cookie avec `openssl rand -hex 16` et collez-le dans `cookie_secret`. Démarrez -la pile: +Approuvez le nœud depuis l'interface Headplane, ou listez les nœuds en ligne de commande: ```bash -docker compose up -d +docker exec headscale headscale nodes list ``` -## Configurer Headplane +## Gérer Headplane + +Headscale et Headplane s'exécutent sous forme de pile Docker Compose dans `/opt/headplane`. + +```bash +# Vérifier l'état +cd /opt/headplane && docker compose ps + +# Redémarrer +cd /opt/headplane && docker compose restart + +# Consulter les journaux +cd /opt/headplane && docker compose logs -f headscale +``` -1. Ouvrez Headplane dans votre navigateur à l'adresse `http://:3000`. -2. Headplane s'authentifie auprès de Headscale avec une clé API. Générez-en une à l'intérieur du - conteneur Headscale et utilisez-la (ou collez-la dans l'interface lorsqu'elle vous est demandée): +La configuration de Headscale se trouve dans `/opt/headplane/headscale/config/config.yaml` et sa +base de données sous `/opt/headplane/headscale/data`. Les politiques ACL sont stockées en base de +données, vous pouvez donc les modifier directement depuis l'interface Headplane. - ```bash - docker exec headscale headscale apikeys create - ``` +## Sécurité -3. Pour l'authentification unique (SSO), ajoutez un bloc `oidc` à `config/headplane.yaml` avec les - champs `issuer`, `client_id` et `client_secret` de votre fournisseur, puis redémarrez avec - `docker compose restart headplane`. -4. Placez un reverse proxy (Caddy, Nginx ou Traefik) en frontal pour terminer le TLS et servir à la - fois le `server_url` de Headscale et l'interface Headplane en HTTPS. Définissez - `cookie_secure: true` une fois le HTTPS en place. Le TLS est requis pour les tailnets de - production. +Les ports 3000 (interface Headplane) et 8080 (Headscale) sont ouverts sur l'interface réseau de la +VM. UFW est activé et autorise ces ports ainsi que SSH (port 22). -## Ouvrir le pare-feu +Vos appareils doivent joindre Headscale sur le port 8080, mais l'interface Headplane n'a pas besoin +d'être publique. -Par défaut, l'instance n'autorise que le SSH (port 22) depuis l'extérieur. Ouvrez les ports dont -Headplane et Headscale ont besoin et ajoutez-les aux règles réseau/sécurité de l'instance dans le -portail: +**Pour restreindre l'interface à une adresse IP précise:** ```bash -sudo ufw allow 3000/tcp -sudo ufw allow 8080/tcp +sudo ufw delete allow 3000/tcp +sudo ufw allow from to any port 3000 ``` -Le port 3000 sert l'interface Headplane et le port 8080 est le serveur de contrôle Headscale. Si -vous les placez derrière un reverse proxy, exposez plutôt les ports 80/443 et gardez ces ports -internes. +**En production**, pointez un enregistrement DNS vers la VM et terminez le TLS avec un reverse proxy +(Caddy, nginx ou Traefik). Définissez `HEADSCALE_SERVER_URL` et `HEADPLANE_BASE_URL` sur les URL +HTTPS, et passez `cookie_secure: true` dans `/opt/headplane/headplane/config.yaml`. -## Étapes suivantes +## Prochaines étapes - [Documentation Headplane](https://headplane.net) -- [Guide d'installation de Headplane](https://github.com/tale/headplane) +- [Documentation Headscale](https://headscale.net) +- [Politiques ACL Headscale](https://headscale.net/stable/ref/acls/) diff --git a/src/content/docs/fr/public-cloud/marketplace/index.md b/src/content/docs/fr/public-cloud/marketplace/index.md index 0e73eb5..d63848c 100644 --- a/src/content/docs/fr/public-cloud/marketplace/index.md +++ b/src/content/docs/fr/public-cloud/marketplace/index.md @@ -284,6 +284,16 @@ identifiants sont générés, les services sont configurés et l'image est prêt + +
+ +
+
+

Forgejo

+

Forge Git auto-hébergée légère, dérivée de Gitea.

+
+
+
@@ -451,6 +461,16 @@ identifiants sont générés, les services sont configurés et l'image est prêt
+ +
+ +
+
+

Headplane

+

Interface web pour gérer votre réseau Headscale auto-hébergé.

+
+
+
@@ -677,16 +697,6 @@ identifiants sont générés, les services sont configurés et l'image est prêt
- -
- -
-
-

Headplane À venir

-

Interface web pour gérer votre réseau Headscale auto-hébergé.

-
-
-
@@ -827,16 +837,6 @@ identifiants sont générés, les services sont configurés et l'image est prêt
- -
- -
-
-

Forgejo À venir

-

Forge Git auto-hébergée légère, dérivée de Gitea.

-
-
-
diff --git a/src/content/docs/fr/public-cloud/marketplace/keycloak.md b/src/content/docs/fr/public-cloud/marketplace/keycloak.md index 9604016..bf94859 100644 --- a/src/content/docs/fr/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/fr/public-cloud/marketplace/keycloak.md @@ -10,8 +10,8 @@ fines avec des protocoles standard comme OpenID Connect, OAuth 2.0 et SAML. | Composant | Version | | ---------- | --------------- | -| Keycloak | 26.0.7 | -| PostgreSQL | 16 | +| Keycloak | 26.6.4 | +| PostgreSQL | 18 | | Docker | Dernière stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/fr/public-cloud/marketplace/lamp.md b/src/content/docs/fr/public-cloud/marketplace/lamp.md index 3427cda..c38233c 100644 --- a/src/content/docs/fr/public-cloud/marketplace/lamp.md +++ b/src/content/docs/fr/public-cloud/marketplace/lamp.md @@ -12,7 +12,7 @@ configurés pour fonctionner ensemble, prêts pour le déploiement de votre appl | -------------- | ------------------------------------------------------ | | Apache | 2.4.x | | MariaDB | Dernière stable | -| PHP | 8.3 | +| PHP | 8.4 | | Extensions PHP | cli, mysql, curl, gd, mbstring, xml, zip, bcmath, intl | | Ubuntu | 24.04 LTS | @@ -104,7 +104,7 @@ Répertoires et fichiers importants: | ------------------------------- | ----------------------------- | | `/var/www/html/` | Racine Web par défaut | | `/etc/apache2/sites-available/` | Hôtes virtuels Apache | -| `/etc/php/8.3/apache2/php.ini` | Configuration PHP pour Apache | +| `/etc/php/8.4/apache2/php.ini` | Configuration PHP pour Apache | | `/etc/mysql/mariadb.conf.d/` | Configuration MariaDB | **Pour créer un hôte virtuel** pour un domaine, ajoutez un fichier de configuration dans diff --git a/src/content/docs/fr/public-cloud/marketplace/lemp.md b/src/content/docs/fr/public-cloud/marketplace/lemp.md index 2722706..c29c746 100644 --- a/src/content/docs/fr/public-cloud/marketplace/lemp.md +++ b/src/content/docs/fr/public-cloud/marketplace/lemp.md @@ -13,7 +13,7 @@ Compose pour simplifier la gestion. | -------------- | --------------- | | Nginx | Dernière stable | | MariaDB | Dernière stable | -| PHP-FPM | 8.3 | +| PHP-FPM | 8.4 | | Docker | Dernière stable | | Docker Compose | Dernière stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/fr/public-cloud/marketplace/mariadb.md b/src/content/docs/fr/public-cloud/marketplace/mariadb.md index aa9d1dd..7e6cc2a 100644 --- a/src/content/docs/fr/public-cloud/marketplace/mariadb.md +++ b/src/content/docs/fr/public-cloud/marketplace/mariadb.md @@ -1,5 +1,5 @@ --- -title: MariaDB 11.4 +title: MariaDB 11.8 --- MariaDB est un système libre de gestion de bases de données relationnelles et un remplacement direct @@ -10,7 +10,7 @@ le stockage de données généraliste. | Composant | Version | | -------------- | ------------ | -| MariaDB Server | 11.4.x (LTS) | +| MariaDB Server | 11.8.x (LTS) | | Ubuntu | 24.04 LTS | ## Variables d'environnement diff --git a/src/content/docs/fr/public-cloud/marketplace/mysql.md b/src/content/docs/fr/public-cloud/marketplace/mysql.md index 8835077..ec1104f 100644 --- a/src/content/docs/fr/public-cloud/marketplace/mysql.md +++ b/src/content/docs/fr/public-cloud/marketplace/mysql.md @@ -1,17 +1,20 @@ --- -title: MySQL 8.4 +title: MySQL --- MySQL est l'une des bases de données relationnelles libres les plus déployées au monde. Cette image -fournit MySQL 8.4 LTS, une version à support à long terme destinée aux charges de travail de -production. +fournit une version à support à long terme destinée aux charges de travail de production. + +MySQL est publié sous forme d'une image par ligne LTS maintenue. Choisissez la version voulue au +moment du déploiement. Les lignes 8.4 et 9.7 sont toutes deux des LTS actuelles, et 9.7 est la suite +logique de 8.4. ## Logiciels inclus -| Composant | Version | -| ------------ | ----------- | -| MySQL Server | 8.4.x (LTS) | -| Ubuntu | 24.04 LTS | +| Composant | Version | +| ------------ | ------------------------------------- | +| MySQL Server | 8.4.x ou 9.7.x (LTS, selon le modèle) | +| Ubuntu | 24.04 LTS | ## Variables d'environnement @@ -109,5 +112,6 @@ tunnel SSH. ## Prochaines étapes +- [Documentation MySQL 9.7](https://dev.mysql.com/doc/refman/9.7/en/) - [Documentation MySQL 8.4](https://dev.mysql.com/doc/refman/8.4/en/) -- [Guide de sécurité MySQL](https://dev.mysql.com/doc/refman/8.4/en/security.html) +- [Guide de sécurité MySQL](https://dev.mysql.com/doc/refman/9.7/en/security.html) diff --git a/src/content/docs/fr/public-cloud/marketplace/n8n.md b/src/content/docs/fr/public-cloud/marketplace/n8n.md index 5128a65..58ed8e5 100644 --- a/src/content/docs/fr/public-cloud/marketplace/n8n.md +++ b/src/content/docs/fr/public-cloud/marketplace/n8n.md @@ -11,7 +11,7 @@ flux de travail. | Composant | Version | | -------------- | --------------- | -| n8n | 1.121.0 | +| n8n | 2.29.8 | | Docker | Dernière stable | | Docker Compose | Dernière stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/fr/public-cloud/marketplace/netbird.md b/src/content/docs/fr/public-cloud/marketplace/netbird.md index da8a14c..2521c17 100644 --- a/src/content/docs/fr/public-cloud/marketplace/netbird.md +++ b/src/content/docs/fr/public-cloud/marketplace/netbird.md @@ -11,7 +11,7 @@ client NetBird préinstallé, prêt à joindre votre réseau. | Composant | Version | | --------- | --------- | -| NetBird | 0.71.4 | +| NetBird | 0.74.3 | | Ubuntu | 24.04 LTS | ## Variables d'environnement diff --git a/src/content/docs/fr/public-cloud/marketplace/ollama.md b/src/content/docs/fr/public-cloud/marketplace/ollama.md index 11b7e55..d2381b4 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ollama.md +++ b/src/content/docs/fr/public-cloud/marketplace/ollama.md @@ -11,7 +11,7 @@ privé sans envoyer de données à un fournisseur tiers. | Composant | Version | | --------- | --------- | -| Ollama | 0.9.2 | +| Ollama | 0.31.2 | | Ubuntu | 24.04 LTS | Aucun modèle n'est préchargé. Téléchargez les modèles nécessaires au premier démarrage (voir diff --git a/src/content/docs/fr/public-cloud/marketplace/portainer.md b/src/content/docs/fr/public-cloud/marketplace/portainer.md index 28d2486..fed5072 100644 --- a/src/content/docs/fr/public-cloud/marketplace/portainer.md +++ b/src/content/docs/fr/public-cloud/marketplace/portainer.md @@ -10,7 +10,7 @@ depuis une console web unique. L'interface s'exécute sur le port 9443 en HTTPS. | Composant | Version | | ------------ | --------------- | -| Portainer CE | 2.27.9 | +| Portainer CE | 2.39.4 | | Docker | Dernière stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/fr/public-cloud/marketplace/postgresql.md b/src/content/docs/fr/public-cloud/marketplace/postgresql.md index dcec559..1fd40a6 100644 --- a/src/content/docs/fr/public-cloud/marketplace/postgresql.md +++ b/src/content/docs/fr/public-cloud/marketplace/postgresql.md @@ -1,17 +1,20 @@ --- -title: PostgreSQL 17 +title: PostgreSQL --- PostgreSQL est une puissante base de données relationnelle-objet libre, reconnue pour sa fiabilité, sa conformité aux standards et son extensibilité. Elle prend en charge les types de données avancés, la recherche plein texte, JSON et un vaste éventail d'extensions. +PostgreSQL est publié sous forme d'une image par version majeure prise en charge. Choisissez 16, 17 +ou 18 au moment du déploiement. + ## Logiciels inclus -| Composant | Version | -| ---------- | --------- | -| PostgreSQL | 17.x | -| Ubuntu | 24.04 LTS | +| Composant | Version | +| ---------- | ------------------------------------ | +| PostgreSQL | 16.x, 17.x ou 18.x (selon le modèle) | +| Ubuntu | 24.04 LTS | ## Variables d'environnement @@ -81,7 +84,7 @@ sudo systemctl restart postgresql sudo journalctl -u postgresql -f ``` -Répertoire de configuration: `/etc/postgresql/17/main/` +Répertoire de configuration: `/etc/postgresql//main/` Fichiers importants: @@ -122,5 +125,5 @@ tunnel SSH. ## Prochaines étapes -- [Documentation PostgreSQL 17](https://www.postgresql.org/docs/17/) +- [Documentation PostgreSQL](https://www.postgresql.org/docs/current/) - [Guide de sécurité PostgreSQL](https://www.postgresql.org/docs/current/security.html) diff --git a/src/content/docs/fr/public-cloud/marketplace/prometheus.md b/src/content/docs/fr/public-cloud/marketplace/prometheus.md index abcb6fe..76df7f4 100644 --- a/src/content/docs/fr/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/fr/public-cloud/marketplace/prometheus.md @@ -12,7 +12,7 @@ pour les tableaux de bord. | Composant | Version | | ---------- | --------- | -| Prometheus | 3.4.1 | +| Prometheus | 3.13.0 | | Ubuntu | 24.04 LTS | L'image inclut seulement le serveur Prometheus. Ajoutez les exporters (comme `node_exporter`) comme diff --git a/src/content/docs/fr/public-cloud/marketplace/valkey.md b/src/content/docs/fr/public-cloud/marketplace/valkey.md index aa2503e..287e4ff 100644 --- a/src/content/docs/fr/public-cloud/marketplace/valkey.md +++ b/src/content/docs/fr/public-cloud/marketplace/valkey.md @@ -1,5 +1,5 @@ --- -title: Valkey 9.0 +title: Valkey 9.1 --- Valkey est un magasin de données en mémoire libre et haute performance, compatible avec Redis. Il @@ -10,7 +10,7 @@ réel, la messagerie pub/sub et les files de tâches. | Composant | Version | | --------- | --------- | -| Valkey | 9.0.x | +| Valkey | 9.1.x | | Ubuntu | 24.04 LTS | ## Variables d'environnement diff --git a/src/content/docs/fr/tutorials/index.md b/src/content/docs/fr/tutorials/index.md index a6bf6fd..63010b7 100644 --- a/src/content/docs/fr/tutorials/index.md +++ b/src/content/docs/fr/tutorials/index.md @@ -38,3 +38,17 @@ Vous apprenez à : - [Démarrage rapide Public Cloud](/fr/public-cloud/getting-started/quickstart) : le même premier déploiement depuis le portail web - [Journal des modifications](/fr/changelog) : les nouveautés de la plateforme + +### [Gérer ZCP avec Terraform ou OpenTofu](/tutorials/manage-infrastructure-terraform) + +Provisionnez un réseau et une machine virtuelle de manière déclarative avec le fournisseur officiel +`zsoftly/zcp`, publié dans les registres Terraform et OpenTofu. Vous écrivez un fichier de +configuration, l'appliquez, le modifiez et le détruisez, et chaque ressource reste suivie. Environ +15 minutes. (Tutoriel en anglais.) + +Vous apprenez à : + +- Installer le fournisseur et vous authentifier avec un jeton API +- Décrire un réseau et une VM en HCL puis appliquer le plan +- Redimensionner une VM sans la recréer et importer des ressources créées ailleurs +- Détruire la pile entière sans laisser de ressources orphelines diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 77f222f..ee3e865 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -193,7 +193,7 @@ hero:

Terraform / OpenTofu

-

Manage ZCP infrastructure as code. Provider in development at github.com/zsoftly/terraform-provider-zcp.

+

Manage ZCP infrastructure as code. Ships as zsoftly/zcp on the Terraform and OpenTofu registries.

diff --git a/src/content/docs/public-cloud/api/quickstart.mdx b/src/content/docs/public-cloud/api/quickstart.mdx index e82b7a6..f608399 100644 --- a/src/content/docs/public-cloud/api/quickstart.mdx +++ b/src/content/docs/public-cloud/api/quickstart.mdx @@ -756,12 +756,11 @@ echo $body["message"] . "\n"; ### Infrastructure as Code (IaC) -:::note - -A ZSoftly **Terraform** provider is coming soon. It will manage virtual machines, networks, and -storage declaratively. Example configurations will be published here. - -::: +The official **Terraform / OpenTofu** provider manages virtual machines, networks, Kubernetes, DNS, +storage, and more, declaratively. Find it as `zsoftly/zcp` on the +[Terraform Registry](https://registry.terraform.io/providers/zsoftly/zcp) and the +[OpenTofu registry](https://search.opentofu.org/provider/zsoftly/zcp). Start with the +[Terraform / OpenTofu tutorial](/tutorials/manage-infrastructure-terraform). ### Configuration Management diff --git a/src/content/docs/public-cloud/marketplace/authentik.md b/src/content/docs/public-cloud/marketplace/authentik.md index 837bff3..5383d65 100644 --- a/src/content/docs/public-cloud/marketplace/authentik.md +++ b/src/content/docs/public-cloud/marketplace/authentik.md @@ -10,14 +10,14 @@ flows, policies, and a self-service user portal. | Component | Version | | ---------- | ------------- | -| Authentik | 2025.6.3 | -| PostgreSQL | 16 | -| Redis | Alpine | +| Authentik | 2026.5.4 | +| PostgreSQL | 18 | | Docker | Latest stable | | Ubuntu | 24.04 LTS | -Authentik runs its server and worker containers with PostgreSQL and Redis, as a Docker Compose -stack. +Authentik runs its server and worker containers with PostgreSQL, as a Docker Compose stack. Redis is +no longer required. Authentik moved caching, background tasks, and WebSocket communication to +PostgreSQL, so the stack is PostgreSQL, the server, and the worker. ## Requirements diff --git a/src/content/docs/public-cloud/marketplace/docker.md b/src/content/docs/public-cloud/marketplace/docker.md index 432a2d8..5cb24bc 100644 --- a/src/content/docs/public-cloud/marketplace/docker.md +++ b/src/content/docs/public-cloud/marketplace/docker.md @@ -14,6 +14,14 @@ pre-installed, ready for you to deploy any containerised workload. | Docker Compose plugin | Latest stable | | Ubuntu | 24.04 LTS | +:::note + +Docker Engine 29 stores images in the containerd image store on a fresh install. Images you pull or +build are held there rather than in the classic graph driver, which changes the output of some +`docker image` commands and enables multi-platform images by default. + +::: + ## Getting started ### 1. Connect to your VM diff --git a/src/content/docs/public-cloud/marketplace/elasticsearch.md b/src/content/docs/public-cloud/marketplace/elasticsearch.md index 7fab1f8..ed4b2fe 100644 --- a/src/content/docs/public-cloud/marketplace/elasticsearch.md +++ b/src/content/docs/public-cloud/marketplace/elasticsearch.md @@ -9,7 +9,7 @@ used for full-text search, log aggregation, application monitoring, and real-tim | Component | Version | | ------------- | --------- | -| Elasticsearch | 8.x | +| Elasticsearch | 9.x | | Ubuntu | 24.04 LTS | ## Environment variables diff --git a/src/content/docs/public-cloud/marketplace/forgejo.md b/src/content/docs/public-cloud/marketplace/forgejo.md index cd32bbd..1d6f46e 100644 --- a/src/content/docs/public-cloud/marketplace/forgejo.md +++ b/src/content/docs/public-cloud/marketplace/forgejo.md @@ -4,14 +4,20 @@ title: Forgejo Forgejo is a self-hosted Git forge, maintained as a community-driven fork of Gitea. It bundles repository hosting, pull requests, issue tracking, packages, and CI actions into a single Go binary -that runs well on modest hardware. The web UI runs on port 3000 and Git over SSH on port 22. +that runs well on modest hardware. This image ships the Forgejo LTS line, which is released every +April and supported for about 15 months. -:::note[Coming soon] +## Software included -A pre-built Forgejo image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Forgejo yourself. +| Component | Version | +| ---------- | ------------- | +| Forgejo | 15.0.3 (LTS) | +| PostgreSQL | 18 | +| Docker | Latest stable | +| Ubuntu | 24.04 LTS | -::: +Forgejo runs with PostgreSQL as a Docker Compose stack. The web UI is served on port 3000 and Git +over SSH on port 2222, which leaves the VM's own SSH daemon on port 22. ## Requirements @@ -21,100 +27,116 @@ the marketplace and follow the steps below to install Forgejo yourself. | RAM | 1 GB | 2 GB | | Storage | 20 GB | 40 GB | -## Deploy the base instance +## Environment variables + +These values are optional during marketplace deployment. Leave a password field blank to have a +secure random value generated automatically. + +| Variable | Description | +| ------------------------ | ----------------------------------------------------------- | +| `FORGEJO_ADMIN_PASSWORD` | Password for the initial `zadmin` account | +| `FORGEJO_DB_PASSWORD` | Password for the `forgejo` PostgreSQL user | +| `FORGEJO_DOMAIN` | Public hostname used in clone URLs, defaults to the VM's IP | -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab, search for - **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from **Instances → - Create**. Either way you get a clean Ubuntu 24.04 VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +## Getting started + +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script generates the database password, starts Forgejo and PostgreSQL +with Docker Compose, and creates the administrator account. This takes 1-2 minutes. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u forgejo-first-boot.service -f ``` -## Install Forgejo +The login message (MOTD) confirms when Forgejo is ready and prints the admin credentials. + +### 3. Retrieve the admin credentials -Install Git and a couple of dependencies first: +The credentials are also written to a root-only file: ```bash -sudo apt install -y git git-lfs +sudo cat /etc/forgejo/credentials.txt ``` -Download the latest Forgejo binary and install it to `/usr/local/bin`. Check the -[Forgejo download page](https://forgejo.org/download/) for the current version and replace `15.0.3` -below if a newer release is available: +### 4. Access the web interface -```bash -wget -O forgejo \ - https://codeberg.org/forgejo/forgejo/releases/download/v15.0.3/forgejo-15.0.3-linux-amd64 -sudo cp forgejo /usr/local/bin/forgejo -sudo chmod 755 /usr/local/bin/forgejo +Open a browser and navigate to: + +```text +http://:3000 ``` -Create a dedicated `git` system user that Forgejo runs as: +Sign in as `zadmin` with the generated password. The web installer is locked, so the instance is +configured from the moment it boots. -```bash -sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \ - --group --disabled-password --home /home/git git -``` +:::note -Create the data and configuration directories: +`admin` is a reserved username in Forgejo, so the administrator account is named `zadmin`. + +::: + +### 5. Clone over SSH + +Add your public key under **Settings → SSH / GPG Keys**, then clone using port 2222: ```bash -sudo mkdir -p /var/lib/forgejo -sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo -sudo mkdir /etc/forgejo -sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo +git clone ssh://git@:2222//.git ``` -Install the systemd service shipped with Forgejo, then enable and start it: +## Managing Forgejo + +Forgejo and PostgreSQL run as a Docker Compose stack in `/opt/forgejo`. ```bash -sudo wget -O /etc/systemd/system/forgejo.service \ - https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service -sudo systemctl daemon-reload -sudo systemctl enable --now forgejo -sudo systemctl status forgejo +# Check status +cd /opt/forgejo && docker compose ps + +# Restart +cd /opt/forgejo && docker compose restart + +# View logs +cd /opt/forgejo && docker compose logs -f server ``` -## Configure Forgejo +Repository data lives in `/opt/forgejo/data/forgejo` and the database in +`/opt/forgejo/data/postgres`. Configuration is generated at +`/opt/forgejo/data/forgejo/gitea/conf/app.ini`, and most settings accept overrides through +`FORGEJO__section__KEY` environment variables in the compose file. -Forgejo listens on port 3000. Open `http://:3000` in a browser to run the initial -installation wizard. Accept the default SQLite database for a small instance, or point Forgejo at -PostgreSQL/MySQL for larger deployments. +## Security -Before finishing, set the **Application URL** to your server's address and create the first -administrator account at the bottom of the form. The first registered user becomes the admin. The -wizard writes its settings to `/etc/forgejo/app.ini`, so tighten file permissions afterward: +Ports 3000 (HTTP) and 2222 (Git over SSH) are open on the VM's network interface. UFW is enabled and +allows those ports plus SSH (port 22). -```bash -sudo chmod 750 /etc/forgejo -sudo chmod 640 /etc/forgejo/app.ini -``` +Each VM generates its own `SECRET_KEY` and `INTERNAL_TOKEN` the first time Forgejo starts, so no two +deployments share encryption secrets. -For a production setup, put Forgejo behind a reverse proxy such as nginx with a TLS certificate, -then serve the UI over HTTPS instead of exposing port 3000 directly. +:::caution -## Open the firewall +Do not copy `app.ini` between VMs, and do not rotate `SECRET_KEY` after use. Doing so makes existing +two-factor secrets and stored credentials impossible to decrypt. + +::: -The instance allows only SSH (port 22) externally by default. Open the port(s) Forgejo needs and add -them to the instance's network/security rules in the portal: +**To restrict access to a specific IP:** ```bash -sudo ufw allow 3000/tcp +sudo ufw delete allow 3000/tcp +sudo ufw allow from to any port 3000 ``` -Git over SSH uses the existing port 22. To run Forgejo's built-in SSH server on a separate port -instead, open that port as well (for example `sudo ufw allow 2222/tcp`). +**For production use**, point a DNS record at the VM and front Forgejo with TLS via a reverse proxy +(Caddy, nginx, or Traefik), then set `FORGEJO_DOMAIN` so clone URLs match. ## Next steps - [Forgejo documentation](https://forgejo.org/docs/latest/) -- [Forgejo installation guide](https://forgejo.org/docs/latest/admin/installation/binary/) +- [Forgejo administration guide](https://forgejo.org/docs/latest/admin/) +- [Forgejo Actions](https://forgejo.org/docs/latest/user/actions/) diff --git a/src/content/docs/public-cloud/marketplace/ghost.md b/src/content/docs/public-cloud/marketplace/ghost.md index b962e43..416d005 100644 --- a/src/content/docs/public-cloud/marketplace/ghost.md +++ b/src/content/docs/public-cloud/marketplace/ghost.md @@ -9,8 +9,8 @@ fast editor and built-in email delivery with a clean, theme-driven front end. | Component | Version | | --------- | --------- | -| Ghost | 5.97.0 | -| Node.js | 20.x | +| Ghost | 6.51.0 | +| Node.js | 22.x | | MySQL | 8.0 | | nginx | Latest | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/public-cloud/marketplace/gitlab.md b/src/content/docs/public-cloud/marketplace/gitlab.md index 2a51d03..f51383e 100644 --- a/src/content/docs/public-cloud/marketplace/gitlab.md +++ b/src/content/docs/public-cloud/marketplace/gitlab.md @@ -1,5 +1,5 @@ --- -title: GitLab CE 18.11 +title: GitLab CE 19.1 --- GitLab Community Edition is a complete DevOps platform delivered as a single application. It @@ -10,7 +10,7 @@ Everything runs on your own infrastructure. | Component | Version | | --------- | --------- | -| GitLab CE | 18.11.x | +| GitLab CE | 19.1.x | | Ubuntu | 24.04 LTS | ## Environment variables diff --git a/src/content/docs/public-cloud/marketplace/headplane.md b/src/content/docs/public-cloud/marketplace/headplane.md index 433dce6..e10dd86 100644 --- a/src/content/docs/public-cloud/marketplace/headplane.md +++ b/src/content/docs/public-cloud/marketplace/headplane.md @@ -5,14 +5,7 @@ title: Headplane Headplane is a feature-complete web UI for [Headscale](https://headscale.net), the open-source, self-hosted implementation of the Tailscale control server. It lets you manage nodes, pre-auth keys, ACLs, and DNS from a browser instead of the Headscale CLI. Headplane does not replace Headscale. It -manages a running Headscale server, so you deploy both together on this instance. - -:::note[Coming soon] - -A pre-built Headplane image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance -from the marketplace and follow the steps below to install Headplane yourself. - -::: +manages a running Headscale server, so this image ships both together. :::tip[Headscale is the server, not the client] @@ -22,6 +15,18 @@ admin UI. Run Headscale + Headplane here, then point your Tailscale clients at t ::: +## Software included + +| Component | Version | +| --------- | ------------- | +| Headplane | 0.7.0 | +| Headscale | 0.29.2 | +| Docker | Latest stable | +| Ubuntu | 24.04 LTS | + +Headplane cannot run on its own, because every action it performs is an API call to Headscale. This +image runs the Headscale control server and the Headplane UI together as a Docker Compose stack. + ## Requirements | Resource | Minimum | Recommended | @@ -30,138 +35,115 @@ admin UI. Run Headscale + Headplane here, then point your Tailscale clients at t | RAM | 1 GB | 2 GB | | Storage | 10 GB | 20 GB | -## Deploy the base instance +## Environment variables -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. +These values are optional during marketplace deployment. Leave them blank to use the VM's own +address. - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +| Variable | Description | +| ---------------------- | ----------------------------------------------------------------------- | +| `HEADSCALE_SERVER_URL` | Public URL your devices use to reach Headscale, such as an HTTPS domain | +| `HEADPLANE_BASE_URL` | Public URL the Headplane UI is served from | - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +Set these when you front the VM with a DNS name or a TLS reverse proxy. `HEADSCALE_SERVER_URL` must +be an address reachable by your devices, otherwise nodes fail to register. -2. Choose a plan that meets the requirements above. +## Getting started -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script writes the VM address into the Headscale and Headplane configs, +generates a session secret, starts both services, creates a Headscale user named `default`, and +mints an API key. This takes 1-2 minutes. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u headplane-first-boot.service -f ``` -## Install Headplane +The login message (MOTD) confirms when Headplane is ready and prints the API key. + +### 3. Retrieve the API key -Headplane and Headscale are distributed as Docker images and run together via Docker Compose. -Install Docker first: +The key is also written to a root-only file: ```bash -curl -fsSL https://get.docker.com | sudo sh -sudo usermod -aG docker ubuntu +sudo cat /etc/headplane/credentials.txt ``` -Log out and back in so your user picks up the `docker` group, then create a working directory: +### 4. Sign in to Headplane -```bash -mkdir -p ~/headplane && cd ~/headplane -mkdir -p config data +Open a browser and navigate to: + +```text +http://:3000/admin ``` -Create `~/headplane/compose.yaml`: - -```yaml -services: - headscale: - image: headscale/headscale:0.26.0 - container_name: headscale - restart: unless-stopped - command: serve - ports: - - '8080:8080' - volumes: - - './config/headscale.yaml:/etc/headscale/config.yaml' - - './data/headscale:/var/lib/headscale' - labels: - me.tale.headplane.target: headscale - - headplane: - image: ghcr.io/tale/headplane:latest - container_name: headplane - restart: unless-stopped - ports: - - '3000:3000' - volumes: - - './config/headplane.yaml:/etc/headplane/config.yaml' - - './config/headscale.yaml:/etc/headscale/config.yaml' - - './data/headplane:/var/lib/headplane' - - '/var/run/docker.sock:/var/run/docker.sock:ro' +Headplane authenticates against Headscale with an API key. Paste the key from the previous step into +the login form. The key expires after 90 days. Mint a new one at any time: + +```bash +docker exec headscale headscale apikeys create --expiration 90d ``` -Download a Headscale config to `config/headscale.yaml` and set `server_url` to your public URL (for -example `https://hs.example.com`). Then create `config/headplane.yaml` with the Headscale -integration and a cookie secret: - -```yaml -server: - host: '0.0.0.0' - port: 3000 - cookie_secret: '<32-character-random-string>' - cookie_secure: false - -headscale: - url: 'http://headscale:8080' - config_path: '/etc/headscale/config.yaml' - config_strict: true - -integration: - docker: - enabled: true - container_name: 'headscale' - socket: 'unix:///var/run/docker.sock' +### 5. Join a device + +Point any Tailscale client at your Headscale server: + +```bash +tailscale up --login-server http://:8080 ``` -Generate a cookie secret with `openssl rand -hex 16` and paste it into `cookie_secret`. Start the -stack: +Approve the node from the Headplane UI, or list nodes from the CLI: ```bash -docker compose up -d +docker exec headscale headscale nodes list ``` -## Configure Headplane +## Managing Headplane + +Headscale and Headplane run as a Docker Compose stack in `/opt/headplane`. + +```bash +# Check status +cd /opt/headplane && docker compose ps + +# Restart +cd /opt/headplane && docker compose restart + +# View logs +cd /opt/headplane && docker compose logs -f headscale +``` -1. Open Headplane in your browser at `http://:3000`. -2. Headplane authenticates to Headscale with an API key. Generate one inside the Headscale container - and use it (or paste it into the UI when prompted): +Headscale's configuration is at `/opt/headplane/headscale/config/config.yaml` and its database under +`/opt/headplane/headscale/data`. ACL policies are stored in the database and remain editable from +the Headplane UI. - ```bash - docker exec headscale headscale apikeys create - ``` +## Security -3. For single sign-on, add an `oidc` block to `config/headplane.yaml` with your provider's `issuer`, - `client_id`, and `client_secret`, then restart with `docker compose restart headplane`. -4. Put a reverse proxy (Caddy, Nginx, or Traefik) in front to terminate TLS and serve both the - Headscale `server_url` and the Headplane UI over HTTPS. Set `cookie_secure: true` once HTTPS is - in place. TLS is required for production tailnets. +Ports 3000 (Headplane UI) and 8080 (Headscale) are open on the VM's network interface. UFW is +enabled and allows those ports plus SSH (port 22). -## Open the firewall +Your devices must reach Headscale on port 8080, but the Headplane UI does not need to be public. -The instance allows only SSH (port 22) externally by default. Open the ports Headplane and Headscale -need and add them to the instance's network/security rules in the portal: +**To restrict the UI to a specific IP:** ```bash -sudo ufw allow 3000/tcp -sudo ufw allow 8080/tcp +sudo ufw delete allow 3000/tcp +sudo ufw allow from to any port 3000 ``` -Port 3000 serves the Headplane UI and 8080 is the Headscale control server. If you front them with a -reverse proxy, expose 80/443 instead and keep these internal. +**For production use**, point a DNS record at the VM and terminate TLS with a reverse proxy (Caddy, +nginx, or Traefik). Set `HEADSCALE_SERVER_URL` and `HEADPLANE_BASE_URL` to the HTTPS URLs, and set +`cookie_secure: true` in `/opt/headplane/headplane/config.yaml`. ## Next steps - [Headplane documentation](https://headplane.net) -- [Headplane installation guide](https://github.com/tale/headplane) +- [Headscale documentation](https://headscale.net) +- [Headscale ACL policies](https://headscale.net/stable/ref/acls/) diff --git a/src/content/docs/public-cloud/marketplace/index.md b/src/content/docs/public-cloud/marketplace/index.md index 1c2e254..c8a0391 100644 --- a/src/content/docs/public-cloud/marketplace/index.md +++ b/src/content/docs/public-cloud/marketplace/index.md @@ -283,6 +283,16 @@ automatically. Credentials are generated, services are configured, and the image + +
+ +
+
+

Forgejo

+

Lightweight self-hosted Git forge (Gitea fork).

+
+
+
@@ -450,6 +460,16 @@ automatically. Credentials are generated, services are configured, and the image
+ +
+ +
+
+

Headplane

+

Web UI to manage your self-hosted Headscale network.

+
+
+
@@ -676,16 +696,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Headplane Coming soon

-

Web UI to manage your self-hosted Headscale network.

-
-
-
@@ -826,16 +836,6 @@ automatically. Credentials are generated, services are configured, and the image
- -
- -
-
-

Forgejo Coming soon

-

Lightweight self-hosted Git forge (Gitea fork).

-
-
-
diff --git a/src/content/docs/public-cloud/marketplace/keycloak.md b/src/content/docs/public-cloud/marketplace/keycloak.md index 2cda4e5..dc1d425 100644 --- a/src/content/docs/public-cloud/marketplace/keycloak.md +++ b/src/content/docs/public-cloud/marketplace/keycloak.md @@ -10,8 +10,8 @@ standard protocols such as OpenID Connect, OAuth 2.0, and SAML. | Component | Version | | ---------- | ------------- | -| Keycloak | 26.0.7 | -| PostgreSQL | 16 | +| Keycloak | 26.6.4 | +| PostgreSQL | 18 | | Docker | Latest stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/public-cloud/marketplace/lamp.md b/src/content/docs/public-cloud/marketplace/lamp.md index c858691..d59cf16 100644 --- a/src/content/docs/public-cloud/marketplace/lamp.md +++ b/src/content/docs/public-cloud/marketplace/lamp.md @@ -12,7 +12,7 @@ to work together, ready for you to deploy your application. | -------------- | ------------------------------------------------------ | | Apache | 2.4.x | | MariaDB | Latest stable | -| PHP | 8.3 | +| PHP | 8.4 | | PHP extensions | cli, mysql, curl, gd, mbstring, xml, zip, bcmath, intl | | Ubuntu | 24.04 LTS | @@ -103,7 +103,7 @@ Key directories and files: | ------------------------------- | ---------------------------- | | `/var/www/html/` | Default web root | | `/etc/apache2/sites-available/` | Apache virtual hosts | -| `/etc/php/8.3/apache2/php.ini` | PHP configuration for Apache | +| `/etc/php/8.4/apache2/php.ini` | PHP configuration for Apache | | `/etc/mysql/mariadb.conf.d/` | MariaDB configuration | **To create a virtual host** for a domain, add a configuration file to diff --git a/src/content/docs/public-cloud/marketplace/lemp.md b/src/content/docs/public-cloud/marketplace/lemp.md index fb785bd..a6b15b4 100644 --- a/src/content/docs/public-cloud/marketplace/lemp.md +++ b/src/content/docs/public-cloud/marketplace/lemp.md @@ -13,7 +13,7 @@ management. | -------------- | ------------- | | Nginx | Latest stable | | MariaDB | Latest stable | -| PHP-FPM | 8.3 | +| PHP-FPM | 8.4 | | Docker | Latest stable | | Docker Compose | Latest stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/public-cloud/marketplace/mariadb.md b/src/content/docs/public-cloud/marketplace/mariadb.md index ac8afb8..51694af 100644 --- a/src/content/docs/public-cloud/marketplace/mariadb.md +++ b/src/content/docs/public-cloud/marketplace/mariadb.md @@ -1,5 +1,5 @@ --- -title: MariaDB 11.4 +title: MariaDB 11.8 --- MariaDB is an open-source relational database management system and a drop-in replacement for MySQL. @@ -10,7 +10,7 @@ storage. | Component | Version | | -------------- | ------------ | -| MariaDB Server | 11.4.x (LTS) | +| MariaDB Server | 11.8.x (LTS) | | Ubuntu | 24.04 LTS | ## Environment variables diff --git a/src/content/docs/public-cloud/marketplace/mysql.md b/src/content/docs/public-cloud/marketplace/mysql.md index ad5e3f9..28601b6 100644 --- a/src/content/docs/public-cloud/marketplace/mysql.md +++ b/src/content/docs/public-cloud/marketplace/mysql.md @@ -1,16 +1,19 @@ --- -title: MySQL 8.4 +title: MySQL --- MySQL is one of the most widely deployed open-source relational databases in the world. This image -ships MySQL 8.4 LTS, a long-term support release intended for production workloads. +ships a long-term support release intended for production workloads. + +MySQL is published as one image per maintained LTS line. Pick the version you need when you deploy. +Both 8.4 and 9.7 are current LTS lines, and 9.7 is the forward path off 8.4. ## Software included -| Component | Version | -| ------------ | ----------- | -| MySQL Server | 8.4.x (LTS) | -| Ubuntu | 24.04 LTS | +| Component | Version | +| ------------ | ---------------------------------- | +| MySQL Server | 8.4.x or 9.7.x (LTS, per template) | +| Ubuntu | 24.04 LTS | ## Environment variables @@ -105,5 +108,6 @@ Avoid exposing port 3306 to `0.0.0.0`. Restrict access to known IPs or use an SS ## Next steps +- [MySQL 9.7 documentation](https://dev.mysql.com/doc/refman/9.7/en/) - [MySQL 8.4 documentation](https://dev.mysql.com/doc/refman/8.4/en/) -- [MySQL security guide](https://dev.mysql.com/doc/refman/8.4/en/security.html) +- [MySQL security guide](https://dev.mysql.com/doc/refman/9.7/en/security.html) diff --git a/src/content/docs/public-cloud/marketplace/n8n.md b/src/content/docs/public-cloud/marketplace/n8n.md index 8485105..43f27a5 100644 --- a/src/content/docs/public-cloud/marketplace/n8n.md +++ b/src/content/docs/public-cloud/marketplace/n8n.md @@ -10,7 +10,7 @@ logic inside workflows. | Component | Version | | -------------- | ------------- | -| n8n | 1.121.0 | +| n8n | 2.29.8 | | Docker | Latest stable | | Docker Compose | Latest stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/public-cloud/marketplace/netbird.md b/src/content/docs/public-cloud/marketplace/netbird.md index 492687c..8189c50 100644 --- a/src/content/docs/public-cloud/marketplace/netbird.md +++ b/src/content/docs/public-cloud/marketplace/netbird.md @@ -11,7 +11,7 @@ ready to join your network. | Component | Version | | --------- | --------- | -| NetBird | 0.71.4 | +| NetBird | 0.74.3 | | Ubuntu | 24.04 LTS | ## Environment variables diff --git a/src/content/docs/public-cloud/marketplace/ollama.md b/src/content/docs/public-cloud/marketplace/ollama.md index cfbff30..8e211d6 100644 --- a/src/content/docs/public-cloud/marketplace/ollama.md +++ b/src/content/docs/public-cloud/marketplace/ollama.md @@ -11,7 +11,7 @@ provider. | Component | Version | | --------- | --------- | -| Ollama | 0.9.2 | +| Ollama | 0.31.2 | | Ubuntu | 24.04 LTS | No models are pre-loaded. You pull the models you need on first boot (see diff --git a/src/content/docs/public-cloud/marketplace/portainer.md b/src/content/docs/public-cloud/marketplace/portainer.md index 2c8485b..0a52682 100644 --- a/src/content/docs/public-cloud/marketplace/portainer.md +++ b/src/content/docs/public-cloud/marketplace/portainer.md @@ -10,7 +10,7 @@ The UI runs on port 9443 over HTTPS. | Component | Version | | ------------ | ------------- | -| Portainer CE | 2.27.9 | +| Portainer CE | 2.39.4 | | Docker | Latest stable | | Ubuntu | 24.04 LTS | diff --git a/src/content/docs/public-cloud/marketplace/postgresql.md b/src/content/docs/public-cloud/marketplace/postgresql.md index 425a544..d156c72 100644 --- a/src/content/docs/public-cloud/marketplace/postgresql.md +++ b/src/content/docs/public-cloud/marketplace/postgresql.md @@ -1,17 +1,20 @@ --- -title: PostgreSQL 17 +title: PostgreSQL --- PostgreSQL is an open-source object-relational database known for its reliability, standards compliance, and extensibility. It supports advanced data types, full-text search, JSON, and a wide range of extensions. +PostgreSQL is published as one image per supported major version. Pick 16, 17, or 18 when you +deploy. + ## Software included -| Component | Version | -| ---------- | --------- | -| PostgreSQL | 17.x | -| Ubuntu | 24.04 LTS | +| Component | Version | +| ---------- | ---------------------------------- | +| PostgreSQL | 16.x, 17.x, or 18.x (per template) | +| Ubuntu | 24.04 LTS | ## Environment variables @@ -80,7 +83,7 @@ sudo systemctl restart postgresql sudo journalctl -u postgresql -f ``` -Configuration directory: `/etc/postgresql/17/main/` +Configuration directory: `/etc/postgresql//main/` Key files: @@ -119,5 +122,5 @@ Avoid exposing port 5432 to `0.0.0.0`. Restrict access to known IPs or use an SS ## Next steps -- [PostgreSQL 17 documentation](https://www.postgresql.org/docs/17/) +- [PostgreSQL documentation](https://www.postgresql.org/docs/current/) - [PostgreSQL security guide](https://www.postgresql.org/docs/current/security.html) diff --git a/src/content/docs/public-cloud/marketplace/prometheus.md b/src/content/docs/public-cloud/marketplace/prometheus.md index e6ab0f5..0625222 100644 --- a/src/content/docs/public-cloud/marketplace/prometheus.md +++ b/src/content/docs/public-cloud/marketplace/prometheus.md @@ -11,7 +11,7 @@ well with Grafana for dashboards. | Component | Version | | ---------- | --------- | -| Prometheus | 3.4.1 | +| Prometheus | 3.13.0 | | Ubuntu | 24.04 LTS | The image ships the Prometheus server only. Add exporters (such as `node_exporter`) as scrape diff --git a/src/content/docs/public-cloud/marketplace/valkey.md b/src/content/docs/public-cloud/marketplace/valkey.md index 3efa9b9..999005b 100644 --- a/src/content/docs/public-cloud/marketplace/valkey.md +++ b/src/content/docs/public-cloud/marketplace/valkey.md @@ -1,5 +1,5 @@ --- -title: Valkey 9.0 +title: Valkey 9.1 --- Valkey is an open-source, high-performance in-memory data store and Redis-compatible alternative. It @@ -10,7 +10,7 @@ queues. | Component | Version | | --------- | --------- | -| Valkey | 9.0.x | +| Valkey | 9.1.x | | Ubuntu | 24.04 LTS | ## Environment variables diff --git a/src/content/docs/tutorials/index.md b/src/content/docs/tutorials/index.md index 1139fc6..1af382b 100644 --- a/src/content/docs/tutorials/index.md +++ b/src/content/docs/tutorials/index.md @@ -47,3 +47,16 @@ You learn how to: - [Public Cloud quickstart](/public-cloud/getting-started/quickstart): the same first deployment from the web portal - [Changelog](/changelog): what is new across the platform + +### [Manage ZCP with Terraform or OpenTofu](/tutorials/manage-infrastructure-terraform) + +Provision a network and a virtual machine declaratively with the official `zsoftly/zcp` provider, +published on the Terraform and OpenTofu registries. You write one configuration file, apply it, +change it, and destroy it, with every resource tracked. About 15 minutes. + +You learn how to: + +- Install the provider and authenticate with an API token +- Describe a network and a VM in HCL and apply the plan +- Resize in place and import resources you created elsewhere +- Destroy the whole stack with nothing left behind diff --git a/src/content/docs/tutorials/manage-infrastructure-terraform.mdx b/src/content/docs/tutorials/manage-infrastructure-terraform.mdx new file mode 100644 index 0000000..2013512 --- /dev/null +++ b/src/content/docs/tutorials/manage-infrastructure-terraform.mdx @@ -0,0 +1,261 @@ +--- +title: 'Manage ZCP with Terraform or OpenTofu' +description: + Provision a network and a virtual machine on the ZSoftly Cloud Platform declaratively with the + official zsoftly/zcp provider, from init to destroy. +sidebar: + label: 'Manage ZCP with Terraform / OpenTofu' +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; + +Start with an empty directory and finish with a running virtual machine managed as code, using the +official `zsoftly/zcp` provider. The provider ships on the +[OpenTofu registry](https://search.opentofu.org/provider/zsoftly/zcp) and the +[Terraform Registry](https://registry.terraform.io/providers/zsoftly/zcp), and it behaves the same +with either tool, so pick whichever you already use. + +By the end you have: + +- The provider installed and authenticated with your account +- A network and a virtual machine defined in one configuration file +- The full lifecycle under your control: plan, apply, change, and destroy + +Plan for about 15 minutes. Most of it is the VM booting. + +:::note + +The slugs in this tutorial (region `yul-1`, project `default-9`, template `ubuntu-2204-lts-4`, +plans, and so on) are **examples from one account**. Yours will differ. Each step shows the `zcp` +CLI command to print the right value for your account and region. Always use those, don't copy the +examples verbatim. + +::: + +## Before you start + +- A ZSoftly Public Cloud account. [Sign up](/public-cloud/getting-started/account-signup) first if + you do not have one. +- [Terraform](https://developer.hashicorp.com/terraform/install) 1.0 or later, or + [OpenTofu](https://opentofu.org/docs/intro/install/) 1.6 or later. +- Optional but handy: the [`zcp` CLI](/public-cloud/cli/installation) to look up slugs for your + account. + +## Step 1: Get an API token + +The provider authenticates with the same bearer token as the CLI and the API. In the +[console](https://cloud.zcp.zsoftly.ca), go to **Account → API Keys** and create a token, then +export it: + +```bash +export ZCP_BEARER_TOKEN="" +``` + +The provider reads it from the environment, so the token never appears in your configuration or in +your state file. + +## Step 2: Declare the provider + +Create an empty directory with one file, `main.tf`, and declare the provider. The same source +address works for both tools: + +```hcl +terraform { + required_providers { + zcp = { + source = "zsoftly/zcp" + version = "~> 0.1" + } + } +} + +provider "zcp" { + default_project = "default-9" +} +``` + +`default_project` plays the role of a default region setting in other providers: resources without +an explicit project use it. Every account starts with a project whose slug ends in a number, like +`default-9`. Find yours with `zcp project list`. + +Then initialize the directory: + + + + + +```bash +tofu init +``` + + + + + +```bash +terraform init +``` + + + + + +The tool downloads the provider from its registry and verifies the release signature. + +## Step 3: Describe a network and a VM + +Append the resources to `main.tf`. The region data source feeds the correct `cloud_provider` value +to everything else, so you hardcode nothing twice: + +```hcl +data "zcp_region" "yul" { + slug = "yul-1" +} + +resource "zcp_network" "app" { + name = "app-network" + cloud_provider = data.zcp_region.yul.cloud_provider + region = data.zcp_region.yul.slug + network_plan = "pnet-yul" + billing_cycle = "hourly" +} + +resource "zcp_instance" "web" { + name = "web-01" + template = "ubuntu-2204-lts-4" + plan = "ca2sxs" + billing_cycle = "hourly" + network = zcp_network.app.id + storage_category = "premium-ssd" + cloud_provider = data.zcp_region.yul.cloud_provider + region = data.zcp_region.yul.slug +} + +output "public_ip" { + value = zcp_instance.web.public_ip +} + +output "private_ip" { + value = zcp_instance.web.private_ip +} +``` + +Look up the slugs for your account with the CLI: `zcp region list`, `zcp plan vm`, +`zcp plan network`, `zcp template list`, and `zcp storage-category list`. + +:::tip + +Declare the network as its own resource and attach the instance to it with `network`, as above. The +instance also accepts a `network_plan` shortcut. The platform then creates a network for you, but it +stays invisible to your configuration, so `destroy` leaves it behind. A tracked network comes and +goes with your stack. + +::: + +## Step 4: Plan and apply + + + + + +```bash +tofu plan +tofu apply +``` + + + + + +```bash +terraform plan +terraform apply +``` + + + + + +The plan shows two resources to add. Confirm with `yes` and wait: the apply blocks until the VM +reports **Running**, then prints the outputs. Expect about two to three minutes. + +``` +Apply complete! Resources: 2 added, 0 changed, 0 destroyed. + +Outputs: + +private_ip = "10.0.0.194" +public_ip = "23.229.49.88" +``` + +Run the plan again and it reports **No changes**: your file and the platform agree. + +## Step 5: Change something + +Edit the instance's `plan` to a bigger size (pick one from `zcp plan vm`) and apply again. The +provider resizes the VM in place: it stops the instance, changes the compute offering, and starts it +again, the same way an instance type change works on other clouds. Attributes shown as **forces +replacement** in the plan output (the template, the region) recreate the VM instead: read the plan +before you confirm. + +## Step 6: Import existing resources + +Bring resources you created in the console or with the CLI into the configuration rather than +recreating them. Write the matching resource block, then import by slug: + + + + + +```bash +tofu import zcp_instance.existing +``` + + + + + +```bash +terraform import zcp_instance.existing +``` + + + + + +Every resource in the provider supports import. Each resource's page on the registry documents its +import ID format: some are a plain slug, others are composite, like the SSH key's `/`. + +## Clean up + + + + + +```bash +tofu destroy +``` + + + + + +```bash +terraform destroy +``` + + + + + +Both resources go: the VM first, then the network, together with the network's public address. +Nothing keeps billing after a destroy of a fully tracked stack. + +## Next steps + +- Browse all 38 resources and 12 data sources in the provider documentation on the + [Terraform Registry](https://registry.terraform.io/providers/zsoftly/zcp/latest/docs) or the + [OpenTofu registry](https://search.opentofu.org/provider/zsoftly/zcp). +- Add an [SSH key resource](/public-cloud/compute/settings/ssh-keys) to your configuration to log in + to the instances you create. +- Watch the [changelog](/changelog) for new provider releases. From 68d6c8ecb60a4d92e6e39acc34152da3dcd4c1d7 Mon Sep 17 00:00:00 2001 From: ditahkk Date: Thu, 9 Jul 2026 10:29:02 -0400 Subject: [PATCH 5/6] Update marketplace documentation for various applications - Portainer: Clarified that no deploy-time variables are accepted and provided instructions for creating the first admin account after first boot. - Supabase: Specified that only two variables are required at deployment and clarified where to modify additional settings. - Zabbix: Updated to reflect that the image creates no shared admin password and provided details on the first boot process and password retrieval. - Elasticsearch: Updated version from 8 to 9 and adjusted related instructions accordingly. - Ghost: Removed the `GHOST_ADMIN_EMAIL` variable from the documentation. - Jenkins: Clarified that no deploy-time variables are accepted and provided instructions for retrieving the initial admin password. - LAMP: Updated to indicate that no deploy-time variables are accepted and provided instructions for creating a database after first boot. - NetBird: Added a new variable for self-hosted management server. - OpenBao: Added detailed instructions for deployment, environment variables, and security considerations. --- astro.config.mjs | 12 +- .../public-cloud/marketplace/elasticsearch.md | 8 +- .../docs/fr/public-cloud/marketplace/ghost.md | 1 - .../docs/fr/public-cloud/marketplace/index.md | 40 ++--- .../fr/public-cloud/marketplace/jenkins.md | 13 +- .../docs/fr/public-cloud/marketplace/lamp.md | 18 +- .../fr/public-cloud/marketplace/netbird.md | 7 +- .../fr/public-cloud/marketplace/openbao.md | 160 +++++++++--------- .../fr/public-cloud/marketplace/portainer.md | 14 +- .../fr/public-cloud/marketplace/supabase.md | 3 + .../fr/public-cloud/marketplace/zabbix.md | 141 +++++++-------- .../public-cloud/marketplace/elasticsearch.md | 8 +- .../docs/public-cloud/marketplace/ghost.md | 1 - .../docs/public-cloud/marketplace/index.md | 40 ++--- .../docs/public-cloud/marketplace/jenkins.md | 12 +- .../docs/public-cloud/marketplace/lamp.md | 17 +- .../docs/public-cloud/marketplace/netbird.md | 7 +- .../docs/public-cloud/marketplace/openbao.md | 153 +++++++++-------- .../public-cloud/marketplace/portainer.md | 12 +- .../docs/public-cloud/marketplace/supabase.md | 3 + .../docs/public-cloud/marketplace/zabbix.md | 134 +++++++-------- 21 files changed, 389 insertions(+), 415 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 53762d4..16cd87c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -426,11 +426,11 @@ export default defineConfig({ collapsed: true, items: [ { label: 'MongoDB 8.0', slug: 'public-cloud/marketplace/mongodb' }, - { label: 'MariaDB 11.4', slug: 'public-cloud/marketplace/mariadb' }, - { label: 'MySQL 8.4', slug: 'public-cloud/marketplace/mysql' }, - { label: 'PostgreSQL 17', slug: 'public-cloud/marketplace/postgresql' }, - { label: 'Valkey 9.0', slug: 'public-cloud/marketplace/valkey' }, - { label: 'Elasticsearch 8', slug: 'public-cloud/marketplace/elasticsearch' }, + { label: 'MariaDB 11.8', slug: 'public-cloud/marketplace/mariadb' }, + { label: 'MySQL', slug: 'public-cloud/marketplace/mysql' }, + { label: 'PostgreSQL', slug: 'public-cloud/marketplace/postgresql' }, + { label: 'Valkey 9.1', slug: 'public-cloud/marketplace/valkey' }, + { label: 'Elasticsearch 9', slug: 'public-cloud/marketplace/elasticsearch' }, { label: 'InfluxDB 2', slug: 'public-cloud/marketplace/influxdb' }, ], }, @@ -463,7 +463,7 @@ export default defineConfig({ { label: 'DevOps & Source Control', collapsed: true, - items: [{ label: 'GitLab CE 18.11', slug: 'public-cloud/marketplace/gitlab' }], + items: [{ label: 'GitLab CE 19.1', slug: 'public-cloud/marketplace/gitlab' }], }, { label: 'Networking & VPN', diff --git a/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md b/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md index 19734a9..a3d1c14 100644 --- a/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md +++ b/src/content/docs/fr/public-cloud/marketplace/elasticsearch.md @@ -1,5 +1,5 @@ --- -title: Elasticsearch 8 +title: Elasticsearch 9 --- Elasticsearch est un moteur distribué de recherche et d'analyse RESTful basé sur Apache Lucene. Il @@ -40,7 +40,7 @@ Au premier démarrage, un script de configuration s'exécute automatiquement. Il - réinitialise le mot de passe du superutilisateur `elastic` avec une valeur générée aléatoirement; - enregistre le mot de passe dans `/etc/elasticsearch/elastic-password.txt`. -Elasticsearch 8 prend de 60 à 90 secondes pour démarrer avant que la réinitialisation du mot de +Elasticsearch 9 prend de 60 à 90 secondes pour démarrer avant que la réinitialisation du mot de passe puisse s'exécuter. La durée totale du premier démarrage est d'environ 2 à 3 minutes. Suivez la progression: @@ -60,7 +60,7 @@ Ce fichier contient le mot de passe du superutilisateur `elastic`. Il est lisibl ### 4. Connectez-vous à Elasticsearch -Elasticsearch 8 utilise HTTPS avec un certificat autosigné par défaut. Utilisez `-k` pour ignorer la +Elasticsearch 9 utilise HTTPS avec un certificat autosigné par défaut. Utilisez `-k` pour ignorer la vérification du certificat lors des connexions locales, ou utilisez le certificat CA situé à `/etc/elasticsearch/certs/http_ca.crt`. @@ -133,7 +133,7 @@ curl -k -u elastic:"" https://localhost:9200 :::caution -Elasticsearch 8 active la sécurité par défaut. L'utilisateur `elastic` dispose d'un accès complet au +Elasticsearch 9 active la sécurité par défaut. L'utilisateur `elastic` dispose d'un accès complet au cluster. Créez des utilisateurs à portée de rôle pour chaque application. ::: diff --git a/src/content/docs/fr/public-cloud/marketplace/ghost.md b/src/content/docs/fr/public-cloud/marketplace/ghost.md index 5479363..0e68fa6 100644 --- a/src/content/docs/fr/public-cloud/marketplace/ghost.md +++ b/src/content/docs/fr/public-cloud/marketplace/ghost.md @@ -40,7 +40,6 @@ vide pour générer automatiquement une valeur aléatoire sécurisée. | Variable | Description | | ------------------- | ------------------------------------------------------------ | | `GHOST_URL` | URL complète du site, par exemple `https://blog.example.com` | -| `GHOST_ADMIN_EMAIL` | Adresse courriel du compte administrateur Ghost | | `GHOST_DB_PASSWORD` | Mot de passe de l'utilisateur MySQL `ghost` | Si `GHOST_URL` n'est pas définie, la machine virtuelle sert une page temporaire et laisse Ghost non diff --git a/src/content/docs/fr/public-cloud/marketplace/index.md b/src/content/docs/fr/public-cloud/marketplace/index.md index d63848c..e1b2731 100644 --- a/src/content/docs/fr/public-cloud/marketplace/index.md +++ b/src/content/docs/fr/public-cloud/marketplace/index.md @@ -501,6 +501,16 @@ identifiants sont générés, les services sont configurés et l'image est prêt
+ +
+ +
+
+

OpenBao

+

Gestion open source des secrets et chiffrement des données.

+
+
+ @@ -533,6 +543,16 @@ identifiants sont générés, les services sont configurés et l'image est prêt + +
+ +
+
+

Zabbix

+

Surveillance d'infrastructure et d applications de niveau entreprise.

+
+
+ @@ -707,26 +727,6 @@ identifiants sont générés, les services sont configurés et l'image est prêt - -
- -
-
-

Zabbix À venir

-

Surveillance d'infrastructure et d applications de niveau entreprise.

-
-
- - -
- -
-
-

OpenBao À venir

-

Gestion open source des secrets et chiffrement des données.

-
-
-
diff --git a/src/content/docs/fr/public-cloud/marketplace/jenkins.md b/src/content/docs/fr/public-cloud/marketplace/jenkins.md index a1142ed..1024aac 100644 --- a/src/content/docs/fr/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/fr/public-cloud/marketplace/jenkins.md @@ -25,13 +25,14 @@ s'exécute sur le port 8080. ## Variables d'environnement -Vous pouvez les définir au déploiement de Jenkins depuis la Marketplace. Laissez un champ de mot de -passe vide pour générer automatiquement une valeur aléatoire sécurisée. +Cette image n'accepte aucune variable au déploiement. Elle ne crée aucun compte administrateur +partagé. Jenkins génère un mot de passe de déverrouillage unique sur chaque machine virtuelle. +Lisez-le après le premier démarrage, puis créez votre administrateur dans l'assistant de +configuration: -| Variable | Description | -| ------------------------ | -------------------------------------------------- | -| `JENKINS_ADMIN_USER` | Nom d'utilisateur du compte administrateur initial | -| `JENKINS_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | +```bash +sudo cat /var/lib/jenkins/secrets/initialAdminPassword +``` ## Démarrage diff --git a/src/content/docs/fr/public-cloud/marketplace/lamp.md b/src/content/docs/fr/public-cloud/marketplace/lamp.md index c38233c..8f1214f 100644 --- a/src/content/docs/fr/public-cloud/marketplace/lamp.md +++ b/src/content/docs/fr/public-cloud/marketplace/lamp.md @@ -18,15 +18,15 @@ configurés pour fonctionner ensemble, prêts pour le déploiement de votre appl ## Variables d'environnement -Vous pouvez définir ces valeurs lors du déploiement de LAMP depuis la marketplace. Laissez un champ -vide pour générer automatiquement une valeur aléatoire sécurisée. - -| Variable | Description | -| --------------------- | --------------------------------------------------- | -| `MYSQL_ROOT_PASSWORD` | Mot de passe root de la base de données | -| `MYSQL_DATABASE` | Nom de la base de données applicative à créer | -| `MYSQL_USER` | Nom d'utilisateur de la base de données applicative | -| `MYSQL_PASSWORD` | Mot de passe de l'utilisateur applicatif | +Cette image n'accepte aucune variable au déploiement. MariaDB est installé avec authentification par +socket pour `root`, et aucune base de données applicative n'est créée. Créez-en une après le premier +démarrage: + +```bash +sudo mariadb -e "CREATE DATABASE app;" +sudo mariadb -e "CREATE USER 'app'@'localhost' IDENTIFIED BY '';" +sudo mariadb -e "GRANT ALL PRIVILEGES ON app.* TO 'app'@'localhost';" +``` ## Bien démarrer diff --git a/src/content/docs/fr/public-cloud/marketplace/netbird.md b/src/content/docs/fr/public-cloud/marketplace/netbird.md index 2521c17..967fa58 100644 --- a/src/content/docs/fr/public-cloud/marketplace/netbird.md +++ b/src/content/docs/fr/public-cloud/marketplace/netbird.md @@ -20,9 +20,10 @@ Vous pouvez éventuellement fournir une clé de configuration NetBird lors du d marketplace. Si elle est définie, la VM rejoint automatiquement votre réseau NetBird au premier démarrage ; sinon, connectez-vous manuellement avec `netbird up` après le déploiement. -| Variable | Description | -| -------------- | ---------------------------------------------------------------------- | -| `NB_SETUP_KEY` | Clé de configuration NetBird pour rejoindre votre réseau au démarrage. | +| Variable | Description | +| ------------------- | ----------------------------------------------------------------------- | +| `NB_SETUP_KEY` | Clé de configuration NetBird pour rejoindre votre réseau au démarrage. | +| `NB_MANAGEMENT_URL` | Serveur de gestion NetBird auto-hébergé. Omettez-le pour NetBird cloud. | ## Bien démarrer diff --git a/src/content/docs/fr/public-cloud/marketplace/openbao.md b/src/content/docs/fr/public-cloud/marketplace/openbao.md index 1b26f8c..12e4c83 100644 --- a/src/content/docs/fr/public-cloud/marketplace/openbao.md +++ b/src/content/docs/fr/public-cloud/marketplace/openbao.md @@ -8,10 +8,21 @@ communautaire de HashiCorp Vault maintenu par la Linux Foundation, et il reste c API. La plupart des outils Vault fonctionnent donc sans modification. Vous l'exécutez comme un serveur, l'initialisez une seule fois, puis le descellez pour commencer à servir des secrets. -:::note[Bientôt disponible] +## Logiciels inclus -Une image OpenBao préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu 24.04 -LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installer OpenBao vous-même. +| Composant | Version | +| --------- | --------- | +| OpenBao | 2.5.5 | +| Ubuntu | 24.04 LTS | + +OpenBao s'exécute comme service systemd avec le stockage Raft intégré. Chaque machine virtuelle +génère son propre certificat TLS au premier démarrage, aucune clé privée n'est donc partagée entre +les déploiements. + +:::caution + +Cette image déploie un seul nœud. Un cluster Raft à un nœud n'offre aucun basculement. Pour la haute +disponibilité, provisionnez d'autres instances depuis ce modèle et joignez-les comme pairs Raft. ::: @@ -23,121 +34,112 @@ LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installe | RAM | 1 Go | 2 Go | | Stockage | 10 Go | 20 Go | -## Déployer l'instance de base +## Variables d'environnement -1. Dans le portail ZSoftly Cloud, ouvrez **Apps**, sélectionnez **OpenBao** et cliquez sur - **Deploy**, ou créez une instance **Ubuntu 24.04 LTS** depuis **Instances → Create**. Les deux - vous donnent une VM Ubuntu 24.04 propre. -2. Choisissez un forfait conforme aux prérequis ci-dessus et sélectionnez votre région (YOW-1 ou - YUL-1). -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +Vous pouvez définir ces variables au déploiement d'OpenBao depuis la Marketplace. Laissez-les vides +pour utiliser l'adresse de la machine virtuelle et recevoir les secrets générés en clair. -```bash -ssh ubuntu@ -``` +| Variable | Description | +| ---------------------------- | -------------------------------------------------------------------------------------- | +| `OPENBAO_ADDR` | Adresse inscrite dans le certificat TLS et dans l'adresse du cluster Raft | +| `OPENBAO_UNSEAL_PGP_KEYS` | Clés publiques PGP séparées par des virgules. Chaque part de descellement est chiffrée | +| `OPENBAO_ROOT_TOKEN_PGP_KEY` | Une clé publique PGP. Le jeton racine est renvoyé chiffré avec cette clé | -4. Mettez le système à jour: +Chaque entrée PGP est soit `keybase:`, soit une clé publique ASCII-armored encodée en +base64. Ces variables ne permettent pas de choisir la valeur des secrets. OpenBao génère toujours +lui-même le jeton racine et les clés de descellement. Elles déterminent uniquement à qui ces valeurs +sont chiffrées. -```bash -sudo apt update && sudo apt upgrade -y -``` +:::note -## Installer OpenBao +Lorsque vous fournissez `OPENBAO_UNSEAL_PGP_KEYS`, le nombre de clés devient le nombre de parts et +le seuil de descellement, et la machine virtuelle ne peut pas se desceller elle-même, car elle ne +détient aucune clé privée. Déchiffrez votre part localement et exécutez `bao operator unseal` +vous-même. -OpenBao publie un dépôt APT officiel. Ajoutez sa clé de signature et sa source, puis installez le -paquet `openbao`. +::: -```bash -sudo apt install -y gpg wget -sudo mkdir -p /usr/share/keyrings -wget -qO- https://pkg.openbao.org/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/openbao-keyring.gpg -echo "deb [signed-by=/usr/share/keyrings/openbao-keyring.gpg] https://pkg.openbao.org/deb stable main" | sudo tee /etc/apt/sources.list.d/openbao.list -``` +## Démarrage -Installez OpenBao: +### 1. Connectez-vous à votre VM ```bash -sudo apt update -sudo apt install -y openbao +ssh ubuntu@ ``` -Le paquet installe la CLI `bao`, un utilisateur `openbao` dédié, un service systemd et un fichier de -configuration par défaut dans `/etc/openbao/openbao.hcl`. - -## Configurer OpenBao +### 2. Attendez la configuration au premier démarrage -Modifiez `/etc/openbao/openbao.hcl` pour utiliser le stockage intégré (Raft) et écouter sur toutes -les interfaces. Ce listener de démarrage rapide désactive TLS afin que vous puissiez vérifier -l'installation. Consultez la note TLS ci-dessous avant de l'exposer. +Au premier démarrage, un script génère un certificat TLS pour cette VM, démarre OpenBao, +l'initialise avec 5 parts de clé et un seuil de 3, puis le descelle. Suivez la progression: ```bash -sudo tee /etc/openbao/openbao.hcl >/dev/null <<'EOF' -ui = true - -storage "raft" { - path = "/opt/openbao/data" - node_id = "openbao-1" -} +journalctl -u openbao-first-boot.service -f +``` -listener "tcp" { - address = "0.0.0.0:8200" - tls_disable = true -} +### 3. Récupérez les clés de descellement et le jeton racine -api_addr = "http://127.0.0.1:8200" -cluster_addr = "https://127.0.0.1:8201" -EOF +Ils sont écrits dans un fichier réservé à root: -sudo mkdir -p /opt/openbao/data -sudo chown -R openbao:openbao /opt/openbao +```bash +sudo cat /etc/openbao/credentials.txt ``` -Activez et démarrez le service, puis pointez la CLI vers l'API locale: +:::danger -```bash -sudo systemctl enable --now openbao -export BAO_ADDR='http://127.0.0.1:8200' -``` +Copiez les clés de descellement et le jeton racine en lieu sûr, puis retirez-les de la VM. Quiconque +détient le jeton racine contrôle entièrement vos secrets, et la perte des clés de descellement rend +les données irrécupérables. + +::: -Initialisez OpenBao une seule fois. Cette commande affiche les clés de descellement et le jeton root -initial. Conservez-les en lieu sûr. Ils ne peuvent pas être récupérés: +### 4. Utilisez l'API ```bash -bao operator init +export BAO_ADDR=https://:8200 +export BAO_SKIP_VERIFY=true +bao status ``` -OpenBao démarre **scellé**. Descellez-le en fournissant le seuil de clés de descellement (trois par -défaut), en exécutant la commande une fois par clé: +Le certificat est auto-signé. Faites-lui confiance ou définissez `BAO_SKIP_VERIFY` pendant vos +tests. Remplacez-le par votre propre certificat en production. + +## Gérer OpenBao ```bash -bao operator unseal -``` +# Vérifier l'état +sudo systemctl status openbao -Une fois descellé, connectez-vous avec le jeton root pour commencer à gérer les secrets: +# Redémarrer +sudo systemctl restart openbao -```bash -bao login +# Consulter les journaux +sudo journalctl -u openbao -f ``` -:::caution +La configuration se trouve dans `/etc/openbao`, les données Raft dans `/opt/openbao/data`, et le +certificat propre à la VM dans `/etc/openbao/tls`. -Le listener de démarrage rapide ci-dessus fonctionne sans TLS. Avant d'exposer OpenBao au-delà de -cet hôte, activez TLS dans le bloc `listener "tcp"` (définissez `tls_cert_file` et `tls_key_file`, -supprimez `tls_disable`) ou placez-le derrière un reverse proxy qui termine HTTPS. Ne servez jamais -de secrets de production en HTTP non chiffré. +## Sécurité -::: +Le port 8200 n'est ouvert qu'après que le service a répondu à un contrôle de santé en TLS. UFW est +activé et autorise ce port ainsi que SSH (port 22). + +OpenBao se rescelle à chaque redémarrage du service. Descellez-le de nouveau avec trois de vos +parts: -## Ouvrir le pare-feu +```bash +bao operator unseal +``` -L'instance n'autorise que SSH (port 22) en externe par défaut. Ouvrez le port de l'API qu'OpenBao -sert et ajoutez-le aux règles réseau/sécurité de l'instance dans le portail: +**Pour restreindre l'accès à une adresse IP précise:** ```bash -sudo ufw allow 8200/tcp +sudo ufw delete allow 8200/tcp +sudo ufw allow from to any port 8200 ``` -## Étapes suivantes +## Prochaines étapes - [Documentation OpenBao](https://openbao.org/docs/) -- [Guide d'installation d'OpenBao](https://openbao.org/docs/install/) +- [Concepts de scellement et descellement](https://openbao.org/docs/concepts/seal/) +- [Stockage Raft intégré](https://openbao.org/docs/internals/integrated-storage/) diff --git a/src/content/docs/fr/public-cloud/marketplace/portainer.md b/src/content/docs/fr/public-cloud/marketplace/portainer.md index fed5072..1b7b5a7 100644 --- a/src/content/docs/fr/public-cloud/marketplace/portainer.md +++ b/src/content/docs/fr/public-cloud/marketplace/portainer.md @@ -24,12 +24,16 @@ depuis une console web unique. L'interface s'exécute sur le port 9443 en HTTPS. ## Variables d'environnement -Vous pouvez définir cette variable au déploiement de Portainer depuis la Marketplace. Laissez-la -vide pour créer le compte administrateur dans l'interface au premier accès. +Cette image n'accepte aucune variable au déploiement. Elle ne crée aucun compte administrateur +partagé. Ouvrez l'interface Portainer après le premier démarrage et créez-y le premier +administrateur. -| Variable | Description | -| -------------------------- | --------------------------------------------- | -| `PORTAINER_ADMIN_PASSWORD` | Mot de passe du compte administrateur initial | +Si la session de configuration du premier utilisateur expire avant la fin, redémarrez Portainer et +rechargez l'interface: + +```bash +cd /opt/portainer && docker compose restart portainer +``` ## Démarrage diff --git a/src/content/docs/fr/public-cloud/marketplace/supabase.md b/src/content/docs/fr/public-cloud/marketplace/supabase.md index 7da8d7f..18e45a5 100644 --- a/src/content/docs/fr/public-cloud/marketplace/supabase.md +++ b/src/content/docs/fr/public-cloud/marketplace/supabase.md @@ -39,6 +39,9 @@ passe vide pour générer automatiquement une valeur aléatoire sécurisée. | `POSTGRES_PASSWORD` | Mot de passe de la base PostgreSQL | | `DASHBOARD_PASSWORD` | Mot de passe de connexion au tableau de bord Studio | +Ce sont les seules variables à définir au déploiement. `SUPABASE_PUBLIC_URL` et `API_EXTERNAL_URL`, +mentionnées dans [Sécurité](#sécurité), se modifient dans `/data/supabase/.env` sur la VM en marche. + ## Démarrage ### 1. Se connecter à la machine virtuelle diff --git a/src/content/docs/fr/public-cloud/marketplace/zabbix.md b/src/content/docs/fr/public-cloud/marketplace/zabbix.md index acff933..9697505 100644 --- a/src/content/docs/fr/public-cloud/marketplace/zabbix.md +++ b/src/content/docs/fr/public-cloud/marketplace/zabbix.md @@ -2,18 +2,19 @@ title: Zabbix --- -Zabbix est une plateforme de supervision open source de niveau entreprise pour les réseaux, -serveurs, services cloud et applications. Elle collecte des métriques via des agents, SNMP, IPMI et -des contrôles sans agent, puis fournit alertes, visualisation et tableaux de bord depuis un frontend -web unique. Ce guide installe le serveur Zabbix, le frontend web et l'agent avec une base MySQL sur -Apache. +Zabbix est une plateforme de supervision open source pour les réseaux, serveurs, services cloud et +applications. Elle collecte des métriques via des agents, SNMP, IPMI et des contrôles sans agent, +puis fournit alertes, visualisation et tableaux de bord depuis un frontend web unique. Cette image +fournit le serveur Zabbix, le frontend web et l'agent avec une base MySQL sur Apache. -:::note[Bientôt disponible] +## Logiciels inclus -Une image Zabbix préconfigurée arrive bientôt. Pour l'instant, déployez une instance **Ubuntu 24.04 -LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installer Zabbix vous-même. - -::: +| Composant | Version | +| --------- | --------- | +| Zabbix | 7.0 (LTS) | +| MySQL | 8.0 | +| Apache | 2.4.x | +| Ubuntu | 24.04 LTS | ## Prérequis @@ -23,111 +24,91 @@ LTS** neuve depuis la marketplace et suivez les étapes ci-dessous pour installe | RAM | 2 Go | 4 Go | | Stockage | 30 Go | 60 Go | -## Déployer l'instance de base - -1. Dans le portail ZSoftly Cloud, ouvrez **Apps** et passez à l'onglet **Marketplace**. Il s'ouvre - sur **Featured** par défaut, sélectionnez donc **Marketplace** à côté. Choisissez votre région - (YOW-1 ou YUL-1), recherchez **Ubuntu 24.04 LTS** et cliquez sur **Deploy**. Vous pouvez aussi - créer l'instance depuis **Instances → Create**. Dans les deux cas, vous obtenez une VM Ubuntu - 24.04 propre. - - ![L'onglet Marketplace du portail ZSoftly Cloud, avec le sélecteur de région, la liste des catégories, la barre de recherche et les boutons Deploy](../../../../../assets/marketplace/deploy-marketplace-tab.webp) +## Variables d'environnement - ![Recherche d'une application dans le Marketplace, la barre de recherche filtrant le catalogue jusqu'à une carte Deploy correspondante](../../../../../assets/marketplace/deploy-marketplace-search.webp) +Cette image n'accepte aucune variable au déploiement. Elle ne crée aucun mot de passe administrateur +partagé. Zabbix est livré avec un mot de passe `Admin` par défaut, et le premier démarrage le +remplace par une valeur propre à votre machine virtuelle. -2. Choisissez un plan qui répond aux prérequis ci-dessus. +## Démarrage -3. Lorsque l'instance est **Running**, connectez-vous en SSH: +### 1. Connectez-vous à votre VM ```bash ssh ubuntu@ ``` -4. Mettez le système à jour: +### 2. Attendez la configuration au premier démarrage + +Au premier démarrage, un script initialise MySQL, importe le schéma Zabbix, écrit la configuration +du frontend, démarre les services et remplace le mot de passe `Admin` par défaut. Suivez la +progression: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u zabbix-first-boot.service -f ``` -## Installer Zabbix +Le message de connexion (MOTD) confirme que Zabbix est prêt. -Installez d'abord le serveur de base de données MySQL et Apache: +### 3. Récupérez le mot de passe administrateur -```bash -sudo apt install -y mysql-server apache2 -``` - -Ajoutez le dépôt officiel Zabbix. Zabbix 7.4 est la version stable actuelle. Installez le deb -`zabbix-release` pour Ubuntu 24.04 (`noble`): +Les identifiants sont écrits dans un fichier réservé à root: ```bash -wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb -sudo dpkg -i zabbix-release_latest_7.4+ubuntu24.04_all.deb -sudo apt update +sudo cat /root/.credentials/zabbix.txt ``` -Installez les paquets du serveur, du frontend et de l'agent Zabbix: +### 4. Ouvrez le frontend web -```bash -sudo apt install -y zabbix-server-mysql zabbix-frontend-php \ - zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 +Ouvrez un navigateur à l'adresse: + +```text +http:///zabbix/ ``` -## Configurer Zabbix +Connectez-vous en tant que `Admin` avec le mot de passe de l'étape précédente. -1. Créez la base de données et l'utilisateur Zabbix dans MySQL: +:::caution - ```bash - sudo mysql -uroot -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;" - sudo mysql -uroot -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ChangeThisPassword';" - sudo mysql -uroot -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';" - sudo mysql -uroot -e "SET GLOBAL log_bin_trust_function_creators = 1;" - ``` +Zabbix est livré avec un mot de passe `Admin` par défaut bien connu. Cette image le remplace au +premier démarrage, ne réutilisez donc pas la valeur par défaut documentée par le projet en amont. -2. Importez le schéma et les données initiales (le mot de passe `zabbix` vous sera demandé): +::: - ```bash - sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz \ - | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix - ``` +## Gérer Zabbix -3. Désactivez de nouveau l'option de création de fonctions: +```bash +# Vérifier l'état +sudo systemctl status zabbix-server apache2 mysql - ```bash - sudo mysql -uroot -e "SET GLOBAL log_bin_trust_function_creators = 0;" - ``` +# Redémarrer le serveur +sudo systemctl restart zabbix-server -4. Définissez le mot de passe de la base dans `/etc/zabbix/zabbix_server.conf` en décommentant et en - modifiant la ligne `DBPassword=` pour qu'elle corresponde au mot de passe ci-dessus. -5. Démarrez et activez tous les services: +# Consulter les journaux +sudo tail -f /var/log/zabbix/zabbix_server.log +``` - ```bash - sudo systemctl restart zabbix-server zabbix-agent2 apache2 - sudo systemctl enable zabbix-server zabbix-agent2 apache2 - ``` +La configuration du serveur se trouve dans `/etc/zabbix/zabbix_server.conf` et celle du frontend +dans `/etc/zabbix/web/`. -6. Ouvrez `http:///zabbix` dans votre navigateur et complétez l'assistant de - configuration web (connexion à la base, détails du serveur, fuseau horaire). -7. Connectez-vous avec les identifiants par défaut **Admin** / **zabbix**, puis changez - immédiatement le mot de passe Admin sous **Users → Users**. -8. Pour la production, configurez Apache avec votre domaine et un certificat TLS afin que le - frontend soit servi en HTTPS sur le port 443. +## Sécurité -## Ouvrir le pare-feu +Le port 80 (frontend web) et le port 10051 (serveur Zabbix, utilisé par les agents pour remonter +leurs données) sont ouverts sur l'interface réseau de la VM. UFW est activé et autorise ces ports +ainsi que SSH (port 22). -Par défaut, l'instance n'autorise que le SSH (port 22) depuis l'extérieur. Ouvrez les ports dont -Zabbix a besoin et ajoutez-les aux règles réseau/sécurité de l'instance dans le portail: +**Pour restreindre le frontend web à une adresse IP précise:** ```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -sudo ufw allow 10051/tcp +sudo ufw delete allow 80/tcp +sudo ufw allow from to any port 80 ``` -Les ports 80/443 servent le frontend web. Le port 10051 est le port du serveur Zabbix utilisé par -les agents actifs et les proxies qui remontent leurs données. +**En production**, pointez un enregistrement DNS vers la VM et placez Apache derrière TLS, avec +votre propre certificat ou un reverse proxy qui termine le TLS. -## Étapes suivantes +## Prochaines étapes -- [Documentation Zabbix](https://www.zabbix.com/documentation/current/) -- [Guide d'installation de Zabbix](https://www.zabbix.com/download) +- [Documentation Zabbix](https://www.zabbix.com/documentation/7.0/en/) +- [Configuration de l'agent Zabbix](https://www.zabbix.com/documentation/7.0/en/manual/appendix/config/zabbix_agentd) +- [Référence de l'API Zabbix](https://www.zabbix.com/documentation/7.0/en/manual/api) diff --git a/src/content/docs/public-cloud/marketplace/elasticsearch.md b/src/content/docs/public-cloud/marketplace/elasticsearch.md index ed4b2fe..477d95c 100644 --- a/src/content/docs/public-cloud/marketplace/elasticsearch.md +++ b/src/content/docs/public-cloud/marketplace/elasticsearch.md @@ -1,5 +1,5 @@ --- -title: Elasticsearch 8 +title: Elasticsearch 9 --- Elasticsearch is a distributed, RESTful search and analytics engine built on Apache Lucene. It is @@ -39,7 +39,7 @@ On the first boot, a setup script runs automatically. It: - Resets the `elastic` superuser password to a randomly generated value - Saves the password to `/etc/elasticsearch/elastic-password.txt` -Elasticsearch 8 takes 60–90 seconds to start before the password reset can run. Total first-boot +Elasticsearch 9 takes 60–90 seconds to start before the password reset can run. Total first-boot time is approximately 2–3 minutes. Track progress: @@ -58,7 +58,7 @@ This file contains the `elastic` superuser password. It is only readable by root ### 4. Connect to Elasticsearch -Elasticsearch 8 uses HTTPS with a self-signed certificate by default. Use `-k` to skip certificate +Elasticsearch 9 uses HTTPS with a self-signed certificate by default. Use `-k` to skip certificate verification for local connections, or use the CA certificate at `/etc/elasticsearch/certs/http_ca.crt`. @@ -130,7 +130,7 @@ curl -k -u elastic:"" https://localhost:9200 :::caution -Elasticsearch 8 enables security by default. The `elastic` user has full cluster access. Create +Elasticsearch 9 enables security by default. The `elastic` user has full cluster access. Create role-scoped users for individual applications. ::: diff --git a/src/content/docs/public-cloud/marketplace/ghost.md b/src/content/docs/public-cloud/marketplace/ghost.md index 416d005..cf1b91f 100644 --- a/src/content/docs/public-cloud/marketplace/ghost.md +++ b/src/content/docs/public-cloud/marketplace/ghost.md @@ -38,7 +38,6 @@ blank to have a secure random value generated automatically. | Variable | Description | | ------------------- | ----------------------------------------------------- | | `GHOST_URL` | Full site URL, for example `https://blog.example.com` | -| `GHOST_ADMIN_EMAIL` | Email for the Ghost admin account | | `GHOST_DB_PASSWORD` | Password for the MySQL `ghost` database user | If `GHOST_URL` is not set, the VM serves a placeholder page and leaves Ghost unconfigured until you diff --git a/src/content/docs/public-cloud/marketplace/index.md b/src/content/docs/public-cloud/marketplace/index.md index c8a0391..4183ec0 100644 --- a/src/content/docs/public-cloud/marketplace/index.md +++ b/src/content/docs/public-cloud/marketplace/index.md @@ -500,6 +500,16 @@ automatically. Credentials are generated, services are configured, and the image
+ +
+ +
+
+

OpenBao

+

Open-source secrets management and data encryption.

+
+
+ @@ -532,6 +542,16 @@ automatically. Credentials are generated, services are configured, and the image + +
+ +
+
+

Zabbix

+

Enterprise-grade infrastructure and application monitoring.

+
+
+ @@ -706,26 +726,6 @@ automatically. Credentials are generated, services are configured, and the image - -
- -
-
-

Zabbix Coming soon

-

Enterprise-grade infrastructure and application monitoring.

-
-
- - -
- -
-
-

OpenBao Coming soon

-

Open-source secrets management and data encryption.

-
-
-
diff --git a/src/content/docs/public-cloud/marketplace/jenkins.md b/src/content/docs/public-cloud/marketplace/jenkins.md index bb515a8..42b0a93 100644 --- a/src/content/docs/public-cloud/marketplace/jenkins.md +++ b/src/content/docs/public-cloud/marketplace/jenkins.md @@ -24,13 +24,13 @@ continuous delivery for almost any toolchain. The web UI runs on port 8080. ## Environment variables -You can optionally set these when deploying Jenkins from the marketplace. Leave a password field -blank to have a secure random value generated automatically. +This image takes no deploy-time variables. It creates no shared administrator account. Jenkins +generates a unique unlock password on every VM. Read it after first boot, then create your own +administrator in the setup wizard: -| Variable | Description | -| ------------------------ | -------------------------------------- | -| `JENKINS_ADMIN_USER` | Username for the initial admin account | -| `JENKINS_ADMIN_PASSWORD` | Password for the initial admin account | +```bash +sudo cat /var/lib/jenkins/secrets/initialAdminPassword +``` ## Getting started diff --git a/src/content/docs/public-cloud/marketplace/lamp.md b/src/content/docs/public-cloud/marketplace/lamp.md index d59cf16..527bc61 100644 --- a/src/content/docs/public-cloud/marketplace/lamp.md +++ b/src/content/docs/public-cloud/marketplace/lamp.md @@ -18,15 +18,14 @@ to work together, ready for you to deploy your application. ## Environment variables -You can optionally set these when deploying LAMP from the marketplace. Leave any field blank to have -a secure random value generated automatically. - -| Variable | Description | -| --------------------- | ------------------------------------------ | -| `MYSQL_ROOT_PASSWORD` | Database root password | -| `MYSQL_DATABASE` | Name of the application database to create | -| `MYSQL_USER` | Application database username | -| `MYSQL_PASSWORD` | Application database user password | +This image takes no deploy-time variables. MariaDB is installed with socket authentication for +`root`, and no application database is created. Create one after first boot: + +```bash +sudo mariadb -e "CREATE DATABASE app;" +sudo mariadb -e "CREATE USER 'app'@'localhost' IDENTIFIED BY '';" +sudo mariadb -e "GRANT ALL PRIVILEGES ON app.* TO 'app'@'localhost';" +``` ## Getting started diff --git a/src/content/docs/public-cloud/marketplace/netbird.md b/src/content/docs/public-cloud/marketplace/netbird.md index 8189c50..0079f46 100644 --- a/src/content/docs/public-cloud/marketplace/netbird.md +++ b/src/content/docs/public-cloud/marketplace/netbird.md @@ -20,9 +20,10 @@ You can optionally provide a NetBird setup key when deploying from the marketpla joins your NetBird network automatically at first boot; if left blank, connect manually with `netbird up` after deploy. -| Variable | Description | -| -------------- | ---------------------------------------------------- | -| `NB_SETUP_KEY` | NetBird setup key used to join your network on boot. | +| Variable | Description | +| ------------------- | -------------------------------------------------------------- | +| `NB_SETUP_KEY` | NetBird setup key used to join your network on boot. | +| `NB_MANAGEMENT_URL` | Self-hosted NetBird management server. Omit for NetBird cloud. | ## Getting started diff --git a/src/content/docs/public-cloud/marketplace/openbao.md b/src/content/docs/public-cloud/marketplace/openbao.md index 7fe91ec..ab30df9 100644 --- a/src/content/docs/public-cloud/marketplace/openbao.md +++ b/src/content/docs/public-cloud/marketplace/openbao.md @@ -7,10 +7,20 @@ tokens, passwords, certificates, and encryption keys. It is the Linux Foundation HashiCorp Vault and remains API-compatible with it, so most Vault tooling works unchanged. You run it as a server, initialise it once, and unseal it to start serving secrets. -:::note[Coming soon] +## Software included -A pre-built OpenBao image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install OpenBao yourself. +| Component | Version | +| --------- | --------- | +| OpenBao | 2.5.5 | +| Ubuntu | 24.04 LTS | + +OpenBao runs as a systemd service with integrated Raft storage. Each VM generates its own TLS +certificate on first boot, so no private key is shared between deployments. + +:::caution + +This image deploys a single node. A one-node Raft cluster has no failover. For high availability, +provision more instances from this template and join them as Raft peers. ::: @@ -22,120 +32,109 @@ the marketplace and follow the steps below to install OpenBao yourself. | RAM | 1 GB | 2 GB | | Storage | 10 GB | 20 GB | -## Deploy the base instance +## Environment variables -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab, search for - **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from **Instances → - Create**. Either way you get a clean Ubuntu 24.04 VM. -2. Choose a plan that meets the requirements above and pick your region (YOW-1 or YUL-1). -3. When the instance is **Running**, connect over SSH: +You can optionally set these when deploying OpenBao from the marketplace. Leave them blank to use +the VM's own address and receive the generated secrets in plain text. -```bash -ssh ubuntu@ -``` +| Variable | Description | +| ---------------------------- | -------------------------------------------------------------------------------------- | +| `OPENBAO_ADDR` | Address embedded in the TLS certificate and the Raft cluster address | +| `OPENBAO_UNSEAL_PGP_KEYS` | Comma-separated PGP public keys. Each unseal key share comes back encrypted to one key | +| `OPENBAO_ROOT_TOKEN_PGP_KEY` | One PGP public key. The root token comes back encrypted to it | -4. Update the system: +Each PGP entry is either `keybase:` or a base64-encoded ASCII-armored public key. These +variables do not let you choose the secret values. OpenBao always generates the root token and the +unseal keys. They control only who those values are encrypted to. -```bash -sudo apt update && sudo apt upgrade -y -``` +:::note -## Install OpenBao +When you supply `OPENBAO_UNSEAL_PGP_KEYS`, the number of keys becomes the unseal key-share count and +threshold, and the VM cannot unseal itself, because it never holds a private key. Decrypt your share +locally and run `bao operator unseal` yourself. -OpenBao publishes an official APT repository. Add its signing key and source, then install the -`openbao` package. +::: -```bash -sudo apt install -y gpg wget -sudo mkdir -p /usr/share/keyrings -wget -qO- https://pkg.openbao.org/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/openbao-keyring.gpg -echo "deb [signed-by=/usr/share/keyrings/openbao-keyring.gpg] https://pkg.openbao.org/deb stable main" | sudo tee /etc/apt/sources.list.d/openbao.list -``` +## Getting started -Install OpenBao: +### 1. Connect to your VM ```bash -sudo apt update -sudo apt install -y openbao +ssh ubuntu@ ``` -The package installs the `bao` CLI, a dedicated `openbao` user, a systemd service, and a default -configuration file at `/etc/openbao/openbao.hcl`. - -## Configure OpenBao +### 2. Wait for first-boot configuration -Edit `/etc/openbao/openbao.hcl` to use integrated (Raft) storage and listen on all interfaces. This -quick-start listener disables TLS so you can verify the install. See the TLS note below before -exposing it. +On the first boot, a setup script generates a TLS certificate for this VM, starts OpenBao, +initialises it with 5 key shares and a threshold of 3, and unseals it. Track progress: ```bash -sudo tee /etc/openbao/openbao.hcl >/dev/null <<'EOF' -ui = true - -storage "raft" { - path = "/opt/openbao/data" - node_id = "openbao-1" -} +journalctl -u openbao-first-boot.service -f +``` -listener "tcp" { - address = "0.0.0.0:8200" - tls_disable = true -} +### 3. Retrieve the unseal keys and root token -api_addr = "http://127.0.0.1:8200" -cluster_addr = "https://127.0.0.1:8201" -EOF +They are written to a root-only file: -sudo mkdir -p /opt/openbao/data -sudo chown -R openbao:openbao /opt/openbao +```bash +sudo cat /etc/openbao/credentials.txt ``` -Enable and start the service, then point the CLI at the local API: +:::danger -```bash -sudo systemctl enable --now openbao -export BAO_ADDR='http://127.0.0.1:8200' -``` +Copy the unseal keys and the root token somewhere safe, then remove them from the VM. Anyone holding +the root token has full control of your secrets, and losing the unseal keys makes the data +unrecoverable. + +::: -Initialise OpenBao once. This prints the unseal keys and the initial root token. Store them -securely. They cannot be recovered: +### 4. Use the API ```bash -bao operator init +export BAO_ADDR=https://:8200 +export BAO_SKIP_VERIFY=true +bao status ``` -OpenBao starts **sealed**. Unseal it by supplying the threshold of unseal keys (three by default), -running the command once per key: +The certificate is self-signed, so either trust it or set `BAO_SKIP_VERIFY` while testing. Replace +it with your own certificate for production. + +## Managing OpenBao ```bash -bao operator unseal -``` +# Check status +sudo systemctl status openbao -Once unsealed, log in with the root token to start managing secrets: +# Restart +sudo systemctl restart openbao -```bash -bao login +# View logs +sudo journalctl -u openbao -f ``` -:::caution +Configuration lives in `/etc/openbao`, the Raft data in `/opt/openbao/data`, and the per-VM +certificate in `/etc/openbao/tls`. -The quick-start listener above runs without TLS. Before exposing OpenBao beyond this host, enable -TLS in the `listener "tcp"` block (set `tls_cert_file` and `tls_key_file`, drop `tls_disable`) or -place it behind a reverse proxy that terminates HTTPS. Never serve production secrets over plain -HTTP. +## Security -::: +Port 8200 is opened only after the service answers a health check over TLS. UFW is enabled and +allows that port plus SSH (port 22). + +OpenBao seals itself whenever the service restarts. Unseal it again with three of your key shares: -## Open the firewall +```bash +bao operator unseal +``` -The instance allows only SSH (port 22) externally by default. Open the API port OpenBao serves and -add it to the instance's network/security rules in the portal: +**To restrict access to a specific IP:** ```bash -sudo ufw allow 8200/tcp +sudo ufw delete allow 8200/tcp +sudo ufw allow from to any port 8200 ``` ## Next steps - [OpenBao documentation](https://openbao.org/docs/) -- [OpenBao installation guide](https://openbao.org/docs/install/) +- [Seal and unseal concepts](https://openbao.org/docs/concepts/seal/) +- [Integrated Raft storage](https://openbao.org/docs/internals/integrated-storage/) diff --git a/src/content/docs/public-cloud/marketplace/portainer.md b/src/content/docs/public-cloud/marketplace/portainer.md index 0a52682..f8fe691 100644 --- a/src/content/docs/public-cloud/marketplace/portainer.md +++ b/src/content/docs/public-cloud/marketplace/portainer.md @@ -24,12 +24,14 @@ The UI runs on port 9443 over HTTPS. ## Environment variables -You can optionally set this when deploying Portainer from the marketplace. Leave it blank to create -the admin account in the UI on first visit. +This image takes no deploy-time variables. It creates no shared administrator account. Open the +Portainer UI after first boot and create the first administrator there. -| Variable | Description | -| -------------------------- | -------------------------------------- | -| `PORTAINER_ADMIN_PASSWORD` | Password for the initial admin account | +If the first-user setup session expires before you finish, restart Portainer and reload the UI: + +```bash +cd /opt/portainer && docker compose restart portainer +``` ## Getting started diff --git a/src/content/docs/public-cloud/marketplace/supabase.md b/src/content/docs/public-cloud/marketplace/supabase.md index 8bfdd83..8492bed 100644 --- a/src/content/docs/public-cloud/marketplace/supabase.md +++ b/src/content/docs/public-cloud/marketplace/supabase.md @@ -39,6 +39,9 @@ blank to have a secure random value generated automatically. | `POSTGRES_PASSWORD` | Password for the PostgreSQL database | | `DASHBOARD_PASSWORD` | Password for the Studio dashboard login | +These are the only variables you set at deploy time. `SUPABASE_PUBLIC_URL` and `API_EXTERNAL_URL`, +referenced under [Security](#security), are edited in `/data/supabase/.env` on the running VM. + ## Getting started ### 1. Connect to your VM diff --git a/src/content/docs/public-cloud/marketplace/zabbix.md b/src/content/docs/public-cloud/marketplace/zabbix.md index ec42997..c285b8a 100644 --- a/src/content/docs/public-cloud/marketplace/zabbix.md +++ b/src/content/docs/public-cloud/marketplace/zabbix.md @@ -2,17 +2,19 @@ title: Zabbix --- -Zabbix is an enterprise-grade, open-source monitoring platform for networks, servers, cloud -services, and applications. It collects metrics through agents, SNMP, IPMI, and agentless checks, -then provides alerting, visualization, and dashboards from a single web frontend. This guide -installs the Zabbix server, web frontend, and agent with a MySQL backend on Apache. +Zabbix is an open-source monitoring platform for networks, servers, cloud services, and +applications. It collects metrics through agents, SNMP, IPMI, and agentless checks, then provides +alerting, visualization, and dashboards from a single web frontend. This image ships the Zabbix +server, web frontend, and agent with a MySQL backend on Apache. -:::note[Coming soon] +## Software included -A pre-built Zabbix image is on its way. For now, deploy a fresh **Ubuntu 24.04 LTS** instance from -the marketplace and follow the steps below to install Zabbix yourself. - -::: +| Component | Version | +| --------- | --------- | +| Zabbix | 7.0 (LTS) | +| MySQL | 8.0 | +| Apache | 2.4.x | +| Ubuntu | 24.04 LTS | ## Requirements @@ -22,110 +24,88 @@ the marketplace and follow the steps below to install Zabbix yourself. | RAM | 2 GB | 4 GB | | Storage | 30 GB | 60 GB | -## Deploy the base instance - -1. In the ZSoftly Cloud portal, open **Apps** and switch to the **Marketplace** tab. It opens on - **Featured** by default, so select **Marketplace** next to it. Pick your region (YOW-1 or YUL-1), - search for **Ubuntu 24.04 LTS**, and click **Deploy**. You can also create the instance from - **Instances → Create**. Either way you get a clean Ubuntu 24.04 VM. - - ![The Marketplace tab in the ZSoftly Cloud portal, showing the region selector, category list, search box, and Deploy buttons](../../../../assets/marketplace/deploy-marketplace-tab.webp) +## Environment variables - ![Searching the Marketplace for an app, with the search box filtering the catalog down to a matching Deploy card](../../../../assets/marketplace/deploy-marketplace-search.webp) +This image takes no deploy-time variables. It creates no shared administrator password. Zabbix ships +with a default `Admin` password, and first boot replaces it with a value unique to your VM. -2. Choose a plan that meets the requirements above. +## Getting started -3. When the instance is **Running**, connect over SSH: +### 1. Connect to your VM ```bash ssh ubuntu@ ``` -4. Update the system: +### 2. Wait for first-boot configuration + +On the first boot, a setup script initialises MySQL, imports the Zabbix schema, writes the frontend +configuration, starts the services, and rotates the default `Admin` password. Track progress: ```bash -sudo apt update && sudo apt upgrade -y +journalctl -u zabbix-first-boot.service -f ``` -## Install Zabbix +The login message (MOTD) confirms when Zabbix is ready. -Install the MySQL database server and Apache first: +### 3. Retrieve the admin password -```bash -sudo apt install -y mysql-server apache2 -``` - -Add the official Zabbix repository. Zabbix 7.4 is the current stable release. Install the Ubuntu -24.04 (`noble`) `zabbix-release` deb: +The credentials are written to a root-only file: ```bash -wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb -sudo dpkg -i zabbix-release_latest_7.4+ubuntu24.04_all.deb -sudo apt update +sudo cat /root/.credentials/zabbix.txt ``` -Install the Zabbix server, frontend, and agent packages: +### 4. Open the web frontend -```bash -sudo apt install -y zabbix-server-mysql zabbix-frontend-php \ - zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 +Open a browser and navigate to: + +```text +http:///zabbix/ ``` -## Configure Zabbix +Sign in as `Admin` with the password from the previous step. -1. Create the Zabbix database and user in MySQL: +:::caution - ```bash - sudo mysql -uroot -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;" - sudo mysql -uroot -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ChangeThisPassword';" - sudo mysql -uroot -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';" - sudo mysql -uroot -e "SET GLOBAL log_bin_trust_function_creators = 1;" - ``` +Zabbix ships with a well-known default `Admin` password. This image replaces it on first boot, so do +not reuse the documented default from the upstream project. -2. Import the initial schema and data (you will be prompted for the `zabbix` password): +::: - ```bash - sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz \ - | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix - ``` +## Managing Zabbix -3. Disable the function-creator flag again: +```bash +# Check status +sudo systemctl status zabbix-server apache2 mysql - ```bash - sudo mysql -uroot -e "SET GLOBAL log_bin_trust_function_creators = 0;" - ``` +# Restart the server +sudo systemctl restart zabbix-server -4. Set the database password in `/etc/zabbix/zabbix_server.conf` by uncommenting and editing the - `DBPassword=` line to match the password above. -5. Start and enable all services: +# View logs +sudo tail -f /var/log/zabbix/zabbix_server.log +``` - ```bash - sudo systemctl restart zabbix-server zabbix-agent2 apache2 - sudo systemctl enable zabbix-server zabbix-agent2 apache2 - ``` +Server configuration lives in `/etc/zabbix/zabbix_server.conf` and the frontend configuration in +`/etc/zabbix/web/`. -6. Open `http:///zabbix` in your browser and complete the web setup wizard (database - connection, server details, timezone). -7. Log in with the default credentials **Admin** / **zabbix**, then immediately change the Admin - password under **Users → Users**. -8. For production, configure Apache with your domain and a TLS certificate so the frontend is served - over HTTPS on port 443. +## Security -## Open the firewall +Port 80 (web frontend) and port 10051 (Zabbix server, used by agents to report in) are open on the +VM's network interface. UFW is enabled and allows those ports plus SSH (port 22). -The instance allows only SSH (port 22) externally by default. Open the ports Zabbix needs and add -them to the instance's network/security rules in the portal: +**To restrict the web frontend to a specific IP:** ```bash -sudo ufw allow 80/tcp -sudo ufw allow 443/tcp -sudo ufw allow 10051/tcp +sudo ufw delete allow 80/tcp +sudo ufw allow from to any port 80 ``` -Port 80/443 serves the web frontend. Port 10051 is the Zabbix server port used by active agents and -proxies reporting in. +**For production use**, point a DNS record at the VM and front Apache with TLS, either with your own +certificate or a reverse proxy that terminates TLS. ## Next steps -- [Zabbix documentation](https://www.zabbix.com/documentation/current/) -- [Zabbix installation guide](https://www.zabbix.com/download) +- [Zabbix documentation](https://www.zabbix.com/documentation/7.0/en/) +- [Zabbix agent configuration](https://www.zabbix.com/documentation/7.0/en/manual/appendix/config/zabbix_agentd) +- [Zabbix API reference](https://www.zabbix.com/documentation/7.0/en/manual/api) From 358aa71cc087c9b9c579c2a9903e9db7206f5493 Mon Sep 17 00:00:00 2001 From: ditahkk Date: Thu, 9 Jul 2026 11:08:30 -0400 Subject: [PATCH 6/6] Update marketplace documentation with latest application versions and statistics --- .../docs/fr/public-cloud/marketplace/index.md | 22 +++++++++---------- .../docs/public-cloud/marketplace/index.md | 22 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/content/docs/fr/public-cloud/marketplace/index.md b/src/content/docs/fr/public-cloud/marketplace/index.md index e1b2731..676fcbb 100644 --- a/src/content/docs/fr/public-cloud/marketplace/index.md +++ b/src/content/docs/fr/public-cloud/marketplace/index.md @@ -10,11 +10,11 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

PostgreSQL 17

+

PostgreSQL

Base de données relationnelle open source avancée et très extensible

@@ -121,7 +121,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

MariaDB 11.4

+

MariaDB 11.8

Base de données relationnelle open source et remplacement direct de MySQL

@@ -269,7 +269,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

GitLab CE 18.11

+

GitLab CE 19.1

Plateforme DevOps auto-hébergée avec Git, CI/CD et suivi des tickets in one application

@@ -331,7 +331,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

MariaDB 11.4

+

MariaDB 11.8

Base de données relationnelle open source et remplacement direct de MySQL

@@ -341,7 +341,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

PostgreSQL 17

+

PostgreSQL

Base de données relationnelle open source avancée et très extensible

@@ -351,7 +351,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

MySQL 8.4

+

MySQL

Base de données relationnelle open source la plus déployée au monde

@@ -361,7 +361,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

Valkey 9.0

+

Valkey 9.1

Stockage de données en mémoire haute performance, compatible Redis

@@ -371,7 +371,7 @@ identifiants sont générés, les services sont configurés et l'image est prêt
-

Elasticsearch 8

+

Elasticsearch 9

Moteur distribué de recherche et d'analyse basé sur Apache Lucene

diff --git a/src/content/docs/public-cloud/marketplace/index.md b/src/content/docs/public-cloud/marketplace/index.md index 4183ec0..e2dc1b1 100644 --- a/src/content/docs/public-cloud/marketplace/index.md +++ b/src/content/docs/public-cloud/marketplace/index.md @@ -9,11 +9,11 @@ automatically. Credentials are generated, services are configured, and the image
- 32 + 35 live images
- 33 + 29 coming soon
@@ -80,7 +80,7 @@ automatically. Credentials are generated, services are configured, and the image
-

GitLab CE 18.11

+

GitLab CE 19.1

Self-hosted DevOps platform with Git, CI/CD, and issue tracking

@@ -110,7 +110,7 @@ automatically. Credentials are generated, services are configured, and the image
-

PostgreSQL 17

+

PostgreSQL

Advanced open-source relational database with rich extensibility

@@ -120,7 +120,7 @@ automatically. Credentials are generated, services are configured, and the image
-

MariaDB 11.4

+

MariaDB 11.8

Open-source relational database and drop-in MySQL replacement

@@ -268,7 +268,7 @@ automatically. Credentials are generated, services are configured, and the image
-

GitLab CE 18.11

+

GitLab CE 19.1

Self-hosted DevOps platform with Git, CI/CD, and issue tracking in one application

@@ -330,7 +330,7 @@ automatically. Credentials are generated, services are configured, and the image
-

MariaDB 11.4

+

MariaDB 11.8

Open-source relational database and drop-in MySQL replacement

@@ -340,7 +340,7 @@ automatically. Credentials are generated, services are configured, and the image
-

PostgreSQL 17

+

PostgreSQL

Advanced open-source relational database with rich extensibility

@@ -350,7 +350,7 @@ automatically. Credentials are generated, services are configured, and the image
-

MySQL 8.4

+

MySQL

World's most widely deployed open-source relational database

@@ -360,7 +360,7 @@ automatically. Credentials are generated, services are configured, and the image
-

Valkey 9.0

+

Valkey 9.1

High-performance in-memory data store, Redis-compatible

@@ -370,7 +370,7 @@ automatically. Credentials are generated, services are configured, and the image
-

Elasticsearch 8

+

Elasticsearch 9

Distributed search and analytics engine built on Apache Lucene