<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Node.JS Archives | Clever Cloud</title>
	<atom:link href="https://www.clever.cloud/blog/tag/node-js/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.clever.cloud/blog/tag/node-js/</link>
	<description>From Code to Product</description>
	<lastBuildDate>Tue, 18 Mar 2025 08:30:40 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cdn.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>Node.JS Archives | Clever Cloud</title>
	<link>https://www.clever.cloud/blog/tag/node-js/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Deploy Docs on Clever Cloud</title>
		<link>https://www.clever.cloud/blog/engineering/2025/03/17/deploy-docs-on-clever-cloud/</link>
		
		<dc:creator><![CDATA[Julia March]]></dc:creator>
		<pubDate>Mon, 17 Mar 2025 18:37:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[DINUM]]></category>
		<category><![CDATA[docs]]></category>
		<category><![CDATA[Node.JS]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=16710</guid>

					<description><![CDATA[<p><img width="2560" height="1238" src="https://cdn.clever-cloud.com/uploads/2025/03/docs-scaled.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="docs scaled" decoding="async" fetchpriority="high" srcset="https://cdn.clever-cloud.com/uploads/2025/03/docs-scaled.jpg 2560w, https://cdn.clever-cloud.com/uploads/2025/03/docs-300x145.jpg 300w, https://cdn.clever-cloud.com/uploads/2025/03/docs-1024x495.jpg 1024w, https://cdn.clever-cloud.com/uploads/2025/03/docs-768x371.jpg 768w, https://cdn.clever-cloud.com/uploads/2025/03/docs-1536x743.jpg 1536w, https://cdn.clever-cloud.com/uploads/2025/03/docs-2048x990.jpg 2048w, https://cdn.clever-cloud.com/uploads/2025/03/docs-1368x661.jpg 1368w" sizes="(max-width: 2560px) 100vw, 2560px" /></p><!-- wp:paragraph -->
<p>The open-source alternative to Notion, a French government initiative in collaboration with Germany, has become the number 1 topic of discussion on <a href="https://news.ycombinator.com/item?id=43378239" target="_blank" rel="noreferrer noopener">Hacker News</a> over the last 24 hours. In this post, we explain how to deploy and configure Docs on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What is Docs?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Docs isn't just an alternative to Notion: it's also a collaborative project from the Direction Interministérielle du Numérique (DINUM) and its German equivalent, the Zentrum Digitale Souveränität (ZENDIS, or Center for Digital Sovereignty).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Docs is one of many initiatives aimed at ensuring the digital sovereignty of governments , not only in their use of digital tools, but also in their creation. At Clever Cloud, we've already had the opportunity to work with various ministries on a daily basis, and we're proud to be able to contribute to the diffusion of these tools.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As Docs currently runs on Kubernetes, we have explored the possibilities of deploying it using Clever Cloud rather than a kube cluster. Of course, you'll be able to deploy it using Kubernetes when our managed kube product becomes available.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How to deploy Docs on Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Docs consists of two main applications:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>A backend (a Django API Rest) in src/backend</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>A frontend (mainly based on Next.js and yarn workspaces) in src/frontend</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>And integrates the following dependencies :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>PostgreSQL database</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Redis</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Keycloak (optional)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>To deploy it on Clever Cloud, opt for a Python application for the backend, and a Node.js application for the frontend. There's no need to version each subfolder; you can push your code with Git from the repository root and specify which subfolder to deploy using the <code>APP_FOLDER</code> variable for each of your applications.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Backend deployment</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To take the value from the environment variables injected at runtime on Clever Cloud, we've made a few minor modifications to the code, and also renamed the environment variables for the PostgreSQL database and S3 storage. This last modification allows you to modify the database or buckets, change add-ons and renew identifiers without having to manually modify the value of the variables injected into the application. For smooth deployment of Docs on Clever Cloud, <a href="https://github.com/CleverCloud/docs-example/tree/deploy-on-cc" target="_blank" rel="noreferrer noopener">clone the branch under development on our fork</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Then, on Clever Cloud:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Create a Python application</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Add a PostrgreSQL database</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Create a Cellar add-on (or create the bucket directly, if you already have one) and connect it to the application.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Create a Redis add-on and connect it to the application</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Add the minimum configuration environment variables to your application:</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><code>APP_FOLDER="/src/backend"<br>CC_PYTHON_MODULE="impress.wsgi:application"<br>CC_PYTHON_VERSION="3"<br>CC_TROUBLESHOOT="true"<br>CELLAR_STORAGE_BUCKET_NAME="your-bucket-name"<br>DJANGO_ALLOWED_HOSTS="frontend-url/*"<br>DJANGO_CONFIGURATION="Development" / "Production"<br>DJANGO_SECRET_KEY="YourNewlyGeneratedKeyHere"<br>DJANGO_SETTINGS_MODULE="impress.settings"<br>DJANGO_SUPERUSER_PASSWORD=""<br>OIDC_OP_AUTHORIZATION_ENDPOINT="&lt;&gt;"<br>OIDC_OP_JWKS_ENDPOINT="&lt;&gt;"<br>OIDC_OP_TOKEN_ENDPOINT="&lt;&gt;"<br>OIDC_OP_USER_ENDPOINT="&lt;&gt;"<br>OIDC_RP_CLIENT_SECRET=""<br>STATIC_URL="frontend url"</code></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Click on the <strong>Exposed configuration</strong> tab and add the variables to be shared with the frontend (the Cellar configuration and Keycloak, if you're adding one).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><br>In your application, add the remote provided in the Python application dashboard (<strong>Information</strong> tab) and name it clever-backend, for example.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Once deployed, you'll be able to connect to the API administration interface on backend-url/admin.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Deploying the frontend</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The Docs frontend requires far fewer dependencies, this one is configured to use yarn worspaces that facilitate both maintenance and the deployment of multiple applications on a single virtual machine on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On Clever Cloud:<br></p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Create a Node.js application</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Add the following environment variables:</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><code>APP_FOLDER="./src/frontend"<br>CC_NODE_BUILD_TOOL="yarn"<br>CC_PRE_BUILD_HOOK="cd ./src/frontend &amp;&amp; yarn install --frozen-lockfile &amp;&amp; yarn app:build"<br>CC_RUN_COMMAND="cd ./src/frontend &amp;&amp; yarn app:start"<br>CC_TROUBLESHOOT="true"<br>NEXT_PUBLIC_API_ORIGIN=""<br>NEXT_PUBLIC_SW_DEACTIVATED="true"<br>NODE_OPTIONS="--max-old-space-size=4096"</code></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Connect the application to the backend (<strong>Linked services</strong> tab), as well as to the database add-on.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>In your application, add the remote provided in the Node.js application dashboard (<strong>Information</strong> tab) and name it clever-frontend, for example.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Push the code, and you'll be able to connect using the authentication you've defined with Keycloak or the Django API.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Go further with Docs</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>This article presents an example of deployment on Clever Cloud, but Docs is a rich project with multiple functionalities that you can activate or customize. To work locally, you'll find instructions for starting the frontend <a href="https://github.com/CleverCloud/docs-example/blob/deploy-on-cc/src/frontend/README.md" target="_blank" rel="noreferrer noopener">here</a>, and for starting the backend <a href="https://github.com/CleverCloud/docs-example/blob/deploy-on-cc/src/backend/README.md">here</a>. We welcome questions and contributions!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="2560" height="1238" src="https://cdn.clever-cloud.com/uploads/2025/03/docs-scaled.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="docs scaled" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2025/03/docs-scaled.jpg 2560w, https://cdn.clever-cloud.com/uploads/2025/03/docs-300x145.jpg 300w, https://cdn.clever-cloud.com/uploads/2025/03/docs-1024x495.jpg 1024w, https://cdn.clever-cloud.com/uploads/2025/03/docs-768x371.jpg 768w, https://cdn.clever-cloud.com/uploads/2025/03/docs-1536x743.jpg 1536w, https://cdn.clever-cloud.com/uploads/2025/03/docs-2048x990.jpg 2048w, https://cdn.clever-cloud.com/uploads/2025/03/docs-1368x661.jpg 1368w" sizes="(max-width: 2560px) 100vw, 2560px" /></p><!-- wp:paragraph -->
<p>The open-source alternative to Notion, a French government initiative in collaboration with Germany, has become the number 1 topic of discussion on <a href="https://news.ycombinator.com/item?id=43378239" target="_blank" rel="noreferrer noopener">Hacker News</a> over the last 24 hours. In this post, we explain how to deploy and configure Docs on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What is Docs?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Docs isn't just an alternative to Notion: it's also a collaborative project from the Direction Interministérielle du Numérique (DINUM) and its German equivalent, the Zentrum Digitale Souveränität (ZENDIS, or Center for Digital Sovereignty).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Docs is one of many initiatives aimed at ensuring the digital sovereignty of governments , not only in their use of digital tools, but also in their creation. At Clever Cloud, we've already had the opportunity to work with various ministries on a daily basis, and we're proud to be able to contribute to the diffusion of these tools.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As Docs currently runs on Kubernetes, we have explored the possibilities of deploying it using Clever Cloud rather than a kube cluster. Of course, you'll be able to deploy it using Kubernetes when our managed kube product becomes available.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How to deploy Docs on Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Docs consists of two main applications:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>A backend (a Django API Rest) in src/backend</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>A frontend (mainly based on Next.js and yarn workspaces) in src/frontend</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>And integrates the following dependencies :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>PostgreSQL database</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Redis</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Keycloak (optional)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>To deploy it on Clever Cloud, opt for a Python application for the backend, and a Node.js application for the frontend. There's no need to version each subfolder; you can push your code with Git from the repository root and specify which subfolder to deploy using the <code>APP_FOLDER</code> variable for each of your applications.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Backend deployment</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To take the value from the environment variables injected at runtime on Clever Cloud, we've made a few minor modifications to the code, and also renamed the environment variables for the PostgreSQL database and S3 storage. This last modification allows you to modify the database or buckets, change add-ons and renew identifiers without having to manually modify the value of the variables injected into the application. For smooth deployment of Docs on Clever Cloud, <a href="https://github.com/CleverCloud/docs-example/tree/deploy-on-cc" target="_blank" rel="noreferrer noopener">clone the branch under development on our fork</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Then, on Clever Cloud:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Create a Python application</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Add a PostrgreSQL database</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Create a Cellar add-on (or create the bucket directly, if you already have one) and connect it to the application.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Create a Redis add-on and connect it to the application</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Add the minimum configuration environment variables to your application:</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><code>APP_FOLDER="/src/backend"<br>CC_PYTHON_MODULE="impress.wsgi:application"<br>CC_PYTHON_VERSION="3"<br>CC_TROUBLESHOOT="true"<br>CELLAR_STORAGE_BUCKET_NAME="your-bucket-name"<br>DJANGO_ALLOWED_HOSTS="frontend-url/*"<br>DJANGO_CONFIGURATION="Development" / "Production"<br>DJANGO_SECRET_KEY="YourNewlyGeneratedKeyHere"<br>DJANGO_SETTINGS_MODULE="impress.settings"<br>DJANGO_SUPERUSER_PASSWORD=""<br>OIDC_OP_AUTHORIZATION_ENDPOINT="&lt;&gt;"<br>OIDC_OP_JWKS_ENDPOINT="&lt;&gt;"<br>OIDC_OP_TOKEN_ENDPOINT="&lt;&gt;"<br>OIDC_OP_USER_ENDPOINT="&lt;&gt;"<br>OIDC_RP_CLIENT_SECRET=""<br>STATIC_URL="frontend url"</code></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Click on the <strong>Exposed configuration</strong> tab and add the variables to be shared with the frontend (the Cellar configuration and Keycloak, if you're adding one).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><br>In your application, add the remote provided in the Python application dashboard (<strong>Information</strong> tab) and name it clever-backend, for example.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Once deployed, you'll be able to connect to the API administration interface on backend-url/admin.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Deploying the frontend</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The Docs frontend requires far fewer dependencies, this one is configured to use yarn worspaces that facilitate both maintenance and the deployment of multiple applications on a single virtual machine on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>On Clever Cloud:<br></p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Create a Node.js application</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Add the following environment variables:</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><code>APP_FOLDER="./src/frontend"<br>CC_NODE_BUILD_TOOL="yarn"<br>CC_PRE_BUILD_HOOK="cd ./src/frontend &amp;&amp; yarn install --frozen-lockfile &amp;&amp; yarn app:build"<br>CC_RUN_COMMAND="cd ./src/frontend &amp;&amp; yarn app:start"<br>CC_TROUBLESHOOT="true"<br>NEXT_PUBLIC_API_ORIGIN=""<br>NEXT_PUBLIC_SW_DEACTIVATED="true"<br>NODE_OPTIONS="--max-old-space-size=4096"</code></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Connect the application to the backend (<strong>Linked services</strong> tab), as well as to the database add-on.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>In your application, add the remote provided in the Node.js application dashboard (<strong>Information</strong> tab) and name it clever-frontend, for example.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Push the code, and you'll be able to connect using the authentication you've defined with Keycloak or the Django API.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Go further with Docs</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>This article presents an example of deployment on Clever Cloud, but Docs is a rich project with multiple functionalities that you can activate or customize. To work locally, you'll find instructions for starting the frontend <a href="https://github.com/CleverCloud/docs-example/blob/deploy-on-cc/src/frontend/README.md" target="_blank" rel="noreferrer noopener">here</a>, and for starting the backend <a href="https://github.com/CleverCloud/docs-example/blob/deploy-on-cc/src/backend/README.md">here</a>. We welcome questions and contributions!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#64 &#8211; Des sirènes, des crabes coreutils mais pas d&#8217;enclave de blu-ray ?</title>
		<link>https://www.clever.cloud/podcast/64-des-sirenes-des-crabes-coreutils-mais-pas-denclave-de-blu-ray/</link>
		
		<dc:creator><![CDATA[Hubert Sablonnière]]></dc:creator>
		<pubDate>Thu, 03 Mar 2022 09:05:19 +0000</pubDate>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Node.JS]]></category>
		<category><![CDATA[Rust]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?post_type=podcast&#038;p=5426</guid>

					<description><![CDATA[<p><img width="1920" height="1080" src="https://cdn.clever-cloud.com/uploads/2022/02/64-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="64 1" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2022/02/64-1.jpg 1920w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-300x169.jpg 300w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-1024x576.jpg 1024w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-768x432.jpg 768w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-1536x864.jpg 1536w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-1368x770.jpg 1368w" sizes="(max-width: 1920px) 100vw, 1920px" /></p><!-- wp:gallery {"columns":4,"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-4 is-cropped"><!-- wp:image {"id":712,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/03/hubert-sablonniere.jpg" alt="hubert_sablonnière" class="wp-image-712"/><figcaption>Hubert Sablonnière</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":3045,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/08/30kgNpLQ_400x400.jpg" alt="Pierre Zemb" class="wp-image-3045"/><figcaption>Pierre Zemb</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":705,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/03/arnaud-lefebvre.jpg" alt="arnaud_lefebvre" class="wp-image-705"/><figcaption>Arnaud Lefebvre</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":5425,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/02/david_brassely.jpg" alt="" class="wp-image-5425"/><figcaption>David Brassely</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans ce formidable épisode, il est question d'automation et de télétravail, de Rust, d'expérimentation de Fetch dans Node.js, de HTML Dialog Element, du nouveau chip Intel, de grpcurl… et comme toujours on finira en chanson !</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-fill"} -->
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link" href="https://youtu.be/x2vvn0D-54k" target="_blank" rel="noreferrer noopener">Regarder sur Youtube</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>👋 Venez discuter avec nous sur <strong>@clever_cloudFR</strong> pour nous dire ce que vous avez pensé de ce nouvel épisode.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>➡️ Pour découvrir ou réécouter d’anciens épisodes&nbsp;<a href="https://www.clever.cloud/fr/podcast/">c’est par ici</a>&nbsp;!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="timecodes-liens">Timecodes &amp; liens :</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>00:00:00 Introduction</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:01:30 I automated my job over a year ago and haven't told anyone.<br><a href="https://www.reddit.com/r/antiwork/comments/s2igq9/i_automated_my_job_over_a_year_ago_and_havent" target="_blank" rel="noreferrer noopener">https://www.reddit.com/r/antiwork/comments/s2igq9/i_automated_my_job_over_a_year_ago_and_havent</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:08:45 Include diagrams in your Markdown files with Mermaid<br><a href="https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/" target="_blank" rel="noreferrer noopener">https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:12:50 Rust-Written Replacement To GNU Coreutils Progressing, Some Binaries Now Faster<br><a href="https://www.phoronix.com/scan.php?page=news_item&amp;px=Rust-Coreutils-Jan-2022" target="_blank" rel="noreferrer noopener">https://www.phoronix.com/scan.php?page=news_item&amp;px=Rust-Coreutils-Jan-2022<br></a><a href="https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands" target="_blank" rel="noreferrer noopener">https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:17:25 Real-time, open-source, scalable and extensible orchestration platform<br><a href="https://kestra.io/" target="_blank" rel="noreferrer noopener">https://kestra.io/<br></a><a href="https://medium.com/@kestra-io/introducing-kestra-infinitely-scalable-open-source-orchestration-and-scheduling-platform-8e4d47193616" target="_blank" rel="noreferrer noopener">https://medium.com/@kestra-io/introducing-kestra-infinitely-scalable-open-source-orchestration-and-scheduling-platform-8e4d47193616</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:22:25 Fetch arrive en experimental dans Node.js 17.5.0<br><a href="https://nodejs.org/en/blog/release/v17.5.0/" target="_blank" rel="noreferrer noopener">https://nodejs.org/en/blog/release/v17.5.0/<br></a><a href="https://github.com/nodejs/node/commit/76a229c4ff" target="_blank" rel="noreferrer noopener">https://github.com/nodejs/node/commit/76a229c4ff<br></a><a href="https://github.com/nodejs/node/issues/19393" target="_blank" rel="noreferrer noopener">https://github.com/nodejs/node/issues/19393<br></a><a href="https://github.com/nodejs/undici/pull/1183" target="_blank" rel="noreferrer noopener">https://github.com/nodejs/undici/pull/1183<br></a><a href="https://github.com/node-fetch/node-fetch/blob/main/docs/v3-LIMITS.md" target="_blank" rel="noreferrer noopener">https://github.com/node-fetch/node-fetch/blob/main/docs/v3-LIMITS.md</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:35:10 Replace JavaScript Dialogs With the New HTML Dialog Element<br><a href="https://css-tricks.com/replace-javascript-dialogs-html-dialog-element/" target="_blank" rel="noreferrer noopener">https://css-tricks.com/replace-javascript-dialogs-html-dialog-element/<br></a><a href="https://caniuse.com/dialog" target="_blank" rel="noreferrer noopener">https://caniuse.com/dialog</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:40:55 New Intel chips won't play Blu-ray disks due to SGX deprecation<br><a href="https://www.bleepingcomputer.com/news/security/new-intel-chips-wont-play-blu-ray-disks-due-to-sgx-deprecation/" target="_blank" rel="noreferrer noopener">https://www.bleepingcomputer.com/news/security/new-intel-chips-wont-play-blu-ray-disks-due-to-sgx-deprecation/<br></a>'At least' 6.5 exabytes lost after contamination hits Kioxia/WD 3D NAND fabs<br><a href="https://www.theregister.com/2022/02/10/kioxia_wd_chemical_contamination_flash_fabs/" target="_blank" rel="noreferrer noopener">https://www.theregister.com/2022/02/10/kioxia_wd_chemical_contamination_flash_fabs/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:47:45 PHP builtin webserver<br><a href="https://www.php.net/manual/en/features.commandline.webserver.php" target="_blank" rel="noreferrer noopener">https://www.php.net/manual/en/features.commandline.webserver.php</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:51:40 grpCurl - gRPC via command-line<br><a href="https://github.com/fullstorydev/grpcurl" target="_blank" rel="noreferrer noopener">https://github.com/fullstorydev/grpcurl</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:58:30 Choix musical de David Brassely<br>Groundation - Jah Jah Know<br><a href="https://www.youtube.com/watch?v=-EOcV2-gI5s" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=-EOcV2-gI5s</a></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1920" height="1080" src="https://cdn.clever-cloud.com/uploads/2022/02/64-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="64 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/02/64-1.jpg 1920w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-300x169.jpg 300w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-1024x576.jpg 1024w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-768x432.jpg 768w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-1536x864.jpg 1536w, https://cdn.clever-cloud.com/uploads/2022/02/64-1-1368x770.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- wp:gallery {"columns":4,"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-4 is-cropped"><!-- wp:image {"id":712,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/03/hubert-sablonniere.jpg" alt="hubert_sablonnière" class="wp-image-712"/><figcaption>Hubert Sablonnière</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":3045,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/08/30kgNpLQ_400x400.jpg" alt="Pierre Zemb" class="wp-image-3045"/><figcaption>Pierre Zemb</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":705,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/03/arnaud-lefebvre.jpg" alt="arnaud_lefebvre" class="wp-image-705"/><figcaption>Arnaud Lefebvre</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":5425,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/02/david_brassely.jpg" alt="" class="wp-image-5425"/><figcaption>David Brassely</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans ce formidable épisode, il est question d'automation et de télétravail, de Rust, d'expérimentation de Fetch dans Node.js, de HTML Dialog Element, du nouveau chip Intel, de grpcurl… et comme toujours on finira en chanson !</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-fill"} -->
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link" href="https://youtu.be/x2vvn0D-54k" target="_blank" rel="noreferrer noopener">Regarder sur Youtube</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>👋 Venez discuter avec nous sur <strong>@clever_cloudFR</strong> pour nous dire ce que vous avez pensé de ce nouvel épisode.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>➡️ Pour découvrir ou réécouter d’anciens épisodes&nbsp;<a href="https://www.clever.cloud/fr/podcast/">c’est par ici</a>&nbsp;!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="timecodes-liens">Timecodes &amp; liens :</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>00:00:00 Introduction</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:01:30 I automated my job over a year ago and haven't told anyone.<br><a href="https://www.reddit.com/r/antiwork/comments/s2igq9/i_automated_my_job_over_a_year_ago_and_havent" target="_blank" rel="noreferrer noopener">https://www.reddit.com/r/antiwork/comments/s2igq9/i_automated_my_job_over_a_year_ago_and_havent</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:08:45 Include diagrams in your Markdown files with Mermaid<br><a href="https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/" target="_blank" rel="noreferrer noopener">https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:12:50 Rust-Written Replacement To GNU Coreutils Progressing, Some Binaries Now Faster<br><a href="https://www.phoronix.com/scan.php?page=news_item&amp;px=Rust-Coreutils-Jan-2022" target="_blank" rel="noreferrer noopener">https://www.phoronix.com/scan.php?page=news_item&amp;px=Rust-Coreutils-Jan-2022<br></a><a href="https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands" target="_blank" rel="noreferrer noopener">https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:17:25 Real-time, open-source, scalable and extensible orchestration platform<br><a href="https://kestra.io/" target="_blank" rel="noreferrer noopener">https://kestra.io/<br></a><a href="https://medium.com/@kestra-io/introducing-kestra-infinitely-scalable-open-source-orchestration-and-scheduling-platform-8e4d47193616" target="_blank" rel="noreferrer noopener">https://medium.com/@kestra-io/introducing-kestra-infinitely-scalable-open-source-orchestration-and-scheduling-platform-8e4d47193616</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:22:25 Fetch arrive en experimental dans Node.js 17.5.0<br><a href="https://nodejs.org/en/blog/release/v17.5.0/" target="_blank" rel="noreferrer noopener">https://nodejs.org/en/blog/release/v17.5.0/<br></a><a href="https://github.com/nodejs/node/commit/76a229c4ff" target="_blank" rel="noreferrer noopener">https://github.com/nodejs/node/commit/76a229c4ff<br></a><a href="https://github.com/nodejs/node/issues/19393" target="_blank" rel="noreferrer noopener">https://github.com/nodejs/node/issues/19393<br></a><a href="https://github.com/nodejs/undici/pull/1183" target="_blank" rel="noreferrer noopener">https://github.com/nodejs/undici/pull/1183<br></a><a href="https://github.com/node-fetch/node-fetch/blob/main/docs/v3-LIMITS.md" target="_blank" rel="noreferrer noopener">https://github.com/node-fetch/node-fetch/blob/main/docs/v3-LIMITS.md</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:35:10 Replace JavaScript Dialogs With the New HTML Dialog Element<br><a href="https://css-tricks.com/replace-javascript-dialogs-html-dialog-element/" target="_blank" rel="noreferrer noopener">https://css-tricks.com/replace-javascript-dialogs-html-dialog-element/<br></a><a href="https://caniuse.com/dialog" target="_blank" rel="noreferrer noopener">https://caniuse.com/dialog</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:40:55 New Intel chips won't play Blu-ray disks due to SGX deprecation<br><a href="https://www.bleepingcomputer.com/news/security/new-intel-chips-wont-play-blu-ray-disks-due-to-sgx-deprecation/" target="_blank" rel="noreferrer noopener">https://www.bleepingcomputer.com/news/security/new-intel-chips-wont-play-blu-ray-disks-due-to-sgx-deprecation/<br></a>'At least' 6.5 exabytes lost after contamination hits Kioxia/WD 3D NAND fabs<br><a href="https://www.theregister.com/2022/02/10/kioxia_wd_chemical_contamination_flash_fabs/" target="_blank" rel="noreferrer noopener">https://www.theregister.com/2022/02/10/kioxia_wd_chemical_contamination_flash_fabs/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:47:45 PHP builtin webserver<br><a href="https://www.php.net/manual/en/features.commandline.webserver.php" target="_blank" rel="noreferrer noopener">https://www.php.net/manual/en/features.commandline.webserver.php</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:51:40 grpCurl - gRPC via command-line<br><a href="https://github.com/fullstorydev/grpcurl" target="_blank" rel="noreferrer noopener">https://github.com/fullstorydev/grpcurl</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:58:30 Choix musical de David Brassely<br>Groundation - Jah Jah Know<br><a href="https://www.youtube.com/watch?v=-EOcV2-gI5s" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=-EOcV2-gI5s</a></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Security update about npm libraries &#8216;colors&#8217; and &#8216;faker&#8217;</title>
		<link>https://www.clever.cloud/blog/engineering/2022/01/11/security-update-about-colors-and-faker/</link>
		
		<dc:creator><![CDATA[Julie Nolot]]></dc:creator>
		<pubDate>Tue, 11 Jan 2022 17:14:33 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Node.JS]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=5071</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="security update colors and faker 2" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2.png 1400w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Few days ago, Marak&nbsp;Squires, the developer behind the open-source npm libraries <a href="https://github.com/Marak/colors.js" target="_blank" rel="noreferrer noopener">colors</a> and <a href="https://github.com/marak/Faker.js/" target="_blank" rel="noreferrer noopener">faker</a>, decided to corrupt the libraries, to denounce issues in open-source projects' funding system. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The <a href="https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6#diff-92bbac9a308cd5fcf9db165841f2d90ce981baddcb2b1e26cfff170929af3bd1R18" target="_blank" rel="noreferrer noopener">infinite loop</a> introduced by the developer broke several apps using these libraries by printing the text 'LIBERTY LIBERTY LIBERTY' and non-ASCII characters in the apps' logs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It causes a lot of trouble as the&nbsp;<a href="https://github.com/Marak/colors.js" target="_blank" rel="noreferrer noopener">colors</a>&nbsp;library receives over&nbsp;<a href="https://www.npmjs.com/package/colors" target="_blank" rel="noreferrer noopener">20 million weekly downloads</a>&nbsp;on npm alone and has almost 19,000 projects relying on it. Whereas,&nbsp;<a href="https://www.npmjs.com/package/faker" target="_blank" rel="noreferrer noopener">faker</a>&nbsp;receives over 2.8 million weekly downloads on npm, and has over 2,500 dependents.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5072,"sizeSlug":"large","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/faker-liberty-667x337.jpeg" alt="" class="wp-image-5072"/><figcaption>Non-ASCII characters found in the apps logs using the npm library 'color'</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:heading -->
<h2>How to check if your Node.js app is impacted?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The first thing to do is to check if your app is using the npm libraries 'colors' or 'faker'. To do so, run either:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre><code class="lang-shell">
npm ls colors
</code>
</pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Or</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre><code class="lang-shell">
npm ls faker
</code>
</pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>You will get an output like this:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre><code class="lang-shell">
my-project@1.2.3 /home/me/my-project
├─┬ @storybook/addon-docs@5.3.18
│ └─┬ vue-docgen-loader@1.5.0
│   └─┬ jscodeshift@0.7.0
│     └── colors@1.4.0  deduped
├─┬ @storybook/vue@5.3.18
│ └─┬ @storybook/core@5.3.18
│   └─┬ cli-table3@0.5.1
│     └── colors@1.4.0  deduped
└── colors@1.4.0
</code>
</pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>With this output, we can identify that this project uses 'colors' directly with version 1.4.0 and through transitive dependencies, also in version 1.4.0.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Your app uses 'colors' or 'faker', what can you do?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>If your app uses one of these npm libraries, we invite you to <strong>check three thing</strong>:</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Check the version</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First of all, you need to check if you're using one of the compromised versions of these libraries:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li>colors: <code>1.4.1</code>, <code>1.4.2</code>, and <code>1.4.44-liberty-2</code></li><li>faker: <code>6.6.6</code></li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Check the package-lock.json</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Do you have a <code>package-lock.json</code>? If you don't we invite you to read <a href="https://docs.npmjs.com/cli/v8/configuring-npm/package-lock-json" target="_blank" rel="noreferrer noopener">the documentation</a> and add one to your project.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you do, you need to force a version which is not compromised (<code>1.4.0</code> for colors and <code>5.5.3</code> for 'faker'). You're using npm? You can try with the module <a href="https://github.com/rogeriochaves/npm-force-resolutions" target="_blank" rel="noreferrer noopener">npm-force-resolutions</a>. You're using Yarn? You can use the process described <a href="https://classic.yarnpkg.com/en/docs/selective-version-resolutions/" target="_blank" rel="noreferrer noopener">in this documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Update your tools to their latest version </h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We also invite you to check if the dependencies you use released an update. As an exemple, if you use <a href="https://storybook.js.org" target="_blank" rel="noreferrer noopener"><strong>Storybook</strong></a>, the <a href="https://github.com/storybookjs/storybook/releases/tag/v6.4.10" target="_blank" rel="noreferrer noopener">v6.4.10</a> released earlier yesterday fixes the issue.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>A note for Clever Tools users</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>By the way, if you use our CLI, the <a href="https://www.clever.cloud/developers/reference/clever-tools/" target="_blank" rel="noreferrer noopener">clever-tools</a>, and if you installed it via npm, <strong>please upgrade to v2.8.1</strong>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="security update colors and faker 2" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2.png 1400w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/01/security-update-colors-and-faker-2-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Few days ago, Marak&nbsp;Squires, the developer behind the open-source npm libraries <a href="https://github.com/Marak/colors.js" target="_blank" rel="noreferrer noopener">colors</a> and <a href="https://github.com/marak/Faker.js/" target="_blank" rel="noreferrer noopener">faker</a>, decided to corrupt the libraries, to denounce issues in open-source projects' funding system. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The <a href="https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6#diff-92bbac9a308cd5fcf9db165841f2d90ce981baddcb2b1e26cfff170929af3bd1R18" target="_blank" rel="noreferrer noopener">infinite loop</a> introduced by the developer broke several apps using these libraries by printing the text 'LIBERTY LIBERTY LIBERTY' and non-ASCII characters in the apps' logs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It causes a lot of trouble as the&nbsp;<a href="https://github.com/Marak/colors.js" target="_blank" rel="noreferrer noopener">colors</a>&nbsp;library receives over&nbsp;<a href="https://www.npmjs.com/package/colors" target="_blank" rel="noreferrer noopener">20 million weekly downloads</a>&nbsp;on npm alone and has almost 19,000 projects relying on it. Whereas,&nbsp;<a href="https://www.npmjs.com/package/faker" target="_blank" rel="noreferrer noopener">faker</a>&nbsp;receives over 2.8 million weekly downloads on npm, and has over 2,500 dependents.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5072,"sizeSlug":"large","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/faker-liberty-667x337.jpeg" alt="" class="wp-image-5072"/><figcaption>Non-ASCII characters found in the apps logs using the npm library 'color'</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:heading -->
<h2>How to check if your Node.js app is impacted?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The first thing to do is to check if your app is using the npm libraries 'colors' or 'faker'. To do so, run either:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre><code class="lang-shell">
npm ls colors
</code>
</pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Or</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre><code class="lang-shell">
npm ls faker
</code>
</pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>You will get an output like this:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre><code class="lang-shell">
my-project@1.2.3 /home/me/my-project
├─┬ @storybook/addon-docs@5.3.18
│ └─┬ vue-docgen-loader@1.5.0
│   └─┬ jscodeshift@0.7.0
│     └── colors@1.4.0  deduped
├─┬ @storybook/vue@5.3.18
│ └─┬ @storybook/core@5.3.18
│   └─┬ cli-table3@0.5.1
│     └── colors@1.4.0  deduped
└── colors@1.4.0
</code>
</pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>With this output, we can identify that this project uses 'colors' directly with version 1.4.0 and through transitive dependencies, also in version 1.4.0.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Your app uses 'colors' or 'faker', what can you do?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>If your app uses one of these npm libraries, we invite you to <strong>check three thing</strong>:</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Check the version</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First of all, you need to check if you're using one of the compromised versions of these libraries:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li>colors: <code>1.4.1</code>, <code>1.4.2</code>, and <code>1.4.44-liberty-2</code></li><li>faker: <code>6.6.6</code></li></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3>Check the package-lock.json</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Do you have a <code>package-lock.json</code>? If you don't we invite you to read <a href="https://docs.npmjs.com/cli/v8/configuring-npm/package-lock-json" target="_blank" rel="noreferrer noopener">the documentation</a> and add one to your project.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you do, you need to force a version which is not compromised (<code>1.4.0</code> for colors and <code>5.5.3</code> for 'faker'). You're using npm? You can try with the module <a href="https://github.com/rogeriochaves/npm-force-resolutions" target="_blank" rel="noreferrer noopener">npm-force-resolutions</a>. You're using Yarn? You can use the process described <a href="https://classic.yarnpkg.com/en/docs/selective-version-resolutions/" target="_blank" rel="noreferrer noopener">in this documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Update your tools to their latest version </h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We also invite you to check if the dependencies you use released an update. As an exemple, if you use <a href="https://storybook.js.org" target="_blank" rel="noreferrer noopener"><strong>Storybook</strong></a>, the <a href="https://github.com/storybookjs/storybook/releases/tag/v6.4.10" target="_blank" rel="noreferrer noopener">v6.4.10</a> released earlier yesterday fixes the issue.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>A note for Clever Tools users</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>By the way, if you use our CLI, the <a href="https://www.clever.cloud/developers/reference/clever-tools/" target="_blank" rel="noreferrer noopener">clever-tools</a>, and if you installed it via npm, <strong>please upgrade to v2.8.1</strong>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
