--tenant
nomeando a mesma instância para ambos os instaladores, e o que --vhost traz. Esta página é a mesma
informação organizada em uma única execução, para o momento em que você realmente tem um segundo
cliente para adicionar.
Nada aqui é compartilhado com os tenants já existentes no host exceto os próprios pacotes, Java,
Node e PostgreSQL — veja O que cada instância precisa ter só para
si. Um novo tenant recebe
seu próprio banco de dados, suas próprias portas, seus próprios tokens operacionais e a sua própria
escolha de conta de serviço.
1
Escolha o nome e o layout
Uma palavra, usada identicamente em ambos os instaladores — é o que permite ao Dois layouts, escolha um:
update
encontrar a instância correta depois, sem você redigitar caminhos.Recorra a
--vhost quando a conta SSH ou SFTP do próprio tenant já mora sob /home — é o que
isola o gateway dos arquivos daquela conta, não apenas um caminho diferente. Veja Um
virtualhost.2
Reserve portas
Cada tenant existente no host já ocupa uma porta SMPP, uma porta HTTP e uma porta ops. Escolha
uma faixa em que o novo não possa colidir:
3
Seu próprio banco de dados
Um tenant, um banco — nunca um schema compartilhado com as linhas de outro tenant.Uma role separada por tenant não é obrigatória — uma role
fireflo pode ser dona de vários
bancos — mas isso significa que uma credencial vazada de um tenant não pode ler as de outro.
Veja O banco de dados.4
Instale o gateway
--vhost /home/$TENANT --user $TENANT — ambos, conforme
os avisos do passo 1.Ele pergunta antes e mostra cada decisão antes de escrever qualquer coisa — acrescente --yes
apenas quando você confiar na resposta que ele imprimiria. --bootstrap escreve o mínimo que um
banco novo precisa: uma tabela de roteamento default, uma tabela MESSAGE vazia, um listener
SMPP, um login. A senha gerada é impressa uma única vez; capture-a.Flags aceitam valores separados por espaço.
--vhost=/home/$TENANT é rejeitado como opção
desconhecida em vez de ser interpretado, em ambos os instaladores.fireflo-install.5
Verifique antes de adicionar qualquer coisa
Código de saída 4 aqui é esperado e correto: a implantação está sólida, ela simplesmente
ainda não tem para onde rotear. Torna-se 0 assim que um fornecedor e uma regra existirem, no
próximo passo — veja Primeira configuração.
6
Instale o painel
--vhost /home/$TENANT --user $TENANT e aponte
--gateway-conf-dir para /home/$TENANT/gateway/conf. Instale o painel depois do gateway —
ele lê esse diretório.Três coisas que ele descobre por si próprio a partir de --gateway-conf-dir: ambos os tokens
operacionais, a METRICS_DATABASE_URL somente leitura e a URL de ops — que ele constrói a partir
do FIREFLO_OPS_PORT registrado desse gateway, então uma --ops-port não-padrão não requer uma
segunda flag aqui.7
TLS na frente, uma origem por tenant
O painel fala HTTP simples em O
--port (padrão 3000, e deve ser único por tenant em um host
compartilhado — passe uma explicitamente para cada tenant depois do primeiro). Coloque nginx ou
equivalente na frente, terminando TLS em um hostname próprio deste tenant:--public-url acima deve casar exatamente com server_name — é escrito como AUTH_URL, e sem
ele um sign-out redireciona para localhost independentemente do que o proxy encaminhe. Veja
TLS na frente.8
Finalize a configuração
O
bootstrap deliberadamente deixa de fora um fornecedor e uma tarifa — ninguém mais pode
adivinhar as credenciais de um fornecedor, e um preço inventado cobra silenciosamente enquanto
um ausente aparece sem preço. Adicione ambos, depois uma regra de roteamento nomeando o
fornecedor, e então o primeiro login de cliente deste tenant — nessa ordem, e por que, em
Primeira configuração.9
Envie uma, como faria um cliente
200 significa aceito, cobrado e enfileirado — observe o registro de chamada no painel deste
tenant para o desfecho da entrega.O que é realmente novo versus compartilhado
Relacionados
Várias instâncias em um mesmo host
O mecanismo que
--tenant e --vhost implementam, e a garantia de que update-é-uma-busca.Primeira configuração, em ordem
O que o
bootstrap escreve, e a ordem que dá sentido ao resto.