Yet another Codenames website
0

Configure Feed

Select the types of activity you want to include in your feed.

TypeScript 64.7%
Go 33.2%
Dockerfile 1.2%
HTML 0.9%
103 1 0

Clone this repository

https://git.vm.fail/secluded.site/codies https://git.vm.fail/did:plc:ljuiptldop7lbf4rf6nwt6x2
ssh://git@knot.secluded.site:2222/secluded.site/codies ssh://git@knot.secluded.site:2222/did:plc:ljuiptldop7lbf4rf6nwt6x2

For self-hosted knots, clone URLs may differ based on your setup.


README.md

Codies#

This is a fork of eltmon/codies from GitHub. I run my own instance of it but, it's just for friends; the old one run by the original creator, 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 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).

Screenshot of the web UI

Manual installation#

Prerequisites#

First, you'll need Golang 1.15 and Node 14 for building codies. Take a look at golang's download page and follow the related documentation for installing with the binary or from source, then for Node, try 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.

useradd -Ums /bin/bash codies
su -c /bin/bash - codies
git clone https://git.sr.ht/~amolith/codies
cd codies

Building the frontend#

cd frontend
yarn install --frozen-lockfile
yarn build

Building the backend#

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" .

Running#

Execute the binary to ensure it all works properly:

./codies --debug

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.

[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

Reverse proxy#

Runing codies behind a reverse proxy is recommended. With Caddy, this is as simple as

example.com {
    encode zstd gzip
    reverse_proxy localhost:5000
}

For NGINX, the vhost could look something like this

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;
      }
}

Docker installation#

The Dockerfile will only be kept as long as it continues working. My goal in forking the app is to rip Docker out and package the entire thing up in a single statically-linked binary.

I don't know whether this will actually succeed, but here you go!

docker build -t codies .
docker run -p 5000:5000 codies