Hay una oferta que suena demasiado buena para ser cierta: un VPS con 2 OCPU, 12 GB de RAM, 200 GB de disco y 10 TB de salida al mes por 0 €. No es una prueba de 30 días ni un cupón de bienvenida. Es el Always Free de Oracle Cloud, una capa gratuita que lleva años funcionando y que en 2026 sigue en pie, aunque con una letra pequeña que casi nadie explica: desde junio de 2026, la máquina es la mitad de grande que antes, y la capacidad no está garantizada.

Este artículo cuenta lo que necesitas para conseguirla, configurarla bien y usarla como servidor web, backend o frontend. Empieza por lo básico —qué es un VPS y qué regala Oracle exactamente—, sigue con el registro y la creación de la instancia paso a paso, y termina con el acceso por SSH, el cortafuegos, Docker, HTTPS, la gestión diaria y una lista de usos reales. Al final hay un ejemplo rápido y las fuentes oficiales.

Los datos están consultados el 23 de octubre de 2026. Oracle puede cambiar las condiciones; de hecho, ya lo hizo en junio. Antes de registrar nada, contrasta las cifras en la página oficial que enlazo al final.

La promesa y la letra pequeña. El Always Free no es un servidor dedicado ni un contrato de alojamiento. Es una máquina virtual en la región doméstica de tu cuenta, sin SLA, sin soporte técnico incluido y sujeta a límites de capacidad. Para un portfolio, una API, un entorno de pruebas o un proyecto personal, sobra. Para producción crítica, no.

Qué es un VPS y por qué Oracle te lo regala

Un VPS (Virtual Private Server) es una máquina virtual que corre en un centro de datos ajeno. Tiene su propio sistema operativo, su propia IP pública y su propio usuario root o sudo. Para ti se comporta como un ordenador encendido las 24 horas: instalas paquetes, levantas servicios, abres puertos, programas tareas y lo administras por SSH. La diferencia con un hosting compartido es que no compartes el sistema operativo con nadie; la diferencia con un PaaS es que tú eliges qué corre y cómo.

Esquema de un VPS: tu PC se conecta por SSH e internet a una máquina encendida 24/7 en un centro de datos
Un VPS es una máquina en un centro de datos a la que te conectas por SSH. Tú administras el sistema; Oracle pone el hardware, la red y la electricidad.

La comparación rápida:

Aspecto Hosting compartido VPS PaaS Tu PC
Qué controlas Archivos y base de datos Sistema completo Solo la aplicación Todo
Root No Sí No Sí
IP pública y puertos Limitados Sí Gestionados Depende de tu red
Encendido 24/7 Sí Sí Sí No
Trabajo de administración Bajo Medio Bajo Alto
Coste típico 3–10 €/mes 5–20 €/mes Variable Electricidad
Este artículo — Oracle Always Free — —

¿Por qué regala esto una empresa como Oracle? Porque le interesa que aprendas su nube, que pruebes sus servicios y que, si el proyecto crece, te quedes. Es una estrategia comercial clásica: la capa gratuita es la puerta de entrada a su plataforma. Eso no le quita valor a lo que recibes. Un VPS de 2 OCPU y 12 GB es más que suficiente para aprender Linux, publicar una web o mantener una API con su base de datos.

Lo que incluye el Always Free en 2026

Oracle Cloud Free Tier mezcla dos cosas que conviene no confundir:

  • Free Trial: 300 $ de crédito durante 30 días para probar servicios de pago.
  • Always Free: recursos gratuitos sin fecha de caducidad, sujetos a límites y capacidad.

Cuando el crédito se agota o pasan los 30 días, los recursos de pago se recuperan. Los recursos Always Free siguen ahí. La tarjeta que pides al registrarte sirve para verificar tu identidad; no se cobra nada mientras te mantengas dentro de los límites gratuitos. Puede aparecer una retención temporal del banco, que se libera en unos días.

Recurso Lo que incluye Detalles
Ampere A1 (ARM) 1.500 horas-OCPU y 9.000 horas-GB al mes Equivale a 2 OCPU y 12 GB en una o dos VMs. 2 Gbps.
AMD Micro 2 VMs VM.Standard.E2.1.Micro 1/8 de OCPU y 1 GB cada una. Hasta 50 Mbps.
Bloque 200 GB en total Incluye volúmenes de arranque y de bloque. 5 copias de seguridad.
Object Storage 20 GB Estándar, acceso poco frecuente y archivo. 50.000 peticiones/mes.
Salida de red 10 TB/mes La entrada no se factura.
Balanceador 1 flexible de 10 Mbps Y 1 Network Load Balancer.
Red 2 VCN IPv4 e IPv6.
Bases de datos 2 Autonomous Database 1 OCPU y 20 GB cada una, 20 sesiones.
Correo 3.000 correos/mes Email Delivery; el puerto 25 saliente está bloqueado.
Observabilidad Monitoring y Logging 10 GB/mes de logs, 500 millones de puntos de ingesta.
Tarjetas de Oracle Cloud Free Tier con las instancias AMD Micro de 1 GB y Arm Ampere A1 de 12 GB
La página oficial del Free Tier muestra las dos formas gratuitas: AMD Micro y Arm Ampere A1. La tarjeta de Arm es la que interesa para un servidor web: 12 GB de RAM y 1.500 horas de OCPU al mes.Fuente: Oracle Cloud Free Tier

Hay una frase que se malinterpreta mucho: 12 GB es el total de la cuenta, no 12 GB por VM. Puedes montar una sola máquina de 2 OCPU y 12 GB o repartir la cuota en dos máquinas de 1 OCPU y 6 GB. Lo que no puedes es crear dos de 2/12: eso duplica el consumo y deja de ser gratis.

El cambio de 2026: de 4 OCPU y 24 GB a 2 OCPU y 12 GB

Durante años, la guía de moda decía “crea una instancia de 4 OCPU y 24 GB”. Era verdad hasta junio de 2026. Desde entonces, la asignación Always Free de Ampere A1 es de 1.500 horas-OCPU y 9.000 horas-GB al mes, equivalentes a 2 OCPU y 12 GB corriendo todo el mes. Oracle no hizo una campaña: actualizó la documentación y las instancias que siguieron en 4/24 quedaron fuera de la cuota. Ahora se recortan a 2/12 o generan consumo.

Comparativa del free tier antiguo de 4 OCPU y 24 GB frente al actual de 2 OCPU y 12 GB
La cuota de Ampere A1 se redujo a la mitad en junio de 2026. Una instancia de 4 OCPU y 24 GB ya no cabe en el Always Free: o se recorta a 2/12 o genera consumo fuera de la capa gratuita.

Las cuentas son sencillas. Un mes de 31 días tiene 744 horas:

  • 2 OCPU × 744 h = 1.488 horas-OCPU. Cabe en las 1.500.
  • 12 GB × 744 h = 8.928 horas-GB. Cabe en las 9.000.
  • 4 OCPU × 744 h = 2.976 horas-OCPU. Casi el doble de lo gratuito.

Por eso la configuración correcta hoy es 2 OCPU y 12 GB, no 4/24. Si vienes de una guía antigua, entra en la instancia y baja la forma antes de que Oracle la apague. Si vas a crearla ahora, no arrastres la cifra vieja.

Lo que no cambia

La reducción afectó a la CPU y la RAM, pero el resto del paquete sigue siendo generoso:

  • 200 GB de disco para el arranque y los volúmenes.
  • 10 TB de salida al mes, suficiente para una web pequeña o mediana.
  • 2 VMs AMD Micro de 1 GB, útiles como plan B o para un servicio ligero.
  • 20 GB de Object Storage para copias de seguridad.
  • Dos bases de datos autónomas de 20 GB.

No confundas “gratis” con “sin límites”. Si creas una instancia de 4/24, un volumen de 300 GB o una segunda VM de 2/12, estás fuera del Always Free. Oracle puede cobrarte el exceso o apagar lo que no cabe. Revisa siempre Limits, Quotas and Usage después de crear recursos.

La mejor configuración posible

Si el objetivo es un servidor web/backend con base de datos, la mejor configuración dentro del free tier es esta:

Decisión Valor recomendado Por qué
Máquina 1 VM Menos overhead y más RAM disponible para una sola app.
Forma VM.Standard.A1.Flex 2 OCPU y 12 GB, dentro del Always Free.
Sistema Ubuntu 24.04 LTS (aarch64) Soporte largo, paquetes actuales y Docker sin sorpresas.
Disco 200 GB de arranque Aprovecha todo el bloque gratuito y evita quedarte sin espacio.
Red IP pública + 2 Gbps Suficiente para servir HTTP/HTTPS y SSH.
Región La más cercana con capacidad La región doméstica no se puede cambiar después.
Administración SSH + Docker Compose Reproducible, portable y fácil de copiar a otro servidor.

Por qué una sola VM de 2/12

Repartir en dos de 1/6 suena a más aislamiento, pero también significa dos sistemas que actualizar, dos cortafuegos que revisar y menos margen para compilar o para una base de datos. Con 12 GB en una sola máquina puedes correr Caddy, una API, PostgreSQL, Redis y un par de servicios de monitorización sin ahogarte. Si tu prioridad es separar la base de datos de la aplicación, la opción de 2×1/6 es válida; solo ten claro que cada mitad tendrá 6 GB.

Por qué no 4/24

Porque ya no es gratis. El plan antiguo consumía el doble de la cuota actual. Oracle puede apagar la instancia o facturarte el exceso. No es una configuración “mejor”: es una configuración de otra época.

Alternativas si no hay capacidad

El error “Out of host capacity” es habitual, sobre todo en regiones muy pobladas. No significa que hayas hecho algo mal: Oracle no garantiza que haya hueco para formas Always Free en tu región. El orden de actuación es:

  1. Prueba otro dominio de disponibilidad (AD-1, AD-2, AD-3) en la misma región.
  2. Reintenta en horas valle; la capacidad se libera por momentos.
  3. Crea primero 1 OCPU / 6 GB y amplía a 2/12 si aparece hueco.
  4. Plan C: usa las dos AMD Micro de 1 GB para una web estática o un proxy.
Diagrama de decisión ante el error out of host capacity: probar otro dominio, reintentar, usar una forma menor o las AMD micro
Árbol de decisión para el error de capacidad. Ninguna de estas opciones requiere pagar ni cambiar de plan.

Si después de varios intentos no aparece la forma grande, el free tier no te puede garantizar esa máquina. Puedes montar el proyecto en las AMD Micro (1 GB cada una) para una web estática, o esperar a que se libere capacidad. Lo que no hagas es crear una instancia de 4/24 “a ver si cuela”: eso ya no entra en la cuota.

La región doméstica se elige una vez

Al registrarte eliges la home region. Los recursos Always Free solo se pueden crear allí, y la región no se cambia después. Elige la más cercana a tus usuarios y con mejor latencia para ti: Madrid, Frankfurt, París o Marsella suelen ser buenas opciones desde España. Si eliges una región lejana, cada comando por SSH se nota.

Registro paso a paso

El alta es gratuita, pero tiene más fricción de la que parece. Necesitas un correo, un teléfono y una tarjeta de crédito o débito que funcione como crédito. No valen tarjetas virtuales, de un solo uso ni prepago.

Formulario de registro de Oracle Cloud con los campos de país, nombre, apellidos y correo electrónico
Formulario de alta de Oracle Cloud. La tarjeta se usa para verificar la identidad; no se cobra mientras te mantengas dentro del Always Free.Fuente: Oracle Cloud Free Tier
  1. Entra en https://signup.cloud.oracle.com/ o en la página del Free Tier y pulsa “Start for free”.
  2. Elige país/territorio de facturación, nombre, apellidos y correo. Recibirás un código para verificar la dirección.
  3. Crea la contraseña y elige la home region. Este paso es el más importante: no se puede deshacer.
  4. Rellena la dirección y el teléfono. Deben coincidir con los datos bancarios.
  5. Añade la tarjeta. Oracle puede hacer una retención temporal para comprobar que está activa; no es un cargo.
  6. Activa la autenticación multifactor (MFA) cuando la consola te lo ofrezca.

Errores típicos y qué hacer:

  • La tarjeta no pasa: revisa que la dirección coincida exactamente con la del banco; prueba otra tarjeta; desactiva VPN y bloqueadores.
  • “No disponible en tu país”: elige una región adyacente o contacta con Oracle. La disponibilidad del Free Tier varía.
  • Ya existe una cuenta: solo se permite una cuenta gratuita por persona. No intentes crear varias; Oracle puede suspenderlas.
  • No llega el código: revisa spam y espera unos minutos. Si el correo es corporativo, prueba uno personal.

La tarjeta no es una suscripción. Oracle la usa para verificar identidad y cobrar solo si sales de los límites gratuitos o contratas recursos de pago. Si no quieres pagar nada, no crees recursos fuera de Always Free y revisa el consumo en Billing & Cost Management.

Crear la instancia paso a paso

Con la cuenta lista, entra en https://cloud.oracle.com/. Comprueba arriba a la derecha que estás en tu región doméstica. La consola cambia de aspecto cada pocos meses, pero el flujo es el mismo.

1. Abre el asistente

Menú de hamburguesa → Compute → Instances → Create instance. También puedes usar el atajo “Create a VM instance” de la pantalla de inicio.

Pantalla de inicio de Oracle Cloud con el acceso Create a VM instance
Pantalla de inicio de OCI. El acceso rápido para crear la máquina está en el bloque Build, a la derecha; también se llega por Compute → Instances.Fuente: Consola de Oracle Cloud

2. Nombre, compartimento y colocación

  • Name: algo reconocible, por ejemplo web-01.
  • Compartment: el compartimento raíz o uno que hayas creado para el proyecto.
  • Availability domain: elige uno. Si el que pruebas no tiene capacidad, vuelve aquí y cambia.
  • Capacity type: deja On-demand.

3. Imagen: Ubuntu 24.04

Pulsa Change image, selecciona Ubuntu y elige Canonical Ubuntu 24.04 (o la versión LTS más reciente que ofrezca Oracle). Asegúrate de que la imagen es aarch64/ARM, no x86.

Selector de imagen de Oracle Cloud con Ubuntu 24.04 y la opción aarch64
Selección de imagen. Para la forma Ampere A1 hay que elegir una imagen ARM; Ubuntu 24.04 es la opción más cómoda para Docker y para el ecosistema actual.Fuente: Consola de Oracle Cloud

4. Forma: Ampere A1, 2 OCPU y 12 GB

Pulsa Change shape, elige la serie Ampere y la forma VM.Standard.A1.Flex. Mueve los controles hasta 2 OCPU y 12 GB. La consola debe mostrar la etiqueta Always Free Eligible y un coste estimado de 0.

Selector de forma Ampere A1 con 2 OCPU y 12 GB de memoria
Selección de forma. El límite actual es 2 OCPU y 12 GB; si dejas 4/24, la instancia se sale del Always Free. La captura muestra los valores correctos.Fuente: Consola de Oracle Cloud

Si la consola te deja poner 4 OCPU, no lo hagas. El control permite más de lo que cubre el free tier. La cifra que importa es la de la documentación: 2 OCPU y 12 GB. El estimador de costes a veces muestra un importe por el volumen de arranque; comprueba que el total de disco no supera los 200 GB.

5. Red

Lo más rápido es dejar que el asistente cree una VCN nueva con subred pública y que asigne una IP pública. Si ya tienes una VCN, selecciónala y asegúrate de que la subred es pública y tiene una Internet Gateway. Sin IP pública no podrás entrar por SSH ni servir HTTP.

6. Claves SSH

Elige Generate a key pair for me y descarga la clave privada. También puedes pegar tu clave pública si ya tienes una. La clave privada no se puede recuperar después; guárdala en ~/.ssh/ y no la subas a Git.

Sección Add SSH keys con la opción de generar un par de claves y descargar la clave privada
Sección de claves SSH. Descarga la clave privada antes de crear la instancia: Oracle no la vuelve a mostrar.Fuente: Documentación de Oracle Cloud

7. Volumen de arranque

Activa Specify a custom boot volume size y pon 200 GB. Es el máximo gratuito y te deja margen para Docker, imágenes, bases de datos y logs. Si prefieres separar datos, puedes crear 100 GB de arranque y 100 GB de bloque; para empezar, 200 GB de arranque es más simple. Deja el rendimiento en el valor por defecto.

8. Crear y comprobar

Pulsa Create. La instancia pasa por PROVISIONING hasta RUNNING. Cuando termine, copia la Public IP address y confirma que el usuario es ubuntu.

Detalle de la instancia con la IP pública y el usuario ubuntu
Detalle de la instancia. Anota la IP pública; el usuario de Ubuntu es ubuntu.Fuente: Consola de Oracle Cloud

Si aparece “Out of host capacity”, vuelve a la sección de capacidad: cambia de AD, reintenta o baja a 1/6. No es un fallo de tu cuenta.

Primer acceso y configuración base

Abre una terminal en tu PC. En Windows 10/11, PowerShell ya incluye OpenSSH. En macOS y Linux, también.

ssh -i ~/.ssh/oracle_web ubuntu@TU_IP_PUBLICA

En Windows, la ruta suele ser C:\Users\TU_USUARIO\.ssh\oracle_web. Si OpenSSH se queja de permisos, restringe el archivo:

icacls.exe "$env:USERPROFILE\.ssh\oracle_web" /inheritance:r /grant:r "$env:USERNAME:R"

La primera vez te pedirá aceptar la huella del servidor. Escribe yes. Si todo va bien, verás el prompt de Ubuntu.

Un alias para no repetir la IP

Crea o edita ~/.ssh/config en tu PC:

Host oracle
    HostName TU_IP_PUBLICA
    User ubuntu
    IdentityFile ~/.ssh/oracle_web
    ServerAliveInterval 60

A partir de ahí, ssh oracle es todo lo que necesitas.

Puesta a punto

sudo apt update && sudo apt upgrade -y
sudo apt install -y fail2ban unattended-upgrades btop tmux git curl gnupg ca-certificates
sudo timedatectl set-timezone Europe/Madrid
sudo hostnamectl set-hostname web-01

Comprueba que estás en ARM y que ves los recursos esperados:

uname -m          # aarch64
nproc             # 2
free -h           # ~12 GB
df -h /           # ~200 GB

Endurecer SSH

Ubuntu ya viene con acceso por clave y sin contraseña de root, pero conviene fijarlo:

sudo tee /etc/ssh/sshd_config.d/99-hardening.conf >/dev/null <<'EOF'
PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no
EOF
sudo systemctl reload ssh

Activa fail2ban y las actualizaciones automáticas:

sudo systemctl enable --now fail2ban
sudo dpkg-reconfigure --priority=low unattended-upgrades

En el menú de unattended-upgrades, elige Yes. Si prefieres controlar tú las actualizaciones, salta este paso y revisa apt cada semana.

Swap opcional

Con 12 GB no es imprescindible, pero una swap de 2 GB evita que un pico de compilación o de base de datos mate procesos:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

El doble cortafuegos de Oracle

Aquí es donde más gente se atasca. Oracle tiene dos cortafuegos y hay que abrir el paso en los dos:

  1. Security List de la VCN (nivel de nube).
  2. iptables del sistema operativo (nivel de máquina).

Abrir solo uno es la causa número uno de “la web no carga”.

Security List

En la consola, entra en la instancia → Networking → enlace de la Subnet → pestaña Security → Default Security List. Añade reglas de entrada:

Origen Protocolo Puerto Para qué
Tu IP /32 TCP 22 SSH (mejor que abrirlo a todo internet)
0.0.0.0/0 TCP 80 HTTP y validación del certificado
0.0.0.0/0 TCP 443 HTTPS
Formulario Add Ingress Rules con Source CIDR 0.0.0.0/0, protocolo TCP y puertos 80 y 443
Diálogo de ingress rule. Para una web, el destino es 80,443; el resto de campos se quedan como están: CIDR, 0.0.0.0/0, TCP y estado stateful.Fuente: Oracle Cloud Infrastructure Blog

No abras 3000, 5432 ni 6379. Esos puertos se quedan dentro de Docker o de la red privada.

iptables en Ubuntu

Las imágenes de Oracle traen reglas de iptables que bloquean el tráfico nuevo. Añade 80 y 443 antes de la regla de rechazo y guarda los cambios:

sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Verifica que están en la posición correcta:

sudo iptables -L INPUT -n --line-numbers

Si tu cadena INPUT tiene otra estructura, ajusta el número para que las reglas queden antes del REJECT final. No uses ufw a la vez: puede entrar en conflicto con las reglas de Oracle. Con Docker, el tráfico publicado pasa por NAT y puede no tocar INPUT; aun así, deja las dos capas bien configuradas para cuando ejecutes algo nativo.

Docker y Caddy

Docker te da un entorno reproducible; Caddy te da HTTPS automático con una configuración mínima. Instala Docker desde el repositorio oficial (soporta ARM64):

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER

Cierra la sesión y vuelve a entrar (o ejecuta newgrp docker) para usar Docker sin sudo:

docker run --rm hello-world
docker compose version

El socket de Docker es root. Pertenecer al grupo docker equivale a tener privilegios de administrador. No añadas usuarios que no deban poder controlar el servidor.

El ejemplo práctico completo está al final, para que el núcleo de la entrada siga siendo el VPS y no un tutorial de una aplicación concreta.

Gestión desde el terminal

El día a día se resume en un puñado de comandos. Esta es la chuleta que de verdad se usa:

Qué quieres Comando
Conectarte ssh oracle
Mantener sesiones vivas tmux new -s ops · tmux a -t ops
Ver contenedores docker compose ps
Ver logs en vivo docker compose logs -f --tail=100
Reiniciar un servicio docker compose restart caddy
Actualizar y recrear docker compose up -d --build
Consumo de recursos docker stats · btop
Disco y memoria df -h · free -h
Errores del sistema journalctl -p 3 -xb
Actualizar Ubuntu sudo apt update && sudo apt upgrade -y
Reiniciar sudo reboot
Estado de fail2ban sudo fail2ban-client status sshd
Puertos a la escucha ss -tulpn
IP y ruta curl -4 ifconfig.me · ip a

Desplegar cambios

Si el proyecto vive en Git:

cd /opt/web
git pull
docker compose up -d --build
docker compose logs -f --tail=50

Si prefieres subir archivos desde tu PC:

rsync -avz --delete ./dist/ oracle:/opt/web/site/

Para trabajos largos, usa tmux: si se cae la conexión, el proceso sigue. Ctrl+b y luego d para desconectar; tmux a -t ops para volver.

Copias de seguridad

El free tier no incluye backups automáticos de tu aplicación. Ten siempre una copia fuera del VPS. Para un sitio estático:

mkdir -p ~/backups
tar -czf ~/backups/web-$(date +%F).tar.gz -C /opt web

Si tu stack incluye PostgreSQL:

docker compose exec -T db pg_dump -U app app | gzip > ~/backups/app-$(date +%F).sql.gz

Un cron diario que conserva siete días:

0 3 * * * tar -czf /home/ubuntu/backups/web-$(date +\%F).tar.gz -C /opt web && find /home/ubuntu/backups -name '*.tar.gz' -mtime +7 -delete

Descarga una copia a tu PC de vez en cuando:

scp oracle:~/backups/web-*.tar.gz ./

Y prueba la restauración. Un backup que nunca se ha restaurado no es un backup:

tar -xzf web-2026-10-23.tar.gz -C /tmp/restore

Monitorización y coste

  • Disponibilidad: un monitor externo que haga ping a https://tu-dominio.com cada minuto. Si no responde, aviso.
  • Recursos: btop, docker stats y los gráficos de OCI Monitoring.
  • Coste: en Billing & Cost Management → Cost Analysis, comprueba que el uso es 0. En Limits, Quotas and Usage, confirma que sigues en 2 OCPU, 12 GB y 200 GB.
  • Alerta: crea un presupuesto de 1 $ con aviso al 1 %. No es para pagar: es para enterarte si algo se sale de la cuota.

Qué puedes montar con 2 OCPU y 12 GB

Este es el punto fuerte del free tier: no es un juguete. Con 2 OCPU ARM y 12 GB puedes mantener un stack real. Esta es mi tabla de encaje:

Uso Encaje Notas
Blog o portfolio (Astro, Hugo, Next static) Excelente Caddy sirve los archivos; sobra máquina.
Next.js / Nuxt / SvelteKit SSR Muy bueno 2 vCPU van bien para tráfico bajo/medio.
API REST o GraphQL (Node, Go, Python, PHP) Excelente Ideal para backend + Postgres.
PostgreSQL / MySQL / Redis Bueno 12 GB dan margen; no expongas los puertos.
n8n, Gitea, Vaultwarden, Uptime Kuma Muy bueno Varios contenedores ligeros conviven sin problema.
Runner de CI Bueno Para jobs ligeros; compila en ARM.
VPN WireGuard Excelente Consumo mínimo y muy útil.
Servidor de Minecraft Limitado 2–5 jugadores; necesita una build compatible con ARM.
Jellyfin Limitado Direct play sí; transcodificación no.
Ollama / modelos locales Justo Modelos pequeños en CPU; no esperes velocidad.
Servidor de correo No El puerto 25 está bloqueado por defecto.
Windows No La forma A1 es ARM y no soporta Windows.
Producción crítica No Sin SLA, sin alta disponibilidad y con capacidad no garantizada.

Perfiles concretos

  • Freelance o estudio: portfolio estático, formulario de contacto, blog y un pequeño CMS. Caddy + un contenedor y listo.
  • Desarrollador backend: API + PostgreSQL + Redis + un entorno de staging. Aquí los 12 GB se agradecen.
  • Self-hosting: Vaultwarden, Gitea, Uptime Kuma, n8n, un proxy inverso y backups. Es el uso más habitual de este free tier.
  • Aprendizaje: Linux, SSH, systemd, Docker, redes y TLS sin pagar un curso de cloud. Si vienes de cero, empieza por Git: el historial que salva y por El equipo de desarrollo en 2026.

Lo que no haría: montar la web principal de un negocio con clientes sin backups, sin monitorización y sin plan B. El free tier es estupendo para empezar; si el proyecto empieza a importar, necesitas algo con SLA.

Ejemplo rápido: una web con HTTPS

No hace falta montar una aplicación entera para comprobar que el servidor funciona. Este ejemplo publica una página estática con Caddy en Docker, con certificado automático. Son tres archivos y un comando.

Esquema de Caddy sirviendo un sitio estático y haciendo reverse proxy a una aplicación en el puerto 3000
Caddy escucha en 80 y 443, sirve el contenido estático y puede hacer reverse proxy a una app interna. Es el patrón que usarás para casi todo.

Crea el directorio y los archivos:

sudo mkdir -p /opt/web/site
sudo chown -R $USER:$USER /opt/web
cd /opt/web

Guarda cada uno de los tres bloques siguientes en su archivo (compose.yaml, Caddyfile y site/index.html).

compose.yaml:

services:
  caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./site:/srv:ro
      - caddy_data:/data
      - caddy_config:/config
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  caddy_data:
  caddy_config:

Caddyfile (cambia el dominio):

tu-dominio.com {
    encode zstd gzip
    root * /srv
    file_server
}

site/index.html:

<!doctype html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Mi VPS gratis</title>
  </head>
  <body>
    <h1>Funciona.</h1>
    <p>Servido desde Oracle Cloud Always Free con Caddy y HTTPS.</p>
  </body>
</html>

Apunta un registro A de tu dominio a la IP pública del VPS. Cuando propague:

docker compose up -d
docker compose logs -f caddy

En cuanto el DNS apunte y los puertos estén abiertos, Caddy pide el certificado y empieza a servir. Comprueba:

curl -I https://tu-dominio.com

Para una API, cambia el Caddyfile por:

tu-dominio.com {
    reverse_proxy app:3000
}

y añade el servicio app a Compose. El puerto 3000 se queda dentro de la red de Docker; el único que mira a internet es Caddy. Si algo falla, revisa en este orden: DNS, Security List, iptables y logs de Caddy.

Solución de problemas

Síntoma Causa probable Solución
Out of host capacity No hay hueco para A1 en tu AD Cambia de AD, reintenta o baja a 1/6.
SSH: Connection timed out Security List sin el 22 o instancia parada Revisa la regla de entrada y el estado RUNNING.
SSH: Permission denied (publickey) Usuario, clave o permisos incorrectos Usa ubuntu, la clave privada correcta y chmod 600.
La web no carga por IP Falta el puerto 80/443 en Security List o en iptables Abre las dos capas y comprueba con curl -I localhost.
Caddy no obtiene certificado DNS mal apuntado o puertos cerrados Espera la propagación; revisa 80/443 y el log de Caddy.
502 Bad Gateway La app no escucha o el nombre del servicio no resuelve docker compose logs app; usa app:3000, no localhost.
permission denied al usar Docker El usuario no está en el grupo docker sudo usermod -aG docker $USER y vuelve a entrar.
Disco lleno Imágenes y logs acumulados docker system df, docker image prune, rota logs.
La instancia se apagó sola Política de inactividad o cambio de cuota Revisa el correo de Oracle; reactívala o recrea.
Cargos inesperados Recurso fuera de Always Free Revisa Limits, Quotas and Usage y elimina el exceso.

Límites, riesgos y letra pequeña

El precio es imbatible, pero no es un servidor mágico. Esto es lo que debes saber antes de confiarle un proyecto:

  • Capacidad no garantizada. El error de capacidad es real y puede impedirte crear la máquina que quieres. No hay SLA de aprovisionamiento.
  • Reclamación por inactividad. Oracle puede recuperar instancias Always Free que, durante 7 días, tengan el percentil 95 de CPU por debajo del 20 %, la red por debajo del 20 % y, en las formas A1, la memoria por debajo del 20 %. Una web con poco tráfico puede entrar en ese perfil. Mantén el servidor con uso real, monitorización y backups; si lo pierdes, poder recrearlo rápido es la diferencia entre una molestia y un desastre.
  • Sin SLA ni soporte. Para cuentas solo Always Free, el soporte es comunitario. No hay garantía de disponibilidad.
  • Una cuenta por persona. Crear varias cuentas gratuitas está prohibido y puede acabar en suspensión.
  • Cuenta inactiva. Una cuenta sin actividad durante 30 días puede considerarse abandonada.
  • Datos sin backups. Oracle no hace copias de tu aplicación. Los 5 backups de volumen no sustituyen un pg_dump fuera del servidor.
  • ARM no es x86. Algunas imágenes de Docker, binarios propietarios y dependencias nativas no tienen build para aarch64. Comprueba el soporte antes de elegir el stack.
  • Un solo servidor. No hay alta disponibilidad. Si la instancia cae, el servicio cae.
  • 10 TB de salida. Es mucho, pero si sirves vídeo o descargas grandes, se puede agotar. A partir de ahí, se factura.
  • La cuota puede cambiar. En 2026 pasó: 4/24 se convirtió en 2/12. No construyas un modelo de negocio que dependa de que el free tier no cambie.

La regla de oro: trata el VPS como algo reemplazable. Ten el código en Git, la configuración en un repositorio, los datos en backups fuera de Oracle y un README con los pasos para recrearlo. Si mañana desaparece, lo levantas en una hora.

Checklist final

  • La home region es la correcta; no se puede cambiar después.
  • La instancia es VM.Standard.A1.Flex con 2 OCPU y 12 GB, y muestra Always Free Eligible.
  • La imagen es Ubuntu 24.04 aarch64 y el disco de arranque es de 200 GB.
  • La clave privada SSH está guardada y tiene permisos restrictivos.
  • La Security List permite 22, 80 y 443; el 22 está limitado a tu IP si es posible.
  • iptables tiene las reglas de 80/443 antes del REJECT y se han guardado con netfilter-persistent.
  • fail2ban y las actualizaciones automáticas están activos.
  • Docker funciona sin sudo y Caddy sirve HTTPS con un dominio real.
  • Hay una copia de seguridad fuera del VPS y has probado a restaurarla.
  • En Limits, Quotas and Usage sigues dentro de 2 OCPU, 12 GB y 200 GB.

Conclusión

El Always Free de Oracle sigue siendo, en 2026, una de las mejores formas de tener un servidor real por 0 €: 2 OCPU, 12 GB de RAM, 200 GB de disco, 10 TB de salida y una IP pública. Con eso se monta un portfolio, una API, un PostgreSQL, un n8n, un Gitea o un laboratorio de Linux sin pagar hosting.

La letra pequeña no está en el precio, está en la disponibilidad: la cuota se redujo a la mitad en junio, la capacidad no está garantizada y Oracle puede reclamar instancias inactivas. Si lo asumes y montas backups, el free tier es difícil de superar. Si necesitas garantías, SLA o recursos dedicados, este no es tu producto.

Mi recomendación concreta: una VM de 2 OCPU y 12 GB, Ubuntu 24.04, 200 GB, Caddy y Docker, con los puertos 22/80/443 abiertos y una copia de seguridad fuera del servidor. Con esa base, cualquier proyecto web que quepa en 12 GB cabe aquí.

Fuentes oficiales

Datos consultados el 23 de octubre de 2026. Oracle puede actualizar límites y condiciones; verifica siempre antes de registrar o dimensionar.