> La lista completa de artículos está en [llms.txt](https://docs.f3cloud.com/llms.txt). Cada página tiene versión en Markdown, basta con añadir .md a su dirección. Esta página en Markdown: [https://docs.f3cloud.com/es/ai/opencode-on-vps.md](https://docs.f3cloud.com/es/ai/opencode-on-vps.md).

# OpenCode en un VPS – instalación del agente de IA, modelos gratuitos y trabajo en el navegador

Instalación de OpenCode 2 en un VPS. Modelos gratuitos sin clave API, primera tarea en el terminal, confirmación de los comandos antes de ejecutarlos, trabajo desde el navegador mediante un túnel SSH y el comando opencode pair. Probado en Debian 12 con OpenCode 2.1.2.

**OpenCode** es un agente de IA de código abierto para programar. Describes la tarea con palabras normales y él mismo lee los archivos del proyecto, escribe y corrige código y ejecuta comandos en el terminal. Puedes trabajar con él en el terminal o en el navegador. En un servidor, OpenCode resulta cómodo porque cambia el código justo donde funciona el proyecto, y puedes conectarte a él desde cualquier ordenador. En este artículo instalaremos OpenCode en un VPS, le daremos una primera tarea, configuraremos la confirmación de los comandos y lo abriremos en el navegador. Hemos repetido todos los pasos en un servidor de pruebas con Debian 12, y la versión de OpenCode en el momento de la prueba era la **2.1.2**.

***

## Cómo funciona OpenCode

OpenCode en sí no es una red neuronal. Envía la tarea al modelo junto con la descripción de sus herramientas y luego ejecuta lo que el modelo ha decidido hacer. Por ejemplo, crea un archivo, hace un cambio o ejecuta un comando. El resultado vuelve al modelo, y así paso a paso hasta que la tarea queda resuelta. Por eso la calidad del trabajo depende casi por completo del modelo elegido.

Una ventaja de OpenCode es que ya incluye **modelos gratuitos**. No hacen falta clave API ni registro, y el agente funciona nada más instalarlo. Estos modelos son gratuitos durante un tiempo limitado, y su lista cambia de vez en cuando. Ten en cuenta también que, en una parte de los modelos gratuitos, los datos recopilados pueden usarse para mejorar el modelo, y la documentación de OpenCode lo dice de forma expresa. El modelo que viene elegido por defecto, **MiniMax M3.1 Flash Free**, según la documentación no guarda los datos ni los usa para entrenarse. Para los proyectos de trabajo puedes conectar tu propio modelo, por ejemplo con una clave API de Anthropic, OpenAI u OpenRouter.

En la segunda versión, todas las sesiones, los ajustes y la ejecución de comandos pertenecen a un **servicio en segundo plano**. Se inicia por su cuenta la primera vez que ejecutas `opencode` y escucha el puerto solo en la dirección interna `127.0.0.1`, así que no se puede conectar a él desde internet. La interfaz del terminal y el navegador son simplemente ventanas que se conectan a este servicio. Por eso una tarea empezada en el terminal también se ve en el navegador.

> **Por defecto, el agente no pregunta nada.**
>
> Le pedimos a OpenCode que instalara nginx y publicara una página en el sitio web. El agente ejecutó por su cuenta `apt-get install -y nginx`, copió el archivo en `/var/www/html`, recargó nginx y se puso a revisar su configuración, sin pedir permiso ni una sola vez. Por eso instala OpenCode en un servidor que no tenga datos ajenos ni sitios importantes, y activa la confirmación de los comandos justo después de la instalación, como se muestra en el paso 2.

***

## Qué necesitas

* **Un servidor** con Debian 12 o Ubuntu 24.04 y **al menos 2 GB de memoria**, por ejemplo el plan [**DE-RZ9-1**](https://f3cloud.com/es/vps-ai-agents#cloud-vps). En nuestro servidor, el servicio en segundo plano de OpenCode ocupó unos 340 MB de memoria, y la ventana del terminal, otros 190 MB aproximadamente. Si todavía no tienes servidor, contrátalo siguiendo la [guía](https://docs.f3cloud.com/es/client-area/order-vps.md).
* **Conexión por SSH**, por ejemplo con [Termius](https://docs.f3cloud.com/es/vps/termius-connection.md). Los comandos se ejecutan como `root`.
* **Una carpeta con el proyecto** en la que trabajará el agente. En el ejemplo es `/root/my-site`.

***

## Paso 1. Instala OpenCode

Conéctate al servidor y ejecuta el comando oficial de instalación de la segunda versión.

```bash
curl -fsSL https://opencode.ai/v2/install | bash
```

El instalador descargará un programa de unos 200 MB en la carpeta `/root/.opencode/bin` y lo añadirá al `PATH`. Para que el comando `opencode` funcione en la ventana actual del terminal, reinicia el intérprete de comandos.

```bash
exec $SHELL
```

<figure><img src="https://docs.f3cloud.com/img/opencode-install.png" alt="Instalación de OpenCode 2.1.2 con el script oficial, mensaje sobre los modelos gratuitos"><figcaption><p>OpenCode instalado, los modelos gratuitos están disponibles desde el primer momento</p></figcaption></figure>

> **Por qué hay v2 en la dirección.**
>
> El comando antiguo `curl -fsSL https://opencode.ai/install | bash` instala la primera versión de OpenCode. Las dos versiones usan el comando `opencode` y no pueden convivir, así que el instalador de la segunda versión sustituye a la primera. Si ya tienes la primera versión, su propia interfaz te ofrecerá actualizar con el comando `/update`.

***

## Paso 2. Activa la confirmación de los comandos

Crea el archivo de ajustes generales de OpenCode.

```bash
mkdir -p ~/.config/opencode
nano ~/.config/opencode/opencode.jsonc
```

Pega en él las reglas de abajo y guarda el archivo con <kbd>Ctrl</kbd> + <kbd>O</kbd>, luego <kbd>Enter</kbd>, y sal del editor con <kbd>Ctrl</kbd> + <kbd>X</kbd>.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "permissions": [
    { "action": "shell", "resource": "*", "effect": "ask" },
    { "action": "external_directory", "resource": "*", "effect": "ask" }
  ]
}
```

* La primera regla obliga al agente a preguntar antes de **cada comando** en el terminal.
* La segunda regla obliga a preguntar antes de trabajar con archivos **fuera de la carpeta del proyecto**. En la segunda versión de OpenCode, este acceso está permitido por defecto.

Para que el servicio aplique los ajustes, ejecuta el comando de abajo.

```bash
opencode reload
```

A partir de ahora, antes de cada comando el agente muestra la ventana **Permission required**.

<figure><img src="https://docs.f3cloud.com/img/opencode-permission.png" alt="OpenCode pide permiso antes de ejecutar el comando df -h, botones Allow once, Always allow y Reject"><figcaption><p>El agente espera el permiso antes de ejecutar el comando</p></figcaption></figure>

* **Allow once** – ejecutar solo este comando.
* **Always allow** – permitirlo y recordarlo para este proyecto. Por ejemplo, después de permitir `git status --short`, el agente dejará de preguntar por todos los comandos `git status`.
* **Reject** – denegar. El agente detendrá la tarea y podrás aclarar qué hay que hacer.

La elección se hace con las flechas y se confirma con la tecla <kbd>Enter</kbd>.

***

## Paso 3. Dale al agente la primera tarea

Ve a la carpeta del proyecto y abre OpenCode.

```bash
cd /root/my-site
opencode
```

Abajo en la pantalla aparecerá la línea para la tarea. Descríbela con tus palabras y pulsa <kbd>Enter</kbd>. Le pedimos que creara una página de presentación de una cafetería y que comprobara que el archivo estaba en su sitio. Con un modelo gratuito, el agente lo resolvió en 38 segundos.

<figure><img src="https://docs.f3cloud.com/img/opencode-tui-task.png" alt="OpenCode en el terminal creó index.html y lo comprobó con el comando ls -la, debajo el informe de lo hecho"><figcaption><p>El agente creó la página, la comprobó y contó lo que hizo</p></figcaption></figure>

Te vendrán bien algunas teclas y comandos.

* <kbd>Esc</kbd> interrumpe la tarea actual.
* <kbd>Ctrl</kbd> + <kbd>P</kbd> abre la lista de comandos.
* El comando `/models` abre la elección de modelo. Los modelos gratuitos están marcados con la palabra **Free**.
* <kbd>Ctrl</kbd> + <kbd>C</kbd> cierra OpenCode. Al salir, muestra un comando del tipo `opencode -s ses_…` con el que puedes volver a esta misma sesión.

<figure><img src="https://docs.f3cloud.com/img/opencode-models.png" alt="Ventana de elección de modelo en OpenCode con la lista de modelos gratuitos"><figcaption><p>Modelos gratuitos en la ventana /models</p></figcaption></figure>

Para conectar tu propio modelo con una clave API, escribe en la línea de la tarea el comando `/connect` y elige el proveedor.

También puedes dar la tarea sin interfaz, con un solo comando. Es cómodo para los scripts.

```bash
opencode run "¿Cuántas líneas tiene el archivo index.html?"
```

***

## Paso 4. Abre OpenCode en el navegador

En el navegador es más cómodo trabajar con el agente que en el terminal, sobre todo con respuestas largas y cambios de código. El servicio de OpenCode está cerrado a internet, así que hay que conectarse a él mediante un túnel SSH.

1. En el servidor, ejecuta el comando de abajo. Te dará un enlace de un solo uso del tipo `http://127.0.0.1:49374/auth/connect/…`. El enlace funciona una sola vez y solo durante 5 minutos.

   ```bash
   opencode pair
   ```

2. En tu ordenador, abre una ventana nueva del terminal y crea el túnel. El número de puerto sácalo del enlace, en nuestro servidor era `49374`.

   ```bash
   ssh -L 49374:127.0.0.1:49374 root@IP-del-servidor
   ```

3. Sin cerrar esa ventana, abre en el navegador de tu ordenador el enlace del primer paso.

Se abrirá el mismo OpenCode que en el terminal, con todas las sesiones.

<figure><img src="https://docs.f3cloud.com/img/opencode-web.png" alt="Interfaz web de OpenCode en el navegador, el agente añadió a la página una tabla de bebidas con precios"><figcaption><p>OpenCode en el navegador mediante un túnel SSH</p></figcaption></figure>

> **No abras el servicio a internet.**
>
> OpenCode tiene formas de conectarse sin túnel, por ejemplo el comando `opencode service set hostname 0.0.0.0` o `opencode pair --remote`. De la segunda forma, la ayuda de OpenCode dice expresamente que el servicio pasa a ser accesible desde internet. En un VPS esto significa que un servicio que ejecuta comandos en tu servidor quedará abierto a todo el mundo. Usa el túnel SSH.

Si el servidor se ha reiniciado, el servicio de OpenCode no arrancará por sí solo. Inícialo con el comando `opencode service start` o simplemente abre `opencode` en el terminal.

***

## Comandos útiles

```bash
opencode                  # abrir OpenCode en la carpeta actual
opencode -c               # continuar la última sesión
opencode run "tarea"      # ejecutar una tarea sin interfaz
opencode models           # lista de modelos disponibles
opencode pair             # enlace de un solo uso para el navegador
opencode service status   # dirección del servicio en segundo plano
opencode service start    # iniciar el servicio
opencode reload           # volver a leer los ajustes
opencode upgrade          # actualizar OpenCode
opencode uninstall        # eliminar OpenCode, las sesiones y los ajustes se conservan
```

***

## Preguntas frecuentes

<details>

<summary>opencode: command not found</summary>

La ventana actual del terminal todavía no conoce el nuevo comando. Ejecuta `exec $SHELL` o vuelve a conectarte al servidor por SSH.

</details>

<details>

<summary>El enlace de opencode pair no se abre</summary>

1. Comprueba que la ventana con el túnel SSH está abierta y que en el comando `ssh -L` figura el mismo puerto que en el enlace.
2. El enlace funciona una sola vez y solo durante 5 minutos. Ejecuta `opencode pair` otra vez y abre el enlace nuevo.
3. Si el puerto está ocupado en tu ordenador, redirige otro, por ejemplo `ssh -L 8080:127.0.0.1:49374 root@IP-del-servidor`, y cambia en el enlace `49374` por `8080`.

</details>

<details>

<summary>El agente ejecuta comandos sin pedir permiso</summary>

Así funciona OpenCode por defecto. Crea el archivo `~/.config/opencode/opencode.jsonc` con las reglas del paso 2 y ejecuta `opencode reload`.

</details>

<details>

<summary>El modelo gratuito ha desaparecido de la lista</summary>

Los modelos gratuitos están disponibles durante un tiempo limitado, y OpenCode cambia su conjunto de vez en cuando. Abre `/models` y elige otro modelo marcado con **Free**, o conecta el tuyo con una clave API mediante el comando `/connect`.

</details>

***

## Nuestros recursos

**Canal de Telegram:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Web del hosting:** [https://f3cloud.com](https://f3cloud.com/es)
