Convertí una laptop vieja en tu centro digital personal
🧭 Objetivo del proyecto
Usar una computadora vieja con Ubuntu Desktop como un servidor casero sencillo para compartir archivos entre tus dispositivos, sincronizar carpetas con Syncthing y alojar una página de intranet personal accesible desde tu red.
🎯 Resultado final
Al terminar este proyecto vas a tener:
- Una laptop funcionando como servidor con Ubuntu Desktop
- Archivos compartidos entre:
- Tu computadora principal
- Tu laptop servidor
- Tu teléfono
- Sincronización automática de carpetas con Syncthing
- Acceso remoto seguro con Tailscale
- Una página de intranet accesible desde tu red (tipo dashboard personal)
🧠 ¿Qué vas a aprender?
- Uso práctico de Linux (sin complicarte con Server)
- Redes locales (cómo se comunican tus dispositivos)
- Compartición de archivos con Samba
- Sincronización de carpetas entre dispositivos con Syncthing
- Uso básico de Docker
- Cómo crear y desplegar una aplicación web simple con Next.js
🧰 Tecnologías utilizadas
- Ubuntu Desktop
- Samba
- Syncthing
- Docker
- Tailscale
- Nginx
- Next.js
Nivel del proyecto: 🟢 Principiante–Intermedio
🗺️ Roadmap del proyecto
Fase 1 — Preparar la laptop
- Descargá Ubuntu 24.04.4 LTS. Podés seguir esta guia Ubuntu, mi sistema operativo preferido
- Creá un USB booteable con Rufus o balenaEtcher.
- Instalá Ubuntu Desktop en la laptop vieja.
- Creá un usuario principal y una contraseña fácil de recordar.
- Conectá la laptop a tu WiFi.
- Desactivá la suspensión automática en Configuración > Energía.
- Desde la terminal, verificá la IP local con el comando
ip ay guardá la dirección. Buscáinet 192.168.x.x0, generalment en la interfazwlp...
Fase 2 — Compartir archivos (Samba)
- Instalá Samba con
sudo apt update && sudo apt install samba -y. - Creá una carpeta para compartir, por ejemplo
mkdir ~/Compartido. - Definí permisos adecuados para esa carpeta:
chmod -R 775 /home/server/Compartido - Editá el archivo
sudo nano /etc/samba/smb.confpara agregar el recurso compartido. Navega hasta el final del archivo y agrega: - Creá una contraseña Samba para tu usuario con
sudo smbpasswd -a tu_usuario. - Probá acceso desde otra computadora usando la IP local, en el browser escribi: http://192.168.x.x
[Compartido]
path = /home/server/Compartido
browseable = yes
writable = yes
guest ok = yes
read only = no
Fase 3 — Sincronización de archivos
- Instalá Syncthing en la laptop servidor.
curl -s https://syncthing.net/release-key.txt | sudo gpg --dearmor -o /usr/share/keyrings/syncthing-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update
sudo apt install syncthing -y
syncthing
- Vinculá ambos dispositivos usando sus IDs.
- Elegí una carpeta para sincronizar entre ambos.
- Aceptá la carpeta compartida en el otro equipo.
- Probá crear o modificar un archivo para comprobar que se sincroniza automáticamente.
Fase 4 — Acceso remoto (Tailscale)
- Crear cuenta en Tailscale
- Instalar en la laptop servidor
- Instalar en tu teléfono y PC
- Probar acceso remoto
Pasos
- Creá una cuenta en Tailscale.
- Instalá Tailscale en la laptop servidor.
- Iniciá sesión y uní la laptop a tu red privada de Tailscale.
- Instalá Tailscale también en tu computadora principal.
- Instalá Tailscale en tu teléfono.
- Verificá que los dispositivos aparecen conectados.
- Probá acceder a la laptop usando la IP de Tailscale.
Fase 5 — Crear tu intranet personal con Next.js
- Crear una app simple (Next.js)
- Agregar logo, nombre de la PC y estado del servidor
- Mostrar dos cards:
- Comandos frecuentes
- Bookmarks
Pasos
- Instalá Node.js en la laptop. Conviene usar una versión LTS activa. :contentReference[oaicite:1]{index=1}
- Creá la app con
npx create-next-app@latest intranet-dashboardy elegí la configuración básica con App Router. :contentReference[oaicite:2]{index=2} - Entrá al proyecto con
cd intranet-dashboardy levantalo connpm run dev. Por defecto corre enhttp://localhost:3000. :contentReference[oaicite:3]{index=3} - Creá una carpeta
publicsi no existe y guardá ahí el ícono del logo, por ejemplopublic/logo.png. Next.js sirve estos archivos desde la raíz, así que luego lo podés usar como/logo.png. :contentReference[oaicite:4]{index=4} - Editá la página principal para mostrar:
- el ícono o logo
- el nombre de la PC, por ejemplo
home-server - un indicador de estado del servidor
- Creá un card llamado Comandos frecuentes con una lista editable de comandos útiles, por
ejemplo:
ip adocker pssystemctl status smbdtailscale status
- Creá un card llamado Bookmarks con enlaces útiles, por ejemplo:
- interfaz de Syncthing
- panel de Tailscale
- documentación del proyecto
- tu GitHub
- Agregá una ruta de salud simple, por ejemplo
/api/health, que responda con estado correcto. - Desde la interfaz, hacé una consulta periódica a
/api/healthy mostrá:- En línea si responde bien
- Fuera de línea si falla
- Probá la app localmente y confirmá que el dashboard muestra logo, nombre de la PC, comandos, bookmarks y el estado del servidor.
Resultado esperado
Una intranet simple pero útil, con identidad visual básica, información del servidor y acceso rápido a recursos reales del estudiante.
Fase 6 — Publicar la intranet
- Servir la app con Docker + Nginx
- Hacerla accesible desde otros dispositivos de la red
Pasos
- Instalá Docker con
sudo apt install docker.io -y. - Verificá la instalación con
docker --version. - Prepará el proyecto para despliegue. Si querés publicarlo como sitio estático con Nginx, podés usar export estático de Next.js. :contentReference[oaicite:5]{index=5}
- Creá un
Dockerfileo una configuración con Nginx para servir la app. - Construí la imagen de Docker.
- Corré el contenedor exponiendo el puerto necesario.
- Probá abrir la intranet desde otro dispositivo en la red usando la IP local de la laptop.
🧪 Tareas prácticas
- Crear una carpeta compartida accesible desde otro dispositivo
- Sincronizar una carpeta entre la laptop servidor y tu computadora principal
- Conectarte a tu servidor desde el teléfono
- Crear una app simple en Next.js
- Agregar un logo, el nombre de la PC y el estado del servidor
- Crear un card de comandos frecuentes
- Crear un card de bookmarks
- Acceder a esa página desde otro dispositivo en la red
✅ Checkpoints
- Podés ver archivos del servidor desde otra computadora
- Podés acceder desde tu teléfono
- Tenés una carpeta sincronizada automáticamente con Syncthing
- La app muestra el logo y el nombre de la PC
- La app muestra un card de comandos frecuentes
- La app muestra un card de bookmarks
- La app muestra si el servidor está en línea
- Tu intranet carga en el navegador (ej: http://192.168.x.x)
- Podés conectarte aunque no estés en casa (Tailscale)
📁 Resultado para tu portafolio
"Convertí una laptop vieja en un servidor casero para compartir archivos, sincronizar carpetas y alojar una intranet personal accesible desde cualquier dispositivo."
Podés incluir:
- Screenshot de la intranet
- Screenshot del acceso desde el teléfono
- Screenshot de Syncthing sincronizando carpetas
- Diagrama simple de tu red