Sources and automation for my personal webpage and blog built using Hugo, Woodpecker CI and MinIO
https://bluemedia.dev
.woodpecker | ||
archetypes | ||
content/blog | ||
static | ||
themes | ||
.gitignore | ||
.gitmodules | ||
config.yaml | ||
LICENSE | ||
README.md |
My personal webpage and blog 
This repo contains the sources for my personal webpage and blog. You can check out the live version at bluemedia.dev.
Components
The site uses the following components:
- Hugo (static site generator)
- Customized version of Hugo Profile (theme for Hugo)
Content is written using markdown and some YAML configs.
Deployment
The site is built using a Woodpecker CI pipeline 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:
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;
}
}