diff --git a/.meta/team.toml b/.meta/team.toml
index c413e7161c..1d25fb614c 100644
--- a/.meta/team.toml
+++ b/.meta/team.toml
@@ -146,4 +146,14 @@ keybase = "https://keybase.io/acarranoqovery"
name = "Alessandro Carrano"
bio = """\
Alessandro is a Lead Product Manager at Qovery.\
-"""
\ No newline at end of file
+"""
+
+[[team]]
+id = "cegagnaire"
+avatar = "https://github.com/baalooos.png"
+github = "https://github.com/baalooos"
+keybase = "https://keybase.io/baalooos"
+name = "Charles-Edouard Gagnaire"
+bio = """\
+Charles-Edouard is Technical Account Manager at Qovery.\
+"""
diff --git a/website/guides/tutorial/deploy-jupyterhub-qovery.md b/website/guides/tutorial/deploy-jupyterhub-qovery.md
new file mode 100644
index 0000000000..e46baefff0
--- /dev/null
+++ b/website/guides/tutorial/deploy-jupyterhub-qovery.md
@@ -0,0 +1,141 @@
+---
+last_modified_on: "2024-07-19"
+$schema: "/.meta/.schemas/guides.json"
+title: Deploy JupyterHub using Helm
+description: How to deploy JupyterHub on Qovery using the official Helm chart.
+author_github: https://github.com/baalooos
+tags: ["type: tutorial", "technology: qovery"]
+hide_pagination: true
+---
+
+import Steps from '@site/src/components/Steps';
+import Assumptions from '@site/src/components/Assumptions';
+
+JupyterHub is an easy way to interact with a computing environment through a webpage. It provides a standardized way to serve Jupyter Notebooks for multiple users. Pairing it with Kubernetes and Qovery makes it easier to manage and scale.
+
+
+
+- You have a Qovery cluster ready
+- You have a dedicated Qovery project and environment to deploy JupyterHub (example: Project=JupyterHub, Environment=Production)
+
+
+
+
+
+## Installation
+
+The easiest way to deploy JupyterHub is using the official [Helm Chart](https://github.com/jupyterhub/helm-chart). It will create all the resources you need to run JupyterHub.
+
+For more information, the official documentation is available [here](https://z2jh.jupyter.org/en/stable/jupyterhub/installation.html).
+
+
+
+
+
+-
+
+#### Add the JupyterHub helm repository
+
+Add the JupyterHub helm repository in your Qovery settings by following [this documentation][docs.using-qovery.configuration.organization.helm-repository]
+
+* Repository name: `JupyterHub`
+* Kind: `HTTPS`
+* Repository URL: `https://hub.jupyter.org/helm-chart/`
+
+
+
+-
+
+#### Create the JupyterHub service within Qovery
+
+Create the JupyterHub service in the Qovery environment of your choice (preferably within a dedicated JupyterHub project) by following [this documentation][docs.using-qovery.configuration.helm] and these values:
+
+* General:
+ * Application name: `JupyterHub`
+ * Source:
+ * Helm source: `Helm repository`
+ * Repository: `JupyterHub` (the name given during the JupyterHub helm repository added in the previous step)
+ * Chart name: `jupyterhub`
+ * Version: `3.3.7` (this is the version we used for this setup, update it based on the chosen version)
+ * Allow cluster-wide resources :heavy_check_mark:
+* Values
+ * Values override as file:
+ * File source: `Raw YAML`
+ * Raw YAML:
+
+```yaml
+fullnameOverride: "jupyterhub"
+proxy:
+ service:
+ type: ClusterIP
+```
+
+There are many other values you can set to modify the JupyterHub behavior. For advanced usage, check: [JupyterHub Customization](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html)
+
+Now get to the last step and `Create` the service on Qovery.
+
+
+
+-
+
+#### Add Network configuration
+
+In the previous step, we created the JupyterHub service. In this step, we will update its configuration to make it available on the public network (through Qovery Nginx Ingress).
+
+* Open the JupyterHub service details
+* Enter the `Settings` section
+* Click on `Networking`
+* Add a new Port with:
+ * Service name: jupyterhub-proxy-public
+ * Service port: 80
+ * Select protocol: HTTP
+ * External port: 443
+ * Port name: jupyterhub-proxy-public-p80
+
+If you need more information on how to manage your ports, have a look at [this](https://hub.qovery.com/docs/using-qovery/configuration/application/#ports)
+
+
+
+-
+
+#### Deploy your chart
+
+Open the `Play` button and trigger the deployment of your chart.
+
+
+
+
+
+
+
+-
+
+#### Access JupyterHub
+
+You can click the `Link` button to access JupyterHub on your cluster.
+
+
+
+
+
+Now you can login to the webUI and start playing with Jupyter Notebooks.
+
+
+
+
+
+
+
+## Conclusion
+
+JupyterHub is running on your Qovery cluster. This is a simple installation and you should try to [customize](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html) it according to your needs. You can also check the[Adminstrator Guide](https://z2jh.jupyter.org/en/stable/administrator/index.html)to better understand how it works.
+
+
+[docs.using-qovery.configuration.helm]: /docs/using-qovery/configuration/helm/
+[docs.using-qovery.configuration.organization.helm-repository]: /docs/using-qovery/configuration/organization/helm-repository/
diff --git a/website/guides/tutorial/deploy-jupyterhub-qovery.md.erb b/website/guides/tutorial/deploy-jupyterhub-qovery.md.erb
new file mode 100644
index 0000000000..517ead8914
--- /dev/null
+++ b/website/guides/tutorial/deploy-jupyterhub-qovery.md.erb
@@ -0,0 +1,128 @@
+---
+$schema: "/.meta/.schemas/guides.json"
+title: Deploy JupyterHub using Helm
+description: How to deploy JupyterHub on Qovery using the official Helm chart.
+author_github: https://github.com/baalooos
+tags: ["type: tutorial", "technology: qovery"]
+hide_pagination: true
+---
+
+import Steps from '@site/src/components/Steps';
+import Assumptions from '@site/src/components/Assumptions';
+
+JupyterHub is an easy way to interact with a computing environment through a webpage. It provides a standardized way to serve Jupyter Notebooks for multiple users. Pairing it with Kubernetes and Qovery makes it easier to manage and scale.
+
+
+
+- You have a Qovery cluster ready
+- You have a dedicated Qovery project and environment to deploy JupyterHub (example: Project=JupyterHub, Environment=Production)
+
+
+
+## Installation
+
+The easiest way to deploy JupyterHub is using the official [Helm Chart](https://github.com/jupyterhub/helm-chart). It will create all the resources you need to run JupyterHub.
+
+For more information, the official documentation is available [here](https://z2jh.jupyter.org/en/stable/jupyterhub/installation.html).
+
+
+
+
+
+-
+
+#### Add the JupyterHub helm repository
+
+Add the JupyterHub helm repository in your Qovery settings by following [this documentation][docs.using-qovery.configuration.organization.helm-repository]
+
+* Repository name: `JupyterHub`
+* Kind: `HTTPS`
+* Repository URL: `https://hub.jupyter.org/helm-chart/`
+
+
+
+-
+
+#### Create the JupyterHub service within Qovery
+
+Create the JupyterHub service in the Qovery environment of your choice (preferably within a dedicated JupyterHub project) by following [this documentation][docs.using-qovery.configuration.helm] and these values:
+
+* General:
+ * Application name: `JupyterHub`
+ * Source:
+ * Helm source: `Helm repository`
+ * Repository: `JupyterHub` (the name given during the JupyterHub helm repository added in the previous step)
+ * Chart name: `jupyterhub`
+ * Version: `3.3.7` (this is the version we used for this setup, update it based on the chosen version)
+ * Allow cluster-wide resources :heavy_check_mark:
+* Values
+ * Values override as file:
+ * File source: `Raw YAML`
+ * Raw YAML:
+
+```yaml
+fullnameOverride: "jupyterhub"
+proxy:
+ service:
+ type: ClusterIP
+```
+
+There are many other values you can set to modify the JupyterHub behavior. For advanced usage, check: [JupyterHub Customization](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html)
+
+Now get to the last step and `Create` the service on Qovery.
+
+
+
+-
+
+#### Add Network configuration
+
+In the previous step, we created the JupyterHub service. In this step, we will update its configuration to make it available on the public network (through Qovery Nginx Ingress).
+
+* Open the JupyterHub service details
+* Enter the `Settings` section
+* Click on `Networking`
+* Add a new Port with:
+ * Service name: jupyterhub-proxy-public
+ * Service port: 80
+ * Select protocol: HTTP
+ * External port: 443
+ * Port name: jupyterhub-proxy-public-p80
+
+If you need more information on how to manage your ports, have a look at [this](https://hub.qovery.com/docs/using-qovery/configuration/application/#ports)
+
+
+
+-
+
+#### Deploy your chart
+
+Open the `Play` button and trigger the deployment of your chart.
+
+
+
+
+
+
+
+-
+
+#### Access JupyterHub
+
+You can click the `Link` button to access JupyterHub on your cluster.
+
+
+
+
+
+Now you can login to the webUI and start playing with Jupyter Notebooks.
+
+
+
+
+
+
+
+## Conclusion
+
+JupyterHub is running on your Qovery cluster. This is a simple installation and you should try to [customize](https://z2jh.jupyter.org/en/stable/jupyterhub/customization.html) it according to your needs. You can also check the[Adminstrator Guide](https://z2jh.jupyter.org/en/stable/administrator/index.html)to better understand how it works.
diff --git a/website/metadata.js b/website/metadata.js
index a364ab3be5..19598ba353 100644
--- a/website/metadata.js
+++ b/website/metadata.js
@@ -415,6 +415,15 @@ module.exports = {
"series_position": null,
"title": "Customizing Preview URL with Qovery CLI"
},
+ {
+ "author_github": "https://github.com/baalooos",
+ "description": null,
+ "id": "/tutorial/deploy-jupyterhub-qovery",
+ "last_modified_on": null,
+ "path": "website/guides/tutorial/deploy-jupyterhub-qovery.md",
+ "series_position": null,
+ "title": "Deploy JupyterHub using Helm"
+ },
{
"author_github": "https://github.com/l0ck3",
"description": null,
@@ -952,6 +961,14 @@ module.exports = {
"id": "acarranoqovery",
"keybase": "https://keybase.io/acarranoqovery",
"name": "Alessandro Carrano"
+ },
+ {
+ "avatar": "https://github.com/baalooos.png",
+ "bio": "Charles-Edouard is Technical Account Manager at Qovery.",
+ "github": "https://github.com/baalooos",
+ "id": "cegagnaire",
+ "keybase": "https://keybase.io/baalooos",
+ "name": "Charles-Edouard Gagnaire"
}
],
"technologies": [
diff --git a/website/static/img/deploy-jupyterhub-qovery/deploy.png b/website/static/img/deploy-jupyterhub-qovery/deploy.png
new file mode 100644
index 0000000000..1f91bc47fa
Binary files /dev/null and b/website/static/img/deploy-jupyterhub-qovery/deploy.png differ
diff --git a/website/static/img/deploy-jupyterhub-qovery/link.png b/website/static/img/deploy-jupyterhub-qovery/link.png
new file mode 100644
index 0000000000..7929db4270
Binary files /dev/null and b/website/static/img/deploy-jupyterhub-qovery/link.png differ