Docker + Portainer na VPS: primeiro acesso e como publicar um app

Aplicativos na VPSAtualizado em

Este kit traz o Docker instalado e o Portainer, um painel web para gerenciar os containers da VPS sem precisar decorar comandos. Você pode subir os aplicativos que quiser, e eles ganham HTTPS pelo mesmo proxy que já protege o Portainer.

O que vale para todos os aplicativos (SSH, log, reiniciar) está no artigo Sua VPS com aplicativo: dados de acesso, onde fica cada coisa, ver o log, reiniciar o app.

Primeiro acesso

  1. Abra o endereço que veio no e-mail: https://portainer.SEU-IP.yhostbr.online (o IP da VPS com traços no lugar dos pontos).
  2. No campo de usuário, use o e-mail do seu cadastro na yHost. A senha é a que veio no e-mail.
  3. Na primeira tela aparece a lista de ambientes. Clique no ambiente primary: ele é o Docker desta VPS.

A tela do Portainer é em inglês. Neste artigo, os nomes de menus e botões estão escritos como aparecem na tela.

Trocar a senha

  1. Clique no seu usuário, no canto superior direito, e escolha My account.
  2. No bloco Change user password, preencha Current password (a senha atual), New password (a nova) e Confirm password (a nova de novo).
  3. Clique em Update password.

O Portainer exige senhas com pelo menos 12 caracteres.

Primeiros passos

Conheça o que já está rodando

Em Containers você vê dois containers que fazem parte do kit: portainer-portainer-1 (o próprio Portainer) e proxy-traefik-1 (o proxy HTTPS). Não pare nem apague esses dois: sem eles, o painel e o HTTPS saem do ar.

Publicar um aplicativo com HTTPS

O proxy da VPS (Traefik) emite o certificado e encaminha as visitas para o seu aplicativo. Para isso, o aplicativo precisa estar na rede yhost e ter algumas etiquetas (labels). Use um domínio seu.

  1. No lugar onde você gerencia o DNS do seu domínio, crie um registro A apontando o nome escolhido (por exemplo, app.SEU-DOMINIO.com.br) para o IP da VPS. Espere ele funcionar antes de seguir.
  2. No Portainer, abra o ambiente primary, clique em Stacks e depois em Add stack.
  3. Em Name, dê um nome em letras minúsculas, sem espaços (por exemplo, meuapp).
  4. Em Build method, deixe Web editor e cole a configuração do seu aplicativo, como no exemplo abaixo.
  5. Clique em Deploy the stack.

Exemplo de stack, com um servidor web simples para teste:

services:
  meuapp:
    image: nginx:alpine
    restart: always
    networks:
      - yhost
    labels:
      - traefik.enable=true
      - traefik.http.routers.meuapp.rule=Host(`app.SEU-DOMINIO.com.br`)
      - traefik.http.routers.meuapp.entrypoints=websecure
      - traefik.http.routers.meuapp.tls.certresolver=le
      - traefik.http.services.meuapp.loadbalancer.server.port=80
networks:
  yhost:
    external: true

O que trocar no exemplo:

  • app.SEU-DOMINIO.com.br: o nome que você apontou para a VPS.
  • meuapp: um nome curto e diferente para cada aplicativo (ele aparece nas linhas de routers e services).
  • server.port=80: a porta em que o aplicativo atende dentro do container. Veja na documentação da imagem que você vai usar.

O proxy pede o certificado sozinho assim que o aplicativo sobe. Depois de 1 ou 2 minutos, abra https://app.SEU-DOMINIO.com.br.

Não publique as portas 80 e 443 nos seus containers (a parte ports: do compose). Essas portas já são do proxy, e o container novo não vai conseguir subir. Deixe o proxy cuidar do acesso pelas labels, como no exemplo.

Onde roda na VPS

Portainer pasta /opt/yhost/portainer, container portainer-portainer-1
Proxy HTTPS pasta /opt/yhost/proxy, container proxy-traefik-1
Rede do proxy yhost (os aplicativos com HTTPS precisam estar nela)
Reiniciar o Portainer cd /opt/yhost/portainer e depois docker compose restart

Problemas comuns

A página não abre logo depois da criação

A instalação leva de 2 a 6 minutos depois que a VPS liga. Espere uns 10 minutos e tente de novo numa janela anônima. Para acompanhar, veja o log da instalação: tail -n 30 /var/log/yhost-app.log.

O navegador avisa que a conexão não é segura

O certificado HTTPS ainda não saiu. Ele costuma sair poucos minutos depois da instalação e, se o endereço da VPS demorou a ficar pronto, o sistema tenta de novo sozinho a cada 10 minutos. Espere e recarregue a página. Enquanto o aviso aparecer, não digite sua senha. Se o aviso continuar depois de 1 hora, abra um chamado.

Meu aplicativo mostra "404 page not found"

O proxy não achou nenhum aplicativo para aquele endereço. Confira se o container tem a label traefik.enable=true, se o nome na regra Host(...) está igual ao endereço que você abriu e se o container está na rede yhost.

Meu aplicativo mostra "Bad Gateway"

O proxy achou o aplicativo, mas não conseguiu falar com ele. Quase sempre é a porta errada em loadbalancer.server.port, ou o aplicativo ainda está ligando.

O certificado do meu aplicativo não sai

Confira se o domínio já aponta para o IP da VPS. Depois reinicie o proxy pelo SSH: cd /opt/yhost/proxy e docker compose restart. Para ver o motivo, use docker compose logs --tail 100 na mesma pasta.

Precisa de ajuda?

Abra um chamado em https://yhost.com.br/painel/suporte. Informe o IP da VPS e o que aconteceu. Se tiver uma mensagem de erro, mande um print.

Ainda com dúvida? A nossa equipe ajuda pelo chamado.

Abrir chamado