Aller au contenu principal

Nextcloud sur Google Cloud Run

Nextcloud sur Google Cloud Run

Nextcloud est la principale plateforme auto-hébergée de synchronisation de fichiers et de collaboration, utilisée par 400 millions d'utilisateurs dans plus de 100 000 organisations — dont des administrations et des établissements de santé à la recherche d'une alternative à Google Drive et OneDrive conforme au RGPD. Ce module déploie Nextcloud sur Cloud Run v2 au-dessus du socle App_CloudRun, qui provisionne et gère l'infrastructure Google Cloud partagée.

Ce guide se concentre sur les services cloud qu'utilise Nextcloud et sur la manière de les explorer et de les exploiter depuis la console Google Cloud et la ligne de commande. Pour les mécanismes communs à toute application Cloud Run — identité du service, entrée et équilibrage de charge, mise à l'échelle et concurrence, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC Service Controls, sauvegardes et cycle de vie du déploiement — reportez-vous au guide du socle App_CloudRun plutôt que de les répéter ici.


1. Vue d'ensemble​

Nextcloud s'exécute dans un conteneur PHP/Apache sur Cloud Run v2. Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculCloud Run v2Service PHP/Apache, 2 vCPU / 4 GiB par défaut, autoscaling basé sur les requêtes
Base de donnéesCloud SQL for MySQL 8.0Obligatoire — Nextcloud ne prend pas en charge PostgreSQL dans ce déploiement
Fichiers partagésFilestore (NFS)Répertoires config/ et data/ partagés entre toutes les instances (gen2 requis)
Stockage d'objetsCloud StorageUn bucket nc-data provisionné par déploiement
Cache et verrouillageRedisActivé par défaut ; évite les conflits de verrouillage de fichiers entre instances
SecretsSecret ManagerMot de passe administrateur généré automatiquement ; secrets de configuration post-installation
EntréeURL Cloud Run / Cloud Load BalancingURL run.app par défaut, équilibreur de charge HTTPS externe + domaine personnalisé facultatifs

Valeurs par défaut judicieuses à connaître d'emblée :

  • MySQL 8.0 est obligatoire. Choisir PostgreSQL ou NONE empêche le démarrage.
  • NFS est activé par défaut et exige l'environnement d'exécution gen2. Toutes les instances doivent partager config.php et le répertoire des données utilisateur. Sans NFS, chaque démarrage à froid supprime les fichiers.
  • Redis est activé par défaut. Sans cache et backend de verrouillage partagés, les écritures concurrentes entre instances provoquent des erreurs HTTP 503 « File is locked ».
  • Les limites PHP sont intégrées à l'image du conteneur au moment du build. Modifier php_memory_limit, upload_max_filesize ou post_max_size nécessite une nouvelle exécution de Cloud Build.
  • Le mot de passe administrateur est généré automatiquement et stocké dans Secret Manager ; vous ne le définissez jamais en clair.
  • Le premier démarrage est volontairement lent. Nextcloud exécute occ maintenance:install de manière synchrone avant le démarrage d'Apache. La sonde de démarrage accorde jusqu'à 10 minutes pour que la première installation se termine.
  • scale-to-zero est le comportement par défaut (min_instance_count = 0). Pour les déploiements de production utilisés par des clients de synchronisation WebDAV, définissez min_instance_count = 1 afin d'éviter les déconnexions liées aux démarrages à froid.

2. Services Google Cloud et comment les explorer​

Toutes les commandes supposent que PROJECT et REGION sont définis. Les noms des services et des ressources figurent dans les sorties du déploiement.

A. Cloud Run — le service Nextcloud​

Nextcloud s'exécute en tant que service Cloud Run v2 qui s'adapte automatiquement à la charge des requêtes entre les nombres minimal et maximal d'instances. Chaque déploiement crée une révision immuable ; le trafic peut être réparti entre les révisions pour des déploiements progressifs sûrs.

  • Console : Cloud Run → sélectionnez le service pour voir les révisions, le trafic, les journaux et les métriques.
  • CLI :
    gcloud run services list --project "$PROJECT" --region "$REGION"
    gcloud run services describe <service-name> --project "$PROJECT" --region "$REGION"
    gcloud run revisions list --service <service-name> --project "$PROJECT" --region "$REGION"

Consultez App_CloudRun pour la mise à l'échelle, la concurrence, l'environnement d'exécution et la répartition du trafic.

B. Cloud SQL for MySQL 8.0​

Nextcloud stocke toutes les données applicatives (métadonnées des fichiers, utilisateurs, partages, agenda et contacts) dans une instance gérée Cloud SQL for MySQL 8.0. Le service s'y connecte de manière privée via le Cloud SQL Auth Proxy sur un socket Unix (sans IP publique). Lors du premier déploiement, un job d'initialisation crée la base de données et l'utilisateur de l'application avec le jeu de caractères et la collation utf8mb4.

  • Console : SQL → sélectionnez l'instance pour voir les connexions, les sauvegardes, les flags et les métriques.
  • CLI :
    gcloud sql instances list --project "$PROJECT"
    gcloud sql instances describe <instance-name> --project "$PROJECT"
    gcloud sql connect <instance-name> --user=<db-user> --project "$PROJECT"

Le nom de l'instance, la base de données, l'utilisateur et le secret du mot de passe figurent dans les sorties. Consultez App_CloudRun pour le modèle de connexion, les sauvegardes et la rotation des mots de passe.

C. Filestore (NFS) et Cloud Storage​

Les données des fichiers utilisateur de Nextcloud sont écrites sur un partage Filestore (NFS) monté dans chaque instance. entrypoint.sh définit NEXTCLOUD_DATA_DIR=/mnt/nfs/nextcloud-data afin que toutes les instances partagent les mêmes fichiers utilisateur. config.php n'est pas stocké sur NFS — il est reconstruit localement sur chaque instance à partir des secrets de Secret Manager (voir §3 « Secrets de configuration post-installation » ci-dessous). Un bucket Cloud Storage nc-data est également provisionné par déploiement.

  • Console : Filestore → Instances ; Cloud Storage → Buckets.
  • CLI :
    gcloud filestore instances list --project "$PROJECT"
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<nc-data-bucket>/

Consultez App_CloudRun pour le montage NFS, GCS Fuse et CMEK.

D. Cache Redis et verrouillage de fichiers​

Redis sert de support au cache distribué de Nextcloud (memcache.distributed) et au verrouillage de fichiers (filelocking.enabled). Avec plus d'une instance, il est obligatoire — sans lui, les écritures concurrentes produisent des erreurs HTTP 503 « File is locked ». Lorsqu'aucun hôte Redis externe n'est configuré et que NFS est activé, l'IP du serveur NFS est utilisée comme point de terminaison Redis par défaut.

  • Console : Memorystore → Redis (si vous utilisez une instance gérée).
  • CLI :
    redis-cli -h <redis-host> ping
    redis-cli -h <redis-host> info keyspace

E. Secret Manager​

Le mot de passe administrateur de Nextcloud et quatre secrets de configuration post-installation (ID d'instance, sel de mot de passe, secret applicatif et, facultativement, le mot de passe d'authentification Redis) sont stockés dans Secret Manager et injectés dans le service à l'exécution. Les trois secrets de configuration commencent avec la valeur provisoire "UNSET" ; le hook post-installation du conteneur écrit les vraies valeurs une fois occ maintenance:install terminé.

  • Console : Security → Secret Manager.
  • CLI :
    gcloud secrets list --project "$PROJECT" --filter="name~nextcloud"
    gcloud secrets versions access latest --secret=<admin-password-secret> --project "$PROJECT"

Consultez App_CloudRun pour les détails d'injection et de rotation.

F. Réseau et entrée​

Par défaut, le service est accessible via son URL run.app. Un équilibreur de charge HTTPS externe avec domaine personnalisé, Cloud CDN et Cloud Armor peut être ajouté ; les paramètres d'entrée et la sortie VPC contrôlent la connectivité. Les domaines personnalisés sont également ajoutés automatiquement à la liste NEXTCLOUD_TRUSTED_DOMAINS de Nextcloud.

  • Console : Cloud Run (URL du service) ; Network services → Load balancing.
  • CLI :
    gcloud run services describe <service-name> --region "$REGION" --format='value(status.url)'
    gcloud compute addresses list --project "$PROJECT"

Consultez App_CloudRun.

G. Cloud Logging et Monitoring​

Les journaux des conteneurs sont envoyés à Cloud Logging ; les métriques Cloud Run et Cloud SQL sont envoyées à Cloud Monitoring, avec des tests de disponibilité et des règles d'alerte facultatifs.

  • Console : Logging → Logs Explorer ; Monitoring → Dashboards / Alerting.
  • CLI :
    gcloud run services logs read <service-name> --project "$PROJECT" --region "$REGION" --limit 50

3. Comportement de l'application Nextcloud​

  • Configuration de la base de données au premier déploiement. Un job d'initialisation crée la base de données et l'utilisateur Nextcloud avec le jeu de caractères utf8mb4 avant le démarrage du service. Il est idempotent.
  • occ maintenance:install au premier démarrage. Lors du tout premier démarrage, Nextcloud exécute sa routine d'installation de manière synchrone avant qu'Apache ne commence à servir. Cela peut prendre plusieurs minutes sur une instance Cloud SQL froide. La sonde de démarrage accorde jusqu'à 10 minutes (60 s de délai initial + 40 échecs × 15 s de période) pour que cela se termine.
  • Secrets de configuration post-installation. Une fois occ maintenance:install terminé, un hook du conteneur écrit les vraies valeurs de instanceid, passwordsalt et secret dans Secret Manager. Les démarrages suivants les relisent pour reconstruire config.php sans avoir besoin de NFS.
  • Mise à niveau PHP au démarrage. NEXTCLOUD_UPDATE=1 est défini par défaut ; Nextcloud exécute donc occ upgrade automatiquement à chaque démarrage du conteneur. Définissez NEXTCLOUD_UPDATE=0 dans environment_variables et gérez les mises à niveau manuellement lors d'un changement de version majeure.
  • Domaines de confiance. Nextcloud applique une liste blanche de domaines de confiance. Le module alimente NEXTCLOUD_TRUSTED_DOMAINS à partir de application_domains. L'URL du service Cloud Run est résolue au démarrage par entrypoint.sh à partir de CLOUDRUN_SERVICE_URL et également ajoutée. Les requêtes provenant de noms d'hôte non listés reçoivent une erreur « Access through untrusted domain ».
  • OVERWRITEPROTOCOL=https. Nextcloud est informé qu'il se trouve derrière un proxy HTTPS, afin de générer des liens de partage absolus et des URL WebDAV corrects.
  • Chemin de santé. Les sondes de démarrage et de vivacité ciblent /status.php, qui renvoie un HTTP 200 avec un objet JSON d'état quel que soit l'état de configuration de Nextcloud — ce qui en fait le point de terminaison de santé de référence.
  • Connexion administrateur. Le nom d'utilisateur administrateur initial est configurable ; le mot de passe est récupéré depuis Secret Manager (voir §2.E).

4. Variables de configuration​

Les variables sont regroupées exactement comme elles apparaissent sur la plateforme de déploiement. Seuls les paramètres propres à Nextcloud ou notables pour lui sont listés ; toutes les autres entrées sont héritées d'App_CloudRun avec leur comportement standard.

Groupe 1 — Projet et identité​

VariableValeur par défautDescription
project_id(obligatoire)Projet Google Cloud cible.
regionus-central1Région du service et des ressources régionales.

Groupe 2 — Environnement de déploiement​

VariableValeur par défautDescription
tenant_iddemoSuffixe court qui rend les noms de ressources uniques par environnement.
support_users[]Adresses e-mail auxquelles sont accordés l'accès au projet et les alertes de surveillance.
resource_labels{}Libellés appliqués à toutes les ressources.

Groupe 3 — Identité de l'application​

VariableValeur par défautDescription
application_namenextcloudNom de base des ressources. Ne le modifiez pas après le premier déploiement.
display_nameNextcloudNom convivial affiché dans la console.
descriptionNextcloud self-hosted collaboration and file sharing platformDescription du service Cloud Run.
application_version31Tag de version de l'image Nextcloud.

Groupe 4 — Exécution et mise à l'échelle​

VariableValeur par défautDescription
deploy_applicationtrueDéfinissez false pour ne provisionner que l'infrastructure.
cpu_limit2000mCPU par instance ; 2 vCPU recommandés.
memory_limit4GiMémoire par instance ; 4 GiB recommandés.
min_instance_count0Nombre minimal d'instances ; définissez 1 pour éviter les démarrages à froid pour les clients WebDAV.
max_instance_count1Nombre maximal d'instances. Exige Redis + NFS lorsqu'il est > 1.
container_port80Nextcloud/Apache écoute sur le port 80.
execution_environmentgen2Gen2 requis pour les montages NFS.
enable_cloudsql_volumetrueCloud SQL Auth Proxy pour les connexions par socket.
enable_image_mirroringtrueMet en miroir l'image Nextcloud dans Artifact Registry.

Groupe 5 — Contrôle d'accès et d'entrée​

VariableValeur par défautDescription
ingress_settingsallRéseaux autorisés à atteindre le service.
vpc_egress_settingPRIVATE_RANGES_ONLYManière dont le trafic sortant est acheminé via le connecteur VPC.
enable_iapfalseExige une connexion Google via Identity-Aware Proxy.
iap_authorized_users / iap_authorized_groups[]Personnes autorisées à accéder via IAP.

Groupe 6 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres non secrets supplémentaires. Les variables principales de Nextcloud sont définies automatiquement.
secret_environment_variables{}Map variable d'environnement → nom du secret Secret Manager.
secret_propagation_delay30Nombre de secondes d'attente après la création d'un secret avant de poursuivre.
secret_rotation_period2592000sFréquence des notifications de rotation de Secret Manager.

Groupe 7 — Sauvegarde et restauration​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron de sauvegarde automatique (UTC).
backup_retention_days7Rétention ; augmentez-la pour la production/la conformité.
enable_backup_import / backup_source / backup_uri / backup_formatoptions de restaurationRestauration depuis une sauvegarde lors du déploiement.

Groupe 8 — CI/CD et Binary Authorization​

Intégration Cloud Build / Cloud Deploy standard d'App_CloudRun — consultez App_CloudRun. Entrées principales : enable_cicd_trigger, github_repository_url, github_token, enable_cloud_deploy, enable_binary_authorization, binauthz_evaluation_mode.

Groupe 9 — SQL personnalisé​

enable_custom_sql_scripts, custom_sql_scripts_bucket, custom_sql_scripts_path, custom_sql_scripts_use_root — exécutent du SQL depuis un bucket GCS après le provisionnement. Consultez App_CloudRun.

Groupe 10 — Équilibreur de charge, CDN et rétention des images​

VariableValeur par défautDescription
enable_cloud_armorfalseProvisionne un équilibreur de charge HTTPS global + le WAF Cloud Armor.
admin_ip_ranges[]Plages CIDR exemptées des règles WAF.
application_domains[]Noms de domaine personnalisés pour l'équilibreur de charge HTTPS ; également ajoutés à NEXTCLOUD_TRUSTED_DOMAINS.
enable_cdnfalseActive Cloud CDN sur le backend de l'équilibreur de charge.
max_images_to_retain / delete_untagged_images / image_retention_days(définies)Règle de nettoyage d'Artifact Registry.

Groupe 11 — Stockage et système de fichiers​

VariableValeur par défautDescription
create_cloud_storagetrueProvisionne le bucket nc-data.
storage_buckets[]Buckets GCS supplémentaires à provisionner.
enable_nfstrueVolume Filestore partagé pour la configuration et les données de Nextcloud. Exige gen2.
nfs_mount_path/mnt/nfsChemin de montage dans le conteneur.
nfs_instance_name / nfs_instance_base_name(définies)Instance NFS existante / nom de base pour une instance créée à la volée.
gcs_volumes[]Buckets GCS à monter via GCS Fuse.
manage_storage_kms_iam / enable_artifact_registry_cmekfalseOptions CMEK.

Groupe 12 — Backend de base de données​

VariableValeur par défautDescription
database_typeMYSQL_8_0Fixe — ne la modifiez pas.
db_namenextcloudNom de la base de données. Immuable après le premier déploiement.
db_usernextcloudUtilisateur de l'application. Immuable après le premier déploiement.
database_password_length32Longueur du mot de passe généré (16–64).
enable_auto_password_rotation / rotation_propagation_delay_secdésactivéRotation du mot de passe de la base de données.
db_host_env_var_name / db_name_env_var_name / db_user_env_var_name / db_port_env_var_name / service_url_env_var_name""Noms de variables d'environnement supplémentaires sous lesquels les informations de connexion sont injectées.

Groupe 13 — Jobs et tâches planifiées​

VariableValeur par défautDescription
initialization_jobs[]Laissez vide pour utiliser le job db-init intégré.
cron_jobs[]Jobs Cloud Run récurrents déclenchés par Cloud Scheduler.

Groupe 14 — Observabilité et santé​

VariableValeur par défautDescription
startup_probe{ path="/status.php", initial_delay_seconds=60, failure_threshold=40 }Accorde jusqu'à ~10 minutes pour l'occ maintenance:install du premier démarrage.
liveness_probe{ path="/status.php", initial_delay_seconds=120, failure_threshold=3 }Redémarre l'instance après 3 échecs consécutifs.
uptime_check_config{ enabled=false, path="/" }Test de disponibilité Cloud Monitoring ; désactivé par défaut.
alert_policies[]Règles d'alerte sur les métriques.

Groupe 21 — Cache Redis​

VariableValeur par défautDescription
enable_redistrueUtilise Redis pour le cache distribué et le verrouillage de fichiers.
redis_host""Laissez vide pour utiliser l'IP du serveur NFS ; définissez-le explicitement lorsque NFS est désactivé.
redis_port6379Port Redis.
redis_auth""Mot de passe d'authentification Redis facultatif (sensible).

Groupe 22 — VPC Service Controls et journalisation d'audit​

VariableValeur par défautDescription
enable_vpc_scfalseApplique un périmètre VPC-SC (exige organization_id).
vpc_cidr_ranges / vpc_sc_dry_run(définies)Plages CIDR du niveau d'accès / mode simulation (dry-run).
enable_audit_loggingfalseCloud Audit Logs détaillés.

Groupe 23 — Paramètres de l'application Nextcloud​

VariableValeur par défautDescription
nextcloud_admin_useradminNom d'utilisateur de l'administrateur initial. Changez la valeur par défaut pour les déploiements exposés publiquement.
php_memory_limit512MLimite de mémoire PHP — intégrée à l'image du conteneur au moment du build.
upload_max_filesize512MTaille maximale des fichiers téléversés — intégrée à l'image.
post_max_size512MLimite du corps POST de PHP — doit être ≥ upload_max_filesize.

Groupe 24 — E-mail / SMTP​

VariableValeur par défautDescription
smtp_host""Nom d'hôte du serveur SMTP. Laissez vide pour désactiver l'e-mail.
smtp_secure""Chiffrement : ssl, tls, ou vide pour aucun.
smtp_port""Port SMTP ; prend la valeur par défaut du mode lorsqu'il est vide.
smtp_authtypeLOGINMécanisme d'authentification : LOGIN, PLAIN ou NONE.
smtp_name""Nom d'utilisateur de connexion SMTP.
mail_from_address""Partie locale de l'adresse d'expéditeur (avant le @).
mail_domain""Partie domaine de l'adresse d'expéditeur (après le @).

5. Sorties​

Renvoyés lors d'un déploiement réussi — le moyen le plus rapide de localiser et d'explorer les ressources en cours d'exécution.

SortieDescription
service_nameNom du service Cloud Run.
service_urlURL run.app par défaut du service.
service_locationRégion dans laquelle s'exécute le service.
stage_servicesURL des services propres à chaque étape (Cloud Deploy).
load_balancer_ip / load_balancer_urlIP / URL de l'équilibreur de charge HTTPS externe (lorsqu'il est activé).
database_instance_nameNom de l'instance Cloud SQL.
database_name / database_userNom / utilisateur de la base de données de l'application.
database_password_secretSecret Secret Manager contenant le mot de passe de la base de données.
database_host / database_portPoint de terminaison / port de la base de données.
storage_bucketsBuckets Cloud Storage créés.
network_name / network_exists / regionsRéseau VPC, présence, régions.
container_image / container_registryImage déployée et dépôt Artifact Registry.
monitoring_enabled / monitoring_notification_channels / uptime_check_namesÉtat de la surveillance, canaux, tests de disponibilité.
initialization_jobsNoms des jobs de configuration.
deployment_id / tenant_id / resource_prefixIdentifiants de nommage.
project_id / project_numberIdentifiants du projet.
cicd_enabled / github_repository_url / github_repository_owner / github_repository_name / cicd_configurationÉtat et détails du CI/CD.
artifact_registry_repository / cloudbuild_trigger_name / cloudbuild_trigger_idRegistre et déclencheur de build.
vpc_sc_enabled / vpc_sc_perimeter_name / vpc_sc_dry_run_modeÉtat de VPC-SC.
audit_logging_enabled / artifact_registry_cmek_enabledÉtat de la journalisation d'audit et de CMEK.

6. Pièges de configuration et valeurs par défaut judicieuses​

Risque : Critique (perte de données / panne / sécurité) — Élevé (service dégradé) — Moyen (coût ou dégradation partielle) — Faible (mineur).

ParamètreValeur judicieuseRisqueConséquence en cas d'erreur
database_typeMYSQL_8_0CritiqueNextcloud exige MySQL ; les autres moteurs font échouer le job d'initialisation et le démarrage.
enable_nfstrueCritiqueSans stockage partagé, tous les fichiers utilisateur et config.php sont perdus à chaque démarrage à froid.
enable_cloudsql_volumetrueCritiqueNextcloud se connecte via un socket Unix ; supprimer le sidecar casse toutes les connexions à la base de données.
db_name / db_userà définir une seule foisCritiqueImmuables après le premier déploiement ; les renommer recrée la base de données/l'utilisateur et détruit les données.
application_domainsinclure tous les noms d'hôte d'accèsCritiqueNextcloud bloque les requêtes provenant de domaines non listés avec « Access through untrusted domain ».
enable_backup_importfalse sauf en cas de restaurationCritiqueL'activer sans backup_uri valide fait échouer le job d'import.
execution_environmentgen2CritiqueLes montages NFS exigent gen2 ; gen1 ne peut pas monter NFS et le service ne démarre pas.
enable_redistrueÉlevéAvec plus d'une instance, les verrous de fichiers deviennent obsolètes et les écritures concurrentes renvoient HTTP 503.
redis_host"" ou IP expliciteÉlevéAucun point de terminaison Redis valide lorsque NFS est désactivé et qu'aucun hôte n'est défini.
upload_max_filesize / post_max_sizeà augmenter pour les gros fichiersÉlevéIntégrées à l'image ; les fichiers dépassant la limite échouent silencieusement. post_max_size doit être ≥ upload_max_filesize.
memory_limit4GiÉlevéUne mémoire insuffisante provoque des OOM PHP lors de gros téléversements ou de la génération de miniatures.
NEXTCLOUD_UPDATE1 (par défaut) ou 0ÉlevéLaisser 1 lors d'une mise à niveau de version majeure peut corrompre la base de données. Définissez 0 et exécutez occ upgrade manuellement.
min_instance_count1 pour un usage WebDAVMoyenLe scale-to-zero provoque des déconnexions liées aux démarrages à froid pour les clients de synchronisation de bureau.
max_instance_count > 1exige Redis + NFSÉlevéPlusieurs instances sans Redis provoquent des erreurs de verrouillage de fichiers et une possible corruption des données.
php_memory_limit512M (à augmenter pour un usage intensif)MoyenIntégrée à l'image ; sa modification exige un nouveau build.
nextcloud_admin_userà changer par rapport à adminMoyenLa valeur par défaut admin est une cible courante d'attaques par force brute sur les déploiements publics.
enable_iap / enable_cloud_armorà activer pour les accès d'administrationMoyenSans ces options, le panneau d'administration de Nextcloud est accessible publiquement.
backup_retention_days7 (à augmenter en production)MoyenTrop court pour une rétention réglementaire.

Pour le comportement du socle évoqué tout au long de ce guide — identité du service, mise à l'échelle et concurrence, entrée et équilibrage de charge, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC-SC, sauvegardes et mise en miroir des images — consultez App_CloudRun. La configuration applicative propre à Nextcloud, partagée avec la variante GKE, est décrite dans Nextcloud_Common.

Need RAD to do something it does not do yet? Request it on the roadmap, or vote on what is already there.