aboutsummaryrefslogtreecommitdiff
path: root/content/documentation/connect/websites.md
blob: 2692196c6a0fb1be44c4adcb49ade5d7254397d9 (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
+++
title = "Websites (Hugo, Jekyll, Publii...)"
weight = 10
+++


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
```