Sources and automation for my personal webpage and blog built using Hugo, Woodpecker CI and MinIO https://bluemedia.dev
Find a file
2023-11-12 00:28:02 +01:00
.woodpecker Add woodpecker pipeline 2023-11-07 21:34:51 +01:00
archetypes Initial commit 2023-11-06 00:30:32 +01:00
content/blog Initial commit 2023-11-06 00:30:32 +01:00
static Initial commit 2023-11-06 00:30:32 +01:00
themes Update frontpage 2023-11-07 23:02:31 +01:00
.gitignore Initial commit 2023-11-06 00:30:32 +01:00
.gitmodules Initial commit 2023-11-06 00:30:32 +01:00
config.yaml Use production URL 2023-11-07 23:03:09 +01:00
LICENSE Add license and readme 2023-11-12 00:28:02 +01:00
README.md Add license and readme 2023-11-12 00:28:02 +01:00

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:

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;
    }
}