<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://agora.nasqueron.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MoustaphaAs</id>
	<title>Nasqueron Agora - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://agora.nasqueron.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MoustaphaAs"/>
	<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/Special:Contributions/MoustaphaAs"/>
	<updated>2026-05-26T06:39:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0-alpha</generator>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1912</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1912"/>
		<updated>2024-11-29T11:21:38Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: /* Useful Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
Keycloak is an open-source identity and access management solution designed for modern applications and services. It provides centralized authentication and authorization, enabling Single Sign-On (SSO), identity brokering, and social login integration. With support for both OAuth2.0 and OpenID Connect protocols, Keycloak simplifies security management by handling user authentication, session management, and access control. Whether you&#039;re building cloud-native applications or integrating legacy systems, Keycloak offers a scalable, flexible, and secure solution for managing user identities and permissions across a wide range of platforms.&lt;br /&gt;
&lt;br /&gt;
== Keycloak Puzzle Pieces ==&lt;br /&gt;
&lt;br /&gt;
Keycloak is built on several key components, each playing a crucial role in identity and access management. Below is a breakdown of these &amp;quot;puzzle pieces&amp;quot; and their functions:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Realm&#039;&#039;&#039;  &lt;br /&gt;
is an isolated space used to manage a group of users, applications, and security configurations. Realms allow you to separate data and configurations, making them ideal for multi-tenant environments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clients&#039;&#039;&#039;  &lt;br /&gt;
are applications or services that use Keycloak for authentication and authorization. Each client can have its own security settings, such as authentication types and specific roles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;  &lt;br /&gt;
are entities who log in to your applications. Keycloak manages user information, including credentials, roles, and groups.  &lt;br /&gt;
What properties are available for users? (e.g., first name, last name, email, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Roles&#039;&#039;&#039;  &lt;br /&gt;
are sets of permissions assigned to users or groups. They help control access to resources in a granular way.  &lt;br /&gt;
How to authenticate users on servers? (e.g., using username/password, multi-factor authentication, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Groups&#039;&#039;&#039;  &lt;br /&gt;
are a way to organize users. Groups can have associated roles, simplifying the management of permissions for a set of users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication Protocols,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak supports various authentication protocols, including OpenID Connect and SAML. This allows integration with a wide range of services and applications.  &lt;br /&gt;
What should be the multi-factor authentication policy? (e.g., SMS, authenticator apps, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication and Flows,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak allows you to define custom authentication flows, including steps like password validation, multi-factor authentication, and more.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Identity Brokering,&#039;&#039;&#039;  &lt;br /&gt;
This feature allows Keycloak to act as an intermediary for other identity providers, enabling users to log in with third-party accounts (e.g., Google, Facebook, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Admin Console&#039;&#039;&#039;  &lt;br /&gt;
is a web interface used to manage users, clients, roles, and security configurations in Keycloak. It is the primary tool for administrators.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REST API,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak provides a REST API to interact with the server, allowing integration with other systems and automation of administrative tasks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extensions and SPI (Service Provider Interfaces),&#039;&#039;&#039;  &lt;br /&gt;
Keycloak allows customizations via extensions and service provider interfaces (SPIs), enabling the development of additional functionality tailored to specific needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Build an LDAP Schema ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to construct an LDAP schema:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;1. Understand Basic Concepts&#039;&#039;&#039;&lt;br /&gt;
Familiarize yourself with **ObjectClasses** and **Attributes**. Each entry in an LDAP directory must be associated with at least one ObjectClass, which defines the type of entry (e.g., user, group).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;2. Define ObjectClasses&#039;&#039;&#039;&lt;br /&gt;
Create ObjectClasses that represent the types of entries you wish to store. For example, an ObjectClass for users might include attributes such as `cn` (common name) and `mail` (email address).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;3. Define Attributes&#039;&#039;&#039;&lt;br /&gt;
Define the attributes that each ObjectClass can have. Each attribute must have a name, a syntax, and can be marked as required (`MUST`) or optional (`MAY`).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;4. Create the Schema File&#039;&#039;&#039;&lt;br /&gt;
Gather all the definitions of ObjectClasses and attributes into an LDIF file. This file will contain all the information necessary to add your schema to an LDAP server.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;5. Add the Schema to OpenLDAP&#039;&#039;&#039;&lt;br /&gt;
Use the `ldapadd` command to add the schema to your OpenLDAP server. Make sure to use the correct options for authentication and the path to the LDIF file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;6. Test the Schema&#039;&#039;&#039;&lt;br /&gt;
After adding the schema, test it by adding entries that use the new ObjectClasses and attributes. Verify that the LDAP server accepts the new entries and that the validations are working properly.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;7. Maintain and Evolve the Schema&#039;&#039;&#039;&lt;br /&gt;
As your needs change, you may need to update your schema. This may include adding new attributes or ObjectClasses.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
&lt;br /&gt;
* [Create a new LDAP client schema - NetApp](https://docs.netapp.com/fr-fr/ontap/nfs-config/create-new-ldap-client-schema-task.html) - Guide on how to create a new LDAP client schema for NetApp.&lt;br /&gt;
* [LDAP Tutorial - INRIA](https://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html) - Comprehensive LDAP tutorial from INRIA.&lt;br /&gt;
* [Add a specific schema - Vincent Liefooghe](https://www.vincentliefooghe.net/content/ajouter-un-sch%C3%A9ma-sp%C3%A9fique) - Instructions for adding a specific LDAP schema by Vincent Liefooghe.&lt;br /&gt;
* [Keycloak Documentation](https://www.keycloak.org/documentation) - Official Keycloak documentation, providing extensive resources on setup, configuration, and usage.&lt;br /&gt;
* [Keycloak GitHub Repository](https://github.com/keycloak/keycloak) - Keycloak&#039;s official GitHub repository, with the source code, release notes, and community contributions.&lt;br /&gt;
* [Keycloak Community Forum](https://www.keycloak.org/community) - Join discussions, ask questions, and find support from the Keycloak community.&lt;br /&gt;
* [Keycloak Quickstarts](https://www.keycloak.org/guides) - Keycloak&#039;s official quickstart guides to help you get up and running quickly with different deployment scenarios.&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1911</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1911"/>
		<updated>2024-11-29T11:20:24Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
Keycloak is an open-source identity and access management solution designed for modern applications and services. It provides centralized authentication and authorization, enabling Single Sign-On (SSO), identity brokering, and social login integration. With support for both OAuth2.0 and OpenID Connect protocols, Keycloak simplifies security management by handling user authentication, session management, and access control. Whether you&#039;re building cloud-native applications or integrating legacy systems, Keycloak offers a scalable, flexible, and secure solution for managing user identities and permissions across a wide range of platforms.&lt;br /&gt;
&lt;br /&gt;
== Keycloak Puzzle Pieces ==&lt;br /&gt;
&lt;br /&gt;
Keycloak is built on several key components, each playing a crucial role in identity and access management. Below is a breakdown of these &amp;quot;puzzle pieces&amp;quot; and their functions:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Realm&#039;&#039;&#039;  &lt;br /&gt;
is an isolated space used to manage a group of users, applications, and security configurations. Realms allow you to separate data and configurations, making them ideal for multi-tenant environments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clients&#039;&#039;&#039;  &lt;br /&gt;
are applications or services that use Keycloak for authentication and authorization. Each client can have its own security settings, such as authentication types and specific roles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;  &lt;br /&gt;
are entities who log in to your applications. Keycloak manages user information, including credentials, roles, and groups.  &lt;br /&gt;
What properties are available for users? (e.g., first name, last name, email, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Roles&#039;&#039;&#039;  &lt;br /&gt;
are sets of permissions assigned to users or groups. They help control access to resources in a granular way.  &lt;br /&gt;
How to authenticate users on servers? (e.g., using username/password, multi-factor authentication, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Groups&#039;&#039;&#039;  &lt;br /&gt;
are a way to organize users. Groups can have associated roles, simplifying the management of permissions for a set of users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication Protocols,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak supports various authentication protocols, including OpenID Connect and SAML. This allows integration with a wide range of services and applications.  &lt;br /&gt;
What should be the multi-factor authentication policy? (e.g., SMS, authenticator apps, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication and Flows,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak allows you to define custom authentication flows, including steps like password validation, multi-factor authentication, and more.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Identity Brokering,&#039;&#039;&#039;  &lt;br /&gt;
This feature allows Keycloak to act as an intermediary for other identity providers, enabling users to log in with third-party accounts (e.g., Google, Facebook, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Admin Console&#039;&#039;&#039;  &lt;br /&gt;
is a web interface used to manage users, clients, roles, and security configurations in Keycloak. It is the primary tool for administrators.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REST API,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak provides a REST API to interact with the server, allowing integration with other systems and automation of administrative tasks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extensions and SPI (Service Provider Interfaces),&#039;&#039;&#039;  &lt;br /&gt;
Keycloak allows customizations via extensions and service provider interfaces (SPIs), enabling the development of additional functionality tailored to specific needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Build an LDAP Schema ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to construct an LDAP schema:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;1. Understand Basic Concepts&#039;&#039;&#039;&lt;br /&gt;
Familiarize yourself with **ObjectClasses** and **Attributes**. Each entry in an LDAP directory must be associated with at least one ObjectClass, which defines the type of entry (e.g., user, group).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;2. Define ObjectClasses&#039;&#039;&#039;&lt;br /&gt;
Create ObjectClasses that represent the types of entries you wish to store. For example, an ObjectClass for users might include attributes such as `cn` (common name) and `mail` (email address).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;3. Define Attributes&#039;&#039;&#039;&lt;br /&gt;
Define the attributes that each ObjectClass can have. Each attribute must have a name, a syntax, and can be marked as required (`MUST`) or optional (`MAY`).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;4. Create the Schema File&#039;&#039;&#039;&lt;br /&gt;
Gather all the definitions of ObjectClasses and attributes into an LDIF file. This file will contain all the information necessary to add your schema to an LDAP server.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;5. Add the Schema to OpenLDAP&#039;&#039;&#039;&lt;br /&gt;
Use the `ldapadd` command to add the schema to your OpenLDAP server. Make sure to use the correct options for authentication and the path to the LDIF file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;6. Test the Schema&#039;&#039;&#039;&lt;br /&gt;
After adding the schema, test it by adding entries that use the new ObjectClasses and attributes. Verify that the LDAP server accepts the new entries and that the validations are working properly.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;7. Maintain and Evolve the Schema&#039;&#039;&#039;&lt;br /&gt;
As your needs change, you may need to update your schema. This may include adding new attributes or ObjectClasses.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
&lt;br /&gt;
* [Create a new LDAP client schema - NetApp](https://docs.netapp.com/fr-fr/ontap/nfs-config/create-new-ldap-client-schema-task.html) - Guide on how to create a new LDAP client schema for NetApp.&lt;br /&gt;
* [LDAP Tutorial - INRIA](https://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html) - Comprehensive LDAP tutorial from INRIA.&lt;br /&gt;
* [Add a specific schema - Vincent Liefooghe](https://www.vincentliefooghe.net/content/ajouter-un-sch%C3%A9ma-sp%C3%A9fique) - Instructions for adding a specific LDAP schema by Vincent Liefooghe.&lt;br /&gt;
* [Keycloak Documentation](https://www.keycloak.org/documentation) - Official Keycloak documentation, providing extensive resources on setup, configuration, and usage.&lt;br /&gt;
* [Keycloak GitHub Repository](https://github.com/keycloak/keycloak) - Keycloak&#039;s official GitHub repository, with the source code, release notes, and community contributions.&lt;br /&gt;
* [Keycloak Community Forum](https://www.keycloak.org/community) - Join discussions, ask questions, and find support from the Keycloak community.&lt;br /&gt;
* [Keycloak Quickstarts](https://www.keycloak.org/docs/latest/getting_started/#quickstarts) - Keycloak&#039;s official quickstart guides to help you get up and running quickly with different deployment scenarios.&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1910</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1910"/>
		<updated>2024-11-29T11:17:02Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
Keycloak is an open-source identity and access management solution designed for modern applications and services. It provides centralized authentication and authorization, enabling Single Sign-On (SSO), identity brokering, and social login integration. With support for both OAuth2.0 and OpenID Connect protocols, Keycloak simplifies security management by handling user authentication, session management, and access control. Whether you&#039;re building cloud-native applications or integrating legacy systems, Keycloak offers a scalable, flexible, and secure solution for managing user identities and permissions across a wide range of platforms.&lt;br /&gt;
&lt;br /&gt;
== Keycloak Puzzle Pieces ==&lt;br /&gt;
&lt;br /&gt;
Keycloak is built on several key components, each playing a crucial role in identity and access management. Below is a breakdown of these &amp;quot;puzzle pieces&amp;quot; and their functions:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Realm&#039;&#039;&#039;  &lt;br /&gt;
is an isolated space used to manage a group of users, applications, and security configurations. Realms allow you to separate data and configurations, making them ideal for multi-tenant environments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clients&#039;&#039;&#039;  &lt;br /&gt;
are applications or services that use Keycloak for authentication and authorization. Each client can have its own security settings, such as authentication types and specific roles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;  &lt;br /&gt;
are entities who log in to your applications. Keycloak manages user information, including credentials, roles, and groups.  &lt;br /&gt;
What properties are available for users? (e.g., first name, last name, email, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Roles&#039;&#039;&#039;  &lt;br /&gt;
are sets of permissions assigned to users or groups. They help control access to resources in a granular way.  &lt;br /&gt;
How to authenticate users on servers? (e.g., using username/password, multi-factor authentication, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Groups&#039;&#039;&#039;  &lt;br /&gt;
are a way to organize users. Groups can have associated roles, simplifying the management of permissions for a set of users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication Protocols,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak supports various authentication protocols, including OpenID Connect and SAML. This allows integration with a wide range of services and applications.  &lt;br /&gt;
What should be the multi-factor authentication policy? (e.g., SMS, authenticator apps, etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication and Flows,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak allows you to define custom authentication flows, including steps like password validation, multi-factor authentication, and more.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Identity Brokering,&#039;&#039;&#039;  &lt;br /&gt;
This feature allows Keycloak to act as an intermediary for other identity providers, enabling users to log in with third-party accounts (e.g., Google, Facebook, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Admin Console&#039;&#039;&#039;  &lt;br /&gt;
is a web interface used to manage users, clients, roles, and security configurations in Keycloak. It is the primary tool for administrators.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;REST API,&#039;&#039;&#039;  &lt;br /&gt;
Keycloak provides a REST API to interact with the server, allowing integration with other systems and automation of administrative tasks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extensions and SPI (Service Provider Interfaces),&#039;&#039;&#039;  &lt;br /&gt;
Keycloak allows customizations via extensions and service provider interfaces (SPIs), enabling the development of additional functionality tailored to specific needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Build an LDAP Schema ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to construct an LDAP schema:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;1. Understand Basic Concepts&#039;&#039;&#039;&lt;br /&gt;
Familiarize yourself with **ObjectClasses** and **Attributes**. Each entry in an LDAP directory must be associated with at least one ObjectClass, which defines the type of entry (e.g., user, group).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;2. Define ObjectClasses&#039;&#039;&#039;&lt;br /&gt;
Create ObjectClasses that represent the types of entries you wish to store. For example, an ObjectClass for users might include attributes such as `cn` (common name) and `mail` (email address).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;3. Define Attributes&#039;&#039;&#039;&lt;br /&gt;
Define the attributes that each ObjectClass can have. Each attribute must have a name, a syntax, and can be marked as required (`MUST`) or optional (`MAY`).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;4. Create the Schema File&#039;&#039;&#039;&lt;br /&gt;
Gather all the definitions of ObjectClasses and attributes into an LDIF file. This file will contain all the information necessary to add your schema to an LDAP server.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;5. Add the Schema to OpenLDAP&#039;&#039;&#039;&lt;br /&gt;
Use the `ldapadd` command to add the schema to your OpenLDAP server. Make sure to use the correct options for authentication and the path to the LDIF file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;6. Test the Schema&#039;&#039;&#039;&lt;br /&gt;
After adding the schema, test it by adding entries that use the new ObjectClasses and attributes. Verify that the LDAP server accepts the new entries and that the validations are working properly.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;7. Maintain and Evolve the Schema&#039;&#039;&#039;&lt;br /&gt;
As your needs change, you may need to update your schema. This may include adding new attributes or ObjectClasses.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
* [Create a new LDAP client schema - NetApp](https://docs.netapp.com/fr-fr/ontap/nfs-config/create-new-ldap-client-schema-task.html)&lt;br /&gt;
* [LDAP Tutorial - INRIA](https://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html)&lt;br /&gt;
* [Add a specific schema - Vincent Liefooghe](https://www.vincentliefooghe.net/content/ajouter-un-sch%C3%A9ma-sp%C3%A9cifique)&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1909</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1909"/>
		<updated>2024-11-29T11:04:40Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
Keycloak is an open-source identity and access management solution designed for modern applications and services. It provides centralized authentication and authorization, enabling Single Sign-On (SSO), identity brokering, and social login integration. With support for both OAuth2.0 and OpenID Connect protocols, Keycloak simplifies security management by handling user authentication, session management, and access control. Whether you&#039;re building cloud-native applications or integrating legacy systems, Keycloak offers a scalable, flexible, and secure solution for managing user identities and permissions across a wide range of platforms.&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Build an LDAP Schema ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to construct an LDAP schema:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;1. Understand Basic Concepts&#039;&#039;&#039;&lt;br /&gt;
Familiarize yourself with **ObjectClasses** and **Attributes**. Each entry in an LDAP directory must be associated with at least one ObjectClass, which defines the type of entry (e.g., user, group).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;2. Define ObjectClasses&#039;&#039;&#039;&lt;br /&gt;
Create ObjectClasses that represent the types of entries you wish to store. For example, an ObjectClass for users might include attributes such as `cn` (common name) and `mail` (email address).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;3. Define Attributes&#039;&#039;&#039;&lt;br /&gt;
Define the attributes that each ObjectClass can have. Each attribute must have a name, a syntax, and can be marked as required (`MUST`) or optional (`MAY`).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;4. Create the Schema File&#039;&#039;&#039;&lt;br /&gt;
Gather all the definitions of ObjectClasses and attributes into an LDIF file. This file will contain all the information necessary to add your schema to an LDAP server.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;5. Add the Schema to OpenLDAP&#039;&#039;&#039;&lt;br /&gt;
Use the `ldapadd` command to add the schema to your OpenLDAP server. Make sure to use the correct options for authentication and the path to the LDIF file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;6. Test the Schema&#039;&#039;&#039;&lt;br /&gt;
After adding the schema, test it by adding entries that use the new ObjectClasses and attributes. Verify that the LDAP server accepts the new entries and that the validations are working properly.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;7. Maintain and Evolve the Schema&#039;&#039;&#039;&lt;br /&gt;
As your needs change, you may need to update your schema. This may include adding new attributes or ObjectClasses.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
* [Create a new LDAP client schema - NetApp](https://docs.netapp.com/fr-fr/ontap/nfs-config/create-new-ldap-client-schema-task.html)&lt;br /&gt;
* [LDAP Tutorial - INRIA](https://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html)&lt;br /&gt;
* [Add a specific schema - Vincent Liefooghe](https://www.vincentliefooghe.net/content/ajouter-un-sch%C3%A9ma-sp%C3%A9cifique)&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1908</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1908"/>
		<updated>2024-11-29T11:03:16Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Build an LDAP Schema ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to construct an LDAP schema:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;1. Understand Basic Concepts&#039;&#039;&#039;&lt;br /&gt;
Familiarize yourself with **ObjectClasses** and **Attributes**. Each entry in an LDAP directory must be associated with at least one ObjectClass, which defines the type of entry (e.g., user, group).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;2. Define ObjectClasses&#039;&#039;&#039;&lt;br /&gt;
Create ObjectClasses that represent the types of entries you wish to store. For example, an ObjectClass for users might include attributes such as `cn` (common name) and `mail` (email address).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;3. Define Attributes&#039;&#039;&#039;&lt;br /&gt;
Define the attributes that each ObjectClass can have. Each attribute must have a name, a syntax, and can be marked as required (`MUST`) or optional (`MAY`).&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;4. Create the Schema File&#039;&#039;&#039;&lt;br /&gt;
Gather all the definitions of ObjectClasses and attributes into an LDIF file. This file will contain all the information necessary to add your schema to an LDAP server.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;5. Add the Schema to OpenLDAP&#039;&#039;&#039;&lt;br /&gt;
Use the `ldapadd` command to add the schema to your OpenLDAP server. Make sure to use the correct options for authentication and the path to the LDIF file.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;6. Test the Schema&#039;&#039;&#039;&lt;br /&gt;
After adding the schema, test it by adding entries that use the new ObjectClasses and attributes. Verify that the LDAP server accepts the new entries and that the validations are working properly.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;7. Maintain and Evolve the Schema&#039;&#039;&#039;&lt;br /&gt;
As your needs change, you may need to update your schema. This may include adding new attributes or ObjectClasses.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
* [Create a new LDAP client schema - NetApp](https://docs.netapp.com/fr-fr/ontap/nfs-config/create-new-ldap-client-schema-task.html)&lt;br /&gt;
* [LDAP Tutorial - INRIA](https://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html)&lt;br /&gt;
* [Add a specific schema - Vincent Liefooghe](https://www.vincentliefooghe.net/content/ajouter-un-sch%C3%A9ma-sp%C3%A9cifique)&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1907</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1907"/>
		<updated>2024-11-29T10:57:03Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Build an LDAP Schema ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to construct an LDAP schema:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Understand Basic Concepts&#039;&#039;&#039;&lt;br /&gt;
Familiarize yourself with **ObjectClasses** and **Attributes**. Each entry in an LDAP directory must be associated with at least one ObjectClass, which defines the type of entry (e.g., user, group).&lt;br /&gt;
# &#039;&#039;&#039;Define ObjectClasses&#039;&#039;&#039;&lt;br /&gt;
Create ObjectClasses that represent the types of entries you wish to store. For example, an ObjectClass for users might include attributes such as `cn` (common name) and `mail` (email address).&lt;br /&gt;
# &#039;&#039;&#039;Define Attributes&#039;&#039;&#039;&lt;br /&gt;
Define the attributes that each ObjectClass can have. Each attribute must have a name, a syntax, and can be marked as required (`MUST`) or optional (`MAY`).&lt;br /&gt;
# &#039;&#039;&#039;Create the Schema File&#039;&#039;&#039;&lt;br /&gt;
Gather all the definitions of ObjectClasses and attributes into an LDIF file. This file will contain all the information necessary to add your schema to an LDAP server.&lt;br /&gt;
# &#039;&#039;&#039;Add the Schema to OpenLDAP&#039;&#039;&#039;&lt;br /&gt;
Use the `ldapadd` command to add the schema to your OpenLDAP server. Make sure to use the correct options for authentication and the path to the LDIF file.&lt;br /&gt;
# &#039;&#039;&#039;Test the Schema&#039;&#039;&#039;&lt;br /&gt;
After adding the schema, test it by adding entries that use the new ObjectClasses and attributes. Verify that the LDAP server accepts the new entries and that the validations are working properly.&lt;br /&gt;
# &#039;&#039;&#039;Maintain and Evolve the Schema&#039;&#039;&#039;&lt;br /&gt;
As your needs change, you may need to update your schema. This may include adding new attributes or ObjectClasses.&lt;br /&gt;
 &lt;br /&gt;
== Useful Links ==&lt;br /&gt;
* [Create a new LDAP client schema - NetApp](https://docs.netapp.com/fr-fr/ontap/nfs-config/create-new-ldap-client-schema-task.html)&lt;br /&gt;
* [LDAP Tutorial - INRIA](https://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html)&lt;br /&gt;
* [Add a specific schema - Vincent Liefooghe](https://www.vincentliefooghe.net/content/ajouter-un-sch%C3%A9ma-sp%C3%A9cifique)&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1906</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1906"/>
		<updated>2024-11-29T10:55:14Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: /* Keycloak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;br /&gt;
== Keycloak Deployment Methods ==&lt;br /&gt;
&lt;br /&gt;
Below are different methods for deploying Keycloak, along with their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Deployment Method !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| OpenJDK || This method involves installing Keycloak directly on bare metal using OpenJDK. It requires manual installation and dependency management. || Full control over configuration, optimized performance. || More complex setup, requires manual updates and security management. || Environments where full control is necessary or for specific deployments.&lt;br /&gt;
|-&lt;br /&gt;
| Docker || Uses Docker containers to deploy Keycloak. This simplifies the installation process and isolates the application. || Easy deployment, portability, simplified dependency management. || May require knowledge of containerization and Docker management. || Developers or teams looking for a fast, portable solution.&lt;br /&gt;
|-&lt;br /&gt;
| Podman || Similar to Docker, but Podman allows managing containers without a daemon. It is an alternative to Docker with a daemon-less architecture. || Daemon-less container management, better default security. || Less documentation and community support compared to Docker. || Users who prioritize security and wish to avoid using a daemon.&lt;br /&gt;
|-&lt;br /&gt;
| Kubernetes || Deploys Keycloak in a Kubernetes cluster, enabling advanced container orchestration. || Scalability, high availability, automated container management. || Increased complexity, requires in-depth Kubernetes knowledge. || Enterprises with high availability and scalability needs.&lt;br /&gt;
|-&lt;br /&gt;
| OpenShift || An enterprise-level Kubernetes platform that simplifies deployment and management of containerized applications. || Integrated tools for application management, enhanced security, CI/CD support. || Requires a license, more complex for novice users. || Enterprises already using OpenShift or looking for a robust, integrated solution.&lt;br /&gt;
|-&lt;br /&gt;
| Scaling || Focuses on optimizing Keycloak for scalability and performance tuning. || Improved performance, ability to handle large numbers of users. || Requires understanding of scalability best practices. || Large-scale deployments or environments with high performance needs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keycloak Database Types ==&lt;br /&gt;
&lt;br /&gt;
Below are different types of databases that can be used with Keycloak, including their advantages, disadvantages, and ideal use cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Database Type !! Description !! Advantages !! Disadvantages !! Ideal For&lt;br /&gt;
|-&lt;br /&gt;
| Relational Database (PostgreSQL, MySQL) || Keycloak is designed to work with relational databases, making configuration easier. || Native support, excellent transaction management, data integrity through constraints and relationships. || Vertical scalability, requires hardware upgrades for increased load, active administrative management required. || Environments that require strong data integrity and security, with manageable scalability.&lt;br /&gt;
|-&lt;br /&gt;
| NoSQL Database (MongoDB, Cassandra) || NoSQL databases provide flexible data models and are ideal for large, evolving data sets. || Horizontal scalability, flexible data models, great for large-scale data. || Limited native support in Keycloak, integration may require additional work. || Projects with large, dynamic datasets, where scalability is a priority.&lt;br /&gt;
|-&lt;br /&gt;
| Hosted Database (Amazon RDS, Azure Database) || Cloud providers manage the infrastructure, backups, and updates. || Simplified management, high availability, disaster recovery options. || Higher long-term costs, dependency on cloud service provider availability and performance. || Businesses seeking ease of management with high availability and disaster recovery capabilities.&lt;br /&gt;
|-&lt;br /&gt;
| Containerized Database (PostgreSQL in Docker) || Running the database in a container (e.g., Docker) for easy deployment and movement. || Portability, isolation from host system for improved security. || Persistent data management, requires proper volume configuration to avoid data loss when containers are removed. || Teams that need portability and isolation with containerized environments.&lt;br /&gt;
|-&lt;br /&gt;
| On-Premises Database || Managing the database directly on-site. || Full control over configuration and security, optimized performance. || Intensive management required, including maintenance, updates, and backups, fixed infrastructure costs. || Organizations with technical expertise, and those needing full control over their database.&lt;br /&gt;
|-&lt;br /&gt;
| Distributed Database (Cassandra) || A distributed database system designed for massive, scalable workloads. || High availability, designed to operate without interruptions, suitable for critical applications. || Difficult integration with Keycloak, lacks native support, fewer transaction features. || Large-scale deployments requiring high availability and scalability.&lt;br /&gt;
|-&lt;br /&gt;
| In-Memory Database (Redis) || A fast, in-memory database for applications needing low-latency data access. || Extremely fast data access, ideal for low-latency requirements. || Data persistence is not guaranteed, not suitable for critical data, limited support for Keycloak. || Applications that require very fast access to data and can tolerate the lack of persistence.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1905</id>
		<title>User:MoustaphaAs</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=User:MoustaphaAs&amp;diff=1905"/>
		<updated>2024-11-29T09:32:52Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: Created page with &amp;quot;= Keycloak =&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Keycloak =&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=Upsection&amp;diff=1855</id>
		<title>Upsection</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=Upsection&amp;diff=1855"/>
		<updated>2024-10-31T20:31:10Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: Removed redirect to Static sites&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Upsection ===&lt;br /&gt;
We need to maintain dependencies for the Gulp/handlebars site builder&lt;br /&gt;
across several repositories. The dependencies are brittle, security issues&lt;br /&gt;
will require to upgrade to a version of a package invoked by gulp-&amp;lt;feature&amp;gt;,&lt;br /&gt;
but gulp-&amp;lt;feature&amp;gt; will be abandoned and unmaintained. That&#039;s the usual&lt;br /&gt;
scenario. When it&#039;s maintained, the way to load the library in JS has changed.&lt;br /&gt;
&lt;br /&gt;
That hard maintenance problem requires an unified solution, to be able to do it&lt;br /&gt;
one for all the sites. &#039;&#039;&#039;Upsection&#039;&#039;&#039; is the name of this ongoing effort to&lt;br /&gt;
maintain, and provide a tool to populate the dependencies and build the site&lt;br /&gt;
with a simple `make`. Proof of concept lives in {{repo|upsection}}.&lt;br /&gt;
&lt;br /&gt;
A second advantage is the current repository creation process is a little&lt;br /&gt;
bit cumbersome, as highlighted by the previous sections instructions to&lt;br /&gt;
fetch the build mechanism and the src/ folder in two different sources.&lt;br /&gt;
&lt;br /&gt;
Upsection repository contains our full usable template in ONE place.&lt;br /&gt;
&lt;br /&gt;
As of 2024-10, Upsection dependencies aren&#039;t up-to-date, so you&#039;ll need if you use it&lt;br /&gt;
to upgrade Node packages to the one used in {{repo|join}} or {{repo|infra-www}}.&lt;br /&gt;
&lt;br /&gt;
Expected features:&lt;br /&gt;
&lt;br /&gt;
* Create a site with a `upsection` command&lt;br /&gt;
* Being able to only store upsection configuration + assets directories in the websites repositories&lt;br /&gt;
** `upsection` can regenerate the build mechanism: package.json, node dependencies&lt;br /&gt;
** Site get freshest dependencies for the build mechanism&lt;br /&gt;
&lt;br /&gt;
Current languages stack:&lt;br /&gt;
&lt;br /&gt;
* At upsection level&lt;br /&gt;
** Python for upsection itself&lt;br /&gt;
** BSD make (Makefile) to generate needed files&lt;br /&gt;
* At static site build level&lt;br /&gt;
** Node.JS and Gulp still manage the site build&lt;br /&gt;
* For the site assets&lt;br /&gt;
** SCSS&lt;br /&gt;
** modern JS with Babel to transpile when needed&lt;br /&gt;
** HTML from handlebars templates&lt;br /&gt;
** YAML for data&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=Static_sites&amp;diff=1854</id>
		<title>Static sites</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=Static_sites&amp;diff=1854"/>
		<updated>2024-10-31T20:26:41Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: /* Upsection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Static sites&#039;&#039;&#039; are used in two context at Nasqueron:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Information static sites.&#039;&#039;&#039; Sites with only static content&lt;br /&gt;
# &#039;&#039;&#039;JavaScript front-end clients.&#039;&#039;&#039; Sites with dynamic back-end: the HTML site uses JS to communicate with the back-end through a REST API.&lt;br /&gt;
&lt;br /&gt;
== Static site template ==&lt;br /&gt;
We build the first sites from the Foundation CSS framework ZURB template.&lt;br /&gt;
&lt;br /&gt;
This approach works well for pure static sites, or for JS clients to query an API&lt;br /&gt;
like we do in {{repo|infra-www}}.&lt;br /&gt;
&lt;br /&gt;
Your site is composed of two parts:&lt;br /&gt;
* a src/ folder with your site assets (JS, CSS), pages and data&lt;br /&gt;
* a build mechanism driven by Gulp&lt;br /&gt;
&lt;br /&gt;
This is perfect to quickly assemble a site, especially as we can do it on Jenkins for CD.&lt;br /&gt;
&lt;br /&gt;
If you use frameworks like React/Vue and want to make them manage your site routing and structure,&lt;br /&gt;
don&#039;t use this template.&lt;br /&gt;
&lt;br /&gt;
=== Create a site in 2024 ===&lt;br /&gt;
&lt;br /&gt;
Currently, the build mechanism and the template are to be extracted from two different places:&lt;br /&gt;
&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
   | Build mechanism |       | Site assets: SCSS, JS, HTML, data.  |&lt;br /&gt;
   |                 |       |                                     |&lt;br /&gt;
   | [ Gulp ]        |       | [ Foundation + Handlebars ]         |&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
           ^                                     ^&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
   | Copy it from an |       | Take the up-to-date last version    |&lt;br /&gt;
   | existing site:  |       | from the Foundation Zurb template:  |&lt;br /&gt;
   | infra-www repo  |       | foundation/foundation-zurb-template |&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1.&#039;&#039;&#039; To get the build mechanism right, as of 2023-05-28, take it from&lt;br /&gt;
the {{repo|join}} or from the {{repo|infra-www}} repository:&lt;br /&gt;
&lt;br /&gt;
    git clone https://devcentral.nasqueron.org/source/infra-www.git your-awesome-site&lt;br /&gt;
    cd your-awesome-site&lt;br /&gt;
    rm -rf src/ .git Jenkinsfile&lt;br /&gt;
&lt;br /&gt;
You&#039;ll then get a folder with a correct build mechanism.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2.&#039;&#039;&#039; Initialize your own repository:&lt;br /&gt;
&lt;br /&gt;
    git init .&lt;br /&gt;
    $EDITOR .babelrc .browserslistrc config.yml gulpfile.babel.js package.json readme.md&lt;br /&gt;
    git add .&lt;br /&gt;
    git commit -m &amp;quot;Build a new static site&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At that stage, you&#039;ve a correct build mechanism, configured for your website,&lt;br /&gt;
but no template or content.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3.&#039;&#039;&#039; Add the Foundation template:&lt;br /&gt;
&lt;br /&gt;
Copy a fresh &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt; folder from the [https://github.com/foundation/foundation-zurb-template foundation/foundation-zurb-template] repository:&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/foundation/foundation-zurb-template /tmp/template&lt;br /&gt;
    mv /tmp/template/src .&lt;br /&gt;
    rm -rf /tmp/template&lt;br /&gt;
&lt;br /&gt;
And that&#039;s it. You can now work on it and build your site.&lt;br /&gt;
&lt;br /&gt;
You should get the following structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
├── config.yml&lt;br /&gt;
├── gulpfile.babel.js&lt;br /&gt;
├── Jenkinsfile&lt;br /&gt;
├── package.json&lt;br /&gt;
├── readme.md&lt;br /&gt;
└── src&lt;br /&gt;
    ├── assets&lt;br /&gt;
    │   ├── img&lt;br /&gt;
    │   ├── js&lt;br /&gt;
    │   │   ├── app.js&lt;br /&gt;
    │   │   └── lib&lt;br /&gt;
    │   │       └── foundation-explicit-pieces.js&lt;br /&gt;
    │   └── scss&lt;br /&gt;
    │       ├── _settings.scss&lt;br /&gt;
    │       ├── app.scss&lt;br /&gt;
    │       ├── components&lt;br /&gt;
    │       └── global&lt;br /&gt;
    │           └── _typography.scss&lt;br /&gt;
    ├── data&lt;br /&gt;
    ├── layouts&lt;br /&gt;
    │   └── default.html&lt;br /&gt;
    ├── pages&lt;br /&gt;
    │   └── index.html&lt;br /&gt;
    ├── partials&lt;br /&gt;
    └── styleguide&lt;br /&gt;
        ├── index.md&lt;br /&gt;
        └── template.html&lt;br /&gt;
&lt;br /&gt;
14 directories, 14 files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enjoy.&#039;&#039;&#039; Follow your README instructions to install Node dependencies and build your site:&lt;br /&gt;
&lt;br /&gt;
    yarn install&lt;br /&gt;
    yarn start&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Who to contact for support.&#039;&#039;&#039; {{u|Dereckson}} maintains those instructions and this build mechanism.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note about Jenkins.&#039;&#039;&#039; We&#039;re currently looking how to switch from the old Jenkins deployment method to the new [[Alkane]] one, so don&#039;t commit a Jenkinsfile (excepted if you solve that exact problem of course), we&#039;ll figure it as soon as your site is ready to be published.&lt;br /&gt;
&lt;br /&gt;
=== Upsection ===&lt;br /&gt;
We need to maintain dependencies for the Gulp/handlebars site builder&lt;br /&gt;
across several repositories. The dependencies are brittle, security issues&lt;br /&gt;
will require to upgrade to a version of a package invoked by gulp-&amp;lt;feature&amp;gt;,&lt;br /&gt;
but gulp-&amp;lt;feature&amp;gt; will be abandoned and unmaintained. That&#039;s the usual&lt;br /&gt;
scenario. When it&#039;s maintained, the way to load the library in JS has changed.&lt;br /&gt;
&lt;br /&gt;
That hard maintenance problem requires an unified solution, to be able to do it&lt;br /&gt;
one for all the sites. &#039;&#039;&#039;Upsection&#039;&#039;&#039; is the name of this ongoing effort to&lt;br /&gt;
maintain, and provide a tool to populate the dependencies and build the site&lt;br /&gt;
with a simple `make`. Proof of concept lives in {{repo|upsection}}.&lt;br /&gt;
&lt;br /&gt;
A second advantage is the current repository creation process is a little&lt;br /&gt;
bit cumbersome, as highlighted by the previous sections instructions to&lt;br /&gt;
fetch the build mechanism and the src/ folder in two different sources.&lt;br /&gt;
&lt;br /&gt;
Upsection repository contains our full usable template in ONE place.&lt;br /&gt;
&lt;br /&gt;
As of 2024-10, Upsection dependencies aren&#039;t up-to-date, so you&#039;ll need if you use it&lt;br /&gt;
to upgrade Node packages to the one used in {{repo|join}} or {{repo|infra-www}}.&lt;br /&gt;
&lt;br /&gt;
Expected features:&lt;br /&gt;
&lt;br /&gt;
* Create a site with a `upsection` command&lt;br /&gt;
* Being able to only store upsection configuration + assets directories in the websites repositories&lt;br /&gt;
** `upsection` can regenerate the build mechanism: package.json, node dependencies&lt;br /&gt;
** Site get freshest dependencies for the build mechanism&lt;br /&gt;
&lt;br /&gt;
Current languages stack:&lt;br /&gt;
&lt;br /&gt;
* At upsection level&lt;br /&gt;
** Python for upsection itself&lt;br /&gt;
** BSD make (Makefile) to generate needed files&lt;br /&gt;
* At static site build level&lt;br /&gt;
** Node.JS and Gulp still manage the site build&lt;br /&gt;
* For the site assets&lt;br /&gt;
** SCSS&lt;br /&gt;
** modern JS with Babel to transpile when needed&lt;br /&gt;
** HTML from handlebars templates&lt;br /&gt;
** YAML for data&lt;br /&gt;
&lt;br /&gt;
== Build Vue.js application ==&lt;br /&gt;
Nidal uses another strategy for {{repo|servpulse}}: Vue.js provides a CLI tool to&lt;br /&gt;
bootstrap a web site, and Foundation is added afterwards:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;npm init vue@latest&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Who to contact for support.&#039;&#039;&#039; {{u|Inidal}} maintains those instructions and this build mechanism.&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributor guide]]&lt;br /&gt;
[[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=Static_sites&amp;diff=1853</id>
		<title>Static sites</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=Static_sites&amp;diff=1853"/>
		<updated>2024-10-31T20:26:05Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: /* Upsection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Static sites&#039;&#039;&#039; are used in two context at Nasqueron:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Information static sites.&#039;&#039;&#039; Sites with only static content&lt;br /&gt;
# &#039;&#039;&#039;JavaScript front-end clients.&#039;&#039;&#039; Sites with dynamic back-end: the HTML site uses JS to communicate with the back-end through a REST API.&lt;br /&gt;
&lt;br /&gt;
== Static site template ==&lt;br /&gt;
We build the first sites from the Foundation CSS framework ZURB template.&lt;br /&gt;
&lt;br /&gt;
This approach works well for pure static sites, or for JS clients to query an API&lt;br /&gt;
like we do in {{repo|infra-www}}.&lt;br /&gt;
&lt;br /&gt;
Your site is composed of two parts:&lt;br /&gt;
* a src/ folder with your site assets (JS, CSS), pages and data&lt;br /&gt;
* a build mechanism driven by Gulp&lt;br /&gt;
&lt;br /&gt;
This is perfect to quickly assemble a site, especially as we can do it on Jenkins for CD.&lt;br /&gt;
&lt;br /&gt;
If you use frameworks like React/Vue and want to make them manage your site routing and structure,&lt;br /&gt;
don&#039;t use this template.&lt;br /&gt;
&lt;br /&gt;
=== Create a site in 2024 ===&lt;br /&gt;
&lt;br /&gt;
Currently, the build mechanism and the template are to be extracted from two different places:&lt;br /&gt;
&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
   | Build mechanism |       | Site assets: SCSS, JS, HTML, data.  |&lt;br /&gt;
   |                 |       |                                     |&lt;br /&gt;
   | [ Gulp ]        |       | [ Foundation + Handlebars ]         |&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
           ^                                     ^&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
   | Copy it from an |       | Take the up-to-date last version    |&lt;br /&gt;
   | existing site:  |       | from the Foundation Zurb template:  |&lt;br /&gt;
   | infra-www repo  |       | foundation/foundation-zurb-template |&lt;br /&gt;
   +-----------------+       +-------------------------------------+&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1.&#039;&#039;&#039; To get the build mechanism right, as of 2023-05-28, take it from&lt;br /&gt;
the {{repo|join}} or from the {{repo|infra-www}} repository:&lt;br /&gt;
&lt;br /&gt;
    git clone https://devcentral.nasqueron.org/source/infra-www.git your-awesome-site&lt;br /&gt;
    cd your-awesome-site&lt;br /&gt;
    rm -rf src/ .git Jenkinsfile&lt;br /&gt;
&lt;br /&gt;
You&#039;ll then get a folder with a correct build mechanism.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2.&#039;&#039;&#039; Initialize your own repository:&lt;br /&gt;
&lt;br /&gt;
    git init .&lt;br /&gt;
    $EDITOR .babelrc .browserslistrc config.yml gulpfile.babel.js package.json readme.md&lt;br /&gt;
    git add .&lt;br /&gt;
    git commit -m &amp;quot;Build a new static site&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At that stage, you&#039;ve a correct build mechanism, configured for your website,&lt;br /&gt;
but no template or content.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3.&#039;&#039;&#039; Add the Foundation template:&lt;br /&gt;
&lt;br /&gt;
Copy a fresh &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt; folder from the [https://github.com/foundation/foundation-zurb-template foundation/foundation-zurb-template] repository:&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/foundation/foundation-zurb-template /tmp/template&lt;br /&gt;
    mv /tmp/template/src .&lt;br /&gt;
    rm -rf /tmp/template&lt;br /&gt;
&lt;br /&gt;
And that&#039;s it. You can now work on it and build your site.&lt;br /&gt;
&lt;br /&gt;
You should get the following structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
├── config.yml&lt;br /&gt;
├── gulpfile.babel.js&lt;br /&gt;
├── Jenkinsfile&lt;br /&gt;
├── package.json&lt;br /&gt;
├── readme.md&lt;br /&gt;
└── src&lt;br /&gt;
    ├── assets&lt;br /&gt;
    │   ├── img&lt;br /&gt;
    │   ├── js&lt;br /&gt;
    │   │   ├── app.js&lt;br /&gt;
    │   │   └── lib&lt;br /&gt;
    │   │       └── foundation-explicit-pieces.js&lt;br /&gt;
    │   └── scss&lt;br /&gt;
    │       ├── _settings.scss&lt;br /&gt;
    │       ├── app.scss&lt;br /&gt;
    │       ├── components&lt;br /&gt;
    │       └── global&lt;br /&gt;
    │           └── _typography.scss&lt;br /&gt;
    ├── data&lt;br /&gt;
    ├── layouts&lt;br /&gt;
    │   └── default.html&lt;br /&gt;
    ├── pages&lt;br /&gt;
    │   └── index.html&lt;br /&gt;
    ├── partials&lt;br /&gt;
    └── styleguide&lt;br /&gt;
        ├── index.md&lt;br /&gt;
        └── template.html&lt;br /&gt;
&lt;br /&gt;
14 directories, 14 files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enjoy.&#039;&#039;&#039; Follow your README instructions to install Node dependencies and build your site:&lt;br /&gt;
&lt;br /&gt;
    yarn install&lt;br /&gt;
    yarn start&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Who to contact for support.&#039;&#039;&#039; {{u|Dereckson}} maintains those instructions and this build mechanism.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note about Jenkins.&#039;&#039;&#039; We&#039;re currently looking how to switch from the old Jenkins deployment method to the new [[Alkane]] one, so don&#039;t commit a Jenkinsfile (excepted if you solve that exact problem of course), we&#039;ll figure it as soon as your site is ready to be published.&lt;br /&gt;
&lt;br /&gt;
=== Upsection ===&lt;br /&gt;
#REDIRECT [[Upsection]]&lt;br /&gt;
We need to maintain dependencies for the Gulp/handlebars site builder&lt;br /&gt;
across several repositories. The dependencies are brittle, security issues&lt;br /&gt;
will require to upgrade to a version of a package invoked by gulp-&amp;lt;feature&amp;gt;,&lt;br /&gt;
but gulp-&amp;lt;feature&amp;gt; will be abandoned and unmaintained. That&#039;s the usual&lt;br /&gt;
scenario. When it&#039;s maintained, the way to load the library in JS has changed.&lt;br /&gt;
&lt;br /&gt;
That hard maintenance problem requires an unified solution, to be able to do it&lt;br /&gt;
one for all the sites. &#039;&#039;&#039;Upsection&#039;&#039;&#039; is the name of this ongoing effort to&lt;br /&gt;
maintain, and provide a tool to populate the dependencies and build the site&lt;br /&gt;
with a simple `make`. Proof of concept lives in {{repo|upsection}}.&lt;br /&gt;
&lt;br /&gt;
A second advantage is the current repository creation process is a little&lt;br /&gt;
bit cumbersome, as highlighted by the previous sections instructions to&lt;br /&gt;
fetch the build mechanism and the src/ folder in two different sources.&lt;br /&gt;
&lt;br /&gt;
Upsection repository contains our full usable template in ONE place.&lt;br /&gt;
&lt;br /&gt;
As of 2024-10, Upsection dependencies aren&#039;t up-to-date, so you&#039;ll need if you use it&lt;br /&gt;
to upgrade Node packages to the one used in {{repo|join}} or {{repo|infra-www}}.&lt;br /&gt;
&lt;br /&gt;
Expected features:&lt;br /&gt;
&lt;br /&gt;
* Create a site with a `upsection` command&lt;br /&gt;
* Being able to only store upsection configuration + assets directories in the websites repositories&lt;br /&gt;
** `upsection` can regenerate the build mechanism: package.json, node dependencies&lt;br /&gt;
** Site get freshest dependencies for the build mechanism&lt;br /&gt;
&lt;br /&gt;
Current languages stack:&lt;br /&gt;
&lt;br /&gt;
* At upsection level&lt;br /&gt;
** Python for upsection itself&lt;br /&gt;
** BSD make (Makefile) to generate needed files&lt;br /&gt;
* At static site build level&lt;br /&gt;
** Node.JS and Gulp still manage the site build&lt;br /&gt;
* For the site assets&lt;br /&gt;
** SCSS&lt;br /&gt;
** modern JS with Babel to transpile when needed&lt;br /&gt;
** HTML from handlebars templates&lt;br /&gt;
** YAML for data&lt;br /&gt;
&lt;br /&gt;
== Build Vue.js application ==&lt;br /&gt;
Nidal uses another strategy for {{repo|servpulse}}: Vue.js provides a CLI tool to&lt;br /&gt;
bootstrap a web site, and Foundation is added afterwards:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;npm init vue@latest&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Who to contact for support.&#039;&#039;&#039; {{u|Inidal}} maintains those instructions and this build mechanism.&lt;br /&gt;
&lt;br /&gt;
[[Category:Contributor guide]]&lt;br /&gt;
[[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=Upsection&amp;diff=1852</id>
		<title>Upsection</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=Upsection&amp;diff=1852"/>
		<updated>2024-10-31T20:24:42Z</updated>

		<summary type="html">&lt;p&gt;MoustaphaAs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Static sites]]&lt;br /&gt;
=== Upsection ===&lt;br /&gt;
We need to maintain dependencies for the Gulp/handlebars site builder&lt;br /&gt;
across several repositories. The dependencies are brittle, security issues&lt;br /&gt;
will require to upgrade to a version of a package invoked by gulp-&amp;lt;feature&amp;gt;,&lt;br /&gt;
but gulp-&amp;lt;feature&amp;gt; will be abandoned and unmaintained. That&#039;s the usual&lt;br /&gt;
scenario. When it&#039;s maintained, the way to load the library in JS has changed.&lt;br /&gt;
&lt;br /&gt;
That hard maintenance problem requires an unified solution, to be able to do it&lt;br /&gt;
one for all the sites. &#039;&#039;&#039;Upsection&#039;&#039;&#039; is the name of this ongoing effort to&lt;br /&gt;
maintain, and provide a tool to populate the dependencies and build the site&lt;br /&gt;
with a simple `make`. Proof of concept lives in {{repo|upsection}}.&lt;br /&gt;
&lt;br /&gt;
A second advantage is the current repository creation process is a little&lt;br /&gt;
bit cumbersome, as highlighted by the previous sections instructions to&lt;br /&gt;
fetch the build mechanism and the src/ folder in two different sources.&lt;br /&gt;
&lt;br /&gt;
Upsection repository contains our full usable template in ONE place.&lt;br /&gt;
&lt;br /&gt;
As of 2024-10, Upsection dependencies aren&#039;t up-to-date, so you&#039;ll need if you use it&lt;br /&gt;
to upgrade Node packages to the one used in {{repo|join}} or {{repo|infra-www}}.&lt;br /&gt;
&lt;br /&gt;
Expected features:&lt;br /&gt;
&lt;br /&gt;
* Create a site with a `upsection` command&lt;br /&gt;
* Being able to only store upsection configuration + assets directories in the websites repositories&lt;br /&gt;
** `upsection` can regenerate the build mechanism: package.json, node dependencies&lt;br /&gt;
** Site get freshest dependencies for the build mechanism&lt;br /&gt;
&lt;br /&gt;
Current languages stack:&lt;br /&gt;
&lt;br /&gt;
* At upsection level&lt;br /&gt;
** Python for upsection itself&lt;br /&gt;
** BSD make (Makefile) to generate needed files&lt;br /&gt;
* At static site build level&lt;br /&gt;
** Node.JS and Gulp still manage the site build&lt;br /&gt;
* For the site assets&lt;br /&gt;
** SCSS&lt;br /&gt;
** modern JS with Babel to transpile when needed&lt;br /&gt;
** HTML from handlebars templates&lt;br /&gt;
** YAML for data&lt;/div&gt;</summary>
		<author><name>MoustaphaAs</name></author>
	</entry>
</feed>