Una web para aprender
Esta página recoge las principales funcionalidades que he ido incorporando durante el desarrollo de esta web. Cada apartado representa un objetivo conseguido mientras aprendía nuevas tecnologías.
El proyecto ha crecido hasta incluir también un servidor casero, una base de datos, publicación en Internet, copias de seguridad y mi propia nube personal.
HTML
- ✔ Creación de una web formada por varias páginas.
- ✔ Uso de etiquetas semánticas: header, nav, main, section y footer.
- ✔ Menú de navegación entre las distintas páginas.
- ✔ Formularios con distintos tipos de campos y validación HTML5.
- ✔ Tablas para organizar información.
- ✔ Listas ordenadas y desordenadas.
- ✔ Inserción de imágenes.
- ✔ Enlaces internos y externos.
- ✔ Metadatos para mejorar la información de cada página.
- ✔ Acceso directo a PukBox desde la portada.
CSS
- ✔ Diseño propio para toda la web.
- ✔ Organización de los estilos en un archivo externo.
- ✔ Colores, tipografías y espaciados personalizados.
- ✔ Bordes redondeados y cajas de contenido.
- ✔ Efectos al pasar el ratón sobre enlaces y botones.
- ✔ Diseño adaptable mediante contenedores.
- ✔ Implementación de un modo oscuro.
- ✔ Diseño de un botón de acceso a PukBox integrado en la cabecera de la portada.
- ✔ Personalización visual de la pantalla de acceso de PukBox.
- ✔ Adaptación de PukBox a la misma paleta de colores utilizada en la web principal.
JavaScript
- ✔ Botón interactivo con respuesta al usuario.
- ✔ Contador de pulsaciones.
- ✔ Reloj digital en tiempo real.
- ✔ Fecha actual.
- ✔ Saludo dinámico según la hora.
- ✔ Consulta de la meteorología mediante una API.
- ✔ Cambio entre modo claro y modo oscuro.
- ✔ Guardado de preferencias mediante localStorage.
PHP
- ✔ Conversión de la portada a una página dinámica.
- ✔ Conexión con MariaDB mediante PDO.
- ✔ Recepción de datos enviados desde formularios.
- ✔ Inserción de comentarios en la base de datos.
- ✔ Sistema de moderación de comentarios.
- ✔ Publicación únicamente de comentarios aprobados.
- ✔ Obtención de una cita aleatoria de Terry Pratchett.
- ✔ Envío automático de correos mediante PHPMailer.
MariaDB
- ✔ Creación de la base de datos del proyecto.
- ✔ Tabla de comentarios.
- ✔ Tabla de citas de Terry Pratchett.
- ✔ Tabla de estadísticas.
- ✔ Estados de moderación: pendiente, aprobado y rechazado.
- ✔ Copias de seguridad automáticas de la base de datos.
Servidor
- ✔ Raspberry Pi como servidor web casero.
- ✔ Administración remota mediante SSH.
- ✔ Instalación y configuración de Docker.
- ✔ Migración de los archivos internos de Docker desde la tarjeta SD al almacenamiento USB.
-
✔ Configuración de Docker para utilizar
/mnt/datos/docker-datacomo directorio principal. - ✔ Organización de los servicios mediante Docker Compose.
-
✔ Creación de un archivo
compose.ymlpara documentar y gestionar los contenedores. - ✔ Servidor web Nginx ejecutándose en Docker.
- ✔ Configuración de PHP-FPM.
- ✔ Integración de MariaDB.
- ✔ Configuración de Caddy como proxy inverso.
- ✔ Certificados HTTPS automáticos mediante Caddy.
- ✔ Publicación de la web en Internet.
- ✔ Acceso a la web desde dentro y desde fuera de casa.
-
✔ Dominio dinámico
josutpuk.duckdns.org. - ✔ Actualización automática de los dominios mediante un script de DuckDNS.
- ✔ Protección del panel de administración de comentarios mediante usuario y contraseña.
- ✔ Copias de seguridad automáticas de la web y de MariaDB.
- ✔ Control de versiones mediante Git y GitHub.
-
✔ Despliegue de la web mediante
git pull. -
✔ Preparación del dominio
josutpuk.eu.orgpara su futura publicación.
PukBox
- ✔ Creación de una nube personal mediante File Browser.
- ✔ Almacenamiento de los archivos en el dispositivo USB del servidor.
- ✔ Creación de carpetas para fotografías, documentos, apuntes, vídeos y proyectos.
- ✔ Publicación de PukBox en Internet.
-
✔ Dominio propio:
pukbox.duckdns.org. - ✔ Acceso seguro mediante HTTPS.
- ✔ Configuración de PukBox detrás del proxy inverso de Caddy.
- ✔ Integración del contenedor de PukBox en Docker Compose.
- ✔ Recuperación y actualización del usuario administrador.
- ✔ Cambio del nombre visible de File Browser por PukBox.
- ✔ Creación de un logotipo propio para PukBox.
- ✔ Instalación del logotipo en la pantalla de inicio de sesión.
- ✔ Creación de una carpeta de branding independiente del contenedor.
- ✔ Personalización de la pantalla de acceso mediante CSS.
- ✔ Incorporación del lema: «Mis archivos. Mi servidor. Mis reglas.»
- ✔ Acceso a PukBox desde la esquina superior derecha de la página principal.
Y esto solo es el principio...
Seguiré ampliando esta página conforme vaya aprendiendo nuevas tecnologías e incorporando nuevas funcionalidades a la web y al servidor.
Entre los próximos objetivos están seguir mejorando PukBox, conseguir acceso remoto seguro al servidor y comenzar el desarrollo del Gestor de Biblioteca.