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 defecto | cx23, 2 vCPU y 4 GB | vc2-1c-2gb, 1 vCPU y 2 GB | g6-standard-1, 1 vCPU y 2 GB |
| Precio mensual | unos €6, con la dirección IPv4 | $10 | $12 |
| Ubicación por defecto | nbg1, Núremberg | ewr, Nueva Jersey | us-east, Newark |
| Variable del token | HCLOUD_TOKEN | VULTR_API_KEY | LINODE_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:
pip install 'potato-annotation[deploy]'
export HCLOUD_TOKEN=...
potato deploy providers --verifyDecidir 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:
potato deploy up myproject/config.yaml --provider hetzner --dry-run
potato deploy up myproject/config.yaml --provider hetznerEl 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:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlpull 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
- Ejecutar Potato en local o en la nube, para los demás destinos en la nube, incluido DigitalOcean
- Desplegar un servidor de anotación, para elegir un host
- Referencia de los proveedores de VM