diff --git a/pages/account/reference-content/use-case-informational-website.mdx b/pages/account/reference-content/use-case-informational-website.mdx index 6d61dedac3..a68cd06293 100644 --- a/pages/account/reference-content/use-case-informational-website.mdx +++ b/pages/account/reference-content/use-case-informational-website.mdx @@ -3,7 +3,7 @@ title: Hosting an informational website description: Learn about the different ways to deploy an informational website (blog, portfolio, showcase) with Scaleway. tags: use-case informational-website website blog portfolio showcase dates: - validation: 2025-05-15 + validation: 2025-10-08 posted: 2025-05-15 --- @@ -16,6 +16,7 @@ Your informational website can be based on several different architectures, that | Based on Object Storage | Cost-effective and highly available, suitable for static content. | Limited to serving static files, no server-side processing. | | Based on Web Hosting | Easy to set up and manage, suitable for small to medium websites. | Less control over the environment, can be limited in terms of customization. | | Based on Instances | Full control over the server environment, suitable for complex applications. | More complex setup and management, potentially higher costs. | +| Based on Serverless Containers | Easy to deploy, scalable performance and cost, for static and dynamic websites. | Limited control over underlying hardware. | | Based on Elastic Metal (Aluminium) and Flexible IPs | Dedicated physical resources and high performance, suitable for demanding applications. | Higher costs, requires more technical expertise to manage. | @@ -72,6 +73,18 @@ Hosting using Instances is a solution suited for users familiar with Unix operat 5. (Optional) Edit your WordPress settings to add your domain name. +## Hosting a website using Serverless Containers + +1. [Register a domain name](/domains-and-dns/quickstart/#how-to-register-an-internal-domain/). Scaleway Domains and DNS allows you to manage and register your internal and external domains and configure and manage their DNS zones. + +2. Containerize your application, then build and [push its image to the Scaleway Container Registry](/serverless-containers/how-to/build-push-container-image/). + +3. [Deploy a Serverless Container](/serverless-containers/how-to/deploy-container/) based on your app image. + +4. [Add a custom domain to your container](/serverless-containers/how-to/add-a-custom-domain-to-a-container/). + +Refer to the [Containers use cases page](/serverless-containers/reference-content/use-cases/) for more information on the different apps you can deploy using Serverless Containers. + ## Hosting a website using Elastic Metal (Aluminium) Elastic Metal (Aluminium) is an expert-level solution for users who require full control over the infrastructure. It provides optimal performance by leveraging the dedicated hardware resources at a cost lower than equivalent instances. You can install any operating system and applications you need, but you are responsible for maintaining your entire software stack. diff --git a/pages/use-cases/application-hosting/index.mdx b/pages/use-cases/application-hosting/index.mdx index e1705dc6ec..f4496f8dd4 100644 --- a/pages/use-cases/application-hosting/index.mdx +++ b/pages/use-cases/application-hosting/index.mdx @@ -22,6 +22,22 @@ Looking to deploy a web application? Scaleway offers scalable and secure hosting url="/tutorials/deploy-saas-application/" /> + + + + ## Related tutorials diff --git a/pages/use-cases/deploy-external-software/index.mdx b/pages/use-cases/deploy-external-software/index.mdx index b0c6088f72..dc20762cc9 100644 --- a/pages/use-cases/deploy-external-software/index.mdx +++ b/pages/use-cases/deploy-external-software/index.mdx @@ -7,6 +7,13 @@ description: Discover how to deploy and manage external software with Scaleway's Need to deploy and manage external software on your cloud infrastructure? Scaleway provides the tools and services to help you deploy, manage, and scale external software efficiently. + - ## Related tutorials diff --git a/pages/use-cases/website-hosting/index.mdx b/pages/use-cases/website-hosting/index.mdx index ca40aa038b..92dcc997d6 100644 --- a/pages/use-cases/website-hosting/index.mdx +++ b/pages/use-cases/website-hosting/index.mdx @@ -38,6 +38,13 @@ Need to deploy a simple or complex website? Scaleway provides the tools and infr label="Read more" url="/tutorials/wordpress-instantapp/" /> + ## Related tutorials diff --git a/tutorials/hosting-django-webapp-serverless-containers/index.mdx b/tutorials/hosting-django-webapp-serverless-containers/index.mdx new file mode 100644 index 0000000000..397bbd89ac --- /dev/null +++ b/tutorials/hosting-django-webapp-serverless-containers/index.mdx @@ -0,0 +1,159 @@ +--- +title: Hosting a Django web app with Serverless Containers +description: This page provides guidelines on how to host and deploy dynamic Django web applications using Scaleway Serverless Containers +tags: deploy host website webapp python django containerize application docker dockerfile +products: + - containers + - container-registry +dates: + validation: 2025-10-06 + posted: 2025-10-06 + validation_frequency: 12 +difficulty: beginner +usecase: + - application-hosting + - deploy-external-software + - website-hosting +ecosystem: + - third-party +--- + +import Requirements from '@macros/iam/requirements.mdx' + +[Django](https://www.djangoproject.com/) is a robust Python framework designed for rapid development of secure and maintainable web applications. Hosting Django on [Scaleway Serverless Containers](/serverless-containers/) provides automatic scaling, simplified deployment, and reduced infrastructure management. This deployment method allows your application to efficiently handle varying workloads, while you can optimize resource usage, and focus on writing code and delivering features rather than maintaining servers. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Installed [Docker](https://docs.docker.com/get-started/get-docker/) or [Docker Engine](https://docs.docker.com/engine/install/) +- [Created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/) and [logged into it](/container-registry/how-to/connect-docker-cli/) + +## Create and host a basic Django web application + +To host a [Django](https://www.djangoproject.com/) web application on **Scaleway Serverless Containers**, you need to create a Django project, define your views and URLs, and containerize it using a production-ready `Dockerfile`. The container will run a WSGI server (like Gunicorn) to serve your app. After building the image locally, push it to the [Scaleway Container Registry](/container-registry/) and deploy it via [Scaleway Serverless Containers](/serverless-containers/). + +### Create your app and test it locally + +1. In a terminal, create a new directory and navigate into it: + ```bash + mkdir my-django-app + cd my-django-app + ``` + +2. Create a virtual environment and install Django: + + + + ```bash + python3 -m venv venv + source venv/bin/activate + pip install django gunicorn + ``` + + + ```bash + python -m venv venv + venv\Scripts\activate + pip install django gunicorn + ``` + + + +3. Start a new Django project: + ```bash + django-admin startproject myproject . + ``` + +4. Verify the project structure: + ``` + my-django-app/ + ├── myproject/ + │ ├── __init__.py + │ ├── settings.py # Configuration + │ ├── urls.py # URL routing + │ └── wsgi.py # WSGI application entry point + ├── manage.py # CLI for Django commands + └── venv/ # Virtual environment (excluded from Docker) + ``` + +5. Create a `requirements.txt` file and add the following code to it: + ```txt + Django==5.1.* + gunicorn==21.2.* + ``` + +6. Run the following command to test the app locally: + ```bash + python manage.py runserver + ``` + Visit [http://localhost:8000](http://localhost:8000) to see the default Django welcome page. + +### Build the app image and push it to Scaleway Container Registry + +Before building and pushing your image, ensure you have [created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/), and [logged into it with the Docker CLI](/container-registry/how-to/connect-docker-cli/). + +1. Create a `Dockerfile` at the root of your Django app: + ```dockerfile + # Use a lightweight Python image + FROM python:3.11-slim + + # Set working directory + WORKDIR /app + + # Install system dependencies + RUN apt-get update && apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* + + # Copy and install Python dependencies + COPY requirements.txt . + RUN pip install --no-cache-dir -r requirements.txt + + # Copy the rest of the application + COPY . . + + # Expose port + EXPOSE 8000 + + # Run Gunicorn as the entrypoint + CMD ["gunicorn", "--bind", "0.0.0.0:8000", "myproject.wsgi:application"] + ``` + +2. Edit the `settings.py` file of your project with the code below to allow the Scaleway endpoint corresponding to your region, and remove unwanted endpoints: + + ```py + ALLOWED_HOSTS = [ + '.fr-par.scw.cloud', + '.nl-ams.scw.cloud', + '.pl-waw.scw.cloud' + ] + ``` + +3. Build, tag, and push the image to Scaleway Container Registry: + ```bash + docker build \ + --platform linux/amd64 \ + --push \ + -t /my-django-app:latest . + ``` + + You can find your Container Registry endpoint in the **Overview** tab of your Container Registry namespace in the [Scaleway console](https://console.scaleway.com/registry/namespaces). + + +### Deploy your app using Serverless Containers + +1. [Deploy a Serverless Container](/serverless-containers/how-to/deploy-container/) with the following settings: + - **Registry**: Scaleway Container Registry + - **Registry namespace**: The namespace where you pushed your image + - **Container port**: `8000` as it is the [port](/serverless-containers/reference-content/port-parameter-variable/) exposed in the dockerfile. + - **Resources**: `500 mVCPU` and `512 MB` memory + - **Autoscaling**: Set minimum scale to `1` to avoid [cold starts](/serverless-containers/concepts/#cold-start) (optional) + + Deployment may take up to a minute. + +2. Once the container is **ready**, click the **container endpoint** in the **Overview** tab. Your Django app will be live and accessible to anyone with the link. + +## Going further + +- You can deploy an existing Django project by building and pushing its container image as shown above. +- [Add a custom domain](/serverless-containers/how-to/add-a-custom-domain-to-a-container/) to your deployed app. diff --git a/tutorials/hosting-go-gin-webapp-serverless-containers/index.mdx b/tutorials/hosting-go-gin-webapp-serverless-containers/index.mdx new file mode 100644 index 0000000000..09257febc9 --- /dev/null +++ b/tutorials/hosting-go-gin-webapp-serverless-containers/index.mdx @@ -0,0 +1,185 @@ +--- +title: Hosting a Go Gin web app with Serverless Containers +description: This page provides guidelines on how to host and deploy a Go web application using the Gin framework with Scaleway Serverless Containers +tags: deploy host website webapp go gin golang containerize application docker dockerfile +products: + - containers + - container-registry +dates: + validation: 2025-10-06 + posted: 2025-10-06 + validation_frequency: 12 +difficulty: beginner +usecase: + - application-hostor + - deploy-external-software + - website-hosting +ecosystem: + - third-party +--- + +import Requirements from '@macros/iam/requirements.mdx' + +[Gin](https://gin-gonic.com/) is a lightweight, high-performance web framework for Go, ideal for building fast APIs and web applications with minimal overhead. Hosting Gin apps on [Scaleway Serverless Containers](/serverless-containers/) provides automatic scaling, simplified deployment, and reduced infrastructure management. This deployment method enables your application to efficiently handle varying workloads, optimize resource usage, and lets you focus on writing code and building features rather than maintaining servers. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Installed [Docker](https://docs.docker.com/get-started/get-docker/) or [Docker Engine](https://docs.docker.com/engine/install/) +- [Created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/) and [logged into it](/container-registry/how-to/connect-docker-cli/) +- [Installed go 1.23 or newer](https://go.dev/doc/install) + + +## Create and host a basic Go Gin web application + +To host a [Go](https://go.dev/) web application using the [Gin framework](https://gin-gonic.com/) on **Scaleway Serverless Containers**, you need to create a simple Go project, define HTTP handlers, and containerize it using a production-ready `Dockerfile`. After building the container image locally, push it to the [Scaleway Container Registry](/container-registry/) and deploy it via [Scaleway Serverless Containers](/serverless-containers/). + +Gin is a lightweight, high-performance web framework for Go, ideal for building fast APIs and web apps with minimal overhead. + +### Create your app and test it locally + +1. In a terminal, create a new directory and navigate into it: + ```bash + mkdir my-gin-app + cd my-gin-app + ``` + +2. Initialize a Go module: + ```bash + go mod init my-gin-app + ``` + +3. Create a `main.go` file, then add the code below to it to create a basic Gin server: + ```go + package main + + import "github.com/gin-gonic/gin" + + func main() { + r := gin.Default() + r.LoadHTMLGlob("templates/*") + + r.GET("/", func(c *gin.Context) { + c.HTML(200, "index.html", nil) + }) + + r.Run("0.0.0.0:8080") + } + ``` + +4. Create a `templates` folder to store HTTP files. + + ```bash + mkdir templates + ``` + +5. Create an `index.html` file in the `templates` folder, then add the code below to it: + + ```html + + + + + + Hello + + + +

Hello from Gin 🌿

+

A minimal page, fast and clean, running on Scaleway Serverless Containers.

+ + + ``` + +6. Run the following command to install the Gin package: + ```bash + go get -u github.com/gin-gonic/gin + ``` + +7. Test the app locally: + ```bash + go run main.go + ``` + Visit [http://localhost:8080](http://localhost:8080) to see the homepage of your web app. + +### Build the app image and push it to Scaleway Container Registry + +Before building and pushing your image, ensure you have [created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/), and [logged into it with the Docker CLI](/container-registry/how-to/connect-docker-cli/). + +1. Create a `Dockerfile` at the root of your project: + ```dockerfile + # Use a lightweight Go image for building + FROM golang:1.25-alpine AS builder + + # Set working directory + WORKDIR /app + + # Copy go mod files + COPY go.mod go.sum ./ + RUN go mod download + + # Copy source code + COPY . . + + # Build the Go binary + RUN go build -o main . + + # Final stage: minimal image + FROM alpine:latest + + # Install CA certificates + RUN apk --no-cache add ca-certificates + + # Set working directory + WORKDIR /root/ + + # Copy binary from builder stage + COPY --from=builder /app/main . + + # Expose port + EXPOSE 8080 + + # Run the binary + CMD ["./main"] + ``` + +2. Build, tag, and push the image to Scaleway Container Registry: + ```bash + docker build \ + --platform linux/amd64 \ + --push \ + -t /my-gin-app:latest . + ``` + + + You can find your Container Registry endpoint in the **Settings** tab of your Container Registry namespace in the [Scaleway console](https://console.scaleway.com/registry/namespaces). + + +### Deploy your app using Serverless Containers + +1. [Deploy a Serverless Container](/serverless-containers/how-to/deploy-container/) with the following settings: + - **Registry**: Scaleway Container Registry + - **Registry namespace**: The namespace where you pushed your image + - **Container port**: `8080` (matches the port in the Go app and Dockerfile) + - **Resources**: `250 mVCPU` and `256 MB` memory (Go apps are lightweight) + - **Autoscaling**: Set minimum scale to `1` to avoid [cold starts](/serverless-containers/concepts/#cold-start) (optional) + + Deployment may take up to a minute. + +2. Once the container is **ready**, click the **container endpoint** in the **Overview** tab. Your Gin app will be live and accessible to anyone with the link. + +## Going further + +- You can deploy an existing Go Gin project by building and pushing its container image as shown above. +- [Add a custom domain](/serverless-containers/how-to/add-a-custom-domain-to-a-container/) to your deployed app. +- Secure your app with HTTPS — Scaleway automatically provides TLS for container endpoints. diff --git a/tutorials/hosting-nextjs-webapp-serverless-containers/index.mdx b/tutorials/hosting-nextjs-webapp-serverless-containers/index.mdx new file mode 100644 index 0000000000..8d4f6163d3 --- /dev/null +++ b/tutorials/hosting-nextjs-webapp-serverless-containers/index.mdx @@ -0,0 +1,138 @@ +--- +title: Hosting a Next.js web app with Serverless Containers +description: This page provides guidelines on how to host and deploy dynamic Next.js web applications using Scaleway Serverless Containers +tags: deploy host website webapp react next containerize application docker dockerfile +products: + - containers + - container-registry +dates: + validation: 2025-10-06 + posted: 2025-10-06 + validation_frequency: 12 +difficulty: beginner +usecase: + - application-hosting + - deploy-external-software + - website-hosting +ecosystem: + - third-party +--- + +import Requirements from '@macros/iam/requirements.mdx' + +[Next.js](https://nextjs.org/) is a powerful React framework for building fast, scalable web applications with server-side rendering and static site generation. Hosting Next.js on [Scaleway Serverless Containers](/serverless-containers/) provides automatic scaling, simplified deployment, and minimal infrastructure management. This approach lets your application efficiently handle dynamic traffic, optimize resource usage, while you can focus on writing code and developing features rather than maintaining servers. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Installed [Docker](https://docs.docker.com/get-started/get-docker/) or [Docker Egine](https://docs.docker.com/engine/install/) +- [Created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/) and [logged into it](/container-registry/how-to/connect-docker-cli/) + +## Create and host a basic Next.js web application + +To host a [Next.js](https://nextjs.org/) web app on Serverless Containers, you must create a Next.js project, implement your pages and any API routes, and add a production-ready Dockerfile that builds and serves the app — either by running a Node server with `next build && next start` or by exporting static files with `next export` if your app is fully static. Build the container image locally, push it to the [Scaleway Container Registry](/container-registry/), and deploy it to [Scaleway Serverless Containers](/serverless-containers/). + +### Create your app and test it locally + +1. In a terminal, run the command below to create a new folder and access it: + + ```bash + mkdir my-nextjs-app + cd my-nextjs-app + ``` + +2. Run the command below to create an example Next.js application using the default template. You can also use an example from the [official Next.js GitHub repository](https://github.com/vercel/next.js/tree/canary/examples). + + ```bash + npx create-next-app@latest my-nextjs-app + ``` + +3. When prompted, configure your app according to your needs, or keep the default values to start quickly. Next.js will then create an app with a folder structure similar to the following: + + ``` + my-nextjs-app/ + ├── app/ # Core: Routes using the App Router + │ ├── layout.tsx # Root layout (shared across pages) + │ ├── page.tsx # Homepage (http://localhost:3000) + │ └── globals.css # Global styles + │ + ├── public/ # Static assets (served at /) + │ ├── logo.svg + │ └── favicon.ico + │ + ├── components/ # (Optional) Your reusable components + │ └── ... + │ + ├── styles/ # (Optional) CSS modules or theme files + │ └── ... + │ + ├── next.config.js # Next.js configuration file + ├── tailwind.config.js # If you chose Tailwind + ├── postcss.config.js # PostCSS setup (used with Tailwind) + ├── package.json # Dependencies and scripts + ├── package-lock.json # Locked dependencies + ├── .gitignore # Git ignore rules + └── README.md # Auto-generated docs + ``` + +4. Run the command below to run your application locally: + + ```bash + cd my-nextjs-app + npm run dev + ``` + + Access [http://localhost:3000](http://localhost:3000) to view the homepage of your web app. + +### Build the app image and push it to Scaleway Container Registry + +Before creating and pushing your image to the registry, make sure you have [Created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/) and [logged into it](/container-registry/how-to/connect-docker-cli/). + +1. Create a new `dockerfile` file at the root of your app folder, then add the following code to it: + + ```dockerfile + # Build the Next.js app + FROM node:22-alpine + WORKDIR /app + COPY package*.json ./ + RUN npm install + COPY . . + RUN npm run build + + # Expose port and run server + EXPOSE 3000 + CMD ["npm", "start"] + ``` + +2. Run the command below to build, tag, and push your image to the Scaleway Container registry: + + ```bash + docker build \ + --platform linux/amd64 \ + --push \ + -t /my-nextjs-app:latest . + ``` + + + You can find your Container Registry endpoint in the **Overview** tab of your Container Registry Endpoint in the [Scaleway console](https://console.scaleway.com/registry/namespaces) + + +### Deploy your app using Serverless Containers + +1. [Deploy a Serverless Container](/serverless-containers/how-to/deploy-container/) with the following parameters: + + - **Registry**: Scaleway Container Registry + - **Registry namespace**: the Container Registry namespace you pushed your image to. + - **Container port**: `3000` as it is the [port](/serverless-containers/reference-content/port-parameter-variable/) exposed in the dockerfile. + - **Resources**: `1000 mVCPU` and `1024 MB` memory. + - **Autoscaling**: set a minimum scale of `1` to avoid [cold starts](/serverless-containers/concepts/#cold-start) (optional). + + The deployment of your container can take up to a minute to complete. + +2. Once your container is **ready**, click the **container endpoint** from its **Overview** tab. Your web page displays, and is available to anyone with the link. + +## Going further + +- You can deploy an already existing app by building its image and pushing it to the Scaleway Container registry as explained above. +- You can [add a custom domain](/serverless-containers/how-to/add-a-custom-domain-to-a-container/) name to your website. diff --git a/tutorials/hosting-static-websites-serverless-containers/index.mdx b/tutorials/hosting-static-websites-serverless-containers/index.mdx new file mode 100644 index 0000000000..c86e6366d2 --- /dev/null +++ b/tutorials/hosting-static-websites-serverless-containers/index.mdx @@ -0,0 +1,95 @@ +--- +title: Hosting a static website with Serverless Containers +description: This page provides guidelines on how to host and deploy a static website using Scaleway Serverless Containers +tags: deploy host website webapp html static containerize application docker dockerfile +products: + - containers + - container-registry +dates: + validation: 2025-10-06 + posted: 2025-10-06 + validation_frequency: 12 +difficulty: beginner +usecase: + - application-hosting + - deploy-external-software + - website-hosting +ecosystem: + - third-party +--- + +import Requirements from '@macros/iam/requirements.mdx' + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Installed [Docker](https://docs.docker.com/get-started/get-docker/) or [Docker Egine](https://docs.docker.com/engine/install/) +- [Created a Scaleway Container Registry namespace](/container-registry/how-to/create-namespace/) and [logged into it](/container-registry/how-to/connect-docker-cli/) + +## Create and host a simple HTML static page + +To host a static HTML page on Serverless Containers, you first need to create a simple HTML page that will serve as your website. Next, you will write a Dockerfile to containerize your application, specifying how your HTML file should be served. You will then build the container image locally, and push it to the [Scaleway Container Registry](/container-registry/), before deploying it to [Scaleway Serverless Containers](/serverless-containers/). + +1. In a terminal, run the command below to create a new folder and access it: + + ```bash + mkdir my-static-website + cd my-static-website + ``` + +2. Create a new `index.html` file and add the example code below to it: + + ```html + + + + + Simple HTML Page + + +

Hello World

+

This is a simple paragraph.

+ + + ``` + +3. In the same folder, create a new `dockerfile` file and add the following code to it: + + ```dockerfile + FROM nginx:alpine + COPY ./my-static-website /usr/share/nginx/html + EXPOSE 80 + ``` + +4. Run the command below to build, tag, and push your image to the Scaleway Container registry: + + ```bash + docker build \ + --platform linux/amd64 \ + --push \ + -t /my-static-website:latest . + ``` + + + You can find your Container Registry endpoint in the **Settings** tab of your Container Registry Endpoint in the [Scaleway console](https://console.scaleway.com/registry/namespaces) + + +5. [Deploy a Serverless Container](/serverless-containers/how-to/deploy-container/) with the following parameters: + + - **Registry**: Scaleway Container Registry + - **Registry namespace**: the Container Registry namespace you pushed your image to. + - **Container port**: `8O` as it is the [port](/serverless-containers/reference-content/port-parameter-variable/) exposed in the dockerfile. + - **Resources**: `100 mVCPU` and `256 MB` memory + - **Autoscaling**: set a minimum scale of `1` to avoid [cold starts](/serverless-containers/concepts/#cold-start) (optional). + + The deployment of your container can take up to a minute to complete. + +6. Once your container is **ready**, click the **container endpoint** from its **Overview** tab. Your web page displays, and is available to anyone with the link. + +## Going further + +- You can host a website composed of multiple pages in the `my-static-website` folder. +- You can [add a custom domain](/serverless-containers/how-to/add-a-custom-domain-to-a-container/) name to your website. +- You can host dynamic websites using dedicated frameworks for high-quality web applications.