[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"page-/es/blog/19":3},{"id":4,"title":5,"body":6,"date":360,"description":17,"extension":361,"image":362,"meta":363,"navigation":365,"path":366,"seo":367,"short":368,"stem":369,"tags":370,"updated":376,"__hash__":377},"content/es/blog/19/index.md","Cómo conseguir instancias gratuitas en Oracle Cloud (ARM y AMD)",{"type":7,"value":8,"toc":347},"minimark",[9,14,18,21,28,33,36,76,80,87,90,95,106,165,169,172,209,220,224,227,250,261,265,268,272,275,284,288,291,321,324,328,331,340,343],[10,11,13],"h1",{"id":12},"consiguiendo-tu-vps-gratuito-en-oracle-cloud","Consiguiendo tu VPS gratuito en Oracle Cloud",[15,16,17],"p",{},"Oracle Cloud Infrastructure (OCI) ofrece uno de los mejores niveles gratuitos del mercado (\"Always Free\"), permitiendo crear instancias con arquitectura AMD Micro y hasta 4 OCPUs y 24GB de RAM con arquitectura ARM. Sin embargo, hay un problema recurrente que muchos usuarios experimentan: la falta de capacidad o \"Out of host capacity\".",[15,19,20],{},"Si intentas crear la instancia manualmente desde la consola web, es muy probable que te topes con este error. La solución no es otra que la persistencia. En lugar de intentarlo a mano todos los días, podemos automatizar el proceso. En este post, te detallo cómo logré conseguir mis instancias desde Windows usando PowerShell.",[15,22,23],{},[24,25],"img",{"alt":26,"src":27},"OCI Free Tier","/es/blog/19/oci-free-tier.png",[29,30,32],"h2",{"id":31},"preparando-el-entorno-en-windows","Preparando el Entorno en Windows",[15,34,35],{},"Para que todo funcione, necesitamos tener instalada la interfaz de línea de comandos de Oracle (OCI CLI) y configurada con nuestras credenciales.",[37,38,39,55,66],"ol",{},[40,41,42,46,47,54],"li",{},[43,44,45],"strong",{},"Instalación de OCI CLI",": En Windows, puedes instalarlo usando PowerShell. Asegúrate de tener Python instalado y sigue la ",[48,49,53],"a",{"href":50,"rel":51},"https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm",[52],"nofollow","guía oficial de Oracle",".",[40,56,57,60,61,65],{},[43,58,59],{},"Configuración",": Ejecuta ",[62,63,64],"code",{},"oci setup config"," para enlazar tu entorno con tu cuenta (\"Tenancy\") y configurar las claves API.",[40,67,68,71,72,75],{},[43,69,70],{},"Identificadores",": Necesitarás reunir los OCID de tu Tenancy, el Dominio de Disponibilidad (",[62,73,74],{},"Availability Domain","), tu Subred y la Imagen que deseas usar.",[29,77,79],{"id":78},"el-proceso-de-reintento-scripts-en-powershell","El Proceso de Reintento (Scripts en PowerShell)",[15,81,82,83,86],{},"La idea es simple: un bucle infinito que intenta lanzar la instancia y, si recibe el error de falta de capacidad (",[62,84,85],{},"Out of host capacity","), espera unos segundos y vuelve a intentarlo.",[15,88,89],{},"He utilizado dos scripts principales: uno para la instancia ARM y otro para la AMD. Estos scripts generan su propia clave SSH de ser necesario y configuran las opciones requeridas.",[91,92,94],"h3",{"id":93},"script-para-arm-retry-launch-armps1","Script para ARM (retry-launch-arm.ps1)",[15,96,97,98,101,102,105],{},"Este script está configurado para la instancia potente \"VM.Standard.A1.Flex\". Como requiere definir la memoria y las CPUs, utilizamos archivos JSON auxiliares (",[62,99,100],{},"shapeConfig.json"," e ",[62,103,104],{},"instanceOptions.json",") que el propio script genera de manera automática.",[107,108,113],"pre",{"className":109,"code":110,"language":111,"meta":112,"style":112},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Fragmento clave del script ARM\n$output = & oci compute instance launch `\n    --availability-domain $AD --compartment-id $Tenancy `\n    --shape VM.Standard.A1.Flex --subnet-id $SubnetId `\n    --assign-public-ip true --availability-config $availCfg `\n    --display-name $DisplayName --image-id $ImageId `\n    --instance-options $instOpts --shape-config $shapeCfg `\n    --ssh-authorized-keys-file $SshPub 2>&1\n","powershell","",[62,114,115,123,129,135,141,147,153,159],{"__ignoreMap":112},[116,117,120],"span",{"class":118,"line":119},"line",1,[116,121,122],{},"# Fragmento clave del script ARM\n",[116,124,126],{"class":118,"line":125},2,[116,127,128],{},"$output = & oci compute instance launch `\n",[116,130,132],{"class":118,"line":131},3,[116,133,134],{},"    --availability-domain $AD --compartment-id $Tenancy `\n",[116,136,138],{"class":118,"line":137},4,[116,139,140],{},"    --shape VM.Standard.A1.Flex --subnet-id $SubnetId `\n",[116,142,144],{"class":118,"line":143},5,[116,145,146],{},"    --assign-public-ip true --availability-config $availCfg `\n",[116,148,150],{"class":118,"line":149},6,[116,151,152],{},"    --display-name $DisplayName --image-id $ImageId `\n",[116,154,156],{"class":118,"line":155},7,[116,157,158],{},"    --instance-options $instOpts --shape-config $shapeCfg `\n",[116,160,162],{"class":118,"line":161},8,[116,163,164],{},"    --ssh-authorized-keys-file $SshPub 2>&1\n",[91,166,168],{"id":167},"script-para-amd-retry-launch-amdps1","Script para AMD (retry-launch-amd.ps1)",[15,170,171],{},"Para la instancia AMD (\"VM.Standard.E2.1.Micro\"), la configuración es mucho más sencilla ya que la forma es fija y no requiere opciones adicionales complejas.",[107,173,175],{"className":109,"code":174,"language":111,"meta":112,"style":112},"# Fragmento clave del script AMD\n$output = & oci compute instance launch `\n    --availability-domain $AD --compartment-id $Tenancy `\n    --shape VM.Standard.E2.1.Micro --subnet-id $SubnetId `\n    --assign-public-ip true `\n    --display-name $DisplayName --image-id $ImageIdAmd `\n    --ssh-authorized-keys-file $SshPub 2>&1\n",[62,176,177,182,186,190,195,200,205],{"__ignoreMap":112},[116,178,179],{"class":118,"line":119},[116,180,181],{},"# Fragmento clave del script AMD\n",[116,183,184],{"class":118,"line":125},[116,185,128],{},[116,187,188],{"class":118,"line":131},[116,189,134],{},[116,191,192],{"class":118,"line":137},[116,193,194],{},"    --shape VM.Standard.E2.1.Micro --subnet-id $SubnetId `\n",[116,196,197],{"class":118,"line":143},[116,198,199],{},"    --assign-public-ip true `\n",[116,201,202],{"class":118,"line":149},[116,203,204],{},"    --display-name $DisplayName --image-id $ImageIdAmd `\n",[116,206,207],{"class":118,"line":155},[116,208,164],{},[15,210,211,212,215,216,219],{},"En ambos casos, el script captura la salida. Si el código de salida es ",[62,213,214],{},"0",", hemos tenido ",[43,217,218],{},"¡ÉXITO!"," y procede a verificar cíclicamente la IP pública para mostrarla por consola, dejándonos listos para conectarnos por SSH.",[29,221,223],{"id":222},"cuánto-tiempo-tarda-mi-experiencia","¿Cuánto tiempo tarda? Mi experiencia",[15,225,226],{},"La paciencia es la clave cuando se trata de la capa gratuita de Oracle. Dejé los scripts corriendo en mi máquina Windows (con la ayuda de variables y logs) y estos fueron los resultados:",[228,229,230,240],"ul",{},[40,231,232,235,236,239],{},[43,233,234],{},"Instancia ARM",": El proceso comenzó el 24 de abril de 2026. Logró asignar los recursos exitosamente el 6 de mayo. Tomó unos 12 días en total, reiniciando el proceso en varias ocasiones (y sumando al final unos ",[43,237,238],{},"292 intentos"," en la última racha exitosa).",[40,241,242,245,246,249],{},[43,243,244],{},"Instancia AMD",": Esta fue mucho más dura. Comenzó a iterar el 6 de mayo y el bucle finalmente tuvo éxito casi un mes y medio después, el 17 de junio. Fueron un total de ",[43,247,248],{},"700 intentos"," reales de la petición. La alta demanda de estas instancias pequeñas provocó que el proceso se alargara considerablemente.",[15,251,252,253,256,257,260],{},"Cabe destacar que los scripts están diseñados de forma defensiva: al principio verifican si la instancia ya existe y está en estado ",[62,254,255],{},"RUNNING"," o ",[62,258,259],{},"PROVISIONING"," antes de intentar lanzar otra. Esto es ideal para que puedas reanudar la ejecución del script tras reiniciar tu equipo con Windows, evitando duplicidades.",[29,262,264],{"id":263},"automatización-en-segundo-plano-tareas-programadas-de-windows","Automatización en Segundo Plano (Tareas Programadas de Windows)",[15,266,267],{},"Si quieres que este proceso corra de manera completamente desatendida, sin tener una ventana de terminal abierta e incluso si reinicias el ordenador, puedes configurarlo como una Tarea Programada en Windows.",[91,269,271],{"id":270},"_1-dar-permisos-de-ejecución-en-powershell","1. Dar Permisos de Ejecución en PowerShell",[15,273,274],{},"Por defecto, Windows restringe la ejecución de scripts no firmados. Necesitas habilitarlo abriendo PowerShell como Administrador y ejecutando:",[107,276,278],{"className":109,"code":277,"language":111,"meta":112,"style":112},"Set-ExecutionPolicy RemoteSigned -Scope CurrentUser\n",[62,279,280],{"__ignoreMap":112},[116,281,282],{"class":118,"line":119},[116,283,277],{},[91,285,287],{"id":286},"_2-crear-la-tarea-programada","2. Crear la Tarea Programada",[15,289,290],{},"Para crear una tarea que ejecute tu script en segundo plano de forma oculta al iniciar sesión, abre PowerShell y ejecuta los siguientes comandos (cambia la ruta del script por la tuya):",[107,292,294],{"className":109,"code":293,"language":111,"meta":112,"style":112},"$Action = New-ScheduledTaskAction -Execute \"powershell.exe\" -Argument \"-WindowStyle Hidden -File C:\\oci-free\\retry-launch-amd.ps1\"\n$Trigger = New-ScheduledTaskTrigger -AtLogOn\n$Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive\n$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal\nRegister-ScheduledTask -TaskName \"OCI AMD Retry\" -InputObject $Task\n",[62,295,296,301,306,311,316],{"__ignoreMap":112},[116,297,298],{"class":118,"line":119},[116,299,300],{},"$Action = New-ScheduledTaskAction -Execute \"powershell.exe\" -Argument \"-WindowStyle Hidden -File C:\\oci-free\\retry-launch-amd.ps1\"\n",[116,302,303],{"class":118,"line":125},[116,304,305],{},"$Trigger = New-ScheduledTaskTrigger -AtLogOn\n",[116,307,308],{"class":118,"line":131},[116,309,310],{},"$Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive\n",[116,312,313],{"class":118,"line":137},[116,314,315],{},"$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal\n",[116,317,318],{"class":118,"line":143},[116,319,320],{},"Register-ScheduledTask -TaskName \"OCI AMD Retry\" -InputObject $Task\n",[15,322,323],{},"Con esto, cada vez que enciendas tu PC y entres a tu usuario, el script arrancará y se quedará en las sombras intentando reservar tu servidor.",[91,325,327],{"id":326},"_3-detener-y-eliminar-la-tarea","3. Detener y Eliminar la Tarea",[15,329,330],{},"Una vez que en el log compruebes que has tenido éxito (aparecerá tu IP pública), es importante que detengas el bucle para no seguir lanzando peticiones a Oracle innecesariamente. Para eliminar la tarea y limpiar tu PC, simplemente ejecuta en PowerShell:",[107,332,334],{"className":109,"code":333,"language":111,"meta":112,"style":112},"Unregister-ScheduledTask -TaskName \"OCI AMD Retry\" -Confirm:$false\n",[62,335,336],{"__ignoreMap":112},[116,337,338],{"class":118,"line":119},[116,339,333],{},[15,341,342],{},"Tarde o temprano, Oracle liberará recursos y el script atrapará esa capacidad para ti de forma totalmente desatendida. ¡Mucha paciencia y suerte!",[344,345,346],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":112,"searchDepth":119,"depth":125,"links":348},[349,350,354,355],{"id":31,"depth":125,"text":32},{"id":78,"depth":125,"text":79,"children":351},[352,353],{"id":93,"depth":131,"text":94},{"id":167,"depth":131,"text":168},{"id":222,"depth":125,"text":223},{"id":263,"depth":125,"text":264,"children":356},[357,358,359],{"id":270,"depth":131,"text":271},{"id":286,"depth":131,"text":287},{"id":326,"depth":131,"text":327},null,"md","./oci-free-tier.png",{"created":364},"2026-07-11 21:00",true,"/es/blog/19",{"title":5,"description":17},"Una guía detallada sobre cómo usar scripts en Windows para asegurar tu instancia gratuita de OCI sorteando la falta de capacidad.","es/blog/19/index",[371,372,373,374,375],"Oracle Cloud","OCI","PowerShell","Scripts","Automatización","2026-07-11","kMCRKlzrPsu8BDwNXEU1YvO4aZr612LLhsyKy5EdhWk",1785432458380]