De microSD en blanco a servidor PHP + MariaDB sirviendo tu marketplace a toda la red del evento. ~40 minutos siguiendo los 10 pasos.
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.
Descarga Raspberry Pi Imager en tu laptop: raspberrypi.com/software.
Inserta tu microSD, abre el Imager y elige:
Abre la rueda dentada (⚙️) y configura desde el imager:
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.
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:
ssh tu_usuario@raspberrypi.local
O si conoces la IP (búscala en el router):
ssh tu_usuario@192.168.1.42
Host key verification failed, borra el known_hosts y reintenta: ssh-keygen -R raspberrypi.localAntes de instalar nada, asegúrate de tener los paquetes al día. Hazlo siempre primero: te ahorra dolores de cabeza con dependencias viejas.
sudo apt update sudo apt upgrade -y
sudo apt install apache2 -y
Una vez instalado, encuentra tu IP local:
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".
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:
sudo systemctl restart apache2
Verifica que PHP se ejecuta:
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.
info.php antes de entregar, expone configs: sudo rm /var/www/html/info.phpsudo apt install mariadb-server -y
Asegura la instalación (responde Y a todo, asigna contraseña root):
sudo mysql_secure_installation
Entra al cliente y crea tu base de datos + usuario:
sudo 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;
root en tu app. Crea un usuario propio (mp_user en el ejemplo) con permisos solo sobre marketplace.Apache sirve por default desde /var/www/html. Borra la página de bienvenida y clona tu repo:
sudo rm /var/www/html/index.html cd /var/www/html sudo git clone https://github.com/tu-equipo/tu-proyecto.git .
git clone es importante: clona dentro de la carpeta actual en vez de crear subcarpeta.Da permisos correctos a Apache:
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:
sudo mkdir -p /var/www/html/uploads sudo chmod 775 /var/www/html/uploads
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.
<?php
$db = new PDO(
'mysql:host=localhost;dbname=marketplace;charset=utf8mb4',
'mp_user',
'TU_PASSWORD_SEGURA',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);php -r "new PDO('mysql:host=localhost;dbname=marketplace', 'mp_user', 'TU_PASSWORD_SEGURA'); echo 'OK';"Asegúrate que tu marketplace responde desde cualquier laptop de la red del evento.
hostname -I
Desde otra laptop conectada a la misma red, abre http://TU_IP_AQUI. Debe cargar tu marketplace.
deploy_url. El jurado va a entrar desde ahí.Los logs son tu mejor amigo. Déjalos corriendo en una segunda terminal SSH:
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log
sudo systemctl status apache2
sudo systemctl restart apache2
Si PHP se queda en blanco, activa errores en pantalla solo durante el dev:
sudo nano /etc/php/*/apache2/php.ini # busca display_errors = Off → cámbialo a On sudo systemctl restart apache2
display_errors = Off antes de la entrega final.Pega la URL del deploy en el dashboard de tu equipo y empieza a subir evidencias.