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

  1. Descargá Ubuntu 24.04.4 LTS. Podés seguir esta guia Ubuntu, mi sistema operativo preferido
  2. Creá un USB booteable con Rufus o balenaEtcher.
  3. Instalá Ubuntu Desktop en la laptop vieja.
  4. Creá un usuario principal y una contraseña fácil de recordar.
  5. Conectá la laptop a tu WiFi.
  6. Desactivá la suspensión automática en Configuración > Energía.
  7. Desde la terminal, verificá la IP local con el comando ip a y guardá la dirección. Buscá inet 192.168.x.x0, generalment en la interfazwlp...

Fase 2 — Compartir archivos (Samba)

  1. Instalá Samba con sudo apt update && sudo apt install samba -y.
  2. Creá una carpeta para compartir, por ejemplo mkdir ~/Compartido.
  3. Definí permisos adecuados para esa carpeta: chmod -R 775 /home/server/Compartido
  4. Editá el archivo sudo nano /etc/samba/smb.conf para agregar el recurso compartido. Navega hasta el final del archivo y agrega:
  5. [Compartido]
      path = /home/server/Compartido
      browseable = yes
      writable = yes
      guest ok = yes
      read only = no
  6. Creá una contraseña Samba para tu usuario con sudo smbpasswd -a tu_usuario.
  7. Probá acceso desde otra computadora usando la IP local, en el browser escribi: http://192.168.x.x

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
            
  • Instalá Syncthing en tu computadora principal, de la misma forma que en el servidor.
  • Abrí la interfaz web de Syncthing en ambos equipos. En el servidor: http://localhost:8384; en la otra laptop: http://192.168.x.x:8384
  1. Vinculá ambos dispositivos usando sus IDs.
  2. Elegí una carpeta para sincronizar entre ambos.
  3. Aceptá la carpeta compartida en el otro equipo.
  4. 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
  1. Creá una cuenta en Tailscale.
  2. Instalá Tailscale en la laptop servidor.
  3. Iniciá sesión y uní la laptop a tu red privada de Tailscale.
  4. Instalá Tailscale también en tu computadora principal.
  5. Instalá Tailscale en tu teléfono.
  6. Verificá que los dispositivos aparecen conectados.
  7. 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
  1. Instalá Node.js en la laptop. Conviene usar una versión LTS activa. :contentReference[oaicite:1]{index=1}
  2. Creá la app con npx create-next-app@latest intranet-dashboard y elegí la configuración básica con App Router. :contentReference[oaicite:2]{index=2}
  3. Entrá al proyecto con cd intranet-dashboard y levantalo con npm run dev. Por defecto corre en http://localhost:3000. :contentReference[oaicite:3]{index=3}
  4. Creá una carpeta public si no existe y guardá ahí el ícono del logo, por ejemplo public/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}
  5. 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
  6. Creá un card llamado Comandos frecuentes con una lista editable de comandos útiles, por ejemplo:
    • ip a
    • docker ps
    • systemctl status smbd
    • tailscale status
  7. Creá un card llamado Bookmarks con enlaces útiles, por ejemplo:
    • interfaz de Syncthing
    • panel de Tailscale
    • documentación del proyecto
    • tu GitHub
  8. Agregá una ruta de salud simple, por ejemplo /api/health, que responda con estado correcto.
  9. Desde la interfaz, hacé una consulta periódica a /api/health y mostrá:
    • En línea si responde bien
    • Fuera de línea si falla
  10. 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
  1. Instalá Docker con sudo apt install docker.io -y.
  2. Verificá la instalación con docker --version.
  3. 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}
  4. Creá un Dockerfile o una configuración con Nginx para servir la app.
  5. Construí la imagen de Docker.
  6. Corré el contenedor exponiendo el puerto necesario.
  7. 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