O App Hosting foi projetado para ser fácil de usar e exigir pouca manutenção, com configurações padrão otimizadas para a maioria dos casos de uso. Ao mesmo tempo, o App Hosting fornece ferramentas para você gerenciar e configurar back-ends de acordo com suas necessidades específicas. Este guia descreve essas ferramentas e processos.
Definir e atualizar variáveis de ambiente e secrets
O App Hosting permite usar variáveis de ambiente para valores de configuração não sensíveis e secrets para parâmetros sensíveis, como chaves de API, credenciais de banco de dados e tokens de serviço.
- Variáveis de ambiente padrão: usadas para configurações de texto simples não confidenciais, como URLs de APIs públicas, flags de recursos ou destinos de build. Os valores ficam visíveis para todos os membros do projeto.
- Secrets: usados para parâmetros sensíveis (como chaves secretas do cliente OAuth, tokens de API ou senhas de banco de dados). Os secrets são armazenados no Cloud Secret Manager. Os valores de secrets são protegidos e nunca são exibidos em texto simples no console do Firebase. Em vez disso, o console fornece links diretos para visualizar e gerenciar valores de secrets diretamente no Cloud Secret Manager.
É possível definir e gerenciar parâmetros de ambiente usando duas abordagens complementares:
- Console do Firebase: adicione, edite e anexe secrets ou variáveis de forma dinâmica durante a criação inicial do back-end ou após a implantação nas configurações de back-end.
Code-first (
apphosting.yaml): declare variáveis de ambiente e referências de secrets no arquivo de configuração do repositório para implantações com controle de versões ou useapphosting.<env>.yamlpara definir valores diferentes para ambientes diferentes.
Console do Firebase

apphosting.yaml
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
- variable: API_KEY
secret: myApiKeySecret
Gerenciar variáveis e secrets no console do Firebase
É possível configurar variáveis de ambiente e secrets no console do Firebase ao criar um back-end ou a qualquer momento nas configurações dele. As mudanças salvas sem implantação entram em vigor no próximo lançamento e não afetam o atual.
Configurar variáveis e secrets durante a criação do back-end
Ao criar um novo back-end do App Hosting no console do Firebase, é possível configurar variáveis de ambiente padrão e secrets durante a etapa Configurar seu back-end do assistente de configuração:
- No console do Firebase, acesse Hospedagem e sem servidor > App Hosting e clique em Criar back-end.
- Conclua as etapas iniciais do assistente para selecionar a região principal e o repositório de código.
- Na seção Configurar o back-end, localize os cards recolhíveis para Variáveis de ambiente e Secrets, em que é possível adicionar variáveis padrão e anexar secrets.
- Conclua o assistente de criação de back-end e clique em Concluir e implantar.
Gerenciar variáveis e secrets nas configurações de back-end
É possível visualizar, adicionar, editar ou excluir variáveis de ambiente e secrets de back-ends ativos no painel de configurações de back-end:
- No console do Firebase, selecione o back-end do App Hosting e abra Configurações > Ambiente.
- Revise as configurações atuais na tabela Variáveis de ambiente:
- Variáveis padrão: os valores são mostrados como texto simples em blocos de código copiáveis.
- Secrets: exibidos como um link clicável que mostra o nome do secret
(que
abre o Cloud Secret Manager no console do Google Cloud) ao lado da
versão de destino (como
latestou um número de versão específico, como2).
- Para adicionar uma variável ou um secret:
- Clique em Adicionar novo.
- Na Etapa 1: selecionar tipo, escolha Variável de ambiente padrão (para dados não sensíveis visíveis para todos os membros do projeto) ou Secret (para chaves de API e credenciais sensíveis com acesso restrito) e clique em Próxima.
- Na Etapa 2: definir as configurações, insira o nome da Chave e o Valor em texto simples (para variáveis padrão) ou selecione o ID do Secret e a Versão (para secrets).
- Salve as mudanças usando uma das seguintes opções:
- Salvar e implantar: atualiza imediatamente a configuração do back-end e aciona um novo build e lançamento.
- Apenas salvar (na seta suspensa ao lado de Salvar e implantar): salva as alterações de configuração sem acionar um lançamento imediato. As configurações atualizadas vão entrar em vigor na próxima implantação.
- Para editar ou excluir uma entrada, clique no menu Mais ações (
...) no final da linha:- Selecione Editar para modificar a chave, o valor, o mapeamento do secret ou a versão e, em seguida, clique em Salvar e implantar ou Apenas salvar.
- Selecione Excluir e confirme a remoção na caixa de diálogo.
Transferir variáveis de arquivos dotenv
Para apps Next.js, os arquivos dotenv que contêm variáveis de ambiente funcionam com o App Hosting.
Ao criar ou atualizar um back-end, é possível transferir variáveis de ambiente do
arquivo dotenv para o console do Firebase copiando e colando todo o
conteúdo do arquivo dotenv no primeiro campo Chave no formulário Adicionar novo
em Configurações > Ambiente.
Todas as variáveis de ambiente copiadas dessa forma são formatadas automaticamente no
formulário sem precisar inserir cada uma individualmente, desde que a entrada
use a formatação padrão KEY=value:
KEY1=value1
KEY2=value2
KEY3=value3
Para um controle complexo ou granular de variáveis de ambiente com qualquer framework, recomendamos o uso de apphosting.yaml.
Gerenciar variáveis e secrets no apphosting.yaml
Para fluxos de trabalho que priorizam o código, declare variáveis de ambiente padrão e referências secretas na chave env: no arquivo de configuração apphosting.yaml do repositório do projeto (consulte Criar e editar apphosting.yaml).
env:
# Standard environment variables
- variable: PUBLIC_API_URL
value: https://api.example.com
availability:
- BUILD
- RUNTIME
- variable: FEATURE_FLAG_NEW_UI
value: "true"
# Secret references backed by Cloud Secret Manager
- variable: DATABASE_URL
secret: projects/PROJECT_ID/secrets/db-connection-string/versions/latest
- variable: GEMINI_API_KEY
secret: myGeminiApiKeySecret@1
Cada entrada em env: é compatível com os seguintes campos:
variable: o nome da variável de ambiente exposto ao processo do aplicativo.value: o valor da string de texto simples (para variáveis de ambiente padrão).secret: a referência do secret do Cloud Secret Manager (para secrets). É possível usar o nome curto do secret (comomyGeminiApiKeySecretoumyGeminiApiKeySecret@1fixado) ou o caminho completo do recurso (projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION). Consulte Armazenar e acessar parâmetros de secret para mais detalhes.availability: controla se a variável ou o secret pode ser acessado durante a faseBUILD, emRUNTIMEou em ambas.
Definir disponibilidade de variáveis
As variáveis de ambiente e os secrets configurados no console do Firebase estão
disponíveis no momento do build e da execução. Esse também é o comportamento padrão para
entradas definidas em apphosting.yaml, a menos que você restrinja o escopo usando a
propriedade availability. No apphosting.yaml (mas não no console), é possível
restringir uma variável ou um secret apenas ao ambiente de build (BUILD) ou apenas
ao ambiente de execução (RUNTIME).
Acessar variáveis e secrets no código do aplicativo
Sejam configuradas no console do Firebase ou no apphosting.yaml, as variáveis de ambiente e os secrets são expostos ao ambiente de execução do aplicativo como variáveis de ambiente padrão (por exemplo, process.env no Node.js).
// Accessing a standard environment variable
const apiUrl = process.env.PUBLIC_API_URL;
// Accessing a secret
const apiKey = process.env.GEMINI_API_KEY;
export async function fetchData() {
const response = await fetch(`${apiUrl}/data`, {
headers: {
'Authorization': `Bearer ${apiKey}`
}
});
return response.json();
}
- Acesso do lado do servidor: todas as variáveis de ambiente e secrets podem ser acessados com segurança em contextos de execução do lado do servidor (como componentes do servidor Next.js, rotas de API ou gerenciadores de back-end do Node.js).
Exposição do lado do cliente: para expor variáveis de ambiente padrão ao navegador em frameworks como o Next.js, verifique se a chave da variável segue as convenções do framework (por exemplo, prefixada com
NEXT_PUBLIC_).env: - variable: NEXT_PUBLIC_STORAGE_BUCKET value: mybucket.firebasestorage.app availability: - BUILD - RUNTIME
Hierarquia de variáveis
O Firebase App Hosting aplica as variáveis de ambiente e os secrets em uma
ordem de precedência com base na origem. As configurações definidas no console do Firebase sempre substituem os parâmetros declarados nos arquivos apphosting.yaml e dotenv. Se uma variável de ambiente ou chave secreta com o mesmo nome
existir em apphosting.yaml e no console do Firebase, o valor do console
terá precedência durante a execução do build e do ambiente de execução.
Confira a ordem de precedência completa:
- Console do Firebase → variáveis e secrets definidos no console
apphosting.<env>.yaml: variáveis e secrets especificados em um arquivo YAML específico do ambiente, comoapphosting.staging.yaml(consulte Implantar vários ambientes)apphosting.yaml→ variáveis e secrets especificados no arquivoapphosting.yaml- Sistema do Firebase: variáveis definidas pelo Firebase que contêm valores para
FIREBASE_CONFIGouFIREBASE_WEBAPP_CONFIG, além de variáveis de ambiente que definem os nomes de host e as portas para apps SSR (definidos por adaptadores App Hosting embundle.yaml)
Variáveis de ambiente preenchidas automaticamente
Há variáveis de ambiente que são preenchidas automaticamente pelo
App Hosting. Isso inclui as preenchidas pelo Google Cloud,
além de variáveis de ambiente específicas do Firebase quando appId
é definido no back-end durante a configuração:
FIREBASE_CONFIG: (disponível nos ambientes de build e de execução) fornece as seguintes informações de configuração do projeto do Firebase:{ "databaseURL": "https://DATABASE_NAME.firebaseio.com", "storageBucket": " ", "projectId": "PROJECT_ID" }PROJECT_ID.firebasestorage.appEssa configuração é aplicada automaticamente quando você inicializa o SDK Admin do Firebase sem argumentos.
FIREBASE_WEBAPP_CONFIG: (disponível apenas no ambiente de build) fornece as seguintes informações de configuração do projeto do Firebase:{ "apiKey": "API_KEY", "appId": "APP_ID", "authDomain": "AUTH_DOMAIN.firebaseapp.com", "databaseURL": "https://DATABASE_NAME.firebaseio.com", "messagingSenderId": "PROJECT_NUMBER", "projectId": "PROJECT_ID", "storageBucket": "/span> " }<PROJECT_ID.firebasestorage.appO SDK do Firebase para JS verifica automaticamente essa variável de ambiente
FIREBASE_WEBAPP_CONFIGem um script de pós-instalação durante o build, permitindo que você também inicialize o SDK do cliente sem argumentos.
Consulte Inicializar automaticamente o SDK Admin do Firebase e os SDKs da Web para mais detalhes sobre como usar essas variáveis de ambiente para inicializar os SDKs.
Os valores na configuração real do Firebase vão corresponder aos recursos específicos provisionados no projeto.
Hierarquia de variáveis
O Firebase App Hosting aplica as variáveis em uma ordem de precedência com base na
origem delas. Por exemplo, os valores definidos no console do Firebase sempre
substituem ou têm precedência sobre os valores definidos nos arquivos apphosting.yaml e
dotenv.
Confira a ordem de precedência completa:
- Console do Firebase: variáveis definidas no console
apphosting.<env>.yaml→ variáveis especificadas em um arquivo YAML específico do ambiente, comoapphosting.staging.yaml(consulte Implantar vários ambientes)apphosting.yaml→ variáveis especificadas no arquivoapphosting.yaml- Sistema do Firebase: variáveis definidas pelo Firebase que contêm valores para
firebase_config jsonoufirebase_webapp_config, além de variáveis de ambiente que definem os nomes de host e as portas para apps de SSR (definidos por adaptadores do App Hosting embundle.yaml)
Nomes reservados e limitações
As variáveis de ambiente definidas no contrato de ambiente de execução do contêiner do Cloud Run são reservadas e não podem ser configuradas.
As variáveis de ambiente fornecidas pelo ambiente, exceto as que são definidas automaticamente, podem mudar em versões futuras do ambiente de execução. Como prática recomendada, não dependa nem modifique variáveis de ambiente que não foram definidas explicitamente e considere prefixar todas as variáveis de ambiente com uma chave exclusiva para evitar conflitos.
Algumas chaves de variáveis de ambiente são reservadas para uso interno. Não use nenhuma dessas chaves nos arquivos de configuração:
- Strings vazias ("")
- Chaves que contêm "="
- Chaves que começam com
X_FIREBASE_,X_GOOGLE_ouCLOUD_RUN_ PORTK_SERVICEK_REVISIONK_CONFIGURATION- Chaves duplicadas
Criar e editar apphosting.yaml
Para configurações avançadas, como secrets ou configurações de ambiente de execução,
como simultaneidade, CPU e limites de memória, crie e edite o
arquivo apphosting.yaml no diretório raiz do app. Esse arquivo
oferece suporte a referências a secrets gerenciados
com o Cloud Secret Manager, o que torna seguro o check-in no controle de origem.
Para criar apphosting.yaml, execute o seguinte comando:
firebase init apphosting
Isso cria um arquivo apphosting.yaml inicial básico com um exemplo de configuração (comentado). Após a edição, um arquivo apphosting.yaml típico pode ser semelhante
ao seguinte, com configurações para o serviço Cloud Run do back-end, algumas
variáveis de ambiente e algumas referências a secrets gerenciados pelo Cloud Secret
Manager:
# Settings for Cloud Run
runConfig:
minInstances: 2
maxInstances: 100
concurrency: 100
cpu: 2
memoryMiB: 1024
# Environment variables and secrets
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
- variable: API_KEY
secret: myApiKeySecret
# Same as API_KEY above but with a pinned version.
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
# Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
- variable: VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID
# Same as API_KEY above but with the long form secret reference with pinned version.
- variable: PINNED_VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID/versions/5
O restante deste guia fornece mais informações e contexto para essas configurações de exemplo.
Definir as configurações do serviço Cloud Run
Com as configurações de apphosting.yaml, é possível configurar como o
serviço do Cloud Run é
provisionado. As configurações disponíveis para o serviço Cloud Run são
fornecidas no objeto runConfig:
cpu: número de CPUs usadas para cada instância de exibição (padrão1).memoryMiB: quantidade de memória alocada para cada instância de exibição em MiB (padrão512).maxInstances: número máximo de contêineres que podem ser executados de uma só vez (o padrão é100e é gerenciado por cota).minInstances: número de contêineres que sempre devem ser mantidos ativos (padrão0).concurrency: número máximo de solicitações que cada instância de exibição pode receber (padrão80).cpuAlwaysAllocated: se a CPU está sempre alocada, mesmo quando nenhuma solicitação está sendo processada (padrãofalse).
Observe que cpu, memoryMiB e concurrency têm limites interdependentes (por
exemplo, configurações de memória mais altas exigem limites mínimos de CPU mais altos, e
CPUs fracionárias exigem uma simultaneidade de 1). Consulte a documentação do Cloud Run
sobre limites de CPU
e limites de memória
para intervalos válidos e combinações necessárias.
Substituir scripts de build e execução
O App Hosting infere o comando de build e inicialização do app com base no framework
detectado. Se você quiser usar um comando de build ou de inicialização personalizado, substitua os padrões de App Hosting em apphosting.yaml.
scripts:
buildCommand: next build --no-lint
runCommand: node dist/index.js
A substituição do comando de build tem precedência sobre qualquer outro comando de build e
desativa os adaptadores de framework do app, além de desativar as otimizações específicas de framework
fornecidas pelo App Hosting. É melhor usá-lo quando os recursos do app
não são bem compatíveis com os adaptadores. Se você quiser mudar o comando de build,
mas ainda usar os adaptadores fornecidos, defina o script de build em package.json,
conforme descrito em Adaptadores de framework do App Hosting.
Use a substituição do comando de execução quando houver um comando específico que você queira usar para iniciar o app que seja diferente do comando inferido pelo App Hosting.
Configurar a saída do build
O App Hosting otimiza as implantações do app por padrão, excluindo arquivos de saída não utilizados, conforme indicado pelo framework. Se você quiser otimizar ainda mais o tamanho
da implantação do app ou ignorar as otimizações padrão, substitua isso em
apphosting.yaml.
outputFiles:
serverApp:
include: [dist, server.js]
O parâmetro include usa uma lista de diretórios e arquivos relativos ao diretório raiz do app que são necessários para implantar o app. Se você quiser garantir que todos os arquivos sejam mantidos, defina include como [.] e todos os arquivos serão implantados.
Armazenar e acessar parâmetros de secrets
Informações sensíveis, como chaves de API, precisam ser armazenadas como secrets. É possível
anexar secrets ao back-end no console do Firebase
ou referenciá-los em apphosting.yaml para evitar a verificação de informações sensíveis
no controle de origem.
Os parâmetros do tipo secret representam parâmetros de string que têm um valor
armazenado no Secret Manager do Google Cloud.
Em vez de derivar o valor diretamente, os parâmetros de secret verificam a existência no Secret Manager do Google Cloud e carregam os valores durante o lançamento.
env:
- variable: API_KEY
secret: myApiKeySecret
Os secrets no Cloud Secret Manager podem ter várias versões. Por padrão, o
valor de um parâmetro de secret disponível para o back-end ativo é fixado na
versão mais recente do secret no momento em que o back-end foi criado. Se você
tiver requisitos para controle de versões e gerenciamento do ciclo de vida de parâmetros, poderá
fixar versões específicas no console do Firebase ou no apphosting.yaml. Por
exemplo, para fixar na versão 5 em apphosting.yaml:
env:
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
É possível criar secrets com o comando firebase apphosting:secrets:set da CLI Firebase.
Será solicitado que você adicione as permissões
necessárias. Esse fluxo oferece a opção de adicionar automaticamente a referência do secret
a apphosting.yaml.
Conceder acesso ao Cloud Secret Manager
Para que o App Hosting busque valores de secrets durante as implantações de build e de ambiente de execução, a conta de serviço de back-end do App Hosting precisa ter permissão para acessar o Cloud Secret Manager.
Se você criar secrets usando o console do Cloud Secret Manager ou a CLI gcloud
em vez de firebase apphosting:secrets:set, conceda acesso ao back-end usando
a CLI Firebase:
firebase apphosting:secrets:grantaccess SECRET_NAME
Como alternativa, é possível conceder o papel de Acessador de secrets do Secret Manager
(roles/secretmanager.secretAccessor) ao agente de serviço do App Hosting
(service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com)
ou à conta de serviço de ambiente de execução do back-end usando a CLI gcloud:
gcloud secrets add-iam-policy-binding SECRET_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
Acesso ao console e permissões baseadas em papéis
O console do Firebase restringe dinamicamente os recursos de gerenciamento de ambiente e do Secret Manager com base nas permissões do IAM do usuário:
- Papel de leitor: usuários com permissões de projeto somente leitura podem visualizar as configurações atuais, mas não podem fazer mudanças.
- Durante a criação do back-end, o botão Criar back-end fica desativado.
- Em Configurações > Ambiente do back-end, o botão Adicionar novo está
desativado, e os menus de linha Mais ações (
...) estão ocultos.
- Permissões ausentes do Secret Manager: os usuários que não têm permissões do IAM para interagir com o Cloud Secret Manager recebem uma mensagem de aviso no console (Peça permissão ao proprietário do projeto para adicionar secrets):
- Durante a criação do back-end, o card Secrets fica desativado.
- Em Configurações > Ambiente do back-end, a opção Secret é
desativada ao clicar em Adicionar novo, e algumas das opções no menu de linha
Mais ações (
...) ficam ocultas nas entradas de secret atuais.
Configurar o acesso à VPC
O back-end do App Hosting pode se conectar a uma rede de nuvem privada virtual (VPC). Para mais informações e um exemplo, consulte Conectar o Firebase App Hosting a uma rede VPC.
Use o mapeamento vpcAccess no arquivo apphosting.yaml para configurar o acesso.
Use um nome de rede/conector totalmente qualificado ou um ID. O uso de IDs permite
a portabilidade entre ambientes de preparo e de produção com diferentes
conectores/redes.
Configuração de saída de VPC direta (apphosting.yaml):
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
Configuração do conector sem servidor (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Gerenciar back-ends
Os comandos para o gerenciamento básico de back-ends do App Hosting são fornecidos no console do Firebase e na CLI Firebase. Nesta seção, descrevemos algumas das tarefas de gerenciamento mais comuns, incluindo a criação e a exclusão de back-ends.
Criar um back-end
Um back-end do App Hosting é a coleção de recursos gerenciados que o App Hosting cria para criar e executar seu app da Web.
Console do Firebase: acesse Hospedagem e sem servidor > App Hosting e clique em Criar back-end (se esse for o primeiro back-end no seu projeto do Firebase, clique em Começar).
CLI do Firebase: (v13.15.4 ou mais recente) para criar um back-end, execute o seguinte comando na raiz do diretório do projeto local, fornecendo o ID do projeto como um argumento:
firebase apphosting:backends:create --project PROJECT_ID
No console ou na CLI, siga as instruções para escolher uma região, configurar uma conexão do GitHub e definir estas configurações básicas de implantação:
Defina o diretório raiz do app (o padrão é
/).É onde o arquivo
package.jsongeralmente está localizado.
Defina a ramificação em uso
Esta é a ramificação do seu repositório do GitHub que é implantada no seu URL ativo. Muitas vezes, é a ramificação em que as ramificações de recursos ou de desenvolvimento são mescladas.
Aceitar ou recusar lançamentos automáticos
Os lançamentos automáticos são ativados por padrão. Após a conclusão da criação do back-end, é possível implantar o app no App Hosting imediatamente.
Atribua um nome ao back-end.
Selecione o ambiente de execução. Por padrão, a versão recomendada mais recente do Node.js é pré-selecionada para você.
- Configure as atualizações automáticas de imagens de base (ABIU, na sigla em inglês). A ABIU é ativada por padrão e aplica automaticamente patches de segurança ao ambiente subjacente. Para desativar a ABIU, selecione "Não especificado" para o ambiente de execução.
Excluir um back-end
Para remover completamente um back-end, primeiro use o console do Firebase ou a CLI do Firebase para excluí-lo e, em seguida, remova manualmente os recursos relacionados, tomando cuidado especial para não excluir nenhum recurso que possa ser usado por outros back-ends ou outros aspectos do seu projeto do Firebase.
Console do Firebase: no menu Configurações, selecione Excluir back-end.
CLI do Firebase (v13.15.4 ou mais recente)
Execute o comando a seguir para excluir o back-end App Hosting. Isso desativa todos os domínios do back-end e exclui o serviço Cloud Run associado:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID(Opcional) Na guia do console do Google Cloud para Artifact Registry, exclua a imagem do back-end em "firebaseapphosting-images".
No Cloud Secret Manager, exclua todos os secrets com "apphosting" no nome, tomando cuidado especial para garantir que eles não sejam usados por outros back-ends ou outros aspectos do seu projeto do Firebase.