aboutsummaryrefslogtreecommitdiff
path: root/content/documentation/connect/websites.md
blob: 6710e9192019a44317ebc748f851a03b3b53b50b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
+++
title = "Websites (Hugo, Jekyll, Publii...)"
weight = 10
+++

# 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:

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

For example:

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

Then inform hugo of your credentials:

```bash
export AWS_ACCESS_KEY_ID=GKxxx
export AWS_SECRET_ACCESS_KEY=xxx
```

And finally build and deploy your website:

```bsh
hugo
hugo deploy
```

*External links:*
  - [gocloud.dev > aws > Supported URL parameters](https://pkg.go.dev/gocloud.dev/aws?utm_source=godoc#ConfigFromURLParams)
  - [Hugo Documentation > hugo deploy](https://gohugo.io/hosting-and-deployment/hugo-deploy/)

## 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](/documentation/connect/cli/#minio-client-recommended).

Then copy this output folder

```bash
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](/documentation/connect/cli/#minio-client-recommended).

Then build your website:

```bash
jekyll build
```

And copy jekyll's output folder on S3:

```bash
mc mirror --overwrite _site garage/my-site
```