43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
|
# My personal webpage and blog [![](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/BluemediaGER/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;
|
||
|
}
|
||
|
}
|
||
|
```
|