diff --git a/README.md b/README.md index c70da1f..a011656 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # matthewtran.com -Stuff that's deployed on [matthewtran.com](http://matthewtran.com). Tested on Ubuntu Server 22.04.3 LTS. Currently running the following services. +Stuff that's deployed on [matthewtran.com](https://matthewtran.com). Currently running the following services. - website - gitea ([git.matthewtran.com](https://git.matthewtran.com)) @@ -8,58 +8,56 @@ Stuff that's deployed on [matthewtran.com](http://matthewtran.com). Tested on Ub - p2pool (`xmrig -o matthewtran.com:3333`) - minecraft - minecraft bedrock -- terraria +- ~~terraria~~ - wireguard ## setup -Forward the following ports to the server. - -| service | port | -|-------------------|--------------------| -| website | 80, 443 | -| gitea | 2222 | -| monerod | 18080 | -| p2pool | 3333, 37888, 37889 | -| minecraft | 25565 | -| minecraft bedrock | 19132, 19133 | -| terraria | 7777 | -| wireguard | 51820 | - -Make sure IPv6 is enabled in Docker by modifying `/etc/docker/daemon.json`. For example: - -``` -{ - "ipv6": true, - "fixed-cidr-v6": "2001:db8:1::/64", - "experimental": true, - "ip6tables": true -} -``` - -Run the following commands. For the IP update script, add a SendGrid API key to `website/sendgrid.key`. - -``` -docker compose build -docker compose up -d # auto restarts on reboot! -``` - -Note for first start you'll need to configure Gitea. +1. Install [Ubuntu Server 24.04.1 LTS](https://ubuntu.com/download/server). + - Add OpenSSH Server and Docker during the process. + - Expand the root partition if needed. + - `lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv` + - `resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv` + - Give yourself Docker access if needed. + - `groupadd docker` + - `usermod -aG docker $USER` + - Enable UFW and allow the following. + - `ufw enable` + - `ufw allow OpenSSH` + - `ufw allow 51820/udp` +2. Forward the following ports. Set a static IP if needed. + - website - `80`, `443` + - gitea - `2222` + - monerod - `18080` + - p2pool - `3333`, `37888`, `37889` + - minecraft - `25565` + - minecraft bedrock - `19132`, `19133` + - terraria - `7777` + - wireguard - `51820` +3. Install dependencies and clone. + - `apt install avahi-daemon git python3 python-is-python3 qrencode wireguard zip` + - `git clone https://github.com/dragonlock2/matthewtran.com` + - `cd matthewtran.com` +4. Set up WireGuard. + - `systemctl enable wg-quick@wg0.service` + - `python wireguard/setup.py` + - `systemctl start wg-quick@wg0.service` +5. Enable IPv6 for Docker. + - Add the following to `/var/snap/docker/current/config/daemon.json`. + - `"ipv6": true` + - `"fixed-cidr-v6": "fd3a:138e:8fd0:0000::/64"` + - `systemctl restart snap.docker.dockerd.service` +6. Set up the repo. + - Run `./volumes.sh`, allowing the containers to access the binded volumes since you have the same UID/GID by default. + - Create `website/sendgrid.key` with a [SendGrid API key](https://app.sendgrid.com/settings/api_keys). + - Create `terraria/password.txt` if needed. + - Restore backups if needed. +7. Build and start the services. + - `docker compose build` + - `docker compose up -d` +8. If first start, some services need configuring. + - Gitea ## backup Run `./backup.sh` and save the resultant `data.zip` somewhere. I should probably automate this. - -## TODO - -- better setup - - install ubuntu - - forward ports - - enable ssh - - install wireguard - - run script to setup wireguard - - install docker + compose - - run `volumes.sh` => container user has same uid/gid, can access - - run docker compose - - ufw? - - need to setup gitea diff --git a/compose.yml b/compose.yml index b34dee0..185d834 100644 --- a/compose.yml +++ b/compose.yml @@ -76,13 +76,13 @@ services: - default6 volumes: - ./minecraft_bedrock/worlds:/home/ubuntu/worlds - terraria: - restart: always - build: terraria/. - entrypoint: ["/bin/sh", "/home/ubuntu/entry.sh"] - ports: - - "7777:7777" - networks: - - default6 - volumes: - - ./terraria/worlds:/home/ubuntu/worlds + # terraria: + # restart: always + # build: terraria/. + # entrypoint: ["/bin/sh", "/home/ubuntu/entry.sh"] + # ports: + # - "7777:7777" + # networks: + # - default6 + # volumes: + # - ./terraria/worlds:/home/ubuntu/worlds diff --git a/minecraft_bedrock/entry.sh b/minecraft_bedrock/entry.sh index e2a6513..109d2fe 100644 --- a/minecraft_bedrock/entry.sh +++ b/minecraft_bedrock/entry.sh @@ -1,5 +1,16 @@ #!/bin/sh -# TODO graceful exit +cleanup() { + echo "stop" > cmd +} -LD_LIBRARY_PATH=. ./bedrock_server +trap 'cleanup' TERM + +rm cmd +mkfifo cmd +LD_LIBRARY_PATH=. ./bedrock_server < cmd & +echo "help" > cmd # shell waits for FIFO to be opened for writing before starting program! +wait $! # wait for SIGTERM +wait $! # wait for server to stop + +# TODO stop not working diff --git a/volumes.sh b/volumes.sh index be4d961..8ca35d4 100755 --- a/volumes.sh +++ b/volumes.sh @@ -1,8 +1,8 @@ #!/bin/sh mkdir website/letsencrypt -mkdir website/gitea/config -mkdir website/gitea/data +mkdir -p website/gitea/config +mkdir -p website/gitea/data mkdir monerod/.bitmonero mkdir p2pool/cache mkdir minecraft/world