codies/README.org

140 lines
4.0 KiB
Org Mode
Raw Permalink 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
2021-10-03 03:39:33 +00:00
but, it's just for friends; the old one run by the original creator,
2021-10-03 03:25:06 +00:00
[[https://codies.xyz][codies.xyz]], was taken down due to copyright issues and I would prefer to
2021-10-03 03:21:29 +00:00
avoid the same thing happening to mine. If you would like to host this
yourself, please follow the included instructions.
2021-10-03 03:25:06 +00:00
*From the original README:*
2021-10-03 03:21:29 +00:00
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]]
2021-10-03 03:37:26 +00:00
* Manual installation
2021-10-03 03:21:29 +00:00
** 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
2021-10-03 03:37:26 +00:00
* 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!
#+BEGIN_SRC bash
docker build -t codies .
docker run -p 5000:5000 codies
#+END_SRC