{"id":22463298,"url":"https://github.com/enflujo/servidor-raspberry","last_synced_at":"2025-03-27T14:24:17.797Z","repository":{"id":111606029,"uuid":"362156882","full_name":"enflujo/servidor-raspberry","owner":"enflujo","description":":wrench: Instrucciones para crear un servidor local con Raspberry PI","archived":false,"fork":false,"pushed_at":"2021-04-28T15:27:25.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-01T18:39:18.513Z","etag":null,"topics":["desarrollo-local","docker","servidor-raspberry","ubuntu"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enflujo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-27T15:13:15.000Z","updated_at":"2021-06-28T04:01:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"a6a754d6-02b6-43f7-86e2-3a9ecd488402","html_url":"https://github.com/enflujo/servidor-raspberry","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enflujo%2Fservidor-raspberry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enflujo%2Fservidor-raspberry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enflujo%2Fservidor-raspberry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enflujo%2Fservidor-raspberry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enflujo","download_url":"https://codeload.github.com/enflujo/servidor-raspberry/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245860060,"owners_count":20684272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desarrollo-local","docker","servidor-raspberry","ubuntu"],"created_at":"2024-12-06T09:12:44.527Z","updated_at":"2025-03-27T14:24:17.790Z","avatar_url":"https://github.com/enflujo.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Servidor en Raspberry PI\n\nEstos 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.\n\n## Partes\n\n- Raspberry PI 3 B+.\n- Micro SD 16 Gb Sandisk Clase 10.\n\n## Instalación\n\nDesde un computador (distinto a la Raspberry), instalar [Raspberry Pi Imager](https://www.raspberrypi.org/software/) 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:\n\n[Ubuntu Server 20.04.2 LTS 32-bit](https://ubuntu.com/download/raspberry-pi)\n\nAl terminar el proceso de instalación en la SD, conectarla a la Raspberry PI y prenderla.\n\nEn 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](https://help.ubuntu.com/community/CloudInit#:~:text=cloud%2Dinit%20is%20the%20Ubuntu,Ubuntu%20images%20available%20on%20EC2.). Hay que esperar unos minutos a que corra ese proceso.\n\nAl 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:`.\n\nLas credenciales iniciales son:\n\n```md\nusuario; ubunbtu\npassword: ubuntu\n```\n\nAl poner estas credenciales nos va a pedir que cambiemos la clave.\n\n## WIFI\n\nSiguiendo [este tutorial](https://linuxconfig.org/ubuntu-20-04-connect-to-wifi-from-command-line), esta es la configuración que me sirve:\n\nBuscar el nombre del wifi:\n\n```bash\nls /sys/class/net\n```\n\nEl resultado se ve algo así:\n\n`enp0s25  lo  wlan0` y el wifi en este caso va a ser `wlan0`.\n\nBuscar el archivo del **Netplan**:\n\n```sh\ncd /\n\nls /etc/netplan/ \n# es el archivo 50-cloud-init.yaml o 01-network-manager-all.yaml\n```\n\nEditar el archivo de **Netplan**\n\n```sh\nsudo nano etc/netplan/50-cloud-init.yaml\n```\n\n```sh\nnetwork:\n    ethernets:\n        eth0:\n            dhcp4: true\n            optional: true\n    version: 2\n    wifis:\n        wlan0:\n            optional: true\n            access-points:\n                \"SSID-NAME-HERE\":\n                    password: \"PASSWORD-HERE\"\n            dhcp4: true\n```\n\nGuardar `Ctrl + o`  y salir `Ctrl + x`.\n\nReiniciar **Netplan**:\n\n```sh\nsudo netplan apply\n```\n\nLuego 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:\n\n```sh\nWaiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3539 (unattended-upgr)\n```\n\nHay que esperar!\n\nPodemos revisar que procesos están usando `APT` con el comando:\n\n```sh\nps aux | grep -i apt\n```\n\n## Conexión remota SSH\n\nEL `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:\n\n```sh\nsudo systemctl status ssh\n```\n\nY debe decir en parte del log `active (runing)`.\n\nEn la Raspberry, ver el IP de la placa con:\n\n```sh\nip a\n```\n\nEn 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.\n\nDesde otro computador, usar SSH para conectarse a la Raspberry.\n\n```sh\nssh ubuntu@192.168.0.9\n```\n\n## Configuración NGINX\n\nInstalación\n\n```sh\nsudo apt install nginx\n```\n\nIniciar el servidor\n\n```sh\nsudo /etc/init.d/nginx start\n```\n\nEsto 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!\".\n\n## Instalar Docker\n\nActualizar el sistema:\n\n```sh\nsudo apt-get update \u0026\u0026 sudo apt-get upgrade\n```\n\nInstalar Docker y Docker Compose:\n\n```sh\nsudo apt install docker.io docker-compose\n```\n\nIniciar Docker y activar que se inicie automáticamente al reiniciar la Raspberry.\n\n```sh\nsudo systemctl enable --now docker\n```\n\nComprobar instalación\n\n```sh\nsudo docker version\n```\n\n```sh\nsudo docker-compose version\n```\n\n## Conexión entre computador y servidor\n\n[Crear una conexión sin clave](https://help.dreamhost.com/hc/en-us/articles/216499537-How-to-configure-passwordless-login-in-Mac-OS-X-and-Linux)\n\n```sh\nssh-keygen -t rsa -b 4096\n```\n\nDesde Mac: \n\n```sh\ncat ~/.ssh/id_rsa.pub | ssh ubuntu@192.168.0.9 \"cat \u003e\u003e ~/.ssh/authorized_keys\"\n```\n\n## Contexto\n\nPrimero quitamos la necesidad de usar sudo para comandos docker.\n\nDesde el servidor:\n\n```sh\n# En este caso el usuario es ubuntu pero si es otro usuario hay que cambiar el último parametro del comando.\nsudo usermod -aG docker ubuntu\n```\n\n```sh\nnewgrp docker\n```\n\nCon las opciones de contexto en docker podemos correr comandos desde nuestro computador en el servidor.\n\n```sh\ndocker context create rpi --docker host=ssh://ubuntu@192.168.0.9\n```\n\nPodemos comprobar la conexión viendo la versión en el servidor:\n\n```sh\ndocker --context rpi version\n```\n\n## Iniciar contenedor en servidor\n\n```sh\ndocker-compose --context rpi up -d\n```\n\nPor ejemplo, para iniciar típicamente los contenedores de producción:\n\n```sh\ndocker-compose --context rpi -f docker-compose.yml -f docker-produccion.yml up\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenflujo%2Fservidor-raspberry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenflujo%2Fservidor-raspberry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenflujo%2Fservidor-raspberry/lists"}