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