# My personal webpage and blog [![status-badge](https://woodpecker.bluemedia.dev/api/badges/6/status.svg)](https://woodpecker.bluemedia.dev/repos/6) This repo contains the sources for my personal webpage and blog. You can check out the live version at [bluemedia.dev](https://bluemedia.dev). ## Components The site uses the following components: - [Hugo](https://gohugo.io/) (static site generator) - [Customized version](https://github.com/BluemediaDev/hugo-profile) of [Hugo Profile](https://github.com/gurusabarish/hugo-profile) (theme for Hugo) Content is written using markdown and some YAML configs. ## Deployment The site is built using a [Woodpecker CI pipeline](.woodpecker/deploy.yaml) for every change to `main`. After running `hugo`, the pipeline publishes the content of the `public` directory to a MinIO bucket using the `mc` command-line tool. `bluemedia.dev` is in turn just a Nginx server that proxies requests to the MinIO bucket and rewrites the upstream request to a corresponding `/index.html` file. The (simplified) proxy config looks like this: ```nginx server { listen 443 ssl; listen [::]:443 ssl; http2 on; server_name bluemedia.dev; location / { rewrite ^(.*)/$ $1/index.html break; rewrite ^(.*/[^./]+)$ $1/index.html break; proxy_http_version 1.1; proxy_connect_timeout 300; chunked_transfer_encoding off; proxy_intercept_errors on; error_page 404 =404 /404.html; proxy_set_header Host "bluemedia-dev.s3.infra.bluemedia.dev"; proxy_set_header Connection ""; proxy_pass https://bluemedia-dev.s3.infra.bluemedia.dev; } } ```