diff --git a/README.md b/README.md deleted file mode 100644 index 3fb9e5e..0000000 --- a/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# codies - -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](https://github.com/Joooop/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). - -![Game board](/docs/screenshot1.png?raw=true 'Game board') diff --git a/README.org b/README.org new file mode 100644 index 0000000..7b134d4 --- /dev/null +++ b/README.org @@ -0,0 +1,128 @@ +* 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