--- title: GPT description: Como criar um chat para o gpt pro published: true date: 2026-07-24T00:20:31.706Z tags: editor: markdown dateCreated: 2026-07-24T00:20:31.706Z --- # Guia: Aplicacao Web GPT em LXC no Proxmox Sim. O caminho mais limpo e hospedar uma aplicacao web no **LXC** e deixar a chave da OpenAI somente no servidor. A arquitetura fica assim: ```text Voce no navegador -> https://gpt.seudominio.com -> Nginx no LXC -> App Node.js/Next.js -> OpenAI API ``` ## 1. Criar o container LXC no Proxmox No Proxmox, crie um CT com: ```text Template: Debian 12 ou Ubuntu 24.04 CPU: 2 cores RAM: 2 GB Disco: 10-20 GB Rede: IP fixo ou DHCP reservado Unprivileged container: sim Start at boot: sim ``` Depois entre no container: ```bash pct enter ID_DO_CONTAINER ``` Ou por SSH: ```bash ssh root@IP_DO_CONTAINER ``` ## 2. Instalar dependencias Dentro do LXC: ```bash apt update && apt upgrade -y apt install -y curl git nginx ca-certificates ``` Instale Node.js LTS: ```bash curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - apt install -y nodejs ``` Confirme: ```bash node -v npm -v ``` ## 3. Criar o app web Crie uma pasta: ```bash mkdir -p /opt/meu-gpt cd /opt/meu-gpt ``` Crie um projeto Next.js: ```bash npx create-next-app@latest . ``` Sugestao de escolhas: ```text TypeScript: yes ESLint: yes Tailwind: yes App Router: yes src directory: no Turbopack: no Import alias: yes ``` Instale o SDK da OpenAI: ```bash npm install openai ``` ## 4. Configurar a chave da OpenAI Crie o arquivo `.env.local`: ```bash nano .env.local ``` Coloque: ```env OPENAI_API_KEY=sua_chave_aqui OPENAI_MODEL=gpt-4.1-mini APP_PASSWORD=uma_senha_forte_aqui ``` Importante: essa chave **nunca** deve ir para o frontend. ## 5. Criar uma API de chat Crie o arquivo: ```bash nano app/api/chat/route.ts ``` Conteudo: ```ts import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); export async function POST(req: Request) { const { messages, password } = await req.json(); if (password !== process.env.APP_PASSWORD) { return Response.json({ error: "Unauthorized" }, { status: 401 }); } const response = await client.responses.create({ model: process.env.OPENAI_MODEL || "gpt-4.1-mini", input: messages, }); return Response.json({ text: response.output_text, }); } ``` ## 6. Criar tela simples de chat Edite: ```bash nano app/page.tsx ``` Com uma versao basica: ```tsx "use client"; import { useState } from "react"; type Message = { role: "user" | "assistant"; content: string; }; export default function Home() { const [password, setPassword] = useState(""); const [input, setInput] = useState(""); const [messages, setMessages] = useState([]); const [loading, setLoading] = useState(false); async function sendMessage() { if (!input.trim()) return; const nextMessages: Message[] = [ ...messages, { role: "user", content: input }, ]; setMessages(nextMessages); setInput(""); setLoading(true); const res = await fetch("/api/chat", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ password, messages: nextMessages.map((m) => ({ role: m.role, content: m.content, })), }), }); const data = await res.json(); setLoading(false); if (!res.ok) { setMessages([ ...nextMessages, { role: "assistant", content: data.error || "Erro ao responder." }, ]); return; } setMessages([ ...nextMessages, { role: "assistant", content: data.text }, ]); } return (

Meu GPT

setPassword(e.target.value)} />
{messages.map((m, i) => (
{m.role === "user" ? "Voce" : "GPT"}:{" "} {m.content}
))} {loading &&
Respondendo...
}