Mostrando las entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Linux. Mostrar todas las entradas

jueves, 8 de enero de 2026

Reviviendo el Blog (y mis Fotos): La Guía Definitiva de Immich en Proxmox + OMV (Arquitectura "A prueba de Balas")

 

¡Hola, mundo! (Otra vez)

(Sopla el polvo del teclado... tose un poco).

Bueno, bueno. Si miramos el calendario, mi última publicación por aquí fue allá por Enero de 2024. Ha llovido bastante, la IA ha conquistado el mundo (hola, Gemini), y yo he estado hibernando... o mejor dicho, cacharreando.

Quiero arrancar este 2026 rompiendo la maldición del blog abandonado. Y qué mejor forma de hacerlo que compartiendo las batallas que he tenido montando mi propio HomeLab. Porque seamos honestos: no hay nada más gratificante (y frustrante a la vez) que ser tu propio SysAdmin.

Hoy vamos a hablar de Immich, esa maravilla para gestionar fotos que le da mil vueltas a Google Photos. Pero no vamos a hacer una instalación "siguiente-siguiente". No, señor. Vamos a montar una arquitectura robusta, limpia y recuperable.

El Objetivo: La Arquitectura "Plug & Play"

Mi obsesión era simple: Separar el cerebro de la memoria.

Quiero que Immich corra en un contenedor ligero (LXC) en Proxmox, pero que mis gigas y gigas de fotos vivan felices y seguras en mi NAS (OpenMediaVault).



¿Por qué? Porque si mañana explota mi contenedor de Immich (o si decido borrarlo porque me levanté con ganas de caos), quiero poder reinstalarlo en 5 minutos y que todas mis fotos sigan intactas en el NAS, esperando ser leídas. Sin duplicados. Sin dramas.

¿Suena bien? Pues agarra tu café, abre la terminal y vamos al lío.


📡 Fase 1: El Búnker (OpenMediaVault)

Lo primero es preparar el terreno en nuestro NAS. Necesitamos compartir la carpeta de fotos vía NFS, pero con un "hechizo" especial para que Docker no llore por los permisos.

  1. Identifica a tu dueño: Entra por SSH a tu OMV y averigua el UID/GID de tu usuario (el dueño de los datos).

    id tu_usuario
    # Quédate con estos números. Ej: uid=1000 gid=100
  2. La configuración NFS Mágica: Vete a Servicios > NFS > Recursos Compartidos. Crea uno apuntando a tu disco de datos. En el campo de Opciones, borra lo que haya y pega esto (es la clave del éxito):

    rw,subtree_check,insecure,all_squash,anonuid=1000,anongid=100

    💡 ¿Qué acabamos de hacer? Con all_squash, le decimos al NAS: "No me importa quién venga a escribir aquí (aunque sea un contenedor extraño), trátalo como si fuera el usuario 1000". ¡Adiós errores de permisos!


🌉 Fase 2: El Puente (Nodo Proxmox)

Aquí viene el truco pro. En lugar de luchar montando el NFS dentro del contenedor (que suele dar guerra en contenedores "Unprivileged"), lo montaremos en el "metal" (el Host Proxmox) y se lo pasaremos al contenedor.

⚠️ OJO: Estos comandos van en la consola de tu Nodo Proxmox (ej. aurora), no en el contenedor.

  1. Crea el punto de montaje:

    mkdir -p /mnt/pve/pinas-immich
  2. Edita el fstab para que sea persistente:

    nano /etc/fstab

    Agrega esto al final (usa la IP de tu OMV):

    100.100.100.45:/export/pinas-immich /mnt/pve/pinas-immich nfs defaults 0 0
  3. Monta y reza (bueno, mejor verifica):

    mount -a
  4. 🧪 La Prueba de Fuego: Vamos a ver si realmente podemos escribir.

    touch /mnt/pve/pinas-immich/test_host.txt && echo "¡ÉXITO!"
    rm /mnt/pve/pinas-immich/test_host.txt
    

    Si salió "¡ÉXITO!", seguimos. Si no, revisa la Fase 1.


📦 Fase 3: El Cerebro (LXC Container)

Vamos a crear el contenedor donde vivirá Immich.

  • Template: Debian 12 (Bookworm) - Lo clásico nunca falla.

  • Recursos: Dale cariño. 4 Cores y 4GB RAM mínimo (Immich usa Machine Learning, tiene hambre).

  • Unprivileged: SÍ. (Seguridad ante todo).

El Truco del Almendruco (Bind Mount): Antes de encender el contenedor, ejecuta esto en la consola del Nodo Proxmox (cambia 10X por el ID de tu nuevo contenedor):

pct set 10X -mp0 /mnt/pve/pinas-immich,mp=/mnt/pinas-immich

(Traducción: "Oye contenedor, la carpeta que tengo aquí, hazla aparecer allá adentro").

Ahora sí, inicia el contenedor, entra a su consola y haz otra prueba de fuego con touch para asegurarte de que heredó los poderes de escritura.


🧹 Fase 4: Limpieza Saiyajin (Staging)

Si vienes de una instalación anterior fallida o tienes una carpeta con fotos desordenadas, NO las importes directamente. Immich puede entrar en un bucle infinito de "leo foto, copio foto, leo la copia, copio la copia...".

Vamos a curarnos en salud dentro del LXC:

  1. Borra basura vieja: (Solo si tenías una instalación previa)

    cd /mnt/pinas-immich
    rm -rf thumbs/* encoded-video/* upload/* profile/*
    
  2. Elimina duplicados: (Seamos eficientes)

    apt update && apt install fdupes -y
    fdupes -r -d -N ./library
    
  3. La Zona de Paso (CRÍTICO): Saca todo de la carpeta library y ponlo en una carpeta temporal. Immich leerá de aquí y organizará en el destino final.

    mkdir -p import_source
    mv library/* import_source/
    # Tu carpeta 'library' debe quedar vacía como mi cuenta bancaria.
    

🐳 Fase 5: Docker e Immich

Ya tenemos la infraestructura. Ahora instalemos el software.

  1. Instala Docker:

    curl -fsSL https://get.docker.com -o get-docker.sh
    sh get-docker.sh
    
  2. Prepara Immich:

    mkdir -p /opt/immich && cd /opt/immich
    wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
    
  3. Edita el .env:

    nano .env

    Ajusta esto:

    UPLOAD_LOCATION=/mnt/pinas-immich
    DB_DATA_LOCATION=./postgres
    
  4. ¡Despegue! 🚀

    docker compose up -d

⚙️ Fase 6: Configuración del Storage Template

Antes de importar ni una sola foto, entra a la web (http://IP-LXC:2283), crea tu usuario admin y configura CÓMO quieres que se guarden los archivos.

Ve a Administration > Settings > Storage Template.

  • Enabled: ON

  • Template:

    {{filetype}}/{{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}

Nota importante: Usar {{filename}} al final asegura que Immich respete el nombre original de tu archivo y no le pegue un ID aleatorio feo al principio.


📥 Fase 7: La Gran Importación (CLI)

El momento de la verdad. Vamos a decirle a Immich: "Toma estos archivos desordenados de import_source y déjamelos bonitos en library".

Genera una API Key en tus ajustes de usuario y lanza esto en la terminal del LXC:

docker run -it --rm \
  -v "/mnt/pinas-immich:/import" \
  --network host \
  ghcr.io/immich-app/immich-cli:latest \
  upload \
  --key TU_API_KEY \
  --url http://localhost:2283/api \
  --recursive \
  /import/import_source

Si todo sale bien, verás una lluvia de texto verde confirmando la subida. Immich moverá tus fotos, las organizará por fecha y tu carpeta library quedará inmaculada.


Conclusión

Y ahí lo tienen. Una instalación de Immich que sobrevive a apocalipsis nucleares (o al menos a que borres el contenedor sin querer).

Espero que esta guía les sirva para perderle el miedo a mezclar Proxmox, LXC y NFS. Yo por ahora me despido, prometo no tardar otros dos años en volver a escribir... o quizás sí, depende de cuántos contenedores rompa la próxima semana.

Finalmente no olvides aplicar la estrategia de backups 3-2-1

¡Nos leemos en los comentarios! 👋

viernes, 17 de noviembre de 2023

Configurar Wifi en Raspberry Pi 4/3 desde Tarjeta de Memoria SD

Hola nuevamente, esta es una entrada rápida que quiero compartir. Lo hago porque forma parte de un proyecto personal que estoy desarrollando en el cual hago uso de una Raspberry Pi 3 y una Raspberry Pi 4.

Actualmente, ya tengo las Raspberry Pi 4/3 configuradas con una versión de Linux Ubuntu Server 22.04.2 LTS (64 bits). Pueden consultar el paso a paso de este proceso en mi entrada anterior:


Después de seguir el proceso de instalación, es probable que necesitemos usar otra red WiFi. En mi caso, no quiero conectar un monitor ni un teclado a la Raspberry Pi para realizar este cambio, ya sea porque no tengo acceso fácilmente a un teclado y monitor o porque prefiero seguir utilizando el acceso remoto SSH y modificar los datos de acceso a la red WiFi directamente en el archivo de configuración que se encuentra en la tarjeta de memoria SD desde otro PC.


Aquí es donde voy a explicar rápidamente y de forma sencilla cómo modificar los datos de acceso a la red WiFi de nuestra Raspberry Pi, editando directamente el archivo de configuración que se encuentra en la tarjeta de memoria SD desde otro PC.



Prerrequisitos:

  • Raspberry Pi 4/3
  • Linux Ubuntu Server 22.04.2 LTS (64-bit)


Paso 0: Conectar Tarjeta de Memoria SD al PC

En este paso, debemos conectar la tarjeta de memoria SD que usamos en nuestra Raspberry Pi a un PC mediante un adaptador USB:

Adaptador USB de Tarjeta SD


Paso 1: Ubicar el directorio /etc/netplan

Una vez conectada la tarjeta de memoria SD a nuestro PC mediante un adaptador USB, debemos ubicar, a través del explorador de archivos, el directorio /etc/netplan que se encuentra en la partición writable de la tarjeta de memoria SD:


Directorio /etc/netplan



Paso 2: Modificar el archivo 50-cloud-init.yaml

En este paso, debemos modificar el archivo 50-cloud-init.yaml con algún editor de texto. Ten en cuenta que para poder modificarlo, debemos hacerlo como usuario root.

En este archivo, debemos reemplazar su contenido con el siguiente texto:

network:
    version: 2
    wifis:
        renderer: networkd
        wlan0:
            access-points:
                WIFI_NAME:
                    password: WIFI_PASSWORD
            dhcp4: true
            optional: true

Para cada caso específico, debemos cambiar las variables WIFI_NAME y WIFI_PASSWORD por los valores correspondientes a cada caso. Por ejemplo:

network:
    version: 2
    wifis:
        renderer: networkd
        wlan0:
            access-points:
                Mi Wifi:
                    password: super clave wifi
            dhcp4: true
            optional: true

Guardamos los cambios en el archivo y podemos desconectar la tarjeta de memoria SD de nuestro PC.


Paso 3: Probar Acceso WiFi

En este paso, solo nos queda volver a conectar la tarjeta de memoria SD a nuestra Raspberry Pi 4/3 y probar que se conecta nuevamente a la nueva red WiFi que acabamos de configurar.

Esta prueba la podemos hacer fácilmente realizando un escaneo de los dispositivos conectados a la red WiFi y ejecutando un ping sobre la IP asignada a nuestra Raspberry Pi.

Finalmente, nos podemos volver a conectar mediante SSH a nuestra Raspberry Pi.




Eso es todo. El propósito de esta entrada es dejar documentado de forma rápida y sencilla el proceso de configurar el acceso a la red WiFi en una Raspberry Pi, modificando el archivo de configuración directamente desde la tarjeta de memoria SD desde otro PC.



jueves, 16 de noviembre de 2023

Instalar Servidor FTP en Raspberry Pi 4 - vsftpd

En esta entrada quiero registra el paso a paso del proceso de instalar y configurar un Servidor FTP en una Raspberry Pi 4, esto lo hago porque hace parte de un proyecto personal que estoy desarrollando en donde requiero de un servidor FTP para cargar archivos.

Actualmente ya tengo una Raspberry Pi 4 configurada con una versión de Linux Ubuntu Server 22.04.2 LTS (64-bit), pueden consultar el paso a paso de este proceso en mi anterior entrada:


Luego de explorar documentación y otros blogs en internet, finalmente pude realizar una instalación y configuración exitosa en mi Raspberry Pi 4, en los primeros intentos estaba teniendo algunos problemas al momento de conectarme usando un Cliente FTP como FileZilla, por alguna razón, la autenticación era exitosa pero la conexión se quedaba haciendo múltiples intentos en listar el directorio del usuario autenticado, al final del proceso encontré la solución solo agregando un atributo en el archivo de configuración del Servidor vsftpd.

El objetivo de esta entrada es documentar el proceso de una configuración básica para un entorno de desarrollo, existen configuraciones adicionales que hay que agregar como una capa extra de seguridad en el caso de hacer una instalación y configuración en un entorno de producción.

No voy entrar en detalles sobre qué es FTP o SFTP, tampoco quiero entrar en detalles sobre los protocolos involucrados o capas de seguridad de encriptación de datos SSL. Creo que para obtener información detallada existe la documentación oficial, y no es relevante para el objetivo de esta entrada. Quiero compartir una guía rápida y práctica, lista para usar.

Cabe mencionar que los pasos a seguir en esta entrada también se pueden aplicar a una Raspberry Pi 3 y, en general, a una distribución Linux Ubuntu Server 22.04.2 LTS (64 bits).


Prerrequisitos:

  • Raspberry Pi 4/3
  • Linux Ubuntu Server 22.04.2 LTS (64-bit)


Paso 0: Actualizar Paquetes de Ubuntu Server

sudo apt update
sudo apt upgrade


Paso 1:  Instalar vsftpd

sudo apt install vsftpd

Cuando la instalación termine, lo primero que debemos hacer en el siguiente paso es realizar una copia del archivo de configuración de vsftpd antes de continuar con la configuración en los siguientes pasos.


Paso 2: Backup de vsftpd.conf

sudo cp /etc/vsftpd.conf /home/pi/Backup/vsftpd.conf


Paso 3: Habilitar el Firewall

Aquí debemos habilitar el Firewall y permitir las conexiones a los puertos correspondientes que usa el protocolo FTP, en este caso, las conexiones entrantes en los puertos 20, 21 y 990.

  • Verficar el estado del Firewall:

sudo ufw status


Nos debe mostrar algo similar a esto:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

  • Abrir los puertos:

sudo ufw allow 20,21,990/tcp

  • Abrir puertos en un rago para conexiones pasivas:

sudo ufw allow 40000:50000/tcp

  • Verficar el estado del Firewall:

sudo ufw status


Nos debe mostrar algo similar a esto:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
20,21,990/tcp              ALLOW       Anywhere
40000:50000/tcp            ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
20,21,990/tcp (v6)         ALLOW       Anywhere (v6)
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)


Paso 4: Crear Usuario FTP

En este paso, vamos a crear un usuario dedicado únicamente para tener acceso mediante FTP al servidor. Esa será la única función de este usuario, con un directorio dedicado y solo con acceso a dicho directorio. Estará aislado del resto del sistema.

  • Crear Usuario:

sudo adduser ftpi

  • Crear Directorio Aislado:

sudo mkdir /home/ftpi/public

  • Modificar el propietario del directorio aislado:

sudo chown nobody:nogroup /home/ftpi/public

  • Remover permisos de escritura sobre el directorio aislado:

sudo chmod a-w /home/ftpi/public

  • Verificar permisos:

sudo ls -la /home/ftpi/public


Nos debe mostrar algo similar a esto:

Output
total 8
dr-xr-xr-x 2 nobody nogroup 4096 Nov 15 17:20 .
drwxr-x--- 3 ftpi ftpi  4096 Nov 15 17:20 ..

  • Crear un directorio dedicado a la carga de archivos:

sudo mkdir /home/ftpi/public/uploads

  • Asignar como propietario al usuario:

sudo chown ftpi:ftpi /home/ftpi/public/uploads

  • Verificar permisos:

sudo ls -la /home/ftpi/public


Nos debe mostrar algo similar a esto:

Output
total 12
dr-xr-xr-x 3 nobody nogroup 4096 Nov 15 17:20 .
drwxr-x--- 3 ftpi ftpi  4096 Nov 15 17:20 ..
drwxr-xr-x 2 ftpi ftpi  4096 Sep 14 20:30 uploads

  • Finalmente creamos un archivo de prueba en el directorio uploads:

echo "vsftpd test file" | sudo tee /home/ftpi/public/uploads/test.txt


Paso 5: Configurar Acceso FTP

Usar cualquier editor de texto, en este caso vamos a usar nano:

sudo nano /etc/vsftpd.conf

Cuando tenemos acceso al archivo de configuración desde nano, debemos buscar y modificar las siguientes variables, en caso de no existir alguna variable se crea como nueva al final del archivo:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/public
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

  • Finalmente agregar el usuario a: /etc/vsftpd.userlist

echo "ftpi" | sudo tee -a /etc/vsftpd.userlist

  • Verificar el archivo /etc/vsftpd.userlist

cat /etc/vsftpd.userlist


Paso 6: Inhabilitar Acceso al Shell

Este paso es opcional si queremos bloquear el acceso al shell del usuario, de esta forma podemos bloquear el acceso al shell cuando el usuario se conecta por ssh, es una medida básica y simple de inhabilitar el acceso al shell de un usuario, mas no es la forma más segura.

  • Crear un archivo script:

sudo nano /bin/ftponly

#!/bin/sh
echo "This account is limited to FTP access only."

  • Agregar permisos de ejecucion al archivo:

sudo chmod a+x /bin/ftponly

  • Abrir la lista de shell's validas:

sudo nano /etc/shells

  • Agregar al final del archivo y guardar:

/bin/ftponly

  • Actualizar el Shell del usuario:

sudo usermod ftpi -s /bin/ftponly

  • Ahora cuando el usuario intente hacer un login mediante ssh:

ssh ftpi@your_server_ip

Obtendra el siguiente mensaje:

This account is limited to FTP access only.
Connection to 203.0.113.0 closed.


Paso 7: Probar el Acceso FTP con FileZilla

  • Finalmente solo queda reiniciar el servicio vsftpd:

sudo service vsftpd restart

  • Y desde una maquina externa probar el acceso FTP a nuestra Raspberry Pi 4 usando el programa FileZilla:

Usando los datos de acceso del Usuario FTP nos conectamos a nuestra Raspberry Pi 4:

Acceso FTP FileZilla

Cuando la conexión sea exitosa podemos ver en el panel del sitio remoto el directorio de uploads donde podemos cargar y descargar archivos:

Sitio Remoto FTP

Dentro del directorio uploads podemos ver que existe el archivo de prueba que habíamos creado previamente durante la configuración:

Archivo de prueba FTP




Listo, con esto terminamos y verificamos que nuestro Servicio FTP está funcionando y listo para usar.


Para concluir, quiero mencionar nuevamente que el objetivo de esta guía es realizar una instalación básica en un entorno de desarrollo. Hay otras configuraciones adicionales que se deben considerar, especialmente en temas de seguridad, cuando se implementa en un entorno de producción. Sin embargo, para un servidor básico en casa o en un entorno de desarrollo donde la seguridad no es la prioridad principal, esta solución es adecuada.



Esto es todo lo que quería compartir en esta entrada. Espero poder publicar una próxima entrada lo más pronto posible.



lunes, 31 de julio de 2023

Instalar Ubuntu Server en Raspberry Pi 4

Hola, creo que publicando esta nueva entrada he cumplido con la meta que me propuse al final de la entrada anterior: Ensamble e instalación de Raspberry Pi 4.

Esta entrada hace parte de la serie de entradas para documentar el proceso, desde el ensamble, la instalación y la configuración de la Raspberry Pi 4 como servidor, hasta el despliegue de una aplicación backend para exponer un servicio de API REST que podré consumir desde el mundo exterior haciendo uso del servicio Cloudflare Tunnel.

En esta entrada, a diferencia de la entrada anterior, voy a documentar un paso a paso usando capturas de pantalla del proceso de Instalar Ubuntu Server en Raspberry Pi 4. Uno de los objetivos con esta serie de entradas para documentar los procesos es hacerlo de la forma más simple posible y de forma concreta, sin profundizar en detalles técnicos, haciendo una documentación lo más simple posible que pueda ser fácilmente interpretada.


Requerimientos:
  • Tarjeta de memoria SD Clase 10 A1, con lector de memoria SD a USB

En la construcción del paso a paso de esta entrada, estoy usando como sistema operativo host un Linux Ubuntu Desktop 22.04.2 LTS.



Paso 1:

Desde la aplicación Raspberry Pi Imager, debemos seleccionar la opción "Choose OS". Aquí vamos a tener múltiples opciones, y para el caso específico de esta serie de entradas, vamos a seleccionar la opción "Other general-purpose OS".



Paso 2:

En la siguiente lista de opciones, debemos seleccionar "Ubuntu" como sistema operativo de propósito general.



Paso 3:

Para el propósito de esta guía, debemos seleccionar como sistema operativo "Linux Ubuntu Server 22.04.2 LTS (64-bit)", el cual tiene soporte extendido para Raspberry Pi 4.



Paso 4:

Debemos conectar previamente nuestra tarjeta de memoria SD con lector de memoria SD a USB a nuestro equipo y seleccionar la opción "Choose Storage". Se recomienda el uso de una tarjeta de memoria SD Clase 10 A1 de 32GB o superior.



Paso 5:

En la lista de dispositivos de almacenamiento, debemos seleccionar el correspondiente a nuestra tarjeta SD. En tu caso, que tienes conectada una tarjeta SD de 128GB, selecciona esa opción.



Paso 6:

Seleccionar "Configuración avanzada" en la opción del icono con forma de engranaje es una de las ventajas de usar la herramienta Raspberry Pi Imager.

A través de esta opción, podremos ajustar ciertos parámetros del sistema operativo antes de su instalación. La mayor ventaja es que no necesitaremos un monitor externo para conectar la Raspberry Pi 4 y hacer los ajustes necesarios. En cambio, podremos acceder a nuestra Raspberry Pi 4, que estará conectada a la red local, desde un cliente SSH en algún equipo externo que también esté conectado a la misma red local.







Paso 7:

Finalmente, seleccionamos el botón "Write" para iniciar el proceso de instalación. Este proceso puede llevar un tiempo, ya que primero descarga la imagen del sistema operativo y luego la instala en la tarjeta SD con la configuración previamente definida.




Listo, eso es todo, al final del proceso podemos extraer la tarjeta SD de nuestro equipo para posteriormente instalar la tarjeta SD en nuestra Raspberry Pi 4.

En la próxima entrada voy a documentar los primeros pasos, en el proceso de configuración inicial, una vez nos conectemos mediante un cliente SSH a nuestra Raspberry Pi 4.



Espero publicar mi próxima entrada lo más pronto posible y no hasta el próximo año.

martes, 18 de julio de 2023

Ensamble e instalación de Raspberry Pi 4

Año 2023, diez años después de haber publicado mi primera entrada en el blog de Idea Falaz y 2 años después de haber publicado mi última entrada en el blog, voy a dedicar un poco de mi tiempo para escribir una serie de entradas relacionadas con el uso de la Raspberry Pi 4.

Mi objetivo al escribir esta serie de entradas consiste en documentar el proceso, desde el ensamble, la instalación y la configuración de la Raspberry Pi 4 como servidor, hasta el despliegue de una aplicación backend para exponer un servicio de API REST que podré consumir desde el mundo exterior haciendo uso del servicio Cloudflare Tunnel.


Requerimientos:

Estos son todos los componentes mínimos necesarios para poder ensamblar e instalar una Raspberry Pi 4. Para el objetivo de esta guía, estoy utilizando una Raspberry Pi 4 de 8 GB de RAM y una tarjeta SD de 128 GB.

  • Raspberry Pi 4


  • Acrylic Case


  • Disipadores


  • Adaptador de Corriente de 5 voltios a 3 Amperes, tipo C


  • Tarjeta de memoria SD con lector de memoria SD a USB


  • Cable HDMI a Micro HDMI



El proceso de ensamblaje es bastante sencillo, y para documentar el proceso, he creado un video paso a paso:




Mi recomendación es adquirir un kit que incluye todos los componentes requeridos. En mi caso, yo adquirí uno desde la tienda de AliExpress:



Listo, esta entrada es bastante corta y el video resume todo el proceso paso a paso de lo que se debe hacer para ensamblar una Raspberry Pi 4.

En las siguientes entradas, publicaré información sobre la instalación y la configuración de la Raspberry Pi 4 como servidor, utilizando una imagen de Linux Ubuntu Server. Luego, llegaré hasta el despliegue de una aplicación backend para exponer un servicio de API REST que podré consumir desde el mundo exterior, haciendo uso del servicio Cloudflare Tunnel.

Espero publicar mi próxima entrada lo más pronto posible y no hasta el próximo año.

Update:


👇

viernes, 21 de junio de 2019

Instalar y Configurar Laravel PHP Framework - Mi Primer Proyecto


Laravel
Laravel


En esta entrada quiero compartir parte de mi proceso de aprendizaje en el mundo de Laravel, esto es sólo una guía de iniciación de primeros pasos para instalar y configurar Laravel en una máquina con Ubuntu Linux 16.04 LTS Xenial Xerus y así poder iniciar nuestro Primer Proyecto.



Requisitos:



La estrategia que voy a compartir aquí es la que en mi opinión se adapta bien para el desarrollo de proyectos en Laravel dentro de un equipo de desarrollo que hace uso de sistemas de control de versiones como Git, ya sea en GitHub o en GitLab. Esto permite que todo el equipo de desarrollo tengan acceso a la misma base de código fuente del proyecto Laravel con fácil configuración del entorno donde se ejecuta pensando a futuro en realizar configuraciones para Integración Continua y Despliegue Continuo.



Paso1 - Homestead Vagrant Box:

Cumpliendo con los requisitos anteriormente mencionados procedemos a instalar el Homestead Vagrant Box, esto nos permite tener una Maquina Virtual preconfigurada con todos los requerimientos para ejecutar aplicaciones en Laravel, ademas podemos configurar facilmente esta maquina virtual mediante el uso de archivos YAML.

promt$ vagrant box add laravel/homestead

Verificar que el vagrant box ha sido instalado:

promt$ vagrant box list
laravel/homestead   (virtualbox, 8.0.0-beta)


Paso 2 - Instalar CLI Laravel:

Para poder crear projectos en Laravel, podemos instalar el CLI de Laravel el cual nos permite a partir de un scallfold crear un Projecto Vacío con la estructura de Laravel.

promt$ composer global require laravel/installer

Despues de realizar este proceso de instalación, tenemos que agregar al PATH la rutal al directorio .composer/vendor/bin donde se instalan los paquetes y así poder usar de forma global el CLI de Laravel, agregar al archivo /etc/profile lo siguiente:

## Composer bin packages
export COMPOSER_BIN=$HOME/.config/composer/vendor/bin    
PATH=$PATH:$COMPOSER_BIN
export PATH

Listo, finalmente actualizar nuestro PATH y verificamos la version del CLI de Laravel instalado:

promt$ source /etc/profile
promt$ laravel -V
Laravel Installer 2.1.0


Paso 3 - Crear Proyecto:

Ahora que ya tenemos instalado el CLI de Laravel, el siguiente paso es crear un proyecto usando el comando que nos permite desde un scafflod crear un proyecto en Laravel vacío:

promt$ laravel new mi-proyecto
promt$ ls
mi-proyecto

mi-proyecto
mi-proyecto


Paso 4 - Homestead por Proyecto:

En este punto vamos a instalar y configurar los archivos necesarios para ejecutar nuestro proyecto en el Homestead Box de Vagrant, para esto tenemos que instalar el paquete homestead en nuestro proyecto:

promt$ composer require laravel/homestead --dev

Cuando ya tenemos instalado el paquete de homestead en nuestro proyecto, ahora lo que tenemos que hacer es generar los archivos VagrantfileHomestead.yaml, usando el comando make:

promt$ php vendor/bin/homestead make


Paso 5 - Configurar Hostname:

Cuando configuramos Homestead en nuestro proyecto, por defecto se asigna la IP 192.168.10.10 y el nombre de dominio homestead.test, ahora, tenemos que configurar nuestro archivo de hostname en nuestra maquina Linux Ubuntu agregando esta información al archivo /etc/hosts:

192.168.10.10  homestead.test

Paso 6 - Ejecutar Proyecto:

Finalmente podemos ejecutar nuestro proyecto usando Vagrant con el siguiente comando:

promt$ vagrant up
Con esto ejecutamos una maquina virtual con nuestro proyecto, para poder acceder y visualizar el proyecto usamos un navegador web para acceder al dominio configurado por defecto:

http://homestead.test/

Mi Primer Proyecto
Mi Primer Proyecto


Eso es todo:

Listo, con esto ya tenemos una instalación y configuración básica para iniciar nuestro aprendizaje en el mundo de Laravel, queda mucho por aprender, a continuación dejo unos enlaces de referencia donde podemos encontrar información adicional sobre Laravel.


Repositorio Final:
https://github.com/sebaxtian/mi-proyecto


Referencias:

Vagrant Docs
Laravel Docs
Homestead Docs