Aller au contenu principal

Roundcube sur Google Cloud Run

Roundcube est un client webmail IMAP gratuit, open-source et basé sur un navigateur. Il offre aux utilisateurs une expérience de messagerie de type ordinateur de bureau (dossiers, carnet d'adresses, recherche et composition de messages) avec un serveur de messagerie IMAP et SMTP existant. Roundcube est un client de messagerie : ce module ne déploie aucun serveur de messagerie. Il déploie Roundcube sur Cloud Run v2 sur la base de la fondation App_CloudRun, qui provisionne et gère l'infrastructure partagée de Google Cloud.

Ce guide se concentre sur les services cloud utilisés par Roundcube et sur la manière de les explorer et de les exploiter à partir de la console Google Cloud et de la ligne de commande. Pour les mécanismes communs à toutes les applications Cloud Run (identité de 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 de la fondation App_CloudRun plutôt que de les répéter ici.


1. Vue d'ensemble​

Roundcube s'exécute en tant que conteneur PHP (l'image officielle roundcube/roundcubemail -apache, enveloppée par un point d'entrée personnalisé) sur Cloud Run v2. Le déploiement relie un ensemble ciblé de services Google Cloud :

CapacitéService Google CloudNotes
CalculCloud Run v2Service PHP/Apache, 1 vCPU / 2 GiB par défaut, autoscaling sans serveur ; mise à l'échelle à zéro par défaut
Base de donnéesCloud SQL pour MySQL 8.0Données propres à Roundcube — préférences, contacts, données de session. Le courrier lui-même reste sur le serveur IMAP
Stockage d'objetsCloud StorageUn bucket générique data est provisionné, mais Roundcube ne le lit ni ne l'écrit
SecretsSecret Managerdes_key (ROUNDCUBEMAIL_DES_KEY) généré automatiquement ; mot de passe de la base de données
EntréeURL Cloud Run / Cloud Load BalancingURL run.app par défaut ; équilibreur de charge HTTPS externe facultatif + domaine personnalisé
Courrier(aucun — externe)Vous fournissez les serveurs IMAP et SMTP

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

  • Aucun serveur IMAP ou SMTP n'est configuré. Le module définit ROUNDCUBEMAIL_DEFAULT_HOST et ROUNDCUBEMAIL_SMTP_SERVER à des valeurs vides, et ce wrapper n'expose aucune entrée pour eux. Définissez-les dans environment_variables (Groupe 6) avant que quiconque ne puisse se connecter — voir §3.
  • Pas de comptes locaux. Les utilisateurs se connectent avec leur nom d'utilisateur et leur mot de passe IMAP. Il n'y a pas de compte administrateur ni de secret de mot de passe administrateur.
  • MySQL 8.0 uniquement. Le point d'entrée du wrapper compose toujours un DSN mysql://.
  • enable_cloudsql_volume = false. Le DSN utilise DB_IP, l'IP privée de Cloud SQL, donc Cloud Run se connecte via TCP IP privée, et non via le socket Unix du proxy d'authentification.
  • La mise à l'échelle à zéro est activée par défaut (min_instance_count = 0, max_instance_count = 1). Les démarrages à froid ajoutent de la latence à la première requête après l'inactivité ; définissez min_instance_count = 1 pour éviter cela.
  • Pas de job de schéma séparé. L'image exécute bin/installto.sh -y à chaque démarrage, ce qui crée et met à jour le schéma de manière idempotente. Seul db-init s'exécute en tant que job Cloud Run.
  • Tag d'image épinglé. application_version = "1.6.19-apache". Gardez un tag exact — un tag glissant se reconstruit sans produire de nouvelle révision.

2. Services Google Cloud et comment les explorer​

Toutes les commandes supposent que PROJECT et REGION sont définis. Les noms de services et de ressources sont indiqués dans les Sorties du déploiement.

A. Cloud Run — le service Roundcube​

Roundcube s'exécute en tant que service Cloud Run v2 qui s'adapte automatiquement à la charge des requêtes entre le nombre 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 sûrs.

  • Console : Cloud Run → sélectionnez le service pour les révisions, le trafic, les logs 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"

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

B. Cloud SQL pour MySQL 8.0​

Roundcube stocke ses propres données (préférences utilisateur, contacts du carnet d'adresses et données de session) dans une instance gérée de Cloud SQL pour MySQL 8.0. Le courrier n'est jamais stocké ici ; il reste sur le serveur IMAP. Le service se connecte via l'IP privée de l'instance via TCP. Lors du premier déploiement, le job db-init crée la base de données et l'utilisateur de l'application ; le schéma est ensuite créé par Roundcube lui-même (bin/installto.sh -y) lorsque le conteneur démarre.

  • Console : SQL → sélectionnez l'instance pour les connexions, les sauvegardes, les drapeaux, 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> --database=<db-name> --project "$PROJECT"

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

C. Cloud Storage​

Un bucket générique data est provisionné par défaut (via l'entrée storage_buckets de la Fondation), mais Roundcube ne le lit ni ne l'écrit jamais : gcs_volumes est vide, donc aucun bucket n'est monté dans le conteneur. Les pièces jointes en transit sont écrites dans un espace de travail local au conteneur (ROUNDCUBEMAIL_TEMP_DIR = /tmp/roundcube-temp), qu'il est sûr de perdre lors d'un démarrage à froid.

  • Console : Cloud Storage → Buckets.
  • CLI :
    gcloud storage buckets list --project "$PROJECT"

D. Secret Manager​

Un secret d'application est généré automatiquement : le des_key de 24 caractères, stocké sous le nom secret-<prefix>-roundcube-des-key et injecté sous le nom ROUNDCUBEMAIL_DES_KEY. Roundcube l'utilise pour chiffrer les données de session et le mot de passe IMAP qu'il détient au nom de chaque utilisateur connecté. Le mot de passe de la base de données est géré séparément par la fondation.

  • Console : Sécurité → Secret Manager.
  • CLI :
    gcloud secrets list --project "$PROJECT" --filter="name~des-key"
    gcloud secrets versions access latest --secret=<secret-name> --project "$PROJECT"

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

E. Réseau et entrée​

Le service est accessible par son URL run.app par défaut. Un équilibreur de charge HTTPS externe avec un domaine personnalisé, Cloud CDN et Cloud Armor peuvent être superposés. Roundcube établit également des connexions sortantes vers vos serveurs IMAP et SMTP ; avec le vpc_egress_setting = PRIVATE_RANGES_ONLY par défaut, le trafic vers un serveur de messagerie public part directement plutôt que via le VPC.

  • Console : Cloud Run (URL du service) ; Services réseau → Équilibrage de charge.
  • CLI :
    gcloud run services describe <service-name> --region "$REGION" --format='value(status.url)'
    gcloud compute addresses list --project "$PROJECT"

Voir App_CloudRun.

F. Cloud Logging et Monitoring​

Les logs des conteneurs sont envoyés à Cloud Logging ; les métriques Cloud Run et Cloud SQL sont envoyées à Cloud Monitoring. Le test de disponibilité est désactivé par défaut (uptime_check_config.enabled = false) ; les politiques d'alerte sont facultatives.

  • Console : Logging → Explorateur de logs ; Monitoring → Tableaux de bord / Alertes.
  • CLI :
    gcloud run services logs read <service-name> --project "$PROJECT" --region "$REGION" --limit 50

3. Comportement de l'application Roundcube​

  • Pointer Roundcube vers un serveur de messagerie. Roundcube_Common définit ces variables d'environnement, et environment_variables (Groupe 6) est fusionné par-dessus, c'est donc là que vous configurez le serveur de messagerie :

    VariableValeur par défautSignification
    ROUNDCUBEMAIL_DEFAULT_HOST""Serveur IMAP sur lequel les utilisateurs se connectent. ssl://host pour TLS implicite, tls://host pour STARTTLS ; un nom d'hôte nu est en clair.
    ROUNDCUBEMAIL_DEFAULT_PORT993Port IMAP — 993 pour TLS implicite, 143 pour STARTTLS.
    ROUNDCUBEMAIL_SMTP_SERVER""Serveur SMTP utilisé pour l'envoi.
    ROUNDCUBEMAIL_SMTP_PORT587Port de soumission — 587 ou 465. Jamais 25 : Google Cloud bloque le port 25 sortant.
    ROUNDCUBEMAIL_SKINelasticThème Roundcube.

    Roundcube_Common a des entrées imap_host/imap_port/smtp_host/smtp_port/skin qui alimentent ces valeurs, mais Roundcube_CloudRun ne les déclare ni ne les transmet, donc sur ce wrapper environment_variables est la seule voie d'accès.

  • Connexion. Ouvrez l'URL du service et connectez-vous avec un compte sur le serveur IMAP. Roundcube n'a pas de comptes locaux ou administrateur.

  • DSN de la base de données. Le point d'entrée du wrapper compose ROUNDCUBEMAIL_DSNW=mysql://DB_USER:<password>@DB_IP:DB_PORT/DB_NAME avec le mot de passe encodé en URL par rawurlencode de PHP, définit ROUNDCUBEMAIL_DSNR à la même valeur, et transmet à /docker-entrypoint.sh de l'image. Le point d'entrée du fournisseur interpolerait autrement le mot de passe brut, ce qui échoue sur les caractères @ : / ? # % & + que contiennent les mots de passe Cloud SQL.

  • Schéma. Il n'y a pas de job de schéma : l'image exécute bin/installto.sh -y à chaque démarrage, créant le schéma au premier démarrage et le mettant à jour après un changement de version.

  • Limite de mémoire PHP. php_memory_limit atteint le conteneur en tant que PHP_MEMORY_LIMIT ; le point d'entrée l'écrit dans /usr/local/etc/php/conf.d/zz-rad-overrides.ini, remplaçant memory_limit=64M de l'image. Le log du conteneur le confirme au démarrage : [startup] PHP memory_limit set to 512M via ....

  • Comportement du test de santé. Les deux sondes sont HTTP GET /, où Roundcube sert son formulaire de connexion. La sonde de démarrage autorise un délai de 30 s plus 20 tentatives de 15 s, car l'image exécute installto.sh et attend la base de données avant le démarrage d'Apache.

    curl -s -o /dev/null -w "%{http_code}\n" "$SERVICE_URL/"   # expect 200
  • Inspecter l'exécution du job :

    gcloud run jobs list --project "$PROJECT" --region "$REGION"
    gcloud run jobs executions list --job <job-name> --project "$PROJECT" --region "$REGION"

4. Variables de configuration​

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

Groupe 1 — Projet et identité​

VariableValeur par défautDescription
project_id(obligatoire)Projet Google Cloud cible.
tenant_iddemoSuffixe court (1 à 7 caractères alphanumériques minuscules) qui rend les noms de ressources uniques par environnement.
regionus-central1Région pour le service et les ressources régionales.

Groupe 2 — Environnement de déploiement​

VariableValeur par défautDescription
support_users[]E-mails auxquels 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_nameroundcubeNom de base pour les ressources. Ne pas modifier après le premier déploiement.
display_nameRoundcubeNom lisible par l'homme affiché dans la console.
application_version1.6.19-apacheTag roundcube/roundcubemail, passé comme ARG de build ROUNDCUBE_VERSION. La valeur de ce wrapper est celle qui l'emporte. Épinglez un tag -apache exact.
php_memory_limit512Mmemory_limit PHP, appliqué via conf.d/zz-rad-overrides.ini.
admin_emailadmin@example.comSans effet — Roundcube ne crée aucun compte.
enable_gcs_storage_volumetrueSans effet — Roundcube_Common le déclare mais ne l'utilise jamais ; rien n'est monté.

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

VariableValeur par défautDescription
deploy_applicationtrueDéfinissez false pour provisionner uniquement l'infrastructure.
container_image_sourcecustomConstruit l'image du wrapper via Cloud Build. "prebuilt" ignore le point d'entrée du wrapper, de sorte que le DSN n'est plus encodé en URL et php_memory_limit cesse de fonctionner.
cpu_limit1000mCPU par instance.
memory_limit2GiMémoire par instance.
min_instance_count00 active la mise à l'échelle à zéro.
max_instance_count1Limite supérieure d'autoscaling.
container_port80Apache écoute sur le port 80.
execution_environmentgen2Gen2 requis pour les montages GCS Fuse.
timeout_seconds300Durée maximale de la requête.
enable_cloudsql_volumefalseLe DSN utilise DB_IP sur TCP ; le socket n'est pas utilisé.
enable_image_mirroringtrueMettre en miroir l'image dans Artifact Registry.
container_protocolhttp1HTTP/1.1.

Groupe 5 — Accès et contrôle d'entrée​

VariableValeur par défautDescription
ingress_settingsallEntrée publique par défaut.
vpc_egress_settingPRIVATE_RANGES_ONLYAcheminer uniquement le trafic RFC 1918 via le VPC. Utilisez ALL_TRAFFIC uniquement si les serveurs IMAP/SMTP doivent être atteints via le VPC.
enable_iapfalseExiger la connexion Google devant la connexion Roundcube.
iap_authorized_users / iap_authorized_groups[]Qui peut accéder via IAP.

Groupe 6 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres supplémentaires non secrets, fusionnés sur les valeurs par défaut du module. Définissez ROUNDCUBEMAIL_DEFAULT_HOST, ROUNDCUBEMAIL_DEFAULT_PORT, ROUNDCUBEMAIL_SMTP_SERVER, ROUNDCUBEMAIL_SMTP_PORT et, éventuellement, ROUNDCUBEMAIL_SKIN ici.
secret_environment_variables{}Carte de variable d'environnement → nom de secret Secret Manager.
protect_sensitive_environment_variablestrueLes clés nommées par les identifiants tapées dans environment_variables sont automatiquement déplacées dans Secret Manager.
secret_propagation_delay30Secondes à attendre après la création du secret avant de continuer.
secret_rotation_period2592000sFréquence de notification de rotation de Secret Manager.

Groupe 7 — Sauvegarde et restauration​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron de sauvegarde automatisée (UTC).
backup_retention_days7Rétention ; augmenter pour la production.
enable_backup_import / backup_source / backup_uri / backup_formatoptions de restaurationRestaurer à partir d'une sauvegarde lors du déploiement.

Groupe 8 — CI/CD et autorisation binaire​

Intégration standard de Cloud Build / Cloud Deploy d'App_CloudRun — voir App_CloudRun. Entrées clés : enable_cicd_trigger, github_repository_url, github_token, enable_cloud_deploy, enable_binary_authorization.

Groupe 9 — Scripts SQL personnalisés et serveur NFS​

enable_custom_sql_scripts, custom_sql_scripts_bucket, custom_sql_scripts_path, custom_sql_scripts_use_root — exécutez du SQL à partir d'un bucket GCS après le provisionnement. nfs_instance_name / nfs_instance_base_name sélectionnent ou nomment une VM NFS, et n'ont d'importance que si enable_nfs est activé. Voir App_CloudRun.

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

VariableValeur par défautDescription
enable_cloud_armorfalseProvisionner le LB HTTPS global + WAF Cloud Armor.
admin_ip_ranges[]Liste blanche CIDR pour l'accès privilégié.
application_domains[]Noms de domaine personnalisés pour le LB HTTPS.
enable_cdnfalseActiver Cloud CDN sur le backend du LB HTTPS.
max_images_to_retain / delete_untagged_images / image_retention_days7 / true / 30Politique de nettoyage d'Artifact Registry.

Groupe 11 — Stockage et système de fichiers​

VariableValeur par défautDescription
create_cloud_storagetrueCréer le bucket GCS générique data. Non lu ou écrit par Roundcube.
enable_nfsfalseNon nécessaire — l'image ne déclare aucun volume et ne conserve aucun état sur disque qui doit survivre à un redémarrage.
nfs_mount_path/var/lib/roundcubeChemin de montage, utilisé uniquement lorsque enable_nfs = true.
gcs_volumes[]Montages de volume GCS Fuse (nécessite gen2). Vide — rien n'est monté.
manage_storage_kms_iam / enable_artifact_registry_cmekfalseOptions CMEK.

Groupe 12 — Backend de base de données​

VariableValeur par défautDescription
database_typeMYSQL_8_0Doit rester MySQL — le point d'entrée compose un DSN mysql://. Le sélecteur propose également POSTGRES et NONE ; aucun ne fonctionne.
db_name / db_userroundcubePréfixé par le locataire au moment du déploiement. Immuable après le premier déploiement.
database_password_length32Longueur du mot de passe généré (16-64). Définir une fois — le modifier sur un déploiement en cours rompt l'authentification de la base de données.
enable_auto_password_rotationfalseRotation automatisée du mot de passe de la base de données.
rotation_propagation_delay_sec90Attendre après la rotation avant de redémarrer le service.
db_host_env_var_nameDB_IPNom supplémentaire pour l'IP de l'hôte de la base de données. La Fondation injecte déjà DB_IP, ce que le point d'entrée lit, donc la valeur par défaut ne fait que le dupliquer.

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

VariableValeur par défautDescription
initialization_jobs[]Laisser vide pour utiliser le job db-init intégré. Fournir une liste quelconque le remplace.
cron_jobs[]Aucune tâche récurrente planifiée par la plateforme par défaut.

Groupe 14 — Observabilité et santé​

VariableValeur par défautDescription
startup_probeHTTP GET /, délai de 30s, timeout de 10s, période de 15s, 20 tentativesAttend installto.sh et la base de données avant le démarrage d'Apache.
liveness_probeHTTP GET /, délai de 60s, timeout de 10s, période de 30s, 3 tentativesLe formulaire de connexion à la racine du document.
uptime_check_config{ enabled = false, path = "/" }Test de disponibilité Cloud Monitoring — désactivé par défaut.
alert_policies[]Politiques d'alerte métrique.

Groupe 21 — Redis​

VariableValeur par défautDescription
enable_redisfalseCe module ne connecte aucune intégration Redis à Roundcube.
redis_host""Point de terminaison Redis.
redis_port6379Port Redis.

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

VariableValeur par défautDescription
enable_vpc_scfalseAppliquer un périmètre VPC-SC (nécessite organization_id).
enable_audit_loggingfalseLogs d'audit Cloud détaillés.

5. Sorties​

Retourné 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 le service s'exécute.
stage_servicesServices d'étape Cloud Deploy (lorsqu'activé).
load_balancer_ip / load_balancer_urlIP / URL de l'équilibreur de charge HTTPS externe (lorsqu'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 (db-init).
deployment_id / tenant_id / resource_prefixIdentifiants de nommage.
project_id / project_numberIdentifiants de projet.
cicd_enabled / github_repository_url / github_repository_owner / github_repository_name / cicd_configurationÉtat et détails 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 VPC-SC.
audit_logging_enabled / artifact_registry_cmek_enabledJournalisation d'audit et état 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).

Validation héritée au moment de la planification. Ce module transmet sa configuration au moteur de la fondation App_CloudRun, qui valide les valeurs et les combinaisons au moment de la planification. Une configuration invalide fait échouer la planification avec une erreur claire et nommée avant la création de toute ressource, de sorte que la plupart des erreurs ci-dessous sont détectées en amont plutôt qu'au moment de l'application ou de l'exécution.

ParamètreValeur judicieuseRisqueConséquence en cas d'erreur
ROUNDCUBEMAIL_DEFAULT_HOST / ROUNDCUBEMAIL_SMTP_SERVER (via environment_variables)Vos serveurs IMAP et SMTPÉlevéLaissé vide par défaut. Le service est sain et affiche son formulaire de connexion, mais aucun utilisateur ne peut se connecter ou envoyer de courrier. Un test de santé vert ne prouve pas que le courrier fonctionne.
ROUNDCUBEMAIL_SMTP_PORT587 ou 465ÉlevéGoogle Cloud bloque le port 25 sortant pour toutes les sorties ; l'envoi via le port 25 ne réussit jamais.
Schéma ROUNDCUBEMAIL_DEFAULT_HOSTssl://host ou tls://hostÉlevéUn nom d'hôte nu se connecte en clair, envoyant les mots de passe IMAP des utilisateurs non chiffrés. N'utilisez un hôte nu que pour un serveur à l'intérieur du VPC.
ROUNDCUBEMAIL_DES_KEY (généré automatiquement)Ne jamais modifier manuellement dans Secret ManagerÉlevéIl chiffre les données de session et les mots de passe IMAP stockés. Le modifier déconnecte tous les utilisateurs ; le supprimer fait que l'image du fournisseur génère une clé différente par conteneur, déconnectant les utilisateurs au hasard entre les instances et les démarrages à froid sans rien dans les logs.
container_image_sourcecustomCritiqueprebuilt déploie une image sans le point d'entrée du wrapper — le mot de passe de la base de données n'est plus encodé en URL dans le DSN, de sorte que la connexion échoue sur la ponctuation que contiennent les mots de passe Cloud SQL.
database_typeMYSQL_8_0CritiqueLe point d'entrée construit toujours un DSN mysql://. Tout autre moteur (ou NONE) laisse Roundcube sans base de données utilisable.
application_versionUn tag -apache exactMoyenlatest ou un tag 1.6.x-apache glissant peut modifier le contenu sous la même chaîne de tag, ce qui ne produit pas de diff Terraform et pas de nouvelle révision — le conteneur en cours d'exécution conserve silencieusement l'ancienne image. Les variantes -fpm n'ont pas de serveur web.
db_name / db_userDéfinir une foisCritiqueImmuable après le premier déploiement ; le renommage recrée la base de données/l'utilisateur et perd les préférences et contacts stockés.
database_password_lengthDéfinir une fois, au premier déploiementÉlevéLe modifier sur un déploiement en cours écrit un nouveau mot de passe que la base de données ne détient pas, et chaque connexion échoue jusqu'à ce que le job de la base de données soit relancé.
php_memory_limit512M ou plusMoyenLa valeur par défaut de l'image est de 64 Mo ; les messages et pièces jointes volumineux sont les cas où un petit tas PHP s'épuise.
admin_email, enable_gcs_storage_volumeLaisser tel quelFaibleAucun n'a d'effet sur ce module, quelle que soit leur description.
min_instance_count1 pour la productionMoyenLa mise à l'échelle à zéro (0) ajoute une latence de démarrage à froid, y compris l'exécution de installto.sh, à la première requête après l'inactivité.
enable_cloud_armoractiver pour la productionMoyenLe formulaire de connexion est publiquement accessible sans protection WAF par défaut.

Pour le comportement de la fondation référencé tout au long (identité de 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 d'images), voir App_CloudRun. La configuration d'application spécifique à Roundcube est décrite dans Roundcube_Common.

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