feat: multi-language blog
All checks were successful
Deploy / build-and-test (push) Successful in 1m43s

This commit is contained in:
Aldo Funes 2025-03-12 22:57:46 +00:00
parent 3310529ec1
commit 2e184aae5e
No known key found for this signature in database
15 changed files with 421 additions and 17 deletions

View File

@ -70,7 +70,7 @@ author = "Aldo Funes"
# {name = "authors"}, # Basic definition: no feed or pagination # {name = "authors"}, # Basic definition: no feed or pagination
# ] # ]
# #
taxonomies = [{ name = "tags" }] taxonomies = [{ name = "tags" }, { name = "categories" }]
# When set to "true", a search index is built from the pages and section # When set to "true", a search index is built from the pages and section
# content for `default_language`. # content for `default_language`.
@ -214,13 +214,13 @@ index_format = "elasticlunr_json"
[languages.es] [languages.es]
title = "Aldo Funes" title = "Aldo Funes"
generate_feeds = true generate_feeds = true
taxonomies = [{ name = "tags" }] taxonomies = [{ name = "tags" }, { name = "categories" }]
build_search_index = true build_search_index = true
#[languages.pt-PT] #[languages.pt-PT]
#title = "Aldo Funes" #title = "Aldo Funes"
#generate_feeds = true #generate_feeds = true
#taxonomies = [{ name = "tags" }] #taxonomies = [{ name = "tags" }, { name = "categories" }]
#build_search_index = true #build_search_index = true
[extra] [extra]

View File

@ -3,10 +3,10 @@ title = "Inicio"
# Note we're not setting `paginate_by` here. # Note we're not setting `paginate_by` here.
[extra] [extra]
header = { title = "¡Hola! Soy Aldo", img = "img/profile.jpg", img_alt = "Aldo Funes, the blog's author" } header = { title = "¡Hola! Soy Aldo", img = "img/profile.jpg", img_alt = "Aldo Funes, el autor del blog" }
#section_path = "blog/_index.md" # Where to find your posts. section_path = "blog/_index.es.md" # Where to find your posts.
#max_posts = 5 # Show 5 posts on the home page. max_posts = 5 # Show 5 posts on the home page.
+++ +++
# ¡Bienvenido a mi blog! # ¡Bienvenido a mi blog!

View File

@ -3,7 +3,7 @@ title = "Home"
# Note we're not setting `paginate_by` here. # Note we're not setting `paginate_by` here.
[extra] [extra]
header = { title = "Welcome to my blog!", img = "img/profile.jpg", img_alt = "Aldo Funes, the blog's author" } header = { title = "Hello! I'm Aldo", img = "img/profile.jpg", img_alt = "Aldo Funes, the blog's author" }
section_path = "blog/_index.md" # Where to find your posts. section_path = "blog/_index.md" # Where to find your posts.
max_posts = 5 # Show 5 posts on the home page. max_posts = 5 # Show 5 posts on the home page.

View File

@ -0,0 +1,4 @@
+++
title = "Archivo"
template = "archive.html"
+++

View File

@ -1,6 +1,6 @@
+++ +++
title = "Expedition to Peru" title = "Expedición a Perú"
description = "A mountaineering expedition to the Cordillera Blanca in Peru." description = "Crónica de una expedición a Perú."
date = 2018-07-05 date = 2018-07-05
updated = 2025-03-12 updated = 2025-03-12

View File

@ -193,7 +193,7 @@ We can manage the parameters for each stack instance in separate files.
For example: For example:
```text ```
├── src/ ├── src/
│ ├── cluster.tf │ ├── cluster.tf
│ ├── host_servers.tf │ ├── host_servers.tf

View File

@ -118,7 +118,7 @@ docker compose up --detach
We will use Caddy to handle HTTPS and reverse proxy requests for Gitea. Add the following to your `Caddyfile`: We will use Caddy to handle HTTPS and reverse proxy requests for Gitea. Add the following to your `Caddyfile`:
```plaintext ```
gitea.example.com { gitea.example.com {
tls { tls {
dns cloudflare __CLOUDFLARE_TOKEN__ dns cloudflare __CLOUDFLARE_TOKEN__

View File

@ -0,0 +1,190 @@
+++
title = "Autoalojamiento de un Blog en 2025"
description = "Guía paso a paso para alojar tu propio sitio web usando Zola, Caddy y Gitea."
date = 2025-03-12
updated = 2025-03-12
[taxonomies]
tags = ["Autoalojamiento", "CI/CD", "Linux", "Caddy", "Zola"]
categories = ["Tutoriales"]
[extra]
social_media_card = "img/social_cards/blog_self_hosting_a_blog_in_2025.jpg"
+++
## Introducción
[Zola](https://www.getzola.org/) es un generador de sitios estáticos escrito en Rust que es rápido, simple y fácil de usar. Este blog está
construido con Zola y alojado en un servidor Linux con [Caddy](https://caddyserver.com/) como servidor web.
Esta guía te guiará a través de la configuración de Zola y Caddy para autoalojar tu sitio web de manera eficiente.
## Requisitos previos
Antes de comenzar, asegúrate de tener lo siguiente:
1. **Un servidor Linux** Estoy usando [Pop!_OS 24.04 LTS alpha](https://system76.com/cosmic/).
2. **Un nombre de dominio** apuntando a tu servidor Yo uso [Cloudflare](https://www.cloudflare.com/).
3. **Un proxy inverso** [Caddy](https://caddyserver.com/) cumple esta función.
4. **Una plataforma CI/CD** Uso [Gitea](/blog/gitea-open-source-github-alternative) para despliegues automatizados.
5. **Una herramienta de análisis enfocada en la privacidad** Uso [Plausible](https://plausible.io/).
## Instalación
### Paso 1: Instalar Zola
Como no hay un paquete precompilado para Pop!_OS 24.04 LTS alpha, instalaremos Zola desde el código fuente:
```bash
git clone https://github.com/getzola/zola.git
cd zola
cargo install --path . --locked
zola --version
```
### Paso 2: Crear un Nuevo Sitio
Inicializa un nuevo sitio con Zola:
```bash
zola init blog
cd blog
git init
echo "public" > .gitignore
```
### Paso 3: Instalar un Tema de Zola
Uso el tema [tabi](https://github.com/welpo/tabi.git). Para instalarlo:
```bash
git submodule add https://github.com/welpo/tabi.git themes/tabi
```
### Paso 4: Configurar Zola y Tabi
Zola usa un archivo `config.toml` para la configuración. Aquí hay un ejemplo:
```toml
base_url = "https://www.aldofunes.com"
title = "Aldo Funes"
description = "Ser humano en formación"
default_language = "es"
theme = "tabi"
compile_sass = false
minify_html = true
author = "Aldo Funes"
taxonomies = [{ name = "tags" }, { name = "categories" }]
build_search_index = true
[markdown]
highlight_code = true
highlight_theme = "css"
highlight_themes_css = [{ theme = "dracula", filename = "css/syntax.css" }]
render_emoji = true
external_links_class = "external"
external_links_target_blank = true
smart_punctuation = true
[search]
index_format = "elasticlunr_json"
[extra]
stylesheets = ["css/syntax.css"]
remote_repository_url = "https://gitea.funes.me/aldo/blog"
remote_repository_git_platform = "gitea"
mermaid = true
show_previous_next_article_links = true
toc = true
favicon_emoji = "👾"
```
### Paso 5: Agregar Contenido
Zola usa Markdown para la creación de contenido, y su estructura de directorios es intuitiva. Usa tu editor de texto favorito para empezar a
escribir artículos.
### Paso 6: Desplegar tu Sitio
Para servir el sitio con Caddy, coloca los archivos generados en `/www/blog` y configura Caddy con el siguiente `Caddyfile`:
```
aldofunes.com, www.aldofunes.com {
tls {
dns cloudflare __CLOUDFLARE_TOKEN__
resolvers 1.1.1.1
}
root * /www/blog
file_server
handle_errors {
rewrite * /{err.status_code}.html
file_server
}
header Cache-Control max-age=3600
header /static/* Cache-Control max-age=31536000
}
```
### Paso 7 (Opcional): Configurar un CDN
Usar Cloudflare como CDN mejora el rendimiento y la seguridad. Configura un registro DNS y habilita la protección de Cloudflare para
aprovechar la caché y la protección contra DDoS.
### Paso 8: Automatizar el Despliegue con CI/CD
Para automatizar los despliegues con Gitea, crea `.gitea/workflows/deploy.yaml`:
```yaml
name: Deploy
on:
push:
branches:
- main
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
submodules: true
- name: Check 🔍
uses: zolacti/on@check
with:
drafts: true
- name: Build 🛠
uses: zolacti/on@build
- name: Deploy 🚀
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ vars.ATLAS_SSH_HOST }}
username: ${{ vars.ATLAS_SSH_USERNAME }}
key: ${{ secrets.ATLAS_SSH_KEY }}
port: ${{ vars.ATLAS_SSH_PORT }}
source: public
target: /www/blog
rm: true
overwrite: true
strip_components: 1
```
Configura estas variables de entorno en Gitea Actions:
- `ATLAS_SSH_HOST`
- `ATLAS_SSH_USERNAME`
- `ATLAS_SSH_PORT`
Y agrega la clave secreta:
- `ATLAS_SSH_KEY`
Estas credenciales permiten un despliegue seguro mediante SCP.
## Conclusión
Ahora tienes un sitio web completamente autoalojado con Zola y Caddy. Con CI/CD automatizado mediante Gitea, puedes concentrarte en escribir
contenido mientras Gitea maneja el despliegue. ¡Disfruta de tu blog autoalojado!

View File

@ -6,6 +6,7 @@ updated = 2025-03-12
[taxonomies] [taxonomies]
tags = ["Self-Hosting", "CI/CD", "Linux", "Caddy", "Zola"] tags = ["Self-Hosting", "CI/CD", "Linux", "Caddy", "Zola"]
categories = ["Tutorials"]
[extra] [extra]
social_media_card = "img/social_cards/blog_self_hosting_a_blog_in_2025.jpg" social_media_card = "img/social_cards/blog_self_hosting_a_blog_in_2025.jpg"
@ -106,7 +107,7 @@ Zola uses Markdown for content creation, and its directory structure is intuitiv
To serve the site with Caddy, place the generated files in `/www/blog` and configure Caddy with the following `Caddyfile`: To serve the site with Caddy, place the generated files in `/www/blog` and configure Caddy with the following `Caddyfile`:
```Caddyfile ```
aldofunes.com, www.aldofunes.com { aldofunes.com, www.aldofunes.com {
tls { tls {
dns cloudflare __CLOUDFLARE_TOKEN__ dns cloudflare __CLOUDFLARE_TOKEN__

View File

@ -0,0 +1,5 @@
+++
title = "Blog"
paginate_by = 10 # Show 5 posts per page.
sort_by = "date"
+++

View File

@ -1,4 +1,5 @@
+++ +++
title = "Blog" title = "Blog"
paginate_by = 5 # Show 5 posts per page. paginate_by = 10 # Show 5 posts per page.
+++ sort_by = "date"
+++

View File

@ -0,0 +1,4 @@
+++
render = false
insert_anchor_links = "left"
+++

107
content/pages/about.es.md Normal file
View File

@ -0,0 +1,107 @@
+++
title = "Sobre Mí"
template = "info-page.html"
path = "es/about"
+++
# Aldo Funes Minutti
**Gerente de Ingeniería de Software**
Soy un profesional de la ingeniería de software orientado a resultados con un historial comprobado de crecimiento en equipos de desarrollo.
Soy un aprendiz autodidacta apasionado por comprender el funcionamiento interno de sistemas complejos. Cuento con más de 12 años de
experiencia progresiva en arquitectura y desarrollo de software en productos y servicios B2B y B2C.
Disfruto del buceo SCUBA, el montañismo y la fotografía con mi esposa, Karen.
---
## Habilidades
- TypeScript
- Rust
- DevOps
- Infraestructura como Código
- Gestión de Proyectos
- Liderazgo Técnico
- Empoderamiento de Desarrolladores
- Comunicación Efectiva
## Idiomas
- Español (Nativo)
- Inglés (Nativo o Bilingüe)
- Portugués (Competencia Laboral)
---
## Experiencia
### **Airtm (Fintech) Gerente de Ingeniería de Software**
*Junio 2018 Presente*
- Lidero un equipo de 8 desarrolladores, siendo responsable de:
- Infraestructura, garantizando soluciones escalables y rentables en la nube.
- Pipelines CI/CD, optimizando el despliegue de software y reduciendo la intervención manual.
- 6 Microservicios clave para el negocio de Airtm, asegurando confiabilidad y alta disponibilidad.
- Experiencia del Desarrollador, mejorando los flujos de trabajo y la eficiencia del equipo.
- Diseñé y ejecuté nuevos flujos operativos y características con tasas mínimas de error, mejorando la estabilidad del sistema.
- Renové estrategias de observabilidad, implementando mejores mecanismos de monitoreo, registro y alertas.
- Reduje los costos de infraestructura en un 60% mediante la optimización de microservicios, orquestación de contenedores y asignación de
recursos.
- Disminuí en un 90% el tiempo dedicado a pruebas, compilaciones y despliegues mediante la integración de automatización avanzada de CI/CD,
aumentando la productividad.
- Incrementé la cadencia de despliegues de uno cada dos semanas a varios por día, acelerando la entrega de funcionalidades.
- Automatizé la detección y prevención de amenazas cibernéticas, fortaleciendo la seguridad y el cumplimiento del sistema.
---
### **LOVIS (B2B SaaS) Director de Innovación**
*Julio 2011 Junio 2018*
- Lideré la arquitectura y desarrollo de herramientas de integración para sistemas de e-commerce y logística, permitiendo integraciones
fluidas con terceros.
- Dirigí la migración a la nube pública de AWS, reduciendo costos de infraestructura en un 30% mediante la gestión optimizada de recursos.
- Diseñé e implementé una arquitectura de alta disponibilidad, aumentando el tiempo de actividad anual en un 80%.
- Automatizé tareas repetitivas, reduciendo el tiempo dedicado a operaciones diarias en un 95% y aumentando la eficiencia empresarial.
- Trabajé en estrecha colaboración con clientes y partes interesadas para alinear soluciones técnicas con las necesidades del negocio,
asegurando la adopción exitosa de productos.
---
### **MENT (Servicios Profesionales) Arquitecto de la Nube**
*Marzo 2017 Abril 2018*
- Diseñé e implementé un backend sin servidor para la plataforma Q Swimwear, reduciendo significativamente los costos operativos mientras
mejoraba la escalabilidad.
- Lideré sesiones de recolección de requisitos con clientes para traducir necesidades comerciales en especificaciones técnicas.
- Desarrollé un sistema administrativo para una fábrica textil, integrando el seguimiento de producción con plataformas de comercio
electrónico, mejorando el cumplimiento de pedidos y las notificaciones a clientes.
- Mejoré la seguridad de aplicaciones en la nube mediante la implementación de control de acceso basado en roles y mecanismos de
autenticación.
---
### **Beaming Technologies (Servicios Profesionales) Fundador y CEO**
*Junio 2015 Enero 2017*
- Definí e implementé estrategias empresariales y técnicas para una empresa de servicios tecnológicos.
- Lideré el diseño, desarrollo, pruebas y despliegue de múltiples aplicaciones web y sitios para clientes en diversas industrias.
- Gestioné relaciones con clientes, recopilando comentarios para mejorar los servicios y aumentar la satisfacción del cliente.
- Construí un equipo de desarrollo remoto, optimizando la productividad mediante herramientas de comunicación y colaboración efectivas.
---
## Educación
### **Tec de Monterrey Ingeniero en Negocios y Tecnologías de Información**
*Agosto 2013 Mayo 2018*
- Fui galardonado con el **Premio Ceneval al Desempeño de Excelencia-EGEL** por alto rendimiento académico.
- Realicé un semestre de estudios en Edge Hill University, Inglaterra.
- Fui finalista en un concurso patrocinado por un banco para el desarrollo de software fintech.

View File

@ -4,7 +4,89 @@ template = "info-page.html"
path = "about" path = "about"
+++ +++
I am Aldo Funes, a passionate engineer capable of putting together the most complex workflows, and enjoying every bit. # Aldo Funes Minutti
I am a software engineer with a strong background in computer science and a passion for technology. I have experience in software **Software Engineering Manager**
development, data analysis, and machine learning. I am always looking for new challenges and opportunities to learn and grow.
Target-driven software engineering professional with a proven track record of growing software engineering teams. Avid self-learner, with a
passion for understanding the inner workings of complex systems. Over 14 years of progressive experience in software architecture and
development, in B2B and B2C products and services.
I enjoy SCUBA diving, mountaineering, and photography with my wife, Karen.
## Skills
- TypeScript
- Rust
- DevOps
- Infrastructure as Code
- Project Management
- Technical Leadership
- Developer Empowerment
- Effective Communication
## Languages
- Spanish (Native)
- English (Native or Bilingual proficiency)
- Portuguese (Working proficiency)
## Experience
### **Airtm (Fintech) Software Engineering Manager**
*June 2018 Present*
- Leading a team of 8 developers, responsible for:
- Infrastructure, ensuring scalable and cost-effective cloud solutions.
- CI/CD Pipelines, streamlining software deployment and reducing manual intervention.
- 6 Microservices Core to Airtm's Business, ensuring reliability and high availability.
- Developer Experience, improving workflows and efficiency within the team.
- Designed and executed new operational workflows and features with minimal error rates, leading to increased system stability.
- Revamped observability strategies, implementing better monitoring, logging, and alerting mechanisms.
- Reduced infrastructure costs by 60% after optimizing microservices, container orchestration, and resource allocation.
- Reduced time spent executing tests, builds, and deployments by 90% by integrating advanced CI/CD automation, leading to improved
productivity.
- Increased deployment cadence from one biweekly deployment to several deployments per day, accelerating feature delivery.
- Automated cybersecurity threat detection and prevention, strengthening system security and compliance.
### **LOVIS (B2B SaaS) Chief Innovation Officer**
*July 2011 June 2018*
- Spearheaded the architecture and development of integration tools for e-commerce and logistics systems, enabling seamless third-party
integrations.
- Led the migration to AWSs public cloud, reducing infrastructure costs by 30% through optimized resource management.
- Designed and implemented a high-availability system architecture, increasing yearly uptime by 80%.
- Automated repetitive tasks, reducing time spent on daily operational activities by 95%, increasing overall business efficiency.
- Worked closely with clients and stakeholders to align technical solutions with business needs, ensuring successful product adoption.
### **MENT (Professional Services) Cloud Architect**
*March 2017 April 2018*
- Designed and implemented a serverless backend for the Q Swimwear platform, significantly reducing operational costs while improving
scalability.
- Led requirements gathering sessions with clients to translate business needs into technical specifications.
- Developed an administrative system for a textile factory, integrating production tracking with e-commerce platforms, improving order
fulfillment and customer notifications.
- Enhanced cloud-based application security by implementing role-based access control and authentication mechanisms.
### **Beaming Technologies (Professional Services) Founder & CEO**
*June 2015 January 2017*
- Defined and implemented business and technical strategies for a technology-focused service company.
- Led the design, development, testing, and deployment of multiple web applications and sites for clients in different industries.
- Managed client relationships, gathering feedback to refine service offerings and improve customer satisfaction.
- Built a remote-first development team, optimizing productivity through effective communication and collaboration tools.
## Education
### **Tec de Monterrey Bachelor of Science in Business Informatics**
*August 2013 May 2018*
- Awarded **Premio Ceneval al Desempeño de Excelencia-EGEL** for high performance.
- Spent one semester at Edge Hill University, England.
- Finalist in a bank-sponsored fintech software development contest.

View File

@ -0,0 +1,10 @@
+++
title = "Proyectos"
sort_by = "weight"
template = "cards.html"
insert_anchor_links = "left"
[extra]
show_reading_time = false
quick_navigation_buttons = true
+++