Servidor de archivos de producción gratis en un VPS en pocos pasos. En esta guía práctica aprenderás a desplegar un servidor de ficheros robusto con Spring Boot en un VPS de coste cero, protegerlo con nginx y Lets Encrypt, ejecutarlo con systemd o dentro de Docker, y validarlo con una colección de Postman. Además, integraremos buenas prácticas de seguridad, observabilidad y almacenamiento para un uso profesional.
Por qué te interesa. Si eres desarrollador y buscas un backend ligero para cargas y descargas, streaming, metadatos y borrado de archivos, o si quieres experimentar con un VPS gratuito sin perder calidad de producción, este tutorial es para ti. También te servirá para consolidar conceptos de despliegue, reverse proxy, TLS, firewall y automatización.
Qué vas a lograr. 1 Desplegar un boilerplate de Spring Boot para file server escuchando en el puerto 8000. 2 Proteger el tráfico con nginx como reverse proxy y certificados TLS emitidos por Lets Encrypt. 3 Ejecutar la app de forma nativa con systemd o contenerizada con Docker. 4 Probar los endpoints de subida, listado, descarga y borrado usando la colección de Postman incluida en el repositorio.
Requisitos previos. 1 Descargar el boilerplate Spring Boot file server desde este recurso. 2 Una cuenta gratuita en un proveedor cloud o un VPS. Opciones conocidas Oracle Cloud Always Free, AWS Free Tier y Google Cloud Free Tier. 3 En tu equipo local necesitas ssh, scp, java y mvn o gradle. 4 Un dominio es opcional pero recomendado para facilitar el alta de HTTPS.
Arquitectura rápida. La aplicación Spring Boot expone el servicio en el puerto 8000. Delante se coloca nginx como reverse proxy y terminación TLS. Los ficheros se guardan en disco del servidor por defecto, con la opción de desviar a almacenamiento de objetos para mayor durabilidad. La app corre como servicio del sistema con systemd o dentro de un contenedor Docker.
Paso 1 Preparar el boilerplate en local. 1 Descomprime el proyecto y ábrelo en tu IDE preferido. 2 Ajusta application.properties indicando el puerto 8000, el límite de tamaño de archivos y la ruta de almacenamiento por ejemplo opt fileserver uploads. 3 Ejecuta en local y valida con la colección Postman. 4 Genera el JAR con mvnw clean package -DskipTests o con gradlew bootJar. El artefacto quedará en target file-server-0.1.0.jar.
Paso 2 Elegir un VPS gratuito. Con Ubuntu 22.04 tendrás compatibilidad excelente y documentación abundante. En Oracle Cloud Always Free suele haber recursos suficientes para apps pequeñas. En AWS o Google Cloud vigila muy de cerca los límites del free tier.
Paso 3 Conectarte a tu VPS e instalar base. Conéctate con ssh usuario@ip. Actualiza e instala utilidades con apt update y apt upgrade -y. Añade nginx, certbot, el plugin python3-certbot-nginx y ufw, junto a ca-certificates, curl y software-properties-common para repos y seguridad.
Opción A Despliegue nativo con systemd. 1 Instala Java 21 con apt install -y openjdk-21-jdk. 2 Crea el directorio de la app en opt fileserver y el de datos opt fileserver uploads. 3 Sube el JAR desde tu equipo con scp target file-server-0.1.0.jar usuario@ip opt fileserver app.jar. 4 Crea el servicio systemd fileserver.service con WorkingDirectory opt fileserver, ExecStart usando usr bin java -jar opt fileserver app.jar --spring.profiles.active=prod, Restart always y JAVA_OPTS con Xms256m y Xmx512m. 5 Activa y arranca con systemctl daemon-reload, systemctl enable fileserver, systemctl start fileserver y monitoriza con journalctl -u fileserver -f.
Opción B Despliegue con Docker. Ventajas no necesitas Java en el VPS, fácil empaquetado y rollback. 1 Instala Docker con curl -fsSL https: get.docker.com barra vertical sh, habilita con systemctl enable docker y systemctl start docker, y añade tu usuario al grupo docker con usermod -aG docker nombre_usuario. 2 Verifica con docker run hello-world. 3 Copia app.jar a opt fileserver. 4 Define un Dockerfile sencillo basado en eclipse-temurin 21 jdk alpine que exponga 8000 y ejecute java -jar app app.jar. 5 Construye con docker build -t fileserver:latest punto y ejecuta con docker run -d --name fileserver -p 8000:8000 -v opt fileserver storage dospuntos data fileserver:latest. 6 Consulta logs con docker logs -f fileserver.
Paso 4 Configurar nginx como reverse proxy. Crea un bloque de servidor para tu dominio por ejemplo fileserver.tudominio.tld escuchando en el puerto 80. Establece client_max_body_size 50M para permitir subidas de hasta 50 MB. En la directiva location barra proxifica a http 127.0.0.1 8000 y añade cabeceras proxy_set_header Host variable host, X-Real-IP y X-Forwarded-For. Habilita el sitio con el enlace simbólico, comprueba con nginx -t y recarga con systemctl reload nginx.
Paso 5 Activar HTTPS con Lets Encrypt. Ejecuta certbot --nginx -d fileserver.tudominio.tld, sigue el asistente y confirma que certbot.timer está activo para renovaciones automáticas con systemctl status certbot.timer.
Paso 6 Configurar el firewall UFW. Permite OpenSSH para no perder acceso. Abre HTTP y HTTPS con ufw allow 80 y ufw allow 443. Habilita con ufw enable y valida con ufw status.
Consejos de producción. 1 Almacenamiento de objetos si necesitas durabilidad y escalado, conecta S3 o el servicio de tu proveedor, externaliza estáticos y sirve los archivos desde un bucket con políticas privadas y URLs firmadas. 2 Monitorización usa journalctl o docker logs y valora integrar Prometheus y Grafana, así como alertas básicas de disco y CPU. 3 Copias de seguridad automatiza snapshots del volumen y sincroniza fuera del servidor con rsync o herramientas del proveedor. 4 Tamaño de subida ajusta client_max_body_size en nginx y los límites de multipart en Spring Boot según tu caso de uso. 5 Seguridad endurece SSH, usa claves, cambia el puerto si procede, instala actualizaciones y activa unattended upgrades.
Sobre Q2BSTUDIO. Somos una empresa de desarrollo con foco en aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio con power bi, automatización y agentes IA. Diseñamos plataformas seguras y escalables para impulsar ia para empresas y modernización de sistemas. Si necesitas que orquestemos un entorno cloud sólido para tu file server y otros microservicios, descubre nuestros servicios cloud aws y azure con arquitectura, CI CD, observabilidad y hardening.
Validación final. Con la colección de Postman incluida podrás subir archivos, listarlos, descargar y eliminar, verificando los códigos de estado y las cabeceras de seguridad detrás de nginx con TLS. Mide latencia y rendimiento para verificar que tu VPS gratuito cumple con tus cargas.
Resultado. Ya dispones de un servidor de archivos de nivel producción sobre un VPS gratuito, accesible por HTTPS, con despliegue nativo o en contenedor y con controles de seguridad básicos. Cuando crezcas, migra el almacenamiento a un bucket, añade CDN y autoescalado, y considera un pipeline de CI CD para publicar nuevas versiones sin tiempo de inactividad.
Recurso del boilerplate. Puedes obtener el proyecto base de Spring Boot desde este enlace y adaptarlo a tus necesidades.