Criando e Executando um Projeto NestJS Localmente no macOS com ServBay
NestJS é um framework Node.js progressivo para construção de aplicações de servidor eficientes e escaláveis. Escrito em TypeScript e inspirado no Angular, o NestJS adota uma arquitetura modular e o padrão de injeção de dependências (DI). Ele oferece um conjunto potente de ferramentas e recursos para que os desenvolvedores construam aplicações complexas de maneira fácil, mantendo sempre a manutenção, o teste e o desacoplamento do código.
Principais Características e Benefícios do NestJS
- Arquitetura Modular: Organize seu código por módulos, tornando a estrutura do projeto mais clara e facilitando a manutenção.
- Injeção de Dependências: Sistema poderoso e simples de DI, que aumenta a testabilidade e manutenibilidade do código.
- Uso de TypeScript: Aproveita a tipagem estática, interfaces e outros recursos modernos do JavaScript, melhorando a produtividade e reduzindo erros em tempo de execução.
- Decorators Ricos: Utilize decoradores para definir controllers, serviços, módulos, etc., tornando o código mais conciso, declarativo e fácil de entender.
- Ecossistema Robusto: Uma comunidade ativa e muitos módulos/extensões de terceiros prontos para integrar TypeORM, Mongoose, GraphQL, WebSockets, cache, validação, entre outros.
- Baseado em Padrões: Construído sobre frameworks HTTP já consagrados como Express ou Fastify, garantindo performance e compatibilidade.
Com NestJS, é possível adotar as melhores práticas de desenvolvimento back-end (princípios SOLID, padrões de design) e construir rapidamente aplicações web, APIs e microsserviços de alto desempenho em nível corporativo.
Criando e Executando um Projeto NestJS com o ServBay
O ServBay fornece um ambiente local de desenvolvimento web integrado e poderoso para macOS, incluindo múltiplas versões do Node.js, bancos de dados populares e servidores web. Neste guia, utilizaremos o ambiente Node.js e o recurso “Sites” do ServBay para criar, rodar e configurar um projeto NestJS. Através do proxy reverso do ServBay, você acessa seu app NestJS local utilizando um domínio personalizado.
Pré-requisitos
Antes de começar, certifique-se de que as seguintes condições foram atendidas:
- ServBay Instalado: O ServBay já está instalado com sucesso no seu macOS.
- Node.js Habilitado: No painel do ServBay, na aba "Pacotes" (Packages), certifique-se de ativar e instalar a(s) versão(ões) de Node.js necessária(s). Caso ainda não tenha habilitado, veja o Guia de Uso do Node.js no ServBay.
Criando o Projeto NestJS
Instale o NestJS CLI Globalmente
Abra o Terminal e use o npm (instalado junto ao Node.js) para instalar globalmente o CLI do NestJS, ferramenta essencial para iniciar, desenvolver e manter aplicações NestJS.
bashnpm install -g @nestjs/cli
1Inicialize o Projeto
Navegue até o diretório recomendado pelo ServBay para sites:
/Applications/ServBay/www
. Esse é o local padrão para projetos hospedados pelo ServBay, facilitando a configuração posterior. Agora, crie um novo projeto utilizando o CLI do NestJS:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Após o comando, o NestJS CLI irá guiá-lo pelo processo de criação, incluindo escolha do gerenciador de pacotes (npm, yarn ou pnpm). Recomenda-se o npm para manter a consistência. O projeto será criado na pasta
/Applications/ServBay/www/servbay-nest-app
.Instale as Dependências do Projeto
Acesse o diretório recém-criado
servbay-nest-app
e instale os pacotes necessários:bashcd servbay-nest-app npm install
1
2O comando
nest new
já executa onpm install
, mas rodar novamente garante que tudo está atualizado e corretamente instalado.
Alterando a Resposta Raiz do Projeto NestJS (Opcional)
Para verificar se o projeto está rodando corretamente e acessível via ServBay, vamos alterar a resposta padrão da rota root do app.
Modifique o Arquivo
src/app.controller.ts
Abra o arquivo
src/app.controller.ts
no editor de sua preferência e edite o conteúdo conforme abaixo, para que a raíz (/
) retorne "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // Supondo que você manteve o AppService @Controller() export class AppController { constructor(private readonly appService: AppService) {} // Se manteve AppService @Get() getHello(): string { // return this.appService.getHello(); // Caso utilize o AppService return 'Hello ServBay!'; // Retorna a string diretamente } }
1
2
3
4
5
6
7
8
9
10
11
12
13Esse código define um controller simples que responde à requisição HTTP GET na rota raiz com a string especificada.
Executando o Projeto no Modo de Desenvolvimento e Acessando Via ServBay
Projetos NestJS são geralmente executados em modo desenvolvimento por um servidor embutido, ouvindo em uma porta específica. No ServBay, criamos um site com proxy reverso apontando para a porta do app NestJS, e usamos um domínio personalizado para o acesso.
Inicie o Servidor de Desenvolvimento
Dentro do diretório do projeto
/Applications/ServBay/www/servbay-nest-app
, utilize o comando abaixo para rodar o servidor em modo de desenvolvimento. Definimos a porta do app NestJS, por exemplo8585
, via variável de ambientePORT
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2O script
npm run start:dev
é padrão em projetos NestJS, rodando o código TypeScript viats-node
e monitorando alterações para recarregar automaticamente. O servidor irá escutar emlocalhost:8585
.Configure o Proxy Reverso no ServBay
No painel do ServBay, acesse a aba "Sites" (Websites) e clique no botão de adicionar novo site (
+
). Configure conforme abaixo:- Nome: Defina um nome fácil de identificar, por exemplo
My first NestJS dev site
. - Domínio(s): O domínio local para acessar o projeto, ex:
servbay-nest-test.dev
. O ServBay resolve automaticamente TLDs.dev
para localhost, não sendo necessário editar o arquivo hosts. - Tipo: Selecione
Proxy Reverso (Reverse Proxy)
. - Endereço IP: Normalmente
127.0.0.1
(loopback). - Porta: A porta escolhida para o NestJS, aqui
8585
.
Salve a configuração. O ServBay irá atualizar automaticamente o web server (Caddy ou Nginx). Para detalhes, veja a documentação de como adicionar sites no ServBay.
- Nome: Defina um nome fácil de identificar, por exemplo
Acesse o Site em Modo de Desenvolvimento
Abra seu navegador e acesse o domínio que acabou de configurar:
https://servbay-nest-test.dev
.Atenção:
- Por padrão, o ServBay gera e instala certificados SSL gratuitos para sites locais (emitidos pela CA do ServBay), permitindo acesso seguro via
https
. Caso veja alertas de certificado, pode ser necessário confiar na "ServBay User CA". Veja Como usar SSL no ServBay. - Certifique-se de que o servidor NestJS (
PORT=8585 npm run start:dev
) está rodando. Se parar, o domínio não responderá.
- Por padrão, o ServBay gera e instala certificados SSL gratuitos para sites locais (emitidos pela CA do ServBay), permitindo acesso seguro via
Build de Produção e Acesso via ServBay
Antes de disponibilizar a aplicação NestJS em produção (mesmo em simulação local), normalmente deve-se compilar o projeto.
Compile o Projeto para Produção
No diretório do projeto, execute:
bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2O comando compila todo o código TypeScript para a pasta
dist
.Execute o Servidor em Produção
Após a build, utilize o comando abaixo para rodar o app NestJS em modo produção. Recomenda-se o uso do comando
node
para executar o arquivo JS já compilado. Defina a porta, por exemplo8586
, e a variável de ambienteNODE_ENV=production
.bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2Em produção, normalmente não há recarga automática.
Configure o Proxy Reverso para Produção no ServBay
No painel do ServBay, na aba "Sites", adicione ou edite uma configuração para apontar ao servidor de produção:
- Nome: Ex:
My first NestJS production site
. - Domínio(s): Ex:
servbay-nest-test.prod
. - Tipo:
Proxy Reverso (Reverse Proxy)
. - Endereço IP:
127.0.0.1
. - Porta:
8586
(igual à especificada no servidor).
Salve a configuração.
- Nome: Ex:
Acesse o Site em Produção
No navegador, digite
https://servbay-nest-test.prod
. O site estará disponível com SSL via ServBay.
Conectando aos Bancos de Dados do ServBay
O ServBay possui suporte nativo a diversos bancos de dados: MariaDB (compatível MySQL), PostgreSQL, MongoDB e Redis. Ao desenvolver em NestJS, você pode facilmente conectar-se a esses bancos.
Importante: Antes de conectar, verifique no painel do ServBay, na aba "Pacotes", se o serviço do banco de dados desejado está ativado. Consulte o painel ou documentação para informações de portas, usuários e senhas padrão. Em ambiente de produção, altere as credenciais padrão e crie usuários específicos para segurança.
A seguir, exemplos de configuração das ORMs/libraries mais comuns em projetos NestJS, normalmente em AppModule
ou módulos específicos de banco.
Conectando ao MongoDB
Usando
@nestjs/mongoose
:bashnpm install @nestjs/mongoose mongoose
1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... outros imports @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Porta padrão 27017 // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13O ServBay utiliza a string padrão
mongodb://localhost:27017/
. Use um cliente como MongoDB Compass oumongosh
para criar o bancoservbay-nest-app
se necessário.Conectando ao Redis
Usando
@nestjs/redis
:bashnpm install @nestjs/redis redis @types/redis
1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... outros imports @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Porta padrão 6379 }), // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15O Redis no ServBay fica acessível em
localhost:6379
.Conectando ao MariaDB (MySQL Compatível)
Usando
@nestjs/typeorm
, lembrando que tantomariadb
quantomysql
funcionam:bashnpm install @nestjs/typeorm mysql2 typeorm
1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... outros imports @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // ou 'mysql' host: 'localhost', port: 3306, // Padrão 3306 username: 'root', // Usuario padrão no ServBay password: 'password', // Senha padrão no ServBay database: 'servbay_nest_app', // Banco precisa ser criado antes entities: [], // Array das entidades synchronize: true, // Em DEV pode ser true, em produção cuidado }), // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Nota: O usuário root padrão do ServBay é
root
com senhapassword
. Use uma ferramenta (TablePlus, DBeaver ou MySQL CLI) para criar o bancoservbay_nest_app
. Para segurança, troque a senha do root e utilize um usuário restrito.Conectando ao PostgreSQL
Usando
@nestjs/typeorm
:bashnpm install @nestjs/typeorm pg typeorm
1No módulo:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... outros imports @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Porta padrão 5432 username: 'servbay', // Exemplo, confira no painel/documentação password: 'password', // Exemplo, confira no painel/documentação database: 'servbay_nest_app', // Banco precisa ser criado antes entities: [], // Array das entidades synchronize: true, // Em DEV pode ser true, produção não recomendado }), // ... outros módulos ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Nota: Usuário/senha padrão do PostgreSQL no ServBay pode variar ("servbay" ou "postgres"). Confirme as credenciais exatas no painel/documentação do ServBay e crie o banco
servbay_nest_app
se necessário. Em produção, altere as credenciais padrão.
Conclusão
Este guia mostrou como criar, executar e acessar projetos NestJS localmente no macOS usando o ServBay. Com o Node.js integrado, configuração facilitada de sites (principalmente via proxy reverso) e suporte a múltiplos bancos de dados, o ServBay simplifica totalmente o desenvolvimento e testes locais de aplicações NestJS. Você pode alternar facilmente entre ambientes de desenvolvimento e produção, acessando via domínios personalizados e HTTPS, além de conectar de maneira prática aos bancos poderosos que o ServBay disponibiliza.