Armá tu propio "spotify"
Este artículo, por ahora, es sólo un boceto. A medida que vaya armando las notas necesarias, las voy a ir linkeando por acá.
Introducción
Vamos a armar un spotify
Prerequisitos
Como todas las guías acá, vamos a necesitar [tener linux instalado] y [docker y docker compose]. También vamos a necesitar [python]. También, si querés hacerlo accesible desde afuera, vas a necesitar configurar tu router y obtener y configurar un dominio
Preparar nuestro router para conexiones externas
Sinopsis
Cuando utilizamos una computadora como servidor, sea para acceder y depositar archivos o para acceder a servicios, normalmente la conectamos a nuestra red local de casa, gestionada por nuestro Router, el cual en muchos casos nos es proveído por nuestra empresa de internet (o ISP).
Para qué sirven los routers
Estos aparatos hacen varias cosas, entre ellas: Gestionan nuestra red local(permiten que nuestras computadoras y dispositivos se conecten entre sí), y nos permiten conectarnos a internet. Cada vez que cargamos una página o bajamos un video, nuestra computadora le está pidiendo a nuestro router que nos ponga en contacto con la máquina que tiene dicha página o video. En este sentido, el router es el punto único de conexión entre nuestras computadoras en nuestra casa y las demás computadoras del mundo conectadas a internet.
Además de esto, es a través del router otras computadoras de internet hablan con las nuestras. Normalmente esto ocurre cuando nuestras computadoras se ponen primero en contacto con una compu de afuera: Si queremos revisar el mail, cuando cargamos la página somos nosotrxs quienes pedimos a la compu de afuera que tiene nuestros mails guardados que nos los mande para que los podamos leer, por ejemplo.
Sin embargo, para poder acceder nuestra computadora desde afuera, necesitaríamos poder indicar de alguna forma al router, que recibiría la conexión, que "derive" el pedido de la computadora de afuera a una computadora en específico, en este caso nuestro servidor. De esta manera, cuando una computadora externa (como, por ejemplo, nuestro celular cuando no estamos conectadxs a la red wifi o local) se conecta a nuestra IP pública, nuestro router la guía a la IP local de nuestra red.
Por lo general, esto no es algo que nuestros routers hagan por defecto: Todas las comunicaciones que tenemos a interent, por defecto, las llevamos a cabo desde nuestra casa hacia afuera por cuestiones de seguridad. Para poder hacer que nuestro router "derive" estas conexiones cuando son originadas desde afuera, tenemos que indicarle que lo haga. Para esto vamos a redirigir conexiones a puertos específicos: Esto se llama hacer "port forwarding".
Al final del camino, esta secuencia de conexiones externas se vería de la siguiente forma:

En la que una computadora de afuera se conecta con nuestro router a un cierto puerto; nuestro router, al detectar que se conectó a ese puerto, redirige la conexión a la IP local de nuestro servidor.
Hay dos cosas, entonces, que nos conviene hacer:
- Configurar nuestro router para exponer un puerto al exterior.
- Configurar nuestro router para que le de una IP local específica a nuestra computadora.
Tutorial: Cómo configurar el router para exponer un puerto
Cuando queremos exponer la conexión de una de nuestras computadoras hacia el exterior, tenemos que configurar nuestro router. Esto, a veces, se puede hacer directamente desde la página de nuestro proveedor de internet, pero muchas veces no es el caso. Por este motivo, este tutorial se va a centrar en cómo hacerlo a través de nuestro router directamente.
Esta sección es una de las más complejas, ya que los distintos modelos de routers y gateways suelen tener sus propias convenciones de nombres. Intento ser lo más exhaustivo que puedo, pero es posible que tengas que googlear un poco sobre tu router y proveedor de internet específico.
Acceder al router
Lo primero que tenemos que hacer es acceder a la página de configuración de nuestro router. Para esto, necesitamos obtener la IP local del router. Por lo general esta puede ser alguna de estas tres:
- 192.168.0.1
- 192.168.1.1
- 10.0.01
Si no te funciona ninguna de ellas, podés usar los siguientes comandos:
En Windows
En el "Símbolo de sistema"(CMD) de widnows, escribí el siguiente comando: ipconfig, y buscando la ip al lado de "Default Gateway"
En MacOS
En la terminal de mac(la podés abrir desde el spotlight), con el comando netstat -nr | grep default
En Linux
En la terminal de Linux, con el comando netstat -r | grep default
Login
Este es un punto potencialmente complejo. Por lo general, la mayoría de los routers nos los instalan con las credenciales por defecto, por lo que cosas como:
| Usuario | Contraseña |
|---|---|
| admin | admin |
| admin | |
| admin |
... suelen funcionar, o incluso no llenar ninguno de los dos campos. Sin embargo, en el mío, por ejemplo, el usuario por defecto era admin, pero la contraseña era cisco. Recomiendo googlear algo como "cuál es la contraseña por defecto del router
Por lo pronto, una vez que tengan esa información, pueden ingresar con su navegador a la página http://
Al ingresar la información de login vamos a poder ingresar al panel de control del router. En esta página, vamos a tener que buscar la sección de "Port Forwarding", que puede figurar de varias formas:
- En secciones como "Forwarding" o "Port Forwarding", a veces en subsecciones como "Virtual servers"
- En secciones como "Applications", o "Applications and gaming", ya que son cosas que se hacen normalmente cuando una persona quiere "hostear" un server de videojuegos.
En el caso de mi router, el menú en el que encontramos esto es el de "Applications & Gaming". El submenú donde encontramos la opción se llama "Port range forwarding". Fíjense que no siempre son exactos los nombres:
En este menú, podemos ver cómo le puedo indicar al router, cuando recibe una conexión externa en un puerto específico(en mi caso un rango de puertos), que la redirija a una IP local en particular.
Al hacer esto, cuando alguien se quiera conectar a nuestra IP, y lo haga en un puerto en particular(todas las conexiones ocurren en un puerto), nuestro router la redirige a una ip, idealmente la de nuestro server. Por otro lado, también nos puede ser útil configurar nuestra computadora para que tenga una IP local específica, ya que si no, por defecto, cada vez que se vuelva a conectar a la red(cuando la reiniciemos, por ejemplo) nuestro router le va a asignar una nueva IP.
Tutorial: Cómo configurar la computadora para tener una IP estática
Este tutorial, por suerte, es mucho más simple, ya que se puede hacer desde la computadora misma: Simplemente tenés que ir a la configuración de tu red(que, por lo general, es la configuración de la conexión a la red que estás conectadx), buscar el menú de IPv4, seleccionar modo Manual, y agregar una ip que esté en el rango de tus ips locales(por ejemplo, si tu router está en 192.168.0.1, cualquier ip entre '192.168.0.2y192.168.0.255` debería estar bien).
Dejo un tutorial de cómo hacerlo en linux, pero por lo general esto es bastante simple. Si vas a googlear cómo hacerlo en linux, te recomiendo googlear cómo hacerlo en tu distribución en específico: Es mejor buscar "how to set local static ip address in ubuntu/mint" que "how to set local static ip address in linux". De todos modos, el proceso es bastante similar en casi todos los sistemas operativos.
Hoja de ruta
Optativo
Conseguir música
- Instalar spotdl
- Instalar slskd
Abrir el servidor
- Nota de abrir el servidor
