go-jamming/INSTALL.md

2.7 KiB

Go-Jamming installation guide

Back to the main README.md

1. Installing

Download the latest binary version from the GitHub releases page. 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)

{
  "port": 1337,
  "host": "localhost",
  "token": "miauwkes",
  "conString": "mentions.db",
  "utcOffset": 60,
  "allowedWebmentionSources":  [
    "brainbaking.com",
    "jefklakscodex.com"
  ],
  "blacklist":  [
    "youtube.com"
  ]
}
  • port, host: http server params
  • token, allowedWebmentionSources: see below, used for authentication
  • blacklist: blacklist domains from which we do NOT send to or accept mentions from.
  • utcOffset: offset in minutes for date processing, starting from UTC time.
  • conString: file path to store all mentions and author avatars in a simple key/value store, based on buntdb. If the file does not exist yet, it will simply be created.

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.

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/