Independent testing Updated July 2026 387 self-hosting guides 5 VPS providers tested

guide

Como Fazer Self-Hosting do Jan Server num VPS (Guia Completo)

Instale o Jan Server num VPS com Docker Compose: corra o assistente de configuração, escolha a inferência e proteja primeiro o Keycloak e o Kong.

Jan Server é a metade self-hostable do projeto Jan: um conjunto de microsserviços em Go que expõe uma API compatível com OpenAI, com integração de ferramentas MCP, autenticação via Keycloak e uma gateway Kong à frente. Não é um único contentor, e a implementação reflete isso.

A boa notícia é que o projeto disponibiliza um assistente de configuração que escreve a configuração por si. A principal decisão que toma durante o processo é onde corre a inferência.

Antes de começar

A maioria dos planos VPS baratos tem 4 GB e não chega. Estes cumprem o mínimo:

FornecedorPlanovCPU / RAM / DiscoPreçoLink
ContaboCloud VPS 44 / 8 GB / 100 GB5,50 EUR/mês sem IVAContabo
Hetzner CloudCX334 / 8 GB / 80 GB NVMe8,49 EUR/mês sem IVAHetzner Cloud
DigitalOceanNível de droplet de 8 GB8 GBconsulte a tarifa atualDigitalOcean
VultrNível de instância de 8 GB8 GBconsulte a tarifa atualVultr
LinodeNível partilhado de 8 GB8 GBconsulte a tarifa atualLinode

Para uma análise mais completa destes planos, veja a nossa comparação de VPS.

Passo 1: Ligar-se e instalar as dependências

ssh user@your-vps-ip
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2 make git
sudo systemctl enable --now docker

Confirme que obteve o Compose v2, porque o ficheiro compose do Jan Server usa a chave include:, que a v1 não entende:

docker compose version

Passo 2: Clonar o repositório

Ao contrário da maioria das apps self-hosted, aqui não escreve o seu próprio docker-compose.yml. O ficheiro compose do repositório importa fragmentos para a infraestrutura, os serviços de API, as ferramentas MCP, a app web e a inferência.

git clone https://github.com/janhq/server.git
cd server

Passo 3: Correr o assistente de configuração

make quickstart

O assistente escreve um único .env na raiz e depois arranca o Compose. Pergunta três coisas:

Se não conseguir correr o assistente de forma interativa, copie o modelo e preencha-o em vez disso:

cp .env.template .env
nano .env
make setup

O make setup verifica as dependências, cria as pastas e descarrega as imagens base sem arrancar nada.

Passo 4: Arrancar a stack

make up-full

Assim que os contentores estabilizarem, tem:

ServiçoPortaFunção
API Gateway (Kong)8000O ponto de entrada para tudo
LLM API8080Chat completions compatíveis com OpenAI
Response API8082Orquestração de ferramentas em vários passos
Media API8285Uploads e IDs de media
MCP Tools8091Pesquisa, scraping, execução de código
Web chat UI3001O cliente no browser
Keycloak8085Consola de autenticação

A documentação da API é servida em http://your-vps-ip:8000/api/swagger/index.html.

Passo 5: Proteger antes de expor

Este é o passo a não saltar. Duas predefinições são inseguras num servidor público:

  1. A consola do Keycloak vem com admin / admin. Altere isto imediatamente na porta 8085. O Keycloak emite os tokens que o Kong valida, por isso esta única credencial protege toda a superfície da API.
  2. Só a porta 8000 deve ser acessível a partir do exterior. O Kong aplica as verificações de JWT e de chave de API; as portas dos serviços por trás dele não. Vincule as restantes a localhost ou bloqueie-as na firewall.
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable

Depois termine o TLS com Caddy, Traefik ou Nginx e faça proxy para a porta 8000. Deixar um endpoint de LLM sem autenticação na internet pública leva a que seja encontrado e usado por outra pessoa, normalmente em poucos dias.

Correr a inferência localmente

Se optou pelo vLLM local, o fragmento de inferência define dois perfis. O perfil de GPU corre vllm/vllm-openai:v0.11.2 com janhq/Jan-v1-4B como modelo predefinido e reserva um dispositivo NVIDIA, por isso não arranca num VPS típico. O perfil de CPU corre sem GPU e é genuinamente utilizável para testes, mas a geração de tokens em vCPUs partilhadas é lenta o suficiente para não o querer à frente de utilizadores.

Alugar capacidade de GPU e apontar o Jan Server para ela como endpoint remoto costuma sair mais barato do que um servidor de GPU parado entre pedidos.

Operação do dia a dia

Atualizar para uma versão mais recente:

git pull
docker compose pull
make up-full

Faça cópia de segurança do volume do Postgres e do .env na raiz. O .env guarda os segredos que o assistente gerou, e restaurar uma base de dados sem ele deixa-o com sessões que não consegue decifrar.

Verifique o que um serviço está a fazer com docker compose logs -f llm-api, substituindo pelo serviço que lhe interessa.

Problemas comuns

SintomaCausa
include não é uma chave válida do composeEstá instalado o Docker Compose v1; precisa da v2
Os contentores são terminados durante o arranqueCom menos de 8 GB de RAM, a stack é morta por falta de memória (OOM)
Todas as chamadas de API devolvem 401Os pedidos estão a chegar diretamente a uma porta de serviço em vez de passar pelo Kong na 8000
O contentor do vLLM nunca fica saudávelO perfil de GPU está ativo num anfitrião sem dispositivo NVIDIA

O Jan Server exige mais de um VPS do que uma app self-hosted típica, sobretudo porque traz a sua própria gateway, o seu próprio fornecedor de identidade e a sua própria base de dados, em vez de assumir que já os tem. Dimensione para 8 GB, coloque o Kong atrás de TLS e altere a palavra-passe do Keycloak antes de tudo o resto.

Frequently asked questions

Preciso de uma GPU para fazer self-hosting do Jan Server num VPS?

Não, se escolher um endpoint remoto compatível com OpenAI quando o assistente de configuração perguntar pelo fornecedor de LLM. O VPS passa então a correr apenas os serviços de API, orquestração e autenticação. A opção de vLLM local tem um perfil de GPU que espera uma placa NVIDIA e um perfil de CPU que funciona sem ela, a uma velocidade muito mais baixa.

Porque é que a consola do Keycloak aceita admin como utilizador e como palavra-passe?

Essa é a credencial predefinida com que a configuração do compose é distribuída, o que é aceitável num portátil mas não num servidor público. Altere-a antes de abrir qualquer porta para a internet, porque o realm do Keycloak é o que protege todas as rotas da API atrás da gateway Kong.

Que porta devo colocar atrás do meu reverse proxy?

A porta 8000, a gateway de API Kong. É o ponto de entrada documentado e é ela que aplica as verificações de JWT e de chave de API à frente dos serviços individuais. Publicar diretamente as portas dos serviços permitiria a quem chama contornar por completo a gateway e a sua autenticação.