# Osmosis

## 1.- Introducción

#### En términos generales, el proceso es:

1. Preparar un servidor (local o en la nube) con los requisitos necesarios.
2. Instalar el binario osmosisd ―o usar Osmosis Installer para agilizar la puesta en marcha
3. Sincronizar la cadena (desde génesis o mediante snapshot/state-sync).
4. Configurar Cosmovisor o seguir la ruta manual para futuras actualizaciones.
5. Registrar una wallet y, con ella, convertir tu nodo en validador mediante una transacción on-chain.

Los apartados siguientes desarrollan cada paso al detalle.

Nota: esta guía se basa en mainnet (osmosis-1). Si prefieres practicar en testnet, clónala y sustituye la red allí donde corresponda.

<br>

## 2.- Requisitos previos

<table data-header-hidden><thead><tr><th valign="top">Requisito mínimo</th><th valign="top">Recomendación</th><th valign="top">Recurso</th></tr></thead><tbody><tr><td valign="top"><strong>Requisito mínimo</strong></td><td valign="top"><strong>Recomendación</strong></td><td valign="top"><strong>Recurso</strong></td></tr><tr><td valign="top">CPU quad‑core, 64 GB RAM, 2 TB SSD NVMe</td><td valign="top">64 GB de RAM y 4 TB NVMe para holgura</td><td valign="top">Hardware</td></tr><tr><td valign="top">Ubuntu 20.04 LTS/22.04 LTS o Debian 12</td><td valign="top">Cualquier distro estable funciona</td><td valign="top">Sistema operativo</td></tr><tr><td valign="top">500 Mb simétricos sin límite de datos</td><td valign="top">1 Gb simétrico si tu ISP lo permite</td><td valign="top">Conectividad</td></tr><tr><td valign="top">go1.22.11 obligatorio para v29</td><td valign="top">Usa la versión exacta para evitar errores</td><td valign="top">Go</td></tr><tr><td valign="top">Familiaridad básica con Linux y comandos CLI</td><td valign="top">No necesitas ser sysadmin veterano, pero sí moverte con la terminal</td><td valign="top">Conocimientos</td></tr></tbody></table>

## 3.- Preparar el servicio

1. Configura tu servidor (bare‑metal o cloud).
2. Crea un usuario sin privilegios de root y habilita ufw o tu firewall favorito.
3. Instala los paquetes básicos:

`sudo apt update && sudo apt upgrade -y`

`sudo apt install build-essential curl git jq lz4 aria2 -y`

&#x20;

4. *Instala Go 1.22.11* (si no lo tienes):

```
sudo rm -rf /usr/local/go/
wget https://golang.org/dl/go1.22.11.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.11.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.profile
source ~/.profile
go version      # debería mostrar go1.22.11
```

## 4.- Instalar Osmosis

### Opción A: Osmosis Installer (recomendada)

`curl -sL https://get.osmosis.zone/install > i.py && python3 i.py`

El script descarga y compila la última versión estable, crea los directorios y añade el binario a tu PATH.

### Opción B: Instalación manual del binario <a href="#ioo43e1bhb3y" id="ioo43e1bhb3y"></a>

```
git clone https://github.com/osmosis-labs/osmosis
cd osmosis
git checkout v29.0.0
make build
cp build/osmosisd $HOME/go/bin/
```

Verifica la versión:

*osmosisd version   # 29.0.0*

## 5.- Inicializar el nodo y descargar la génesis

`osmosisd init NODE_NAME`

`wget -O ~/.osmosisd/config/genesis.json \`&#x20;

<https://github.com/osmosis-labs/networks/raw/main/osmosis-1/genesis.json>

Asegúrate de que *NODE\_NAME* sea único y descriptivo.

## 6 · Gestión de actualizaciones

### **Ruta manual (sin Cosmovisor)** <a href="#ea9366fg69xm" id="ea9366fg69xm"></a>

Si prefieres un enfoque minimalista —o tu política de producción no permite usar Cosmovisor—, sigue estos pasos:

1. Omite la instalación de Cosmovisor y mantén el binario en *$HOME/go/bin/osmosisd*.
2. Crea un servicio *systemd* específico: "`sudo nano /etc/systemd/system/osmosisd.service`"

```
[Unit]
Description=Osmosis daemon (sin Cosmovisor)
After=network-online.target
[Service]
User=%u
ExecStart=$HOME/go/bin/osmosisd start --home $HOME/.osmosisd
Restart=always
RestartSec=3
LimitNOFILE=infinity
LimitNPROC=infinity
[Install]
WantedBy=multi-user.target
```

Cerrar documento guardando los cambios con "CTRL + X"

`sudo systemctl daemon-reload`

`sudo systemctl enable osmosisd`

`sudo systemctl start osmosisd`

&#x20;

### Actualizaciones manuales (cuando la red anuncie un nuevo tag):

\# Detén el servicio

a) `sudo systemctl stop osmosisd`

*# Compila el nuevo binario (ejemplo v30.0.0)*

b) `cd $HOME/osmosis && git fetch && git checkout v30.0.0 && make build`

c) `cp build/osmosisd $HOME/go/bin/`

\# Verifica que la versión sea la nueva

d) `osmosisd version`

\# Reinicia el servicio

e) `sudo systemctl start osmosisd`&#x20;

4. Observa los logs para asegurarte de que tu nodo realice el *upgrade* correctamente:

`journalctl -u osmosisd -f`

{% hint style="info" %}
Ventaja: control total. Desventaja: debes estar pendiente de las fechas de upgrade y del bloque de parada.
{% endhint %}

## 7.- Sincronizar la cadena (snapshot Quicksync) <a href="#uth2kz12h9jz" id="uth2kz12h9jz"></a>

### 7.1 Snapshot (QuickSync)

Para evitar descargar desde génesis:

```
URL=$(curl -s https://quicksync.io/osmosis.json | \
jq -r '.[] |select(.file=="osmosis-1-default")|select(.mirror=="Netherlands")|.url')
cd $HOME/.osmosisd/
wget -O - "$URL" | lz4 -d | tar -xvf -
```

7.2 State Sync (opcional)

Edita \~/.osmosisd/config/config.toml:\
\
\[state-sync]

enable       = true

rpc\_servers  = "[https://rpc-osmosis.blockpane.com:443,https://osmosis-rpc.stakecito.com:443](https://docs.ethernodes.io/guias-y-otros/deplega-tu-nodo/https:/rpc-osmosis.blockpane.com:443,https:/osmosis-rpc.stakecito.com:443)"

trust\_height = \<ALTURA\_CONFIANZA>

trust\_hash   = "\<HASH\_CONFIANZA>"

1. Obtén los valores:<br>

```
LATEST_HEIGHT=$(curl -s https://rpc-osmosis.blockpane.com:443/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((LATEST_HEIGHT - 2000))
TRUST_HASH=$(curl -s "https://rpc-osmosis.blockpane.com:443/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)
```

2. Sustituye, guarda y reinicia tu servicio.\ <br>

Con State Sync tu nodo estará listo en cuestión de minutos.<br>

Tip: para máxima seguridad, sincroniza desde génesis y habilita state-sync; tardarás más, pero no dependes de terceros.

## 8 · Conexión inicial – Seeds y Peers<br>

Añade al menos un seed y varios persistent peers en `~/.osmosisd/config/config.toml:`

\# Ejemplo (mainnet osmosis-1)

seeds = "<ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com>:12556,<f515a8599b40f0e84dfad935ba414674ab11a668@osmosis.blockpane.com>:26656"

<br>

persistent\_peers = "2308bed9e096a8b96d2aa343acc1147813c59ed2\@3.225.38.25:26656,1b077d96ceeba7ef503fb048f343a538b2dcdf1b\@136.243.218.244:26656"

<br>

## 9 · Monitoreo y buenas prácticas

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><strong>Tarea</strong></td><td valign="top"><strong>Comando rápido</strong></td></tr><tr><td valign="top">Ver salud de firmas</td><td valign="top"><code>osmosisd query slashing signing-info [validator-pubkey]</code></td></tr><tr><td valign="top">Logs</td><td valign="top"><code>journalctl -u osmosisd -f</code></td></tr><tr><td valign="top">Actualizar a v29 (manual)</td><td valign="top">Compila, sustituye binario y reinicia el servicio</td></tr><tr><td valign="top">Copias de seguridad</td><td valign="top">Exporta <code>~/.osmosisd</code> y guarda mnemonics offline</td></tr></tbody></table>

&#x20;

### Repaso de los principales componentes <a href="#rmwu4ileaxl2" id="rmwu4ileaxl2"></a>

●      Wallet – almacena tus claves; protégela con osmo mínimo para comisiones.

●      Snapshot / state-sync – acelera la sincronización inicial.

●      Pubkey de validador – pieza clave para firmar bloques y rastrear tu *signing-info*.\
&#x20;

### Conexión inicial – Seeds y Peers de referencia <a href="#n8mueayblc6s" id="n8mueayblc6s"></a>

Para que tu nodo encuentre a la red más rápido, añade **al menos un seed** y algunos **persistent peers** en `~/.osmosisd/config/config.toml`.

*# Ejemplo (mainnet osmosis‑1)*

*seeds = "<ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@seeds.polkachu.com>:12556,<f515a8599b40f0e84dfad935ba414674ab11a668@osmosis.blockpane.com>:26656"*

*persistent\_peers = "2308bed9e096a8b96d2aa343acc1147813c59ed2\@3.225.38.25:26656,1b077d96ceeba7ef503fb048f343a538b2dcdf1b\@136.243.218.244:26656"*

&#x20;

{% hint style="info" %}
Tip: tras escribir tus peers puedes borrar addrbook.json para forzar la renovación y reiniciar el servicio.
{% endhint %}

&#x20;

### &#x20;<a href="#gn9uhku2283m" id="gn9uhku2283m"></a>

### Gas price recomendado

Para evitar spam y alinearte con las recomendaciones de la comunidad, abre `~/.osmosisd/config/app.toml` y ajusta:

`minimum-gas-prices = "0.0025uosmo"`

{% hint style="info" %}
Nota: 0.0025 uosmo es el valor de referencia a fecha de esta guía. Revisa siempre los canales oficiales por si el mínimo sugerido cambia.
{% endhint %}

### Buenas prácticas de red (hardening) <a href="#qnauysrq5ef9" id="qnauysrq5ef9"></a>

**Expón solo el puerto P2P (26656) al exterior**. Mantén `26657` (RPC), `9090` (gRPC) y `9091` (REST) escuchando en `127.0.0.1`.

Usa `ufw` o `iptables` para permitir únicamente el tráfico necesario:\
\
&#x20;`sudo ufw allow 26656/tcp`

`sudo ufw deny 26657`

`sudo ufw deny 9090`

`sudo ufw deny 9091`&#x20;

Configura `max_num_inbound_peers` y `max_num_outbound_peers` en `config.toml` para evitar DDoS (por defecto: 100/40; valores típicos: 50/20).\ <br>

Revisa periódicamente tu `addrbook.json` `y peers` conectados:

&#x20;`osmosisd status | jq '.Result.PeerCount'`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ethernodes.io/guias-y-otros/deplega-tu-nodo/osmosis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
