Skip to content

Desplegar Potato en Hetzner, Vultr o Linode

Lleva un estudio de anotación con Potato a una VM de Hetzner, Vultr o Linode con potato deploy, desde unos €6 al mes, con HTTPS y un disco persistente.

potato deploy up --provider hetzner pone un estudio de anotación en una máquina virtual de Hetzner Cloud por unos €6 al mes, el precio por defecto más bajo entre los destinos de VM de pago de Potato. --provider vultr y --provider linode hacen lo mismo en Vultr y en Linode, de Akamai, por $10 y $12 al mes. Cada una es una máquina virtual normal con un disco que sobrevive a los reinicios, así que un estudio puede funcionar en ella durante semanas sin un servicio de respaldo. Potato configura las tres de la misma manera: un cortafuegos que solo abre los puertos 22, 80 y 443, Docker, el servidor web Caddy con un certificado de Let's Encrypt y Potato como servicio del sistema. Esta página requiere Potato 2.10 o posterior y una configuración que ya hayas ejecutado con potato start.

Elegir entre los tres

Los tres se diferencian en precio, memoria, moneda de facturación y lugar donde se ejecuta la máquina por defecto. La tabla da el tamaño que crea Potato si no pasas --size, con el precio mensual que muestra:

--provider hetzner--provider vultr--provider linode
Tamaño por defectocx23, 2 vCPU y 4 GBvc2-1c-2gb, 1 vCPU y 2 GBg6-standard-1, 1 vCPU y 2 GB
Precio mensualunos €6, con la dirección IPv4$10$12
Ubicación por defectonbg1, Núrembergewr, Nueva Jerseyus-east, Newark
Variable del tokenHCLOUD_TOKENVULTR_API_KEYLINODE_TOKEN

Hetzner ofrece más memoria por el precio, y Potato guarda en memoria el conjunto de ítems, así que Hetzner encaja con un corpus grande y un presupuesto pequeño. Hetzner factura en euros desde una empresa en Alemania, algo que las normas de compras de algunas instituciones no permiten. Vultr y Linode facturan en dólares estadounidenses.

Crear un token de API

Cada proveedor se autentica con un token de API que creas en su consola y pones en tu entorno:

  • Hetzner. En la consola de Hetzner Cloud, abre la sección Security del proyecto y crea un token de API con permiso de lectura y escritura.
  • Vultr. Crea una clave de API en el panel de Vultr y añade la dirección IP de tu máquina a la lista de control de acceso de la clave, o Vultr rechazará todas las solicitudes.
  • Linode. Crea un token de acceso personal con acceso de lectura y escritura a Linodes, Firewalls y Volumes.

Instala el extra de despliegue, exporta el token y comprueba que Potato puede usarlo:

bash
pip install 'potato-annotation[deploy]'
export HCLOUD_TOKEN=...
potato deploy providers --verify

Decidir quién puede iniciar sesión

potato deploy no cambia tus ajustes de inicio de sesión, y la dirección de la máquina es pública. Si la configuración permite que cualquiera se registre, la ejecución de prueba de abajo muestra el aviso D003, «Anyone who finds the URL can register and annotate.» (Cualquiera que encuentre la URL puede registrarse y anotar.) En un estudio de crowdsourcing, el registro abierto suele ser intencionado. Para anotadores con nombre, inclúyelos en user_config.users con allow_all_users: false (Gestión de contraseñas) o haz que inicien sesión con Google, GitHub o tu institución (SSO y OAuth) antes de desplegar.

Revisar el plan y desplegar

Una ejecución de prueba no necesita cuenta y no crea nada. Muestra cada paso, el coste estimado y cualquier ajuste arriesgado de la configuración:

bash
potato deploy up myproject/config.yaml --provider hetzner --dry-run
potato deploy up myproject/config.yaml --provider hetzner

El segundo comando despliega cuando confirmas el plan. Al terminar muestra la URL, una dirección https:// sobre la IP de la máquina, y la ruta del archivo de la clave de administración, .potato/secrets.json, junto a tu configuración. La clave de administración abre el panel de administración en /admin. Si vuelves a ejecutar up después de editar la configuración, sube la nueva versión a la misma máquina. Durante el estudio, potato deploy logs myproject/config.yaml -f sigue el registro del servidor en los tres proveedores.

--region y --size cambian la ubicación y la máquina, y --volume-gb añade un disco independiente para los datos de la tarea. Hetzner solo vende sus máquinas cx en sus ubicaciones europeas, así que un despliegue en sus ubicaciones de EE. UU., ash y hil, necesita un tipo cpx indicado con --size. Si el tipo no se vende en la ubicación elegida, Potato se detiene antes de crear nada y enumera las ubicaciones donde sí se vende.

Certificados sin nombre de dominio

Sin nombre de dominio, Let's Encrypt emite el certificado para la dirección IP de la máquina. Dura unos seis días y se renueva automáticamente. potato deploy status informa de una renovación fallida, así que compruébalo cada pocos días si el estudio funciona sin supervisión. Para usar tu propio dominio, apunta un registro DNS A a la IP de la máquina y vuelve a desplegar con --domain annotate.example.edu. La cuenta de Let's Encrypt usa como contacto la dirección de tu git config user.email, y --acme-email define otra.

Detalles de cada proveedor

Linode exige una contraseña de root al crear una máquina, aunque se proporcionen claves SSH. Potato genera una, la guarda en .potato/secrets.json y desactiva el inicio de sesión por contraseña en SSH, de modo que la contraseña no sirve para entrar. En Vultr, un disco independiente creado con --volume-gb se conecta después de que arranque la máquina, y la configuración espera a que aparezca el dispositivo antes de formatearlo y montarlo.

Terminar el estudio

Las anotaciones están en el disco de la máquina, que se borra con ella. Descárgalas primero a tu ordenador, compruébalas y después elimina el servidor:

bash
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yaml

pull escribe todo lo que ha recogido el despliegue en un directorio nuevo potato-pull-<name>-<timestamp> y copia las bases de datos con el comando de copia de seguridad de SQLite. destroy no se ejecuta en un despliegue cuyos datos nunca se han descargado.

Lecturas adicionales