Desenvolvimento de Sistemas para Automação Comercial

Voltar

Servidor - 29/05/2026



Apresentação:

  • Este tutorial ensina como montar um servidor completo com as melhores ferramentas disponíveis no momento, visando portabilidade, velocidade, segurança, organização e manutenção.

    O ambiente será montado no WSL do Windows, visando compatibilidade com o ambiente de produção, pois desenvolver no Windows para rodar no Linux costuma causar vários problemas.

    Onde estiver descrito DEV, refere-se ao WSL; onde estiver PROD, refere-se ao servidor com Debian Net Inst.


Pacotes:

  • Em modo DEV no WSL, instale o wget (downloads via link), o git (enviar o projeto para o GitHub) e o libnss3-tools (necessário para o certificado simulado de HTTPS).

    Antes de começar, veja como instalar o Docker AQUI.

    Em modo PROD no servidor Debian Netinst, instale o openssh-server (acesso via SSH e FileZilla), o certbot (gerar o certificado HTTPS da Let's Encrypt) e o git (baixar as alterações do projeto no GitHub).


Configurações:

  • Configurações de acesso modo DEV (somente WSL):

  • Criar arquivos de configuração NGINX:

    Conteúdo para o servidor padrão localhost, usado em DEV:

    Arquivo do servidor com os certificados para HTTPS (usado em PROD):

    Conteúdo:

  • RustDesk Server:

    Servidor do RustDesk — semelhante ao AnyDesk e outros, mas open source e hospedado no seu próprio servidor.

    Aqui você colocará seus arquivos id_25519 e id_25519.pub caso queira restringir o tráfego do seu servidor apenas a clientes que possuam a sua chave pública.


Certificado Fake Local HTTPS:

  • Para não precisar ficar alterando o arquivo de configuração do NGINX entre DEV e PROD, é possível gerar certificados que simulam o certificado da Let's Encrypt localmente. Para isso, acesse o repositório do mkcert (Filippo Valsorda) no GitHub e baixe com o wget o binário ...linux-amd64.

    https://github.com/FiloSottile/mkcert/releases

    Depois crie o diretório idêntico ao do servidor PROD, entre nele e gere os arquivos:

    Por último, baixe o binário ...windows-amd64.exe no Windows e instale pelo PowerShell:


Certbot:

  • Para que o HTTPS funcione, é preciso criar o certificado da Let's Encrypt com o nginx parado (a porta 80 precisa estar livre).

    Dica: o certificado é renovado automaticamente pelo timer do Certbot. Para testar a renovação manualmente, use sudo certbot renew --dry-run.


docker-compose.yml:

  • O docker-compose.yml é o arquivo principal: ele define quais containers serão usados, seus comportamentos e como os arquivos internos serão sobrescritos pelos externos.

  • Observações NGINX:

    O app default deve estar funcionando corretamente na pasta padrão /var/www/ para que os demais também funcionem.

    Atenção: os arquivos tulio.local.conf e hive.cerianthusagro.com.br.conf citados nos volumes são de outros projetos. Remova-os do docker-compose.yml se eles não existirem, ou o NGINX não subirá.

  • Observações Samba:

    Em GROUPID=1001 deve ir o id do grupo escolhido para o diretório compartilhado, assim como o USERID=1000 para o usuário.

    Caso ao tentar acessar pelo Windows ocorram alguns erros, execute no cmd do Windows:

    Evite usar o Samba para acesso externo, limitando no UFW o acesso à sua rede local:

  • Observações Postgres:

    Em ports:, para que o banco seja acessado apenas via SSH ou pela aplicação, mantenha o 127.0.0.1: antes da porta. Para acesso externo (via DBeaver, por exemplo), remova esse IP.


Primeira Execução:

  • Tudo pronto. Agora suba os containers para começar o desenvolvimento.

    Este comando inicia o servidor, mas, para que funcione, os containers das aplicações Laravel indicadas no diretório docker/nginx também precisam estar rodando.


VS Code:

  • Instalando a extensão WSL da Microsoft no VS Code, será possível editar os arquivos do projeto no WSL a partir do VS Code no Windows.

    Para isso, no terminal do WSL dentro da pasta do projeto, basta digitar code . e pronto: o VS Code abre automaticamente no Windows, já na pasta do projeto, por conexão remota.

    Ao instalar o Git e inicializá-lo dentro da pasta do projeto (também no WSL), o VS Code cuida do versionamento e envia as alterações para o GitHub apenas por cliques, de forma bem intuitiva.

    Para acompanhar o desenvolvimento do projeto, basta abrir qualquer navegador no Windows e acessá-lo pelo localhost.


Passar o Projeto para Produção:

  • SSH

    Para acessar o servidor a partir do Windows, usando o IP 192.168.1.4 como exemplo, use o comando:

    Ao se conectar a um dispositivo por SSH, o Windows registra a conexão num arquivo chamado known_hosts (em C:\Users\usuario\.ssh) para evitar que você se conecte ao mesmo IP no futuro, mas em uma máquina diferente — protegendo contra ataques "man-in-the-middle" (MITM). Caso ele detecte que a máquina de destino mudou (por uma formatação, por exemplo), aparece o alerta WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! e a conexão é bloqueada.

    Se você tem certeza de que a máquina de destino é a pretendida, pode apagar as linhas referentes ao acesso anterior no known_hosts ou simplesmente rodar:

    Ele reseta o acesso e pergunta se você quer registrar um novo fingerprint; basta digitar yes, pressionar Enter, digitar a senha do usuário e pronto, a conexão foi bem-sucedida!

    Para não precisar digitar a senha a cada conexão, copie a sua chave pública do Windows (em C:\Users\usuario\.ssh\id_ed25519.pub) e cole no arquivo ~/.ssh/authorized_keys do servidor:

    Depois é só salvar com Ctrl + X, Y, Enter e pronto.

    Caso ainda não tenha uma chave id_ed25519 no Windows, crie:

    Para enviar e receber arquivos do GitHub pelo comando git, adicione a chave pública criada AQUI.

  • Mandar o Projeto para o GitHub:

  • Trazer o projeto para o servidor de produção:

  • Atualizar o Site:

    Crie um alias (atalho) chamado gp para que, sempre que houver alterações no DEV enviadas ao GitHub, o servidor PROD consiga baixá-las de forma simples, segura e sem contratempos:

    Atenção: o git reset --hard descarta qualquer alteração local não commitada no servidor. Use só em PROD, onde nada é editado à mão.

  • Restaurar banco de dados:


Criar banco para outro projeto:

  • Quando o mesmo servidor for usado para vários projetos, eles precisarão estar na rede rede_global_postgres, e os bancos, usuários e senhas deverão estar no .env de cada projeto.

    A rede global precisará estar no docker-compose.yml de todos os projetos.

    Conecte como o superusuário (usuario) no banco padrão (banco) e crie o banco/usuário adicional do novo projeto:

    E então execute: