Implemente su aplicación en Internet abierta con Docker usando Codex en una Mac

Esta guía está diseñada intencionalmente para personas que no desean realizar la implementación desde una terminal local. Codex ejecuta comandos en su Mac y en su servidor, mientras usted maneja algunas acciones del panel web, como DNS y pegado de clave pública.

El proceso se divide en partes pequeñas y seguras para que cada etapa sea verificable antes de continuar.

Lo que necesitas

Fase 0: DNS en el panel del registrador (humano, solo web)

En el panel DNS de tu dominio, agrega:

Utilice un verificador de DNS en línea para confirmar que ambos registros se resuelvan en su IP de VPS. Puede continuar mientras la propagación aún está finalizando.

Fase 1: Dar acceso SSH al Codex sin manejo humano de clave privada

Paso 1.1 Generar y guardar clave SSH en Mac (Codex lo hace)

Envíe esto al Codex:

Create an SSH keypair for VPS deploy on my Mac and save it to disk.
Requirements:

Use ed25519.

Save private key to ~/.ssh/codex_vps and public key to ~/.ssh/codex_vps.pub.

Set permissions: private key 600, public key 644.

Do not print the private key content.

Print only:

the one line public key from ~/.ssh/codex_vps.pub

confirm the private key path

Stop after that.

Acción humana: Copie únicamente la línea de clave pública.

Paso 1.2 Agregar clave pública en el panel del proveedor de VPS (humano, solo web)

En el panel de proveedores:

Paso 1.3 Solicite al Codex que pruebe SSH

Envíe esto al Codex:

Try SSH to my VPS and run only basic checks.
Host: YOUR_SERVER_IP
User: root (change to ubuntu if provider says so)
Key: ~/.ssh/codex_vps
Commands:
whoami
uname -a
uptime
Report results and stop.

Si esto funciona, continúa.

Si el proveedor solo admite el inicio de sesión con contraseña inicialmente

Aún puede evitar la terminal local utilizando la consola web del proveedor una vez para instalar el inicio de sesión basado en claves.

Acción humana: Abra la consola web del proveedor e inicie sesión con las credenciales del panel.

Luego envía esto al Codex:

My VPS only supports password login via provider web console right now.
Give me a short command block to paste into the server console that:

creates user codex with sudo

creates /home/codex/.ssh/authorized_keys

inserts this public key exactly: PASTE_PUBLIC_KEY_LINE_HERE

sets correct permissions

adjusts sshd to disable password auth and root login only after key login is confirmed Output only the commands and one sentence telling me to paste them in the console. Stop.

Acción humana: Pegue los comandos y luego vuelva a ejecutar el Paso 1.3 con el usuario codex.

Fase 2: Configuración del servidor base (Codex, One Chunk)

Enviar al Códice:

Do base server setup only.

apt update and upgrade

install ufw and fail2ban

ufw allow 22, 80, 443 and enable ufw

create a non root user deploy with sudo Stop after showing:

ufw status

users created

any warnings

Fase 3: Instalar Docker (Codex, One Chunk)

Enviar al Códice:

Install Docker Engine and Docker Compose plugin on Ubuntu using the official Docker install steps.
Then run:
docker --version
docker compose version
Stop after reporting versions.

Fase 4: Proxy inverso y HTTPS con Traefik (dos pequeños fragmentos)

Paso 4.1 Instalar Traefik HTTP únicamente

Enviar al Códice:

Set up Traefik at /opt/traefik using docker compose.
Requirements:

expose ports 80 and 443

create docker network proxy

dashboard disabled or only bound to localhost

for now configure only HTTP routing, no Lets Encrypt yet Start it and show: docker ps Stop.

Paso 4.2 Habilite Lets Encrypt después de que DNS esté listo

Sólo después de que el verificador muestre:

Enviar al Códice:

Enable Lets Encrypt in Traefik for example.com and www.example.com
using HTTP challenge on port 80.
Store ACME data with correct permissions.
Then verify by requesting headers from:
https://example.com?utm_source=aitoolsfor.you
https://www.example.com?utm_source=aitoolsfor.you
Stop after results.

Fase 5: Implementar la aplicación desde GitHub o GitLab (Codex, One Chunk)

Enviar al Códice:

Deploy my app from:
Repo: YOUR_REPO_URL
Branch: main
Path: /opt/apps/myapp
App internal port: 3000

Do:

clone repo into /opt/apps/myapp

create a production docker compose file for the app

attach app container to the proxy network

configure Traefik labels so example.com and www.example.com route to the app port

start the app stack Show:

docker compose ps for the app

last 80 log lines Stop.

Acción humana: Abierto https://example.com?utm_source=aitoolsfor.you en un navegador.

Fase 6: Variables ambientales sin asustar al ser humano (dos partes)

Paso 6.1 Pregunte al Codex qué claves Env se necesitan

Enviar al Códice:

Find how this project expects environment variables.
Check for .env.example, README, or compose templates.
Create /opt/apps/myapp/.env with only placeholder keys and empty values.
Print the .env file contents without secrets.
Stop.

Acción humana: Llenar .env valores.

Si prefiere no editar el shell SSH, utilice el editor de la consola web del proveedor o solicite a Codex que instale un pequeño editor web vinculado a localhost (solo si se siente cómodo con ese flujo de trabajo).

Paso 6.2 Aplicar Env y reiniciar

Enviar al Códice:

Restart the app stack to apply /opt/apps/myapp/.env.
Then verify:

container is healthy or running

request the homepage over https and show HTTP status Stop.

Fase 7: Actualizaciones y registros (fragmento final)

Enviar al Códice:

Give me a minimal operations note with exact commands:

update to latest main and redeploy

view logs (proxy and app)

restart services

rollback to previous git commit Stop.

Lo que debe esperar después del éxito

Volver a todas las guías

Share This Page