Ir al contenido principal

Entradas

Guía SSH para Google Cloud (GCP)

Este tutorial explica cómo generar tus llaves, por qué el comentario es útil (pero opcional) y cómo conectarte finalmente a tu VPS. Dato Clave: Google Cloud usa el texto al final de tu llave para crear automáticamente tu usuario dentro del servidor. 1. Generar la Llave SSH Ejecuta este comando en tu terminal de Ubuntu. El parámetro -C define el comentario final. ssh-keygen -t ed25519 -C "tu_usuario@loquesea" Sobre el comentario (-C): Es Opcional: Si lo omites, Ubuntu pondrá tu_usuario@nombre_pc automáticamente. Función en GCP: Lo que esté antes del @ será tu nombre de usuario para entrar a la VPS. 2. Ver y Copiar la Clave Pública Para que el servidor te reconozca, debes copiar el contenido del archivo con extensión .pub . cat ~/.ssh/id_ed25519.pub Importante: Copia la línea completa, desde ssh-ed25519 hasta el final del comentario. No recortes nada. 3. Estructura de Archivos Generados Así es como se v...
Entradas recientes

Cómo montar un Laboratorio de Pruebas con Terminal Web usando Docker, ttyd y Nginx

Cómo montar un Laboratorio de Pruebas con Terminal Web usando Docker, ttyd y Nginx En este tutorial aprenderemos a crear un entorno seguro y aislado ( Sandbox ) que permite acceder a una terminal de Linux desde el navegador. Es ideal para que terceros (clientes o soporte técnico) realicen pruebas sin comprometer la seguridad del servidor principal. 1. La Arquitectura Para este despliegue utilizamos tres capas de seguridad: Docker : Crea un contenedor (Alpine Linux) donde ocurre todo. Si algo sale mal, el host queda intacto. ttyd : Herramienta ligera que convierte la terminal en una interfaz web. Nginx : Actúa como proxy inverso, aporta HTTPS y una URL amigable. 2. Paso 1: Crear el Contenedor de Sacrificio Creamos un contenedor llamado laboratorio . Usamos un volumen en modo solo lectura para que el usuario externo no pueda modificar archivos. # Crear el contenedor con un volumen de solo lectura docker run -d \ --name laboratorio \ -v /ruta/a/tus...

Estructurando Proyectos en Go: Guía del "Standard Layout" para Aplicaciones Reales

Cuando empiezas en Go, la libertad de su sistema de archivos puede ser abrumadora. A diferencia de frameworks como Laravel o Django, Go no te impone una estructura de carpetas. Sin embargo, la comunidad ha consolidado un patrón conocido como Standard Go Project Layout . En este post analizamos cómo organizar una aplicación profesional (usando como ejemplo un proyecto de integración de APIs) para lograr un código escalable, testeable y fácil de mantener. 🏗️ La Anatomía del Proyecto Una estructura robusta se ve así: . ├── cmd/ # Entry points (Puntos de entrada) │ └── wasabi/ # Nombre de tu aplicación │ └── main.go # Archivo principal ├── internal/ # Lógica privada del negocio │ ├── handlers/ # Capa de transporte (HTTP/gRPC) │ ├── models/ # Estructuras de datos compartidas │ └── wuzapi/ # Clientes o adaptadores de servicios ├── go.mod # Gestión de dependencias └── LICENSE ...

Arquitectura de Middleware de Mensajería

Esta guía detalla la construcción de un sistema en Go diseñado para ser multitenant y desacoplado . La clave de este diseño es que el núcleo del servidor no depende de configuraciones estáticas, permitiendo gestionar múltiples clientes y proveedores de forma dinámica. El servidor no "conoce" a los clientes de antemano. Recibe la identidad (Token) en tiempo de ejecución, procesa el contrato de datos y delega la respuesta. 1. Estructura de Directorios Estándar Siguiendo el Standard Go Project Layout , organizamos el código para separar la infraestructura de la lógica de negocio. project-root/ ├── cmd/api/ # Punto de entrada (main.go) ├── internal/ # Código privado del proyecto │ ├── handlers/ # Controladores HTTP (Webhook Receptor) │ ├── providers/ # Adaptadores de API (Envío de mensajes) │ ├── models/ # Estructuras de datos (Contratos JSON) │ └── services/ # Lógica de procesamiento └── .env ...

Primer API en Go - Hola Mundo

Este tutorial muestra cómo crear y ejecutar una API mínima en Go para verificar que el entorno funciona correctamente. Este será el primer paso antes de avanzar a un webhook real y un bridge con WuzAPI. 1. Instalar Go (Linux) sudo apt update sudo apt install golang -y Verificar instalación: go version 2. Crear el proyecto mkdir hola-go cd hola-go go mod init hola-go Go usa módulos. Este comando inicializa el proyecto correctamente. 3. Crear la API "Hola Mundo" Crear el archivo main.go : package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hola Mundo desde Go") }) fmt.Println("Servidor escuchando en http://localhost:8080") http.ListenAndServe(":8080", nil) } 4. Ejecutar la aplicación go run main.go Probar desde el navegador o con curl: curl http://localhost:8080 Si ves el texto ...

Instalación de WuzAPI con Docker

Este tutorial muestra la instalación mínima y funcional de WuzAPI usando Docker Compose . Requisitos Docker Docker Compose Puerto 8080 libre Crear archivo .env En el directorio del proyecto, crear el archivo .env : WUZAPI_ADMIN_TOKEN=admin_CAMBIAR_ESTE_TOKEN WUZAPI_GLOBAL_ENCRYPTION_KEY=CAMBIAR_ESTA_CLAVE WUZAPI_GLOBAL_HMAC_KEY=CAMBIAR_ESTA_CLAVE TZ=America/Asuncion Nunca publiques estos valores en producción. Cambiá siempre los tokens y claves. 3️⃣ Crear docker-compose.yml services: wuzapi: image: asternic/wuzapi container_name: wuzapi restart: unless-stopped ports: - "8080:8080" env_file: - .env volumes: - ./.env:/app/.env - wuzapi_data:/data volumes: wuzapi_data: El volumen wuzapi_data guarda la sesión de WhatsApp y evita perderla al reiniciar. Levantar el contenedor Desde el mismo directorio: docker compose up -d Verificar que WuzAPI esté activo docker ps ...

WAHA con Docker y Nginx usando subdominios

Este tutorial muestra la forma correcta y estable de levantar WAHA y exponerlo por Internet usando Nginx + HTTPS , soportando múltiples instancias mediante subdominios . Decisión clave: subdominios, no subpaths. WAHA no soporta bien /waha1 , /waha2 . Arquitectura final 1 servidor (VM) 1 Nginx como reverse proxy 1 contenedor WAHA por WhatsApp 1 subdominio por WAHA Ejemplo: wasabi.cloud-ip.cc → web / landing waha1.wasabi.cloud-ip.cc → WAHA #1 waha2.wasabi.cloud-ip.cc → WAHA #2 1️⃣ Requisitos Ubuntu (20.04+ recomendado) Nginx Dominio o subdominio Certbot (Let’s Encrypt) 2️⃣ DNS (subdominios) En tu proveedor DNS agregá un registro A por cada WAHA: Host Tipo IP wasabi.cloud-ip.cc A TU_IP_PUBLICA waha1.wasabi.cloud-ip.cc A TU_IP_PUBLICA waha2.wasabi.cloud-ip.cc A TU_IP_PUBLICA Esperá unos minutos a que el DNS propague y listo. 3️⃣ Nginx – dominio raíz El dominio pr...