Configuração do Servidor¶
Usando a imagem padrão do Docker, toda a configuração necessária pode ser feita a partir do navegador. No entanto, dependendo da implantação, pode ser necessário personalizar a configuração do servidor.
Esta página lista todos os métodos para alterar a configuração e todas as opções de configuração existentes.
Arquivo de configuração vs. variáveis de ambiente¶
Para as configurações, você pode usar um arquivo de configuração ou variáveis de ambiente.
Quando você usa a configuração baseada em Docker Compose, pode incluir um arquivo de configuração adicionando o seguinte item à lista sob a chave volumes: no bloco grampsweb::
- /caminho/para/config.cfg:/app/config/config.cfg
/caminho/para/config.cfg é o caminho para o arquivo de configuração no sistema de arquivos do seu servidor (o lado direito refere-se ao caminho no contêiner e não deve ser alterado).
Ao usar variáveis de ambiente,
- prefixe cada nome de configuração com
GRAMPSWEB_para obter o nome da variável de ambiente - Use sublinhados duplos para configurações de dicionário aninhadas, por exemplo,
GRAMPSWEB_THUMBNAIL_CACHE_CONFIG__CACHE_DEFAULT_TIMEOUTdefinirá o valor da opção de configuraçãoTHUMBNAIL_CACHE_CONFIG['CACHE_DEFAULT_TIMEOUT']
Observe que as opções de configuração definidas via ambiente têm precedência sobre as que estão no arquivo de configuração. Se ambas estiverem presentes, a variável de ambiente "vence".
Variáveis de ambiente sem prefixo estão obsoletas
Por razões históricas, um punhado de configurações – TREE, SECRET_KEY, USER_DB_URI, POSTGRES_USER, POSTGRES_PASSWORD, MEDIA_BASE_DIR, SEARCH_INDEX_DIR, EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, DEFAULT_FROM_EMAIL, BASE_URL, e STATIC_PATH – ainda podem ser definidas via uma variável de ambiente sem o prefixo GRAMPSWEB_. Isso está obsoleto, registra um aviso na inicialização e deixará de funcionar em uma versão futura. Sempre use a forma prefixada, por exemplo, GRAMPSWEB_TREE em vez de TREE.
Observe que isso diz respeito apenas às variáveis de ambiente. Em um arquivo de configuração, os nomes das configurações são sempre usados sem prefixo.
Verificando opções obsoletas
Opções de configuração obsoletas das quais seu servidor ainda depende – como variáveis de ambiente sem prefixo, SEARCH_INDEX_DIR, ou EMAIL_USE_TLS – são registradas como avisos na inicialização. Desde a Gramps Web API 3.22, elas também são listadas, junto com sua substituição e a versão na qual o suporte será removido, no topo da página Informações do Sistema (acessível através do ícone do usuário na barra de aplicativos superior) quando você está logado como administrador.
Configurações de configuração existentes¶
As seguintes opções de configuração existem.
Configurações obrigatórias¶
| Chave | Descrição |
|---|---|
TREE |
O nome do banco de dados da árvore genealógica a ser usado. Mostre as árvores disponíveis com gramps -l. Se uma árvore com esse nome não existir, uma nova vazia será criada. |
SECRET_KEY |
A chave secreta para o Flask. A chave secreta não deve ser compartilhada publicamente. Alterá-la invalidará todos os tokens de acesso. |
USER_DB_URI |
A URL do banco de dados do usuário. Qualquer URL compatível com SQLAlchemy é permitida. |
Info
Você pode gerar uma chave secreta segura, por exemplo, com o comando
python3 -c "import secrets;print(secrets.token_urlsafe(32))"
Configurações opcionais¶
| Chave | Descrição |
|---|---|
MEDIA_BASE_DIR |
Caminho a ser usado como diretório base para arquivos de mídia, substituindo o diretório base de mídia definido no Gramps. Ao usar S3, deve ter a forma s3://<bucket_name> |
TREE_ID |
O nome do diretório do banco de dados da árvore genealógica a ser usado no modo de árvore única (quando TREE não está definido como *). Quando definido, o servidor identifica a árvore pelo nome do diretório em vez do nome de exibição, o que é mais robusto em relação a renomeações. Necessário se você quiser renomear a árvore via API. O nome do diretório pode ser encontrado via GET /api/trees/- (o campo id). |
SEARCH_INDEX_DB_URI |
URL do banco de dados para o índice de pesquisa. Apenas sqlite ou postgresql são permitidos como backends. O padrão é sqlite:///indexdir/search_index.db, criando um arquivo SQLite na pasta indexdir em relação ao caminho onde o script é executado. |
SEARCH_INDEX_DIR |
Obsoleto (use SEARCH_INDEX_DB_URI em vez disso). Diretório contendo o índice de pesquisa. Se definido enquanto SEARCH_INDEX_DB_URI estiver indefinido, a URL do índice de pesquisa é derivada como sqlite:///<SEARCH_INDEX_DIR>/search_index.db. |
STATIC_PATH |
Caminho para servir arquivos estáticos (por exemplo, um frontend web estático) |
BASE_URL |
URL base onde a API pode ser acessada (por exemplo, https://mygramps.mydomain.com/). Isso é necessário, por exemplo, para construir links corretos de redefinição de senha |
CORS_ORIGINS |
Origens de onde solicitações CORS são permitidas. Por padrão, todas são proibidas. Use "*" para permitir solicitações de qualquer domínio. |
EMAIL_HOST |
Host do servidor SMTP (por exemplo, para enviar e-mails de redefinição de senha) |
EMAIL_PORT |
Porta do servidor SMTP. padrão é 465 |
EMAIL_HOST_USER |
Nome de usuário do servidor SMTP |
EMAIL_HOST_PASSWORD |
Senha do servidor SMTP |
EMAIL_USE_TLS |
Obsoleto (use EMAIL_USE_SSL ou EMAIL_USE_STARTTLS em vez disso). Booleano, se deve usar TLS para enviar e-mails. O padrão é True. Ao usar STARTTLS, defina isso como False e use uma porta diferente de 25. |
EMAIL_USE_SSL |
Booleano, se deve usar SSL/TLS implícito para SMTP (v3.6.0+). O padrão é True se EMAIL_USE_TLS não estiver definido explicitamente. Normalmente usado com a porta 465. |
EMAIL_USE_STARTTLS |
Booleano, se deve usar STARTTLS explícito para SMTP (v3.6.0+). O padrão é False. Normalmente usado com a porta 587 ou 25. |
DEFAULT_FROM_EMAIL |
Endereço "De" para e-mails automatizados |
THUMBNAIL_CACHE_CONFIG |
Dicionário com configurações para o cache de miniaturas. Veja Flask-Caching para possíveis configurações. |
REQUEST_CACHE_CONFIG |
Dicionário com configurações para o cache de solicitações. Veja Flask-Caching para possíveis configurações. |
PERSISTENT_CACHE_CONFIG |
Dicionário com configurações para o cache persistente, usado, por exemplo, para telemetria. Veja Flask-Caching para possíveis configurações. |
CELERY_CONFIG |
Configurações para a fila de tarefas em segundo plano Celery. Veja Celery para possíveis configurações. |
REPORT_DIR |
Diretório temporário onde a saída da execução de relatórios do Gramps será armazenada |
EXPORT_DIR |
Diretório temporário onde a saída da exportação do banco de dados do Gramps será armazenada |
REGISTRATION_DISABLED |
Se True, desabilita o registro de novos usuários (padrão False) |
DISABLE_TELEMETRY |
Se True, desabilita a telemetria de estatísticas (padrão False). Veja telemetria para detalhes. |
PILLOW_MAX_IMAGE_PIXELS |
Define o parâmetro PIL.Image.MAX_IMAGE_PIXELS, que indica o número de pixels que a imagem processada pode conter. Veja docs para detalhes. |
MAX_THUMBNAIL_FILE_BYTES |
Define um tamanho máximo de arquivo rígido para miniaturas. O padrão é 50 * 1024 * 1024 (50 MB). Aumentá-lo pode aumentar muito o uso de memória e pode levar a falhas por falta de memória ou perda de dados se arquivos grandes forem descompactados na memória. |
Info
Ao usar variáveis de ambiente para configuração, opções booleanas como EMAIL_USE_SSL devem ser a string true ou false (sensível a maiúsculas!).
Configurações para bancos de dados PostgreSQL¶
Essas configurações são necessárias se suas árvores genealógicas estiverem hospedadas em um banco de dados PostgreSQL usando o complemento SharedPostgreSQL.
| Chave | Descrição |
|---|---|
POSTGRES_USER |
O nome de usuário para a conexão com o banco de dados |
POSTGRES_PASSWORD |
A senha para o usuário do banco de dados |
Configurações relevantes para hospedagem de várias árvores¶
As seguintes configurações são relevantes ao hospedar várias árvores.
| Chave | Descrição |
|---|---|
MEDIA_PREFIX_TREE |
Booleano, se deve ou não usar uma subpasta separada para os arquivos de mídia de cada árvore. O padrão é False, mas recomenda-se fortemente usar True em uma configuração de várias árvores |
NEW_DB_BACKEND |
O backend do banco de dados a ser usado para árvores genealógicas recém-criadas. Deve ser um dos sqlite ou sharedpostgresql. O padrão é sqlite. O valor postgresql ainda é aceito, mas está obsoleto, pois o backend PostgreSQL será removido em uma versão futura. |
POSTGRES_HOST |
O nome do host do servidor PostgreSQL usado para criar novas árvores ao usar uma configuração de várias árvores com o backend SharedPostgreSQL |
POSTGRES_PORT |
A porta do servidor PostgreSQL usada para criar novas árvores ao usar uma configuração de várias árvores com o backend SharedPostgreSQL |
Configurações para autenticação OIDC¶
Essas configurações são necessárias se você quiser usar autenticação OpenID Connect (OIDC) com provedores externos. Para instruções detalhadas de configuração e exemplos, veja Autenticação OIDC.
| Chave | Descrição |
|---|---|
OIDC_ENABLED |
Booleano, se deve habilitar a autenticação OIDC. O padrão é False. |
OIDC_ISSUER |
URL do emissor do provedor OIDC (para provedores OIDC personalizados) |
OIDC_CLIENT_ID |
ID do cliente OAuth (para provedores OIDC personalizados) |
OIDC_CLIENT_SECRET |
Segredo do cliente OAuth (para provedores OIDC personalizados) |
OIDC_NAME |
Nome de exibição personalizado para o provedor. O padrão é "OIDC" |
OIDC_SCOPES |
Escopos OAuth. O padrão é "openid email profile" |
OIDC_USERNAME_CLAIM |
A reivindicação a ser usada para o nome de usuário. O padrão é "preferred_username" |
OIDC_OPENID_CONFIG_URL |
Opcional: URL para o endpoint de configuração OpenID Connect (se não estiver usando o padrão /.well-known/openid-configuration) |
OIDC_PKCE |
Booleano, se deve usar PKCE. Se não definido, PKCE é usado quando o documento de descoberta do provedor lista S256. Veja PKCE |
OIDC_DISABLE_LOCAL_AUTH |
Booleano, se deve desabilitar a autenticação local por nome de usuário/senha. O padrão é False |
OIDC_AUTO_REDIRECT |
Booleano, se deve redirecionar automaticamente para OIDC quando apenas um provedor estiver configurado. O padrão é False |
Provedores OIDC integrados¶
Para provedores integrados (Google, Microsoft), use estas configurações:
| Chave | Descrição |
|---|---|
OIDC_GOOGLE_CLIENT_ID |
ID do cliente para Google OAuth |
OIDC_GOOGLE_CLIENT_SECRET |
Segredo do cliente para Google OAuth |
OIDC_MICROSOFT_CLIENT_ID |
ID do cliente para Microsoft OAuth |
OIDC_MICROSOFT_CLIENT_SECRET |
Segredo do cliente para Microsoft OAuth |
OIDC_GOOGLE_PKCE |
Booleano, configuração PKCE para Google, veja PKCE |
OIDC_MICROSOFT_PKCE |
Booleano, configuração PKCE para Microsoft, veja PKCE |
Mapeamento de Funções OIDC¶
Essas configurações permitem que você mapeie grupos/funções OIDC do seu provedor de identidade para funções de usuário do Gramps Web:
| Chave | Descrição |
|---|---|
OIDC_ROLE_CLAIM |
O nome da reivindicação no token OIDC que contém os grupos/funções do usuário. O padrão é "groups" |
OIDC_GROUP_ADMIN |
O nome do grupo/função do seu provedor OIDC que mapeia para a função "Admin" do Gramps |
OIDC_GROUP_OWNER |
O nome do grupo/função do seu provedor OIDC que mapeia para a função "Owner" do Gramps |
OIDC_GROUP_EDITOR |
O nome do grupo/função do seu provedor OIDC que mapeia para a função "Editor" do Gramps |
OIDC_GROUP_CONTRIBUTOR |
O nome do grupo/função do seu provedor OIDC que mapeia para a função "Contributor" do Gramps |
OIDC_GROUP_MEMBER |
O nome do grupo/função do seu provedor OIDC que mapeia para a função "Member" do Gramps |
OIDC_GROUP_GUEST |
O nome do grupo/função do seu provedor OIDC que mapeia para a função "Guest" do Gramps |
Configurações apenas para recursos de IA¶
Essas configurações são necessárias se você quiser usar recursos impulsionados por IA, como chat ou busca semântica.
| Chave | Descrição |
|---|---|
LLM_BASE_URL |
URL base para a API de chat compatível com OpenAI. O padrão é None, que usa a API OpenAI. |
LLM_MODEL |
O modelo a ser usado para a API de chat compatível com OpenAI. Se não definido (o padrão), o chat é desativado. A partir da v3.6.0, o assistente de IA usa Pydantic AI com capacidades de chamada de ferramentas. |
VECTOR_EMBEDDING_MODEL |
O modelo a ser usado para embeddings de vetor de busca semântica. Ao usar um modelo local, isso deve ser um nome de modelo Sentence Transformers. Ao usar uma API remota (veja VECTOR_EMBEDDING_BASE_URL), esse é o nome do modelo passado para o provedor remoto. Se não definido (o padrão), a busca semântica e o chat são desativados. |
VECTOR_EMBEDDING_BASE_URL |
URL base para uma API de embedding compatível com OpenAI remota (por exemplo, Ollama, OpenAI, LiteLLM). Se não definido (o padrão), um modelo local de Sentence Transformers é usado. Veja Usando uma API de embedding remota para detalhes. |
VECTOR_EMBEDDING_API_KEY |
Chave da API para provedores de embedding remotos autenticados. Necessária apenas quando VECTOR_EMBEDDING_BASE_URL está definido e o provedor requer autenticação. |
LLM_MAX_CONTEXT_LENGTH |
Limite de caracteres para o contexto da árvore genealógica fornecido ao LLM. O padrão é 50000. |
LLM_SYSTEM_PROMPT |
Prompt de sistema personalizado para o assistente de chat LLM (v3.6.0+). Se não definido, usa o prompt otimizado para genealogia padrão. |
Exemplo de arquivo de configuração¶
Um arquivo de configuração mínimo para produção poderia ser assim: ```python TREE="Minha Árvore Genealógica" BASE_URL="https://minha-arvore.exemplo.com" SECRET_KEY="..." # sua chave secreta USER_DB_URI="sqlite:////caminho/para/usuarios.sqlite" EMAIL_HOST="mail.exemplo.com" EMAIL_PORT=465 EMAIL_USE_SSL=True # Usar SSL implícito para a porta 465 EMAIL_HOST_USER="gramps@exemplo.com" EMAIL_HOST_PASSWORD="..." # sua senha SMTP DEFAULT_FROM_EMAIL="gramps@exemplo.com"