# 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'`
