Configurar Google Cloud Storage (Armazenamento Kunk)
O Kunk acessa o bucket com uma service account (arquivo JSON). Use um bucket exclusivo do Kunk, privado — não é necessário tornar objetos públicos nem configurar “allUsers”.
Visão geral
Seção intitulada “Visão geral”- Crie um bucket GCS só para o Kunk (privado).
- Crie uma service account e conceda no bucket os papéis Administrador de objetos do Storage + Administrador do Storage.
- Baixe a chave JSON.
- No Admin → Armazenamento, informe o bucket e faça upload do JSON.
O Admin não grava o arquivo. Extrai client_email, private_key e project_id, testa a conexão (upload/download/delete de um probe) e, se OK, salva só essas credenciais.
Downloads e uploads dos apps continuam em /api/v1/files/:id/download — a API faz proxy com as credenciais.
1. Criar o bucket
Seção intitulada “1. Criar o bucket”- Console GCP → Cloud Storage → Buckets → Create.
- Nome único exclusivo do Kunk (ex.:
minha-instancia-kunk-files). Não compartilhe com outros projetos. - Localização (anote o projeto GCP).
- Controle de acesso: Uniform (recomendado).
- Public access prevention: mantenha enforced / sem acesso público.
2. Service account
Seção intitulada “2. Service account”2.1 Criar a conta
Seção intitulada “2.1 Criar a conta”- IAM e administrador → Contas de serviço → Criar conta de serviço.
- Nome sugestivo:
kunk-files. - Na etapa de papéis do projeto, pode pular (Concluir) — as permissões serão dadas no bucket.
- Anote o e-mail gerado (ex.:
kunk-files@seu-projeto.iam.gserviceaccount.com).
2.2 Dar permissões no bucket
Seção intitulada “2.2 Dar permissões no bucket”No bucket → aba Permissões → seção Permissões → Conceder acesso (ou Adicionar principal):
- Novos principais: e-mail da service account.
- Papéis — adicione os dois:
| Papel | Uso |
|---|---|
Administrador de objetos do Storage (roles/storage.objectAdmin) |
put / get / delete de objetos (uso diário do Kunk) |
Administrador do Storage (roles/storage.admin) |
libera storage.buckets.get, exigido pelo teste de conexão do Admin |
- Salvar.
Sem o papel Administrador do Storage, o teste falha com
storage.buckets.get denied, mesmo com Object Admin — o teste verifica a existência do bucket antes de enviar o arquivo probe.
Se o botão não aparecer na aba do bucket, use IAM e administrador → IAM → Conceder acesso (aplica ao projeto inteiro, efeito equivalente).
O teste de conexão da API grava/apaga um objeto em _kunk_probe/.
Não é necessário:
allUsers/allAuthenticatedUserscomobjectViewer;- CORS no bucket para os browsers (proxy via API);
- signed URL pública (v1 usa proxy).
3. Chave da service account
Seção intitulada “3. Chave da service account”- Service account → Keys → Add key → JSON.
- No Admin → Armazenamento → provedor GCS → informe o bucket → envie o arquivo JSON.
- O sistema testa automaticamente; se OK, as credenciais ficam salvas (máscara
••••••••).
4. Ambiente (opcional)
Seção intitulada “4. Ambiente (opcional)”Alternativa sem UI (API / .env):
FILES_DRIVER=gcsFILES_KEY_PREFIX=kunk/GCS_BUCKET=seu-bucketGCS_PROJECT_ID=seu-projeto-gcpGCS_CLIENT_EMAIL=kunk-files@seu-projeto.iam.gserviceaccount.comGCS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"5. Schema e seed
Seção intitulada “5. Schema e seed”Em instalação nova, o schema (incluindo storage) é aplicado via o assistente de instalação / kunk-api/sql/target-schema.sql. Credenciais e flags de storage também podem ser configuradas no Admin em /armazenamento.
Referências
Seção intitulada “Referências”- files-cloud-storage
- storage-s3-setup
- files
- Admin:
/armazenamento
