Índice do diárioDockup / nota de campo
Note / self-host-homepage

Como fazer self-host do Homepage em 2026: hosts permitidos, widgets e configuração

Um guia prático para fazer self-host do Homepage, abordando Docker, portas, dados persistentes, TLS, segurança, backups e as falhas que impedem o uso em produção. Com verificações.

Existem duas versões de “executar o Homepage”: um container existe ou o serviço cumpre sua função de verdade. Apenas a segunda importa. Aqui, a comprovação consiste em carregar serviços e favoritos, chamar vários widgets ativos, testar a pesquisa e reiniciar após editar um arquivo de configuração YAML.

O Homepage cumpre esta função: ser uma página inicial com widgets ativos para serviços self-hosted. A implantação precisa preservar os componentes por trás desse comportamento; uma porta, um volume e um certificado são entradas, não o resultado.

Escolha a topologia mínima viável do Homepage

Um diagrama útil do Homepage mostra a rota pública, a porta privada 3000, o limite de estado e todos os requisitos de suporte. Marque quais setas transportam credenciais e quais representam tráfego comum de usuários. O requisito externo do Homepage é uma configuração somente leitura acompanhada das credenciais dos widgets de serviços opcionais. Teste o DNS de saída, o TLS e o comportamento do provedor sem publicar outro serviço de entrada.

Comprove o diagrama com uma ação real: carregue serviços e favoritos, chame vários widgets ativos, teste a pesquisa e reinicie após editar um arquivo de configuração YAML. A pressão mais provável vem da distribuição de chamadas dos widgets, de APIs downstream lentas, da resolução de DNS e da taxa de atualização do dashboard no navegador; monitore esse caminho em vez de tratar todas as requisições HTTP como equivalentes.

Atualize o Homepage sem fazer suposições

A primeira métrica operacional útil do Homepage é verificar se ele consegue carregar serviços e favoritos, chamar vários widgets ativos, testar a pesquisa e reiniciar após editar um arquivo de configuração YAML. Combine isso com sinais de saturação relacionados à distribuição de chamadas dos widgets, às APIs downstream lentas, à resolução de DNS e à taxa de atualização do dashboard no navegador. Uma verificação que avalia apenas o processo não deve chamar dependências dispendiosas nem reiniciar o container porque um upstream ficou temporariamente indisponível.

Trate as atualizações como alterações de dados, pois as chaves de configuração e as integrações de widgets podem mudar; por isso, valide o YAML e o comportamento do provedor antes de atualizar a imagem. Fixe as versões, ensaie o procedimento com o estado restaurado e mantenha a imagem anterior disponível até que um rollback continue sendo válido. Quando o host é rejeitado ou a indentação do YAML impede o carregamento da configuração, preserve os logs anteriores ao reinício; eles normalmente contêm a mensagem que explica a causa.

Um procedimento de aceitação de produção para o Homepage

Antes da chegada dos usuários reais, crie uma planilha de release para o Homepage. Ela deve indicar a imagem fixada, a porta 3000, a origem canônica, os caminhos persistentes e o responsável pela configuração somente leitura acompanhada das credenciais dos widgets de serviços opcionais. Anexe o resultado esperado desta transação: carregar serviços e favoritos, chamar vários widgets ativos, testar a pesquisa e reiniciar após editar um arquivo de configuração YAML.

Use a planilha após uma substituição normal e depois de uma restauração limpa. A recuperação só é aceita se os serviços, favoritos, widgets e assets personalizados retornarem e todos os widgets críticos lidarem de forma visível com falhas downstream. Colete também um breve trace de recursos que cubra a distribuição de chamadas dos widgets, as APIs downstream lentas, a resolução de DNS e a taxa de atualização do dashboard no navegador; mantenha-o junto da release para que futuras alterações de capacidade sejam comparadas com a mesma carga de trabalho.

Inclua uma falha controlada: negue temporariamente o caminho de teste usado pela configuração somente leitura acompanhada das credenciais dos widgets de serviços opcionais. Confirme que o Homepage relata o problema no limite correto, restaure a condição válida e execute novamente a transação. Isso verifica a visibilidade dos erros, não apenas o sucesso, e impede que uma interface aparentemente saudável esconda um worker, callback ou conexão com o banco de dados quebrado.

Torne a inicialização do Homepage reproduzível

Use o container como um runtime substituível, não como o local onde a verdade fica armazenada.

docker run -d \
  --name homepage \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -v homepage-data:/app/config \
  -e HOMEPAGE_ALLOWED_HOSTS=home.example.com \
  ghcr.io/gethomepage/homepage:latest

Permita e verifique o caminho de saída ou do lado do cliente necessário para a configuração somente leitura acompanhada das credenciais dos widgets de serviços opcionais. Inspecione o usuário do container, os caminhos graváveis e o listener vinculado antes de expô-lo. Execute a ação completa — carregar serviços e favoritos, chamar vários widgets ativos, testar a pesquisa e reiniciar após editar um arquivo de configuração YAML — e salve a referência exata da imagem que produziu o resultado.

Separe containers substituíveis de dados duráveis

O conjunto durável de recuperação inclui arquivos de configuração, favoritos, serviços e assets personalizados. Monte /app/config antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para comprovar que esse caminho é realmente persistente. Um volume protege os dados contra a substituição do container, mas não contra a perda do host, a exclusão acidental ou a corrupção no nível da aplicação.

Faça backups que entendam a origem dos dados: use dumps lógicos para bancos de dados ativos quando necessário e copie arquivos apenas a partir de um estado consistente. Mantenha uma cópia criptografada fora do host do Homepage. O critério de aceitação de uma restauração é específico: os serviços, favoritos, widgets e assets personalizados retornam e todos os widgets críticos lidam de forma visível com falhas downstream. O guia de backups testados com restauração explica por que o simples sucesso do job não é suficiente.

Domínios, headers de proxy e porta 3000

O navegador, o cliente da API e o Homepage precisam concordar com uma única origem. Para que isso aconteça, defina os hosts permitidos para o domínio exato e o hostname do proxy. Preserve o host e o protocolo originais, mantendo a porta 3000 indisponível como um endereço público concorrente.

O guia de troubleshooting para sites fora do ar ajuda a distinguir uma rota inacessível de uma aplicação que está respondendo. Essa distinção é importante aqui: o host é rejeitado ou a indentação do YAML impede o carregamento da configuração. Apenas o primeiro caso é corrigido com alterações no ingress; o segundo exige a inspeção dos logs, do estado ou da carga de trabalho do Homepage.

Decisões de segurança específicas do Homepage

Não herde pressupostos de segurança de um tutorial local. A preocupação específica do Homepage é fazer commit de API keys dos widgets em um repositório público. Por isso, em produção, defina os hosts permitidos com precisão e mantenha as API keys dos widgets em variáveis de ambiente ou em uma configuração respaldada por secrets, e não em um repositório público.

HOMEPAGE_ALLOWED_HOSTS controla o comportamento, não a confidencialidade; valide seu tipo e valor e armazene as credenciais reais do Homepage separadamente. Restrinja o acesso ao filesystem e à rede, proteja os endpoints de configuração e defina limites de upload, requisições ou execução em torno da distribuição de chamadas dos widgets, das APIs downstream lentas, da resolução de DNS e da taxa de atualização do dashboard no navegador.

Onde o Dockup reduz o trabalho com o Homepage

Para o Homepage, o Dockup é mais útil no limite entre uma imagem e um serviço durável. Ele mantém a rota para a porta 3000, o TLS, os valores secretos e o armazenamento associados entre substituições de containers, independentemente de o compute pertencer ao Dockup ou ao seu servidor conectado.

Finalize com conhecimento da aplicação: defina os hosts permitidos para o domínio exato e o hostname do proxy; permita e verifique a configuração somente leitura acompanhada das credenciais dos widgets de serviços opcionais; e execute esta verificação: carregue serviços e favoritos, chame vários widgets ativos, teste a pesquisa e reinicie após editar um arquivo de configuração YAML. Mantenha o resultado como uma verificação de deployment para que a próxima atualização da imagem seja avaliada pelo comportamento, e não pelo status do container.

Perguntas frequentes

O que o Homepage precisa para um deployment em produção?

Encaminhe o container do Homepage na porta 3000 por meio de uma única origem HTTPS. O requisito externo de entrega é uma configuração somente leitura acompanhada das credenciais dos widgets de serviços opcionais. Não considere o Homepage pronto até conseguir carregar serviços e favoritos, chamar vários widgets ativos, testar a pesquisa e reiniciar após editar um arquivo de configuração YAML.

Quais dados do Homepage devem fazer parte de um backup?

Persista /app/config e inclua arquivos de configuração, favoritos, serviços e assets personalizados no mesmo manifesto de recuperação. Uma restauração limpa do Homepage só é aprovada quando os serviços, favoritos, widgets e assets personalizados retornam e todos os widgets críticos lidam de forma visível com falhas downstream.

O Homepage precisa de HTTPS atrás de um reverse proxy?

Use HTTPS na origem pública do Homepage e mantenha a porta 3000 na rota interna. Aplique corretamente a configuração do Homepage: defina os hosts permitidos para o domínio exato e o hostname do proxy. No Homepage, o HTTPS protege credenciais ou conteúdo do usuário durante o transporte e mantém consistente o comportamento do cliente que depende da origem.

Como testar uma atualização do Homepage?

Restaure o estado atual do Homepage em um deployment isolado, aplique a versão candidata e repita sua transação de aceitação. Preste atenção especial, pois as chaves de configuração e as integrações de widgets podem mudar; por isso, valide o YAML e o comportamento do provedor antes de atualizar a imagem. Mantenha a imagem anterior do Homepage até entender os limites da migração de dados e do rollback.