Publicar servicio basado en VAPOR en DigitalOcean
Source: Dev.to
Crear y configurar servidor en DigitalOcean
- Crear un Droplet y elegir la distribución Ubuntu 22.04 LTS.
- Seleccionar el tamaño del servidor (por ejemplo, 1 vCPU, 512 MB RAM, 10 GB SSD).
- Elegir la forma de autenticación SSH y añadir una clave SSH en DigitalOcean.
- Asignar un nombre al Droplet y asociarlo a un proyecto.
- Confirmar la creación y esperar a que el Droplet se provisiona.
Una vez creado, la IP del servidor aparecerá en el panel.
Conexión SSH y configuración del firewall
ssh root@your_server_ip
Reemplaza your_server_ip por la IP asignada (p. ej. 146.190.121.34). Acepta la huella del host.
# Habilitar OpenSSH en UFW
ufw allow OpenSSH
ufw enable # confirma con "y"
Abrir el puerto que usará la aplicación (8080):
sudo ufw allow 8080
Crear usuario vapor y otorgarle sudo
adduser vapor # sigue las indicaciones, dejando en blanco la información adicional
usermod -aG sudo vapor
Copiar las claves SSH autorizadas del usuario root al nuevo usuario:
rsync --archive --chown=vapor:vapor ~/.ssh /home/vapor
Cerrar la sesión y volver a conectarse como vapor:
exit
ssh vapor@your_server_ip
Instalar Swiftly y dependencias de Swift
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz && \
tar zxf swiftly-$(uname -m).tar.gz && \
./swiftly init --quiet-shell-followup && \
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" && \
hash -r
Confirmar con Y cuando se solicite.
Instalar dependencias necesarias:
sudo apt-get update
sudo apt-get -y install binutils unzip libcurl4-openssl-dev \
libgcc-13-dev libpython3-dev libstdc++-13-dev libxml2-dev \
libncurses-dev libz3-dev pkg-config zlib1g-dev
Verificar la versión de Swift:
swift --version
# Swift version 6.2.3 (swift-6.2.3-RELEASE)
Instalar el toolbox de Vapor
git clone https://github.com/vapor/toolbox.git
cd toolbox
git checkout 20.0.0 # último release al momento de escribir
swift build -c release --disable-sandbox
sudo mv .build/release/vapor /usr/local/bin
cd ..
rm -rf toolbox
Clonar y compilar la aplicación
Asegúrate de que la clave SSH del servidor esté añadida a tu cuenta de GitHub, luego clona el repositorio:
git clone git@github.com:.git
cd StripeIntentService
swift run StripeIntentService serve --hostname 0.0.0.0 --port 8080
Nota: Si la compilación falla por falta de memoria, aumenta temporalmente la RAM del Droplet (p. ej. a 4 GB) y, una vez finalizada, puedes reducirla nuevamente.
Configurar claves SSH para GitHub (opcional)
ssh-keygen -t ed25519 -C "your_email@example.com" # aceptar valores por defecto
eval "$(ssh-agent -s)"
Edita ~/.ssh/config (p. ej. con nano) y añade:
Host github.com
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
Añade la clave al agente:
ssh-add ~/.ssh/id_ed25519
Obtén la clave pública y añádela a tu cuenta de GitHub:
cat ~/.ssh/id_ed25519.pub
Ajustar recursos del Droplet (si es necesario)
En el panel de DigitalOcean, ve a Manage → Droplets, selecciona tu Droplet y pulsa Upsize. Elige la configuración de RAM/CPU que necesites (por ejemplo, 2 GB o 4 GB) y confirma el redimensionado. Cuando la compilación haya finalizado, puedes volver a reducir el tamaño si lo deseas.