Coder Social home page Coder Social logo

servidor-raspberry's Introduction

Servidor en Raspberry PI

Estos son los pasos para configurar una Raspberry PI como servidor local de tal manera que se puedan probar aplicaciones y flujos de trabajo en un ambiente enteramente local que se parece al flujo final usando un servidor VPS que tiene instalado Ubuntu y NGINX.

Partes

  • Raspberry PI 3 B+.
  • Micro SD 16 Gb Sandisk Clase 10.

Instalación

Desde un computador (distinto a la Raspberry), instalar Raspberry Pi Imager para instalar en la SD el sistema operativo. Conectar la SD al computador y seguir los pasos en Raspberry Pi Imager para instalar el OS:

Ubuntu Server 20.04.2 LTS 32-bit

Al terminar el proceso de instalación en la SD, conectarla a la Raspberry PI y prenderla.

En la primera iniciada se va a detener en ubuntu login: _ pero hay que esperar un momento y se va a iniciar otro proceso de configuración automáticamente llamado Cloud-init. Hay que esperar unos minutos a que corra ese proceso.

Al principio pensé que se quedaba estancado luego de que salía Cloud-init v. 20.4.1-Oubuntu1~20.04.1 finished at ... pero al presionar Enter en el teclado pasó al Ubuntu login:.

Las credenciales iniciales son:

usuario; ubunbtu
password: ubuntu

Al poner estas credenciales nos va a pedir que cambiemos la clave.

WIFI

Siguiendo este tutorial, esta es la configuración que me sirve:

Buscar el nombre del wifi:

ls /sys/class/net

El resultado se ve algo así:

enp0s25 lo wlan0 y el wifi en este caso va a ser wlan0.

Buscar el archivo del Netplan:

cd /

ls /etc/netplan/ 
# es el archivo 50-cloud-init.yaml o 01-network-manager-all.yaml

Editar el archivo de Netplan

sudo nano etc/netplan/50-cloud-init.yaml
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    wifis:
        wlan0:
            optional: true
            access-points:
                "SSID-NAME-HERE":
                    password: "PASSWORD-HERE"
            dhcp4: true

Guardar Ctrl + o y salir Ctrl + x.

Reiniciar Netplan:

sudo netplan apply

Luego de configurar el WIFI, Ubuntu va a realizar una serie de actualizaciones e instalaciones con APT. Esto toma un tiempo y si queremos instalar cosas nos va a dar un error parecido a:

Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3539 (unattended-upgr)

Hay que esperar!

Podemos revisar que procesos están usando APT con el comando:

ps aux | grep -i apt

Conexión remota SSH

EL Cloud-init se encargó de instalar ssh entonces podemos conectarnos al servidor desde otro computador. Para comprobar que el ssh este activado podemos correr el comando:

sudo systemctl status ssh

Y debe decir en parte del log active (runing).

En la Raspberry, ver el IP de la placa con:

ip a

En este caso esta conectado al wifi con wlan0 (que configuramos antes en la sección WIFI) y el ip debe estar en la sección inet 192.168.0.9 - Este numero es diferente en cada red.

Desde otro computador, usar SSH para conectarse a la Raspberry.

Configuración NGINX

Instalación

sudo apt install nginx

Iniciar el servidor

sudo /etc/init.d/nginx start

Esto debería poner una página web en la IP de la Raspberry, entonces si vamos al explorador a la url: http://192.168.0.9/ debería salir una página que dice "Welcome to nginx!".

Instalar Docker

Actualizar el sistema:

sudo apt-get update && sudo apt-get upgrade

Instalar Docker y Docker Compose:

sudo apt install docker.io docker-compose

Iniciar Docker y activar que se inicie automáticamente al reiniciar la Raspberry.

sudo systemctl enable --now docker

Comprobar instalación

sudo docker version
sudo docker-compose version

Conexión entre computador y servidor

Crear una conexión sin clave

ssh-keygen -t rsa -b 4096

Desde Mac:

cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"

Contexto

Primero quitamos la necesidad de usar sudo para comandos docker.

Desde el servidor:

# En este caso el usuario es ubuntu pero si es otro usuario hay que cambiar el último parametro del comando.
sudo usermod -aG docker ubuntu
newgrp docker

Con las opciones de contexto en docker podemos correr comandos desde nuestro computador en el servidor.

docker context create rpi --docker host=ssh://[email protected]

Podemos comprobar la conexión viendo la versión en el servidor:

docker --context rpi version

Iniciar contenedor en servidor

docker-compose --context rpi up -d

Por ejemplo, para iniciar típicamente los contenedores de producción:

docker-compose --context rpi -f docker-compose.yml -f docker-produccion.yml up

servidor-raspberry's People

Contributors

1cgonza avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.