Websites (Hugo, Jekyll, Publii...)

Garage is also suitable to host static websites. While they can be deployed with traditional CLI tools, some static website generators have integrated options to ease your workflow.

Hugo

Add to your config.toml the following section:

[[deployment.targets]]
 URL = "s3://<bucket>?endpoint=<endpoint>&disableSSL=<bool>&s3ForcePathStyle=true&region=garage"

For example:

[[deployment.targets]]
 URL = "s3://my-blog?endpoint=localhost:9000&disableSSL=true&s3ForcePathStyle=true&region=garage"

Then inform hugo of your credentials:

export AWS_ACCESS_KEY_ID=GKxxx
export AWS_SECRET_ACCESS_KEY=xxx

And finally build and deploy your website:

hugo
hugo deploy

External links:

Publii

It would require a patch either on Garage or on Publii to make both systems work.

Currently, the proposed workaround is to deploy your website manually:

  • On the left menu, click on Server, choose Manual Deployment (the logo looks like a compressed file)
  • Set your website URL, keep Output type as "Non-compressed catalog"
  • Click on Save changes
  • Click on Sync your website (bottom left of the app)
  • On the new page, click again on Sync your website
  • Click on Get website files
  • You need to synchronize the output folder you see in your file explorer, we will use minio client.

Be sure that you configured minio client.

Then copy this output folder

mc mirror --overwrite output garage/my-site

Generic (eg. Jekyll)

Some tools do not support sending to a S3 backend but output a compiled folder on your system. We can then use any CLI tool to upload this content to our S3 target.

First, start by configuring minio client.

Then build your website:

jekyll build

And copy jekyll's output folder on S3:

mc mirror --overwrite _site garage/my-site