Guía técnica · Hackathon

Setup Raspberry Pi 4

De microSD en blanco a servidor PHP + MariaDB sirviendo tu marketplace a toda la red del evento. ~40 minutos siguiendo los 10 pasos.

ApachePHP 8.xMariaDBSSHGitHubLinux
Kit que recibe tu equipo· te lo entregamos en la apertura
🍓
Raspberry Pi 4
💾
microSD 64 GB
🔌
Adaptador de corriente
🧵
2 cables de red
📡
Router 4 puertos

Importante: el router lo usan exclusivamente para la red del evento. Ahí monta el deploy de tu marketplace y desde ahí el jurado lo va a visitar. No conectes la Raspberry a internet abierto durante la demo.

01

Flashea Raspberry Pi OS

10 min

Descarga Raspberry Pi Imager en tu laptop: raspberrypi.com/software.

Inserta tu microSD, abre el Imager y elige:

  • Sistema operativo: Raspberry Pi OS (64-bit). Lite si vas solo CLI, Desktop si quieres GUI.
  • Almacenamiento: tu microSD.

Abre la rueda dentada (⚙️) y configura desde el imager:

  • Usuario y contraseña (NO uses los defaults).
  • Wi-Fi (SSID + password de la red del evento).
  • Activa SSH con autenticación por contraseña.
  • Locale: México / es_MX.
💡 Tip:Apunta el hostname (default: raspberrypi). Lo usarás para conectarte por SSH sin saber la IP.

Escribe la imagen, espera ~5–10 min, y mete la microSD en la Raspberry.

02

Primer arranque y conexión SSH

5 min

Conecta la Raspberry al corriente. Espera ~1 minuto a que arranque y se conecte al Wi-Fi.

Desde tu laptop, abre la terminal y entra por SSH:

shell
ssh tu_usuario@raspberrypi.local

O si conoces la IP (búscala en el router):

shell
ssh tu_usuario@192.168.1.42
⚠️ Cuidado:Si te marca Host key verification failed, borra el known_hosts y reintenta: ssh-keygen -R raspberrypi.local
03

Actualiza el sistema

5 min

Antes de instalar nada, asegúrate de tener los paquetes al día. Hazlo siempre primero: te ahorra dolores de cabeza con dependencias viejas.

shell
sudo apt update
sudo apt upgrade -y
💡 Tip:Si tarda mucho es normal, la Pi es chica. Aprovecha para preparar tu repo en GitHub mientras.
04

Instala Apache (servidor web)

3 min
shell
sudo apt install apache2 -y

Una vez instalado, encuentra tu IP local:

shell
hostname -I

Abre esa IP en el navegador (ej. http://192.168.1.42). Debe aparecer la página default de Apache "Apache2 Debian Default Page".

💡 Tip:Si ves esa página, tu Apache responde a la red del evento. Apunta esa IP: es la URL del deploy que vas a poner en tu evidencia.
05

Instala PHP

3 min
shell
sudo apt install php libapache2-mod-php php-mysql php-mbstring php-curl php-xml php-zip -y

Reinicia Apache para que cargue el módulo de PHP:

shell
sudo systemctl restart apache2

Verifica que PHP se ejecuta:

shell
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Abre http://TU_IP/info.php en el navegador. Debe salir la página de info de PHP.

⚠️ Cuidado:Borra info.php antes de entregar, expone configs: sudo rm /var/www/html/info.php
06

Instala MariaDB (base de datos)

5 min
shell
sudo apt install mariadb-server -y

Asegura la instalación (responde Y a todo, asigna contraseña root):

shell
sudo mysql_secure_installation

Entra al cliente y crea tu base de datos + usuario:

shell
sudo mariadb
dentro de MariaDB
CREATE DATABASE marketplace CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mp_user'@'localhost' IDENTIFIED BY 'TU_PASSWORD_SEGURA';
GRANT ALL PRIVILEGES ON marketplace.* TO 'mp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
⚠️ Cuidado:No uses root en tu app. Crea un usuario propio (mp_user en el ejemplo) con permisos solo sobre marketplace.
07

Sube tu código a /var/www/html

5 min

Apache sirve por default desde /var/www/html. Borra la página de bienvenida y clona tu repo:

shell
sudo rm /var/www/html/index.html
cd /var/www/html
sudo git clone https://github.com/tu-equipo/tu-proyecto.git .
ℹ️ Nota:El punto al final del git clone es importante: clona dentro de la carpeta actual en vez de crear subcarpeta.

Da permisos correctos a Apache:

shell
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Si tu app espera uploads/, crea esa carpeta y dale write:

shell
sudo mkdir -p /var/www/html/uploads
sudo chmod 775 /var/www/html/uploads
08

Conecta PHP con MariaDB

3 min

En tu app PHP, conecta con las credenciales que creaste en el paso 06. Usa variables de entorno o un archivo de config fuera del repo. Nunca hardcodees passwords.

ejemplo: /var/www/html/config.php (NO subir a git)
<?php
$db = new PDO(
    'mysql:host=localhost;dbname=marketplace;charset=utf8mb4',
    'mp_user',
    'TU_PASSWORD_SEGURA',
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
ejemplo: prueba rápida desde la Pi
php -r "new PDO('mysql:host=localhost;dbname=marketplace', 'mp_user', 'TU_PASSWORD_SEGURA'); echo 'OK';"
09

Verifica desde la red del evento

2 min

Asegúrate que tu marketplace responde desde cualquier laptop de la red del evento.

shell
hostname -I

Desde otra laptop conectada a la misma red, abre http://TU_IP_AQUI. Debe cargar tu marketplace.

💡 Tip:Pega esa URL en tu dashboard del equipo (/hackathon/team) como evidencia deploy_url. El jurado va a entrar desde ahí.
10

Debugging: cuando algo se rompe

∞

Los logs son tu mejor amigo. Déjalos corriendo en una segunda terminal SSH:

log de errores Apache
sudo tail -f /var/log/apache2/error.log
log de acceso Apache
sudo tail -f /var/log/apache2/access.log
ver si Apache está arriba
sudo systemctl status apache2
reiniciar después de cambios de config
sudo systemctl restart apache2

Si PHP se queda en blanco, activa errores en pantalla solo durante el dev:

shell
sudo nano /etc/php/*/apache2/php.ini
# busca display_errors = Off → cámbialo a On
sudo systemctl restart apache2
⚠️ Cuidado:Vuelve a poner display_errors = Off antes de la entrega final.
🚀

Tu Raspberry ya es un servidor.

Pega la URL del deploy en el dashboard de tu equipo y empieza a subir evidencias.