Aller au contenu principal

Outline sur Google Cloud Run

Outline sur Google Cloud Run

Outline est une base de connaissances et un wiki d'équipe collaboratif et rapide, dans l'esprit de Notion, avec édition en temps réel, documents markdown riches et recherche puissante — une alternative open source à Confluence et Notion. Ce module déploie Outline sur Cloud Run v2 en s'appuyant sur le socle App_CloudRun, qui provisionne et gère l'infrastructure Google Cloud partagée.

Ce guide se concentre sur les services cloud utilisés par Outline 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 à toutes les applications 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​

Outline s'exécute sous forme de conteneur Node.js sur Cloud Run v2, construit à partir d'une image personnalisée (outlinewiki/outline plus un point d'entrée de la plateforme). Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculCloud Run v2Service Node.js, 1 vCPU / 1 GiB par défaut, facturation à la requête, mise à l'échelle à zéro
Base de donnéesCloud SQL for PostgreSQL 15Obligatoire — connexion via le socket Unix du Cloud SQL Auth Proxy ; extension pg_trgm activée
Cache et sessionsRedisRequis par Outline ; activé par défaut, servi depuis l'hôte NFS partagé sauf si redis_host est défini
Fichiers partagésFilestore (NFS)Les pièces jointes téléversées (FILE_STORAGE=local) persistent entre les redémarrages et les instances (gen2 requis)
Stockage d'objetsCloud StorageUn bucket storage dédié provisionné automatiquement
SecretsSecret ManagerSECRET_KEY, UTILS_SECRET et le mot de passe de la base de données gérés automatiquement
EntréeURL Cloud Run / Cloud Load BalancingURL run.app par défaut ; équilibreur de charge HTTPS externe + domaine personnalisé en option

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

  • PostgreSQL 15 est obligatoire. Outline est une application Sequelize/PostgreSQL ; MySQL n'est pas pris en charge.
  • DATABASE_URL et REDIS_URL sont assemblées au démarrage du conteneur. La plateforme injecte les éléments individuels (DB_USER, DB_PASSWORD, DB_HOST, DB_NAME, REDIS_HOST, …) et le point d'entrée personnalisé construit les URL de connexion — ne définissez jamais DATABASE_URL vous-même.
  • L'URL du service est injectée sous le nom URL. service_url_env_var_name vaut URL par défaut, car Outline a besoin de sa propre URL publique pour construire la redirect_uri OIDC. Sans elle, Outline n'enregistre aucun fournisseur d'authentification.
  • Le fournisseur d'authentification est une étape à la charge de l'opérateur. Les variables d'environnement OIDC_* sont livrées volontairement vides — tant que vous n'avez pas configuré un fournisseur d'identité OIDC après le déploiement, la page de connexion est vide et le wiki est inutilisable. Voir le §3.
  • Redis est obligatoire, pas facultatif. enable_redis vaut true par défaut ; lorsque redis_host est vide, le socle fait pointer REDIS_URL vers l'hôte NFS partagé, qui héberge aussi Redis.
  • Les téléversements vont sur NFS. FILE_STORAGE=local avec FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data, adossé au montage Filestore situé au même chemin (plafond de 25 MiB par téléversement par défaut).
  • FORCE_HTTPS=false est défini délibérément. TLS est terminé en amont par Cloud Run ; la redirection HTTPS par défaut d'Outline casserait les sondes de santé HTTP.
  • Un job db-init s'exécute à chaque apply pour créer de manière idempotente la base de données PostgreSQL et l'utilisateur d'Outline.
  • Mise à l'échelle à zéro par défaut. min_instance_count = 0, max_instance_count = 1, facturation à la requête (cpu_always_allocated = false).

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 Outline​

Outline s'exécute en tant que service Cloud Run v2 à l'écoute sur le port 3000, qui se met à l'échelle automatiquement selon la charge de requêtes entre le nombre minimal et le nombre 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. Un WebSocket d'édition collaborative ouvert compte comme une requête active : le CPU reste donc alloué tant que quelqu'un édite, même avec la facturation à la requête.

  • Console : Cloud Run → sélectionnez le service pour consulter 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 PostgreSQL 15​

Outline stocke toutes les données applicatives (documents, collections, utilisateurs, révisions) dans une instance gérée Cloud SQL for PostgreSQL 15. Le service s'y connecte de manière privée via le Cloud SQL Auth Proxy sur un socket Unix (pas d'IP publique) ; le point d'entrée assemble automatiquement la DATABASE_URL sous forme de socket et l'extension pg_trgm est activée pour la recherche. Lors du premier déploiement, un Job db-init crée la base de données et l'utilisateur de l'application.

  • Console : SQL → sélectionnez l'instance pour consulter 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 du mot de passe.

C. Filestore (NFS) et Cloud Storage​

Les pièces jointes et images téléversées sont écrites sur un partage Filestore (NFS) monté sur /var/lib/outline/data, de sorte que toutes les instances partagent les mêmes fichiers et que les téléversements survivent aux redémarrages. Un bucket Cloud Storage dédié (suffixe storage) est également provisionné automatiquement. L'environnement d'exécution gen2 est requis pour les montages NFS.

  • Console : Filestore → Instances ; Cloud Storage → Buckets.
  • CLI :
    gcloud filestore instances list --project "$PROJECT"
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<storage-bucket>/ # bucket name is in the Outputs

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

D. Redis​

Outline nécessite Redis pour les sessions, la mise en cache et sa file d'attente en arrière-plan — il ne démarre pas sans point de terminaison Redis joignable. Lorsqu'aucun hôte Redis externe n'est configuré, le socle injecte une REDIS_URL pointant vers l'hôte NFS partagé, qui héberge aussi Redis.

  • 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​

Trois secrets sont gérés automatiquement : le mot de passe de la base de données (créé par le socle) ainsi que SECRET_KEY et UTILS_SECRET d'Outline — deux valeurs de 64 caractères hexadécimaux (le format openssl rand -hex 32 exigé en amont) créées par Outline_Common et injectées dans le service à l'exécution. Le texte en clair n'apparaît jamais dans la configuration.

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

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

F. Réseau et entrée​

Le service est accessible par défaut à 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é. N'oubliez pas que l'URL d'Outline doit correspondre à l'hôte que les utilisateurs consultent réellement — si vous placez un domaine personnalisé devant le service, définissez URL en conséquence.

  • 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 vers Cloud Logging ; les métriques Cloud Run et Cloud SQL sont envoyées vers 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 Outline​

  • Configuration de la base de données au premier déploiement. Un Job db-init (postgres:15-alpine) se connecte à Cloud SQL via le socket de l'Auth Proxy et, de manière idempotente, crée la base de données et l'utilisateur d'Outline, accorde les privilèges et attribue le rôle de l'utilisateur à postgres afin de pouvoir définir la propriété. Le job s'exécute à chaque apply et peut être réexécuté sans risque.
  • Migrations à chaque démarrage. Outline n'effectue pas de migration automatique. Le point d'entrée personnalisé attend PostgreSQL (pg_isready, jusqu'à ~3 minutes), puis exécute les migrations Sequelize (sequelize db:migrate --env=production-ssl-disabled) avant de démarrer le serveur ; les mises à niveau de version appliquent ainsi les modifications de schéma sans étape manuelle.
  • Les URL de connexion sont assemblées, pas configurées. Le point d'entrée construit DATABASE_URL à partir des variables DB_* injectées par la plateforme — sous forme de socket (?host=/cloudsql/…&sslmode=disable) sur Cloud Run — et REDIS_URL à partir de REDIS_HOST/REDIS_PORT, avec repli sur l'hôte NFS. Ne définissez manuellement aucune de ces deux variables.
  • URL est injectée automatiquement. Le socle injecte l'URL prévue du service sous le nom URL (via service_url_env_var_name = "URL"). Outline l'utilise pour construire la redirect_uri OIDC et tous les liens absolus. Ne la remplacez que si vous servez l'application depuis un domaine personnalisé.
  • L'authentification est une étape OBLIGATOIRE après le déploiement. Les espaces réservés OIDC_* sont livrés vides, et tant qu'ils le restent la page de connexion n'affiche aucun fournisseur — le déploiement est sain mais personne ne peut se connecter. Pour utiliser Google comme IdP, par exemple :
    gcloud run services update <service-name> --project "$PROJECT" --region "$REGION" \
    --update-env-vars=OIDC_AUTH_URI=https://accounts.google.com/o/oauth2/v2/auth,\
    OIDC_TOKEN_URI=https://oauth2.googleapis.com/token,\
    OIDC_USERINFO_URI=https://openidconnect.googleapis.com/v1/userinfo,\
    OIDC_USERNAME_CLAIM=email
    Liez ensuite les identifiants du client sous forme de secrets. Piège : OIDC_CLIENT_ID/OIDC_CLIENT_SECRET sont livrées comme variables d'environnement simples et vides, et gcloud refuse de convertir une variable d'environnement en référence de secret en une seule étape (« already set with a different type ») — supprimez-les d'abord, puis mettez à jour :
    gcloud run services update <service-name> --region "$REGION" \
    --remove-env-vars=OIDC_CLIENT_ID,OIDC_CLIENT_SECRET
    gcloud run services update <service-name> --region "$REGION" \
    --update-secrets=OIDC_CLIENT_ID=<client-id-secret>:latest,OIDC_CLIENT_SECRET=<client-secret-secret>:latest
    Enregistrez <URL>/auth/oidc.callback comme URI de redirection autorisée sur le même hôte que URL — l'URL, le callback enregistré et le navigateur doivent tous s'accorder sur un seul nom d'hôte.
  • Redirection HTTPS désactivée volontairement. FORCE_HTTPS=false, car TLS est terminé par le frontal de Cloud Run ; la redirection 301 vers HTTPS d'Outline enverrait les sondes de santé HTTP vers un port sans écouteur et ferait redémarrer le conteneur en boucle. Les opérateurs qui terminent eux-mêmes TLS peuvent remplacer ce réglage via environment_variables.
  • Chemin de santé. Les sondes de démarrage et de vivacité ciblent /, qui répond une fois les migrations terminées et Redis connecté. La sonde de démarrage accorde un délai initial de 60 secondes plus six tentatives de 10 secondes.
  • Vérification. Confirmez que la révision déployée a bien reçu l'URL injectée et le câblage de la base de données :
    gcloud run services describe <service-name> --region "$REGION" \
    --format="json(spec.template.spec.containers[0].env)" | grep -E '"URL"|DB_HOST|REDIS'

4. Variables de configuration​

Les variables sont regroupées exactement comme elles apparaissent sur la plateforme de déploiement. Seuls les paramètres propres à Outline 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 recevant 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_nameoutlineNom de base des ressources. Ne le modifiez pas après le premier déploiement.
display_nameOutlineNom convivial affiché dans la console.
application_versionlatestTag de version de l'image Outline ; incrémentez-le pour déclencher un nouveau build et une nouvelle révision.

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

VariableValeur par défautDescription
deploy_applicationtrueDéfinissez false pour provisionner uniquement l'infrastructure.
cpu_limit1000mCPU par instance ; 1 vCPU minimum pour Outline.
memory_limit1GiMémoire par instance ; 2 GiB recommandés en production (recherche plein texte, gestion des ressources).
cpu_always_allocatedfalseFacturation à la requête. Un WebSocket d'édition ouvert compte comme une requête active ; ne définissez true que si vous comptez sur l'exécution de la file d'attente en arrière-plan d'Outline (notifications par e-mail, indexation des rétroliens) entre les requêtes.
min_instance_count0Mise à l'échelle à zéro par défaut ; définissez 1 pour éviter les démarrages à froid.
max_instance_count1Plafond de coût ; augmentez-le pour une édition simultanée plus intensive.
enable_cloudsql_volumetrueSocket du Cloud SQL Auth Proxy. Obligatoire — la connexion Postgres d'Outline utilise la forme socket.
execution_environmentgen2Requis pour le montage NFS.
timeout_seconds300Timeout par requête ; augmentez-le pour les exports volumineux.

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

VariableValeur par défautDescription
enable_iapfalseExige une connexion Google via Identity-Aware Proxy.
ingress_settingsallRéseaux autorisés à atteindre le service (tous / internes / équilibreur de charge uniquement).
vpc_egress_settingPRIVATE_RANGES_ONLYMode d'acheminement du trafic sortant via le connecteur VPC.

Groupe 6 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Fusionnées par-dessus la configuration intégrée d'Outline. C'est ici que vous configurez le fournisseur d'authentification obligatoire (OIDC_AUTH_URI, OIDC_TOKEN_URI, OIDC_USERINFO_URI, …) et, éventuellement, remplacez URL. Ne définissez pas DATABASE_URL/REDIS_URL ici.
secret_environment_variables{}Correspondance variable d'environnement → nom du secret Secret Manager (à utiliser pour OIDC_CLIENT_ID/OIDC_CLIENT_SECRET).
secret_rotation_period2592000sFréquence des notifications de rotation.

Groupe 7 — Sauvegarde et restauration​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron des sauvegardes automatiques (UTC).
backup_retention_days7Durée de rétention ; augmentez-la pour la production/la conformité.
enable_backup_import / backup_source / backup_uri / backup_formatoptions de restaurationRestauration à partir d'une sauvegarde lors du déploiement.

Groupe 8 — CI/CD et Binary Authorization​

Intégration standard Cloud Build / Cloud Deploy 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 — Domaine, CDN, Cloud Armor et rétention des images​

VariableValeur par défautDescription
application_domains[]Noms d'hôte personnalisés pour l'équilibreur de charge externe. Outline doit connaître son URL publique — définissez URL en conséquence.
enable_cdn / enable_cloud_armor / admin_ip_rangesdésactivésOptions CDN / WAF.
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
enable_nfstrueVolume Filestore partagé pour les fichiers téléversés. Nécessite gen2.
nfs_mount_path/var/lib/outline/dataChemin de montage — doit correspondre à FILE_STORAGE_LOCAL_ROOT_DIR.
create_cloud_storage / storage_buckets / gcs_volumes(définies)Buckets supplémentaires / montages GCS Fuse. Le bucket storage est toujours provisionné automatiquement.

Groupe 12 — Backend de base de données​

VariableValeur par défautDescription
database_typePOSTGRES_15Outline nécessite PostgreSQL — ne passez pas à MySQL.
db_nameoutlineNom de la base de données PostgreSQL. Immuable après le premier déploiement.
db_useroutlineUtilisateur de l'application. Immuable après le premier déploiement.
database_password_length32Longueur du mot de passe généré (16–64).
service_url_env_var_nameURLInjecte l'URL prévue du service sous le nom URL. Ne la videz pas — sans URL, Outline n'enregistre aucun fournisseur d'authentification.

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

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

Groupe 14 — Observabilité et santé​

VariableValeur par défautDescription
startup_probeHTTP /, délai initial de 60s, 6 échecsLaisse le temps aux migrations du premier démarrage et à la connexion Redis.
liveness_probeHTTP /, délai initial de 60s, période de 30sRedémarre le conteneur après 3 échecs consécutifs.
uptime_check_configdésactivé, chemin /Test de disponibilité Cloud Monitoring.
alert_policies[]Règles d'alerte sur les métriques.

Groupe 21 — Cache Redis​

VariableValeur par défautDescription
enable_redistrueObligatoire — Outline ne fonctionne pas sans Redis.
redis_host""Point de terminaison Redis. Laissez vide pour utiliser l'hôte NFS partagé (qui héberge aussi Redis).
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 (nécessite organization_id).
vpc_cidr_ranges / vpc_sc_dry_run(définies)CIDR du niveau d'accès / mode simulation (dry-run).
enable_audit_loggingfalseJournaux Cloud Audit Logs détaillés.

5. Sorties​

Renvoyées lorsqu'un déploiement réussit — 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_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 (y compris le bucket storage).
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 des journaux 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
Variables d'environnement OIDC_*configurées après le déploiementCritiqueLivrées volontairement vides — tant qu'aucun IdP n'est configuré, la page de connexion n'affiche aucun fournisseur et le wiki est inutilisable, même si le déploiement est sain.
service_url_env_var_nameURLCritiqueLa vider supprime l'URL injectée ; Outline ne peut pas construire la redirect_uri OIDC et n'enregistre aucun fournisseur d'authentification.
database_typePOSTGRES_15CritiqueOutline nécessite PostgreSQL ; MySQL fait échouer le démarrage.
db_name / db_userdéfinis une seule foisCritiqueImmuables après le premier déploiement ; les renommer recrée la base de données/l'utilisateur et détruit tous les documents.
enable_redistrueCritiqueOutline nécessite Redis pour les sessions et sa file d'attente ; sans lui, le conteneur ne devient jamais sain.
enable_nfstrueCritiqueSans stockage partagé, les pièces jointes téléversées sont perdues entre les instances/redémarrages.
enable_cloudsql_volumetrueCritiqueLa connexion Postgres du point d'entrée utilise le socket de l'Auth Proxy ; une connexion TCP directe par IP privée est rejetée par Cloud SQL sans configuration SSL.
DATABASE_URL / REDIS_URL dans environment_variablesne jamais les définirÉlevéLe point d'entrée assemble correctement les deux pour chaque plateforme ; une valeur définie à la main la remplace avec une forme d'hôte incorrecte.
FORCE_HTTPSfalse (valeur par défaut du module)ÉlevéLe réactiver amène Outline à rediriger en 301 les sondes de santé HTTP → échec de la sonde → redémarrages en boucle. TLS est déjà terminé par Cloud Run.
Liaison des secrets OIDCsupprimer puis mettre à jourÉlevéOIDC_CLIENT_ID/SECRET sont des variables d'environnement simples et vides ; un --update-secrets unique échoue avec « already set with a different type » — appliquez-leur d'abord --remove-env-vars.
URI de redirection OIDC<URL>/auth/oidc.callback sur le même hôte que URLÉlevéUne différence d'hôte entre URL, le callback enregistré et le navigateur rompt l'aller-retour OAuth.
nfs_mount_path/var/lib/outline/dataÉlevéDoit correspondre à FILE_STORAGE_LOCAL_ROOT_DIR, sinon les téléversements atterrissent sur un disque éphémère et disparaissent.
startup_probe initial_delay_seconds60ÉlevéLe réduire tue Outline avant la fin des migrations Sequelize du premier démarrage.
execution_environmentgen2ÉlevéLes montages NFS nécessitent gen2 ; gen1 ne peut pas monter Filestore.
memory_limit1Gi+ (2Gi en prod)MoyenUne mémoire trop faible provoque des OOM de Node.js pendant l'indexation de la recherche ou les exports volumineux.
min_instance_count0 (dev) / 1 (prod)Moyen0 ajoute un démarrage à froid (avec vérification des migrations) à la première requête après une période d'inactivité.
backup_retention_days7 (augmenter en prod)MoyenTrop court pour une rétention de conformité.

Pour le comportement du socle auquel ce guide fait référence — 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 à Outline partagée avec la variante GKE est décrite dans Outline_Common.

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