go-jamming/INSTALL.md

98 lines
3.3 KiB
Markdown

# Go-Jamming installation guide
Back to the main [README.md](https://git.brainbaking.com/wgroeneveld/go-jamming/src/branch/master/README.md)
## 1. Installing
Download the latest binary version from the [GitHub releases page](https://git.brainbaking.com/wgroeneveld/go-jamming/releases). This is a **single binary** and installing it is just a matter of copy-pasting it to your sever! Simply execute with `./go-jamming`.
### Compiling it yourself (optional)
If your target OS is not listed, you can build it yourself with one simple command: `go build`. Go 1.16+ is required, see `go.mod` file.
## 2. Configuring
Place a `config.json` file in the same directory that looks like this: (below are the default values)
```json
{
"baseURL": "https://mygojamminginstance.mydomain.com/",
"adminEmail": "myemail@domain.com",
"port": 1337,
"host": "localhost",
"token": "miauwkes",
"allowedWebmentionSources": [
"brainbaking.com",
"jefklakscodex.com"
],
"denylist": [
"youtube.com"
],
"allowlist": []
}
```
- `baseURL`, with trailing slash: base access point, used in approval/admin panel
- `adminEmail`, the e-mail address to send notificaions to. If absent, will not send out mails. **uses 127.0.0.1:25 postfix** at the moment.
- `port`, host: http server params
- `token`: see below, used for authentication
- `denylist`/`allowlist`: domains from which we do (NOT) send to or accept mentions from. This is usually the domain of the `source` in the receiving mention. **Note**: the denylist is also used to block outgoing mentions.
- `allowedWebmentionSources`: your own domains which go-jamming is able to receive mentions from. This is usually domain of the `target` in the receiving mention.
If a config file is missing, or required keys are missing, a warning will be generated and default values will be used instead. See `common/config.go`.
To keep things simple, the file path to store all mentions and author avatars in a simple key/value store is hardcoded and set to:
- mentions.db (in working dir) for approved mentions
- mentions_toapprove.db (in working dir) for mentions in moderation.
The database is based on [buntdb](https://github.com/tidwall/buntdb). If the files do not exist, they will simply be created.
## 3. Reverse proxy
Put it behind a reverse proxy such as nginx using something like this:
```
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name [your-domain];
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:[your-port];
}
ssl_certificate /etc/letsencrypt/live/[your-domain]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[your-domain]/privkey.pem;
}
```
## 4. Linux systemd service
Create a very simple Linux system service that fires up the jam:
```
[Unit]
Description=Go-Jamming
After=network.target
[Service]
User=[myuser]
WorkingDirectory=/var/www/gojamming
ExecStart=/var/www/gojamming/go-jamming
SuccessExitStatus=0
[Install]
WantedBy=multi-user.target
```
Now install using `sudo systemctl enable/install gojamming` and you're done!
## 5. Configuring your templates
Read more on how to integrate this in for example Hugo on https://brainbaking.com/post/2021/05/beyond-webmention-io/