codies/README.org

129 lines
3.6 KiB
Org Mode
Raw Normal View History

2021-10-03 03:21:29 +00:00
* 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
2021-10-03 03:23:47 +00:00
cd frontend
yarn install --frozen-lockfile
yarn build
2021-10-03 03:21:29 +00:00
#+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
2021-10-03 03:23:47 +00:00
./codies --debug
2021-10-03 03:21:29 +00:00
#+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
2021-10-03 03:23:47 +00:00
[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
2021-10-03 03:21:29 +00:00
#+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