* Codies This is a fork of [[https://github.com/eltmon/codies][eltmon/codies]] from GitHub. I run my own instance of it but, but it's just for friends; the old one run by the original creator, [[https://codies.xyz][codies.xyz]], was taken down due to copyright issues and I would prefer to avoid the same thing happening to mine. If you would like to host this yourself, please follow the included instructions. *From the original README:* Yet another Codenames webapp. Featuring: - Custom word packs - Timed mode - Quick room joining - Dark/light mode - Responsiveness for mobile play - And more! This is entirely inspired by the wonderful [[https://github.com/Joooop/codenames.plus][codenames.plus]], which works very well, but hasn't been scaling too well recently. I wanted an opportunity to learn TypeScript and React, and figured I could make something that worked just as well with a few extra niceties (and a more stable backend). [[file:docs/screenshot1.png]] * Installation ** Prerequisites First, you'll need Golang 1.15 and Node 14 for building codies. Take a look at golang's [[https://golang.org/dl/][download]] page and follow the related documentation for [[https://golang.org/doc/install][installing with the binary]] or [[https://golang.org/doc/install/source][from source]], then for Node, try [[https://github.com/nodesource/distributions][NodeSource]]. ** Creating users Running codies as root is not recommended. Please run the following commands to create a new unprivileged user and execute all of the commands in the following section as that user. #+BEGIN_SRC bash useradd -Ums /bin/bash codies su -c /bin/bash - codies git clone https://git.nixnet.services/Misc-Mirrors/codies.git cd codies #+END_SRC ** Building the frontend #+BEGIN_SRC bash cd frontend yarn install --frozen-lockfile yarn build #+END_SRC ** Building the backend #+BEGIN_SRC bash go mod download go run github.com/markbates/pkger/cmd/pkger go run github.com/markbates/pkger/cmd/pkger -o internal/pkger go build -ldflags="-X github.com/zikaeroh/codies/internal/version.version=1.15" . #+END_SRC ** Running Execute the binary to ensure it all works properly: #+BEGIN_SRC bash ./codies --debug #+END_SRC ** Daemonizing If you want it to start as soon as your machine boots and that it restarts on crash, you'll need to run it with a supervisor like OpenRC, runit, or systemd. Below is a service file for systemd. If you want to use it, paste the contents into ~/etc/systemd/system/codies.service~. #+BEGIN_SRC text [Unit] Description=Codies After=network.target network-online.target Requires=network-online.target [Service] Type=simple User=codies Group=codies WorkingDirectory=/home/codies/codies ExecStart=/home/codies/codies/codies --debug TimeoutStopSec=5s PrivateTmp=true ProtectSystem=full [Install] WantedBy=multi-user.target #+END_SRC ** Reverse proxy Runing codies behind a reverse proxy is recommended. With [[https://caddyserver.com/][Caddy]], this is as simple as #+BEGIN_SRC text example.com { encode zstd gzip reverse_proxy localhost:5000 } #+END_SRC For NGINX, the vhost could look something like this #+BEGIN_SRC text server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } } #+END_SRC