2020-07-02 11:22:52 -04:00
|
|
|
# Guide - Setup HedgeDoc S3 image upload
|
2018-06-24 08:04:35 -04:00
|
|
|
|
2021-01-11 05:54:22 -05:00
|
|
|
**Note:** *This guide was written before the renaming. Just replace `HackMD` with `HedgeDoc` in your mind 😃 thanks!*
|
2016-11-16 01:27:18 -05:00
|
|
|
|
|
|
|
1. Go to [AWS S3 console](https://console.aws.amazon.com/s3/home) and create a new bucket.
|
2020-07-01 05:52:17 -04:00
|
|
|
![create-bucket](../images/s3-image-upload/create-bucket.png)
|
2016-11-16 01:27:18 -05:00
|
|
|
|
|
|
|
2. Click on bucket, select **Properties** on the side panel, and find **Permission** section. Click **Edit bucket policy**.
|
2020-07-01 05:52:17 -04:00
|
|
|
![bucket-property](../images/s3-image-upload/bucket-property.png)
|
2016-11-16 01:27:18 -05:00
|
|
|
|
|
|
|
3. Enter the following policy, replace `bucket_name` with your bucket name:
|
2020-07-01 05:52:17 -04:00
|
|
|
![bucket-policy-editor](../images/s3-image-upload/bucket-policy-editor.png)
|
2016-11-16 01:27:18 -05:00
|
|
|
|
2016-11-16 01:46:38 -05:00
|
|
|
```json
|
|
|
|
{
|
|
|
|
"Version": "2012-10-17",
|
|
|
|
"Statement": [
|
|
|
|
{
|
|
|
|
"Effect": "Allow",
|
|
|
|
"Principal": "*",
|
|
|
|
"Action": "s3:GetObject",
|
|
|
|
"Resource": "arn:aws:s3:::bucket_name/uploads/*"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
2016-11-16 01:27:18 -05:00
|
|
|
|
|
|
|
4. Go to IAM console and create a new IAM user. Remember your user credentials(`key`/`access token`)
|
|
|
|
|
|
|
|
5. Enter user page, select **Permission** tab, look at **Inline Policies** section, and click **Create User Policy**
|
2020-07-01 05:52:17 -04:00
|
|
|
![iam-user](../images/s3-image-upload/iam-user.png)
|
2016-11-16 01:27:18 -05:00
|
|
|
|
|
|
|
6. Select **Custom Policy**
|
2020-07-01 05:52:17 -04:00
|
|
|
![custom-policy](../images/s3-image-upload/custom-policy.png)
|
2016-11-16 01:27:18 -05:00
|
|
|
|
|
|
|
7. Enter the following policy, replace `bucket_name` with your bucket name:
|
2020-07-01 05:52:17 -04:00
|
|
|
![review-policy](../images/s3-image-upload/review-policy.png)
|
2016-11-16 01:27:18 -05:00
|
|
|
|
2016-11-16 01:46:38 -05:00
|
|
|
```json
|
|
|
|
{
|
|
|
|
"Version": "2012-10-17",
|
|
|
|
"Statement": [
|
|
|
|
{
|
|
|
|
"Effect": "Allow",
|
|
|
|
"Action": [
|
|
|
|
"s3:*"
|
|
|
|
],
|
|
|
|
"Resource": [
|
|
|
|
"arn:aws:s3:::bucket_name/uploads/*"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
2016-11-16 01:27:18 -05:00
|
|
|
|
2016-11-17 05:13:57 -05:00
|
|
|
8. Edit `config.json` and set following keys:
|
|
|
|
|
2020-07-01 05:52:17 -04:00
|
|
|
```javascript
|
|
|
|
{
|
|
|
|
"production": {
|
|
|
|
...
|
|
|
|
"imageuploadtype": "s3",
|
|
|
|
"s3": {
|
|
|
|
"accessKeyId": "YOUR_S3_ACCESS_KEY_ID",
|
|
|
|
"secretAccessKey": "YOUR_S3_ACCESS_KEY",
|
|
|
|
"region": "YOUR_S3_REGION" // example: ap-northeast-1
|
|
|
|
},
|
|
|
|
"s3bucket": "YOUR_S3_BUCKET_NAME"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
2016-11-17 05:13:57 -05:00
|
|
|
|
2021-01-04 07:07:44 -05:00
|
|
|
9. In additional to edit `config.json` directly, you could also try [environment variables](../configuration.md).
|
2016-11-17 05:13:57 -05:00
|
|
|
|
2016-11-16 01:27:18 -05:00
|
|
|
## Related Tools
|
|
|
|
|
2020-07-01 05:52:17 -04:00
|
|
|
- [AWS Policy Generator](http://awspolicygen.s3.amazonaws.com/policygen.html)
|