Reviewed-on: #3 Co-authored-by: riomoo <alister@kamikishi.net> Co-committed-by: riomoo <alister@kamikishi.net>
117 lines
4.3 KiB
Markdown
117 lines
4.3 KiB
Markdown
# GoFudge
|
|
|
|
A Fudge Dice rolling room programmed in Go
|
|
|
|
## License
|
|
|
|
[](LICENSE)
|
|
|
|
## Prerequisites
|
|
|
|
[](https://golang.org/dl/)
|
|
- Go 1.25.3+ (only needed to build)
|
|
- Or just download a pre-built binary from Releases (when available)
|
|
|
|
### Quick start (from source)
|
|
```bash
|
|
git clone https://codeberg.org/riomoo/gofudge.git
|
|
cd gofudge
|
|
go build -o gofudge app/gofudge/main.go
|
|
./gofudge
|
|
```
|
|
- Visit http://localhost:8080 in your browser.
|
|
- Upon visiting the URL you will be created with a username entry and Create room button. After that you will be in the room.
|
|
- (If you are hosting this publicly) You can copy the room link in the top right hand corner and share it to anyone. They will be prompted to also pick a username.
|
|
- From there you may increase/decrease the modifier as needed for the skill you are rolling for.
|
|
|
|
|
|
## If you want to use this with podman:
|
|
```bash
|
|
git clone https://codeberg.org/riomoo/gofudge.git
|
|
cd gofudge
|
|
./scripts-bash/run.sh
|
|
```
|
|
|
|
Then open http://localhost:12007 in your browser.
|
|
|
|
## Config for NGINX to use as a website:
|
|
```
|
|
upstream gofudge {
|
|
server 127.0.0.1:8080;
|
|
#server 127.0.0.1:12007; #For Podman instead
|
|
server [::1]:8080;
|
|
#server [::1]:12007; #For Podman instead
|
|
}
|
|
server {
|
|
listen 80;
|
|
listen [::1]:80;
|
|
server_name fudge.example.com;
|
|
location /ws {
|
|
proxy_pass http://gofudge;
|
|
proxy_http_version 1.1;
|
|
|
|
# WebSocket upgrade headers
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
# Standard proxy headers
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# WebSocket timeout settings (increase for long-lived connections)
|
|
proxy_connect_timeout 7d;
|
|
proxy_send_timeout 7d;
|
|
proxy_read_timeout 7d;
|
|
|
|
# Disable buffering for WebSocket
|
|
proxy_buffering off;
|
|
|
|
# Security headers
|
|
add_header X-Content-Type-Options nosniff;
|
|
add_header X-Frame-Options DENY;
|
|
add_header X-XSS-Protection "1; mode=block";
|
|
add_header Referrer-Policy "strict-origin-when-cross-origin";
|
|
}
|
|
location / {
|
|
proxy_pass http://gofudge;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Connection keep-alive for better performance
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Connection "";
|
|
|
|
# Timeouts optimized for your simple site
|
|
proxy_connect_timeout 5s;
|
|
proxy_send_timeout 10s;
|
|
proxy_read_timeout 10s;
|
|
|
|
# Enable buffering for better compression
|
|
proxy_buffering on;
|
|
proxy_buffer_size 4k;
|
|
proxy_buffers 8 4k;
|
|
|
|
# Security headers
|
|
add_header X-Content-Type-Options nosniff;
|
|
add_header X-Frame-Options DENY;
|
|
add_header X-XSS-Protection "1; mode=block";
|
|
add_header Referrer-Policy "strict-origin-when-cross-origin";
|
|
}
|
|
}
|
|
```
|
|
|
|
<div align="center">
|
|
|
|
## Software Used but not included
|
|
|
|

|
|

|
|

|
|

|
|

|
|
|
|
</div>
|