diff --git a/tutorials/actility-lorawan-operator/index.mdx b/tutorials/actility-lorawan-operator/index.mdx
index 7862b81415..1de2b6b178 100644
--- a/tutorials/actility-lorawan-operator/index.mdx
+++ b/tutorials/actility-lorawan-operator/index.mdx
@@ -9,7 +9,7 @@ tags: Iot-Hub LoRaWAN© Loriot
categories:
- iot-hub
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2020-07-02
---
diff --git a/tutorials/add-disk-configure-datastore-esxi/index.mdx b/tutorials/add-disk-configure-datastore-esxi/index.mdx
index 3536e4a34c..1f5dbe1a8e 100644
--- a/tutorials/add-disk-configure-datastore-esxi/index.mdx
+++ b/tutorials/add-disk-configure-datastore-esxi/index.mdx
@@ -10,7 +10,7 @@ categories:
- dedibox
hero: assets/scaleway_add_disk.webp
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2020-01-21
---
diff --git a/tutorials/automate-tasks-using-cron/index.mdx b/tutorials/automate-tasks-using-cron/index.mdx
index c4e036967e..a3770e300f 100644
--- a/tutorials/automate-tasks-using-cron/index.mdx
+++ b/tutorials/automate-tasks-using-cron/index.mdx
@@ -10,7 +10,7 @@ categories:
- elastic-metal
tags: cron cronjob automation ubuntu
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2019-11-09
---
diff --git a/tutorials/back-up-postgresql-barman/index.mdx b/tutorials/back-up-postgresql-barman/index.mdx
index 6e2321d1d4..035856cd5f 100644
--- a/tutorials/back-up-postgresql-barman/index.mdx
+++ b/tutorials/back-up-postgresql-barman/index.mdx
@@ -10,15 +10,17 @@ categories:
- postgresql-and-mysql
tags: backup barman postgresql
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2018-08-29
---
+
+
Barman is an open-source administration tool designed for PostgreSQL server disaster recovery. Developed in Python, Barman offers the capability to efficiently conduct remote backups across multiple servers in diverse business environments.
Setting itself apart with its unique methodology, Barman uses PostgreSQL logs for backup creation, offering a sophisticated alternative to traditional SQL dump processes.
diff --git a/tutorials/deploy-saas-application/index.mdx b/tutorials/deploy-saas-application/index.mdx
index 0bad69701e..7f5ceaa026 100644
--- a/tutorials/deploy-saas-application/index.mdx
+++ b/tutorials/deploy-saas-application/index.mdx
@@ -12,7 +12,7 @@ categories:
- postgresql-and-mysql
- kubernetes
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2021-03-09
---
@@ -98,7 +98,7 @@ In all applications, you have to define settings, usually based on environment v
Remember that Amazon S3 is a standard protocol. Even though the `boto3` library asks us to prefix variables with `AWS`, it nonetheless works perfectly with Scaleway Object Storage.
-
+
Even though we added a lot of lines to `settings.py`, only four environment variables are ultimately needed to use our Object Storage bucket: `ACCESS_KEY_ID`, `SECRET_ACCESS_KEY`, `AWS_S3_REGION_NAME` (eg `nl-ams`) and `AWS_STORAGE_BUCKET_NAME`. These variables are called using `os.getenv('MY_VAR_NAME')` so we now need to set these values.
diff --git a/tutorials/deploy-wordpress-from-application-library/index.mdx b/tutorials/deploy-wordpress-from-application-library/index.mdx
index 4757588eb8..b25b5eaa30 100644
--- a/tutorials/deploy-wordpress-from-application-library/index.mdx
+++ b/tutorials/deploy-wordpress-from-application-library/index.mdx
@@ -9,7 +9,7 @@ tags: kubernetes wordpress docker
categories:
- kubernetes
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2022-04-07
---
diff --git a/tutorials/django-ubuntu-focal-fossa/index.mdx b/tutorials/django-ubuntu-focal-fossa/index.mdx
index 4397785949..3c8866b9cf 100644
--- a/tutorials/django-ubuntu-focal-fossa/index.mdx
+++ b/tutorials/django-ubuntu-focal-fossa/index.mdx
@@ -9,7 +9,7 @@ categories:
- instances
tags: Django Ubuntu Focal-Fossa Linux
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2018-10-29
---
diff --git a/tutorials/encrypt-s3-data-rclone/index.mdx b/tutorials/encrypt-s3-data-rclone/index.mdx
index 43ddb3f13a..2930f2282e 100644
--- a/tutorials/encrypt-s3-data-rclone/index.mdx
+++ b/tutorials/encrypt-s3-data-rclone/index.mdx
@@ -9,7 +9,7 @@ categories:
- object-storage
tags: encryption amazon-s3 rclone
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2020-06-10
---
diff --git a/tutorials/nextjs-app-serverless-functions-sqldb/index.mdx b/tutorials/nextjs-app-serverless-functions-sqldb/index.mdx
index 04c8a4bb4a..36abd43a11 100644
--- a/tutorials/nextjs-app-serverless-functions-sqldb/index.mdx
+++ b/tutorials/nextjs-app-serverless-functions-sqldb/index.mdx
@@ -9,7 +9,7 @@ categories:
- sql-databases
tags: nextjs sql
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2024-03-14
---
@@ -41,11 +41,11 @@ You can either deploy your application:
2. Run the command below to make sure the environment variables are properly set:
```sh
- scw info
+ scw info
```
This command displays your access key and secret key in the last two lines of the output. The `ORIGIN` column should display `env (SCW_ACCESS_KEY)` and `env (SCW_SECRET_KEY)`, and not `default profile`.
-
+
```bash
KEY VALUE ORIGIN
(...)
@@ -64,8 +64,8 @@ You can either deploy your application:
create-next-app@14.0.3
Ok to proceed? (y) y
```
- This will create a folder named `my-nextjs-blog`.
-
+ This will create a folder named `my-nextjs-blog`.
+
5. Access the folder you just created:
```bash
cd my-nextjs-blog
@@ -89,7 +89,7 @@ You can either deploy your application:
# syntax=docker/dockerfile:1
FROM node:20-alpine
-
+
#Built time arguments used for pre-rendering
ARG PGHOST
ARG PGPORT
@@ -101,17 +101,17 @@ You can either deploy your application:
COPY ./ ./
RUN npm install
RUN npm run build
-
+
#Web application configuration
ENV PORT=8080
-
+
#Database configuration used for dynamically rendered data. These default values should be overwritten by container runtime environment variables
ENV PGHOST=localhost
ENV PGPORT=5432
ENV PGDATABASE=database
ENV PGUSER=user
ENV PGPASSWORD=password
-
+
CMD npm run start
```
@@ -124,7 +124,7 @@ You can either deploy your application:
4. Build your application container:
```bash
- docker build -t my-nextjs-blog .
+ docker build -t my-nextjs-blog .
```
5. Check that your container runs locally:
@@ -178,7 +178,7 @@ You can either deploy your application:
```
When the status appears as `ready`, you can access the website via your browser.
-
+
3. Copy the endpoint URL displayed next to the `DomainName` property, and paste it into your browser. The blog template displays.
Your Next.js application frontend is now online.
@@ -200,7 +200,7 @@ Your application cannot store any data persistently yet. We will now add a serve
```
These environment variables are default PostgreSQL variables and are automatically recognized by most PostgreSQL-compatible tools.
-
+
2. Connect to your database using the `psql` tool:
```bash
psql
@@ -214,9 +214,9 @@ Your application cannot store any data persistently yet. We will now add a serve
```bash
psql (15.3, server 16.1 (Debian 16.1-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, compression: off)
- Type "help" for help.
+ Type "help" for help.
- tutorial-nextjs=>
+ tutorial-nextjs=>
```
3. Create a table structure with the following query:
@@ -226,8 +226,8 @@ Your application cannot store any data persistently yet. We will now add a serve
4. Add data using the following command:
```sql
- insert into posts values
- ('Learn How to Pre-render Pages Using Static Generation with Next.js',
+ insert into posts values
+ ('Learn How to Pre-render Pages Using Static Generation with Next.js',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.',
'/assets/blog/hello-world/cover.jpg',
'2020-03-16T05:35:07.322Z',
@@ -236,7 +236,7 @@ Your application cannot store any data persistently yet. We will now add a serve
'/assets/blog/hello-world/cover.jpg',
'hello-world',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.'),
- ('Dynamic Routing and Static Generation',
+ ('Dynamic Routing and Static Generation',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.',
'/assets/blog/dynamic-routing/cover.jpg',
'2020-03-16T05:35:07.322Z',
@@ -245,7 +245,7 @@ Your application cannot store any data persistently yet. We will now add a serve
'/assets/blog/dynamic-routing/cover.jpg',
'dynamic-routing',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.'),
- ('Preview Mode for Static Generation',
+ ('Preview Mode for Static Generation',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.',
'/assets/blog/preview/cover.jpg',
'2020-03-16T05:35:07.322Z',
@@ -271,7 +271,7 @@ Your application cannot store any data persistently yet. We will now add a serve
Your application folder should be called `my-nextjs-blog` and structured as follows:
```bash
my-nextjs-blog/
- .next/
+ .next/
app/
node_modules/
public/
@@ -341,7 +341,7 @@ Note that this repository differs slightly in configuration, as it will dynamica
ogimage_url: "",
content: "",
preview: false
- }
+ }
} else{
var postRow = row
}
@@ -387,14 +387,14 @@ Note that this repository differs slightly in configuration, as it will dynamica
import { Intro } from "@/app/_components/intro";
import { MoreStories } from "@/app/_components/more-stories";
import { getAllPosts } from "../lib/api";
-
+
export default async function Index() {
const allPosts = await getAllPosts();
-
+
const heroPost = allPosts[0];
-
+
const morePosts = allPosts.slice(1);
-
+
return (
@@ -426,14 +426,14 @@ Note that this repository differs slightly in configuration, as it will dynamica
import Header from "../../_components/header";
import { PostBody } from "../../_components/post-body";
import { PostHeader } from "../../_components/post-header";
-
+
export default async function Post({ params }: Params) {
const post = await getPostBySlug(params.slug)
-
+
if (!post) {
return notFound();
}
-
+
return (
@@ -452,22 +452,22 @@ Note that this repository differs slightly in configuration, as it will dynamica
);
}
-
+
type Params = {
params: {
slug: string;
};
};
-
+
export async function generateMetadata({ params }: Params): Promise {
const post = await getPostBySlug(params.slug);
-
+
if (!post) {
return notFound();
}
-
+
const title = `${post.title} | Next.js Blog Example with ${CMS_NAME}`;
-
+
return {
openGraph: {
title,
@@ -475,23 +475,23 @@ Note that this repository differs slightly in configuration, as it will dynamica
},
};
}
-
+
export async function generateStaticParams() {
const posts = await getAllPosts();
-
+
return posts.map((post) => ({
slug: post.slug,
}));
}
```
-
+
4. Run the following command to ensure that you can run the application locally:
```bash
npm run dev
```
-
+
5. Access `http://localhost:3000` in a browser. The images and titles of the first blog post have been updated with the content from your database.
-
+
Congratulations! You can already deploy your application by building a new container version, pushing it to the **Container Registry**, and deploying it to **Serverless Containers**.
However, your application would then connect with your [user credentials](/iam/concepts/#user), which is not a recommended security practice.
@@ -548,7 +548,7 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
9. Refresh your browser page displaying the blog. An updated version displays.
Congratulations, you have deployed a full serverless Next.js application!
-
+
## Going further with containers
- **Edit the source code** locally, apply `scw container deploy` again, and see the **new version go live** in seconds.
@@ -580,11 +580,11 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
2. Run the command below to make sure the environment variables are properly set:
```sh
- scw info
+ scw info
```
This command displays your access_key and secret_key in the two last lines of the output. The `ORIGIN` column should display `env (SCW_ACCESS_KEY)` and `env (SCW_SECRET_KEY)`, and not `default profile`.
-
+
```bash
KEY VALUE ORIGIN
(...)
@@ -615,7 +615,7 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
1. Build your application container with:
```bash
- docker build -t my-nextjs-blog .
+ docker build -t my-nextjs-blog .
```
An error message `Error: connect ECONNREFUSED` might display when building. This is linked to Next.js prerendering stage without any database to connect to yet but will raise any issue at runtime because all pages will be dynamically rendered.
@@ -651,7 +651,7 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
docker tag my-nextjs-blog:latest $REGISTRY_ENDPOINT/my-nextjs-blog:latest
docker push $REGISTRY_ENDPOINT/my-nextjs-blog:latest
```
-
+
### Creating the Terraform/OpenTofu configuration
1. Run the following command to create a new folder inside `my-nextjs-blog` to store your Terraform/OpenTofu files, and access it:
@@ -679,22 +679,22 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
}
required_version = ">= 0.13"
}
-
+
variable "REGISTRY_ENDPOINT" {
type = string
description = "Container Registry endpoint where your application container is stored"
}
-
+
variable "DEFAULT_PROJECT_ID" {
type = string
description = "Project id where your resources will be created"
}
-
+
resource scaleway_container_namespace main {
name = "tutorial-nextjs-blog-tf"
description = "Namespace created for full serverless Nextjs app deployment"
}
-
+
resource scaleway_container main {
name = "tutorial-nextjs-blog-tf"
description = "Container for Nextjs blog"
@@ -710,7 +710,7 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
privacy = "public"
protocol = "http1"
deploy = true
-
+
environment_variables = {
"PGUSER" = scaleway_iam_application.app.id,
"PGHOST" = trimsuffix(trimprefix(regex(":\\/\\/.*:",scaleway_sdb_sql_database.database.endpoint), "://"),":")
@@ -721,11 +721,11 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
"PGPASSWORD" = scaleway_iam_api_key.api_key.secret_key,
}
}
-
+
resource scaleway_iam_application "app" {
name = "tutorial-nextjs-app-tf"
}
-
+
resource scaleway_iam_policy "db_access" {
name = "tutorial-nextjs-policy-tf"
description = "Gives tutorial Nextjs app access to Serverless SQL Database"
@@ -735,17 +735,17 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
permission_set_names = ["ServerlessSQLDatabaseReadWrite"]
}
}
-
+
resource scaleway_iam_api_key "api_key" {
application_id = scaleway_iam_application.app.id
}
-
+
resource scaleway_sdb_sql_database "database" {
name = "tutorial-nextjs-tf"
min_cpu = 0
max_cpu = 8
}
-
+
output "database_connection_string" {
// Output as an example, you can give this string to your application
value = format("postgres://%s:%s@%s",
@@ -755,7 +755,7 @@ To secure your deployment, we will now add a dedicated [IAM application](/iam/co
)
sensitive = true
}
-
+
output "container_url" {
// Output as an example, you can give this string to your application
value = scaleway_container.main.domain_name
@@ -845,8 +845,8 @@ The Terraform/OpenTofu file creates several resources:
3. Add data using the following command:
```sql
- insert into posts values
- ('Learn How to Pre-render Pages Using Static Generation with Next.js',
+ insert into posts values
+ ('Learn How to Pre-render Pages Using Static Generation with Next.js',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.',
'/assets/blog/hello-world/cover.jpg',
'2020-03-16T05:35:07.322Z',
@@ -855,7 +855,7 @@ The Terraform/OpenTofu file creates several resources:
'/assets/blog/hello-world/cover.jpg',
'hello-world',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.'),
- ('Dynamic Routing and Static Generation',
+ ('Dynamic Routing and Static Generation',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.',
'/assets/blog/dynamic-routing/cover.jpg',
'2020-03-16T05:35:07.322Z',
@@ -864,7 +864,7 @@ The Terraform/OpenTofu file creates several resources:
'/assets/blog/dynamic-routing/cover.jpg',
'dynamic-routing',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.'),
- ('Preview Mode for Static Generation',
+ ('Preview Mode for Static Generation',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.',
'/assets/blog/preview/cover.jpg',
'2020-03-16T05:35:07.322Z',
@@ -916,7 +916,7 @@ The Terraform/OpenTofu file creates several resources:
```
- The new version is live a few seconds later.
-
+
- Inspect your newly created resources in the Scaleway console:
- You can display your **Registry namespace** and **container image** in the [Container Registry section](https://console.scaleway.com/registry/namespaces)
@@ -928,7 +928,7 @@ The Terraform/OpenTofu file creates several resources:
- **Fine-tune deployment options** such as autoscaling, targeted regions, and more. You can find more information by typing `scw container deploy --help` in your terminal, or by referring to the [dedicated documentation](/serverless-containers/how-to/manage-a-container/).
- **Change the security configuration** for your container. It is currently public and anyone with the link can access it, but you can make it [private to require authentication](https://www.scaleway.com/en/developers/api/serverless-containers/#authentication).
-
+
## Troubleshooting
If you happen to encounter any issues, first check that you meet all the requirements.
@@ -942,7 +942,7 @@ If you happen to encounter any issues, first check that you meet all the require
UpdatedAt 1 year ago
Description -
```
-
+
You can also find and compare your Project and Organization ID in the [Scaleway console settings](https://console.scaleway.com/project/settings).
- You have **Docker Engine** installed. Running the `docker -v` command in a terminal should display your currently installed docker version:
diff --git a/tutorials/nvidia-triton/index.mdx b/tutorials/nvidia-triton/index.mdx
index 2f675ea094..6f02a33c7d 100644
--- a/tutorials/nvidia-triton/index.mdx
+++ b/tutorials/nvidia-triton/index.mdx
@@ -11,7 +11,7 @@ categories:
- object-storage
tags: gpu nvidia triton object-storage
dates:
- validation: 2024-09-19
+ validation: 2024-03-27
posted: 2023-08-23
---
diff --git a/tutorials/proxy-protocol-v2-load-balancer/index.mdx b/tutorials/proxy-protocol-v2-load-balancer/index.mdx
index e5ce4c2df1..fca66bd974 100644
--- a/tutorials/proxy-protocol-v2-load-balancer/index.mdx
+++ b/tutorials/proxy-protocol-v2-load-balancer/index.mdx
@@ -10,16 +10,18 @@ categories:
- network
- load-balancer
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2019-06-28
---
+
-[Proxy Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) allows a backend application, like an Apache or Nginx web server, to retrieve client connection information that has passed through a load-balanced infrastructure. The protocol transports connection information including the originating IP address, the proxy server IP address, and both ports.
+
+Proxy Protocol allows a backend application, like an Apache or Nginx web server, to retrieve client connection information that has passed through a load-balanced infrastructure. The protocol transports connection information, including the originating IP address, the proxy server IP address, and both ports.
This tutorial shows you how and why to enable Proxy Protocol on your Scaleway Load Balancer, and how to configure your backend server application to correctly handle the protocol.
diff --git a/tutorials/rtmp-self-hosted-streaming/index.mdx b/tutorials/rtmp-self-hosted-streaming/index.mdx
index 1f789a3170..55b3636cb9 100644
--- a/tutorials/rtmp-self-hosted-streaming/index.mdx
+++ b/tutorials/rtmp-self-hosted-streaming/index.mdx
@@ -10,7 +10,7 @@ categories:
hero: assets/scaleway_rtmp.webp
tags: streaming RTMP broadcast OBS-Client Multistreaming
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2019-05-20
---
diff --git a/tutorials/setup-minecraft/index.mdx b/tutorials/setup-minecraft/index.mdx
index 7cf1404042..9493ebcca8 100644
--- a/tutorials/setup-minecraft/index.mdx
+++ b/tutorials/setup-minecraft/index.mdx
@@ -9,7 +9,7 @@ tags: Minecraft gaming ubuntu
categories:
- instances
dates:
- validation: 2024-09-16
+ validation: 2025-03-27
posted: 2019-11-15
---