diff --git a/data/tileserver.layers.json b/data/tileserver.layers.json deleted file mode 100644 index c708374..0000000 --- a/data/tileserver.layers.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "layers": [{ - "id": 0, - "name": "Earth", - "from": -16, - "to": 160 - },{ - "id": 1, - "name": "Moon", - "from": 5000, - "to": 5500 - },{ - "id": 2, - "name": "Space", - "from": 6000, - "to": 10000 - },{ - "id": 3, - "name": "Mars", - "from": 15850, - "to": 17000 - }] -} diff --git a/data/tileserver.properties b/data/tileserver.properties deleted file mode 100644 index 5d966c5..0000000 --- a/data/tileserver.properties +++ /dev/null @@ -1,18 +0,0 @@ -minetest.db.url=jdbc:postgresql://postgres:5432/postgres - -tile.db.url=jdbc:postgresql://postgres-tiles:5432/postgres -tile.cache.impl=DATABASE - -#tracker.matomo.id=1 -#tracker.matomo.url=https://analytics.rudin.io/piwik.js - -#tilerenderer.initialrendering.enable=true - -#log.tile.updatetimings=true -tilerenderer.updateinterval=5 -#log.query.performance=true - -tilerenderer.maxupdateblocks=1000 -tile.rendering.strategy=ASAP - -prometheus.enable=true diff --git a/doc/backup.md b/doc/backup.md new file mode 100644 index 0000000..7517d34 --- /dev/null +++ b/doc/backup.md @@ -0,0 +1,37 @@ + +# Server backup replication + +## Methodology + +Backups are taken daily with the help of lvm snapshots. +Here the backup-script from a host on the private cluster: + +```sh +#!/bin/sh +cd $(dirname $0) + +# prepare variables +TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) +REMOTE=root@pandorabox.io + +# create the LVM-snapshot on the main server +ssh $REMOTE "/sbin/lvcreate -l 90%FREE -s -n backup /dev/mapper/vg0-data" + +# mount the snapshot data read-only (remote) +ssh $REMOTE "mount -o ro /dev/mapper/vg0-backup /mnt/snapshot/" + +# rsync the snapshotted directory tree +rsync -avz --bwlimit 8000 --delete ${REMOTE}:/mnt/snapshot/pandorabox.io/ /backup/pandorabox.io/ + +# cleanup +ssh $REMOTE "umount /mnt/snapshot" +ssh $REMOTE "lvremove /dev/mapper/vg0-backup -f" + +# create incremental backups with borg +borg create --ignore-inode .::${TIMESTAMP} /backup/pandorabox.io + +# prune old backups +borg prune . --keep-daily 5 --keep-monthly 3 --keep-yearly 10 +``` + +**NOTE**: The snapshot volume fills up with data during the backup process \ No newline at end of file diff --git a/doc/folder_structure.md b/doc/folder_structure.md new file mode 100644 index 0000000..242f4a6 --- /dev/null +++ b/doc/folder_structure.md @@ -0,0 +1,48 @@ +# folder structure of the pandorabox server + +Server/Application root directory `/data/pandorabox.io` +``` +/data + + /minetest + + /world + + /nginx + + /postgres-minetest + + /wiki +/doc +/docker +/scripts +docker-compose.yml +psql.sh +psql-mapserver.sh +psql-wiki.sh +create-export.sh +convert-test.sh +restart.sh +``` + +## restart.sh + +As the name suggests, restarts the minetest-server + +## convert-test.sh + +Converts the server to the test-instance (url's, announce-name, /news) +**WARNING** Don't do this on the main server! This is intended to execute on a restored backup only! + +## psql.sh + +Starts a sql-shell on the main database (blocks, players) + +## /data/minetest/world + +The main directory for all things minetesty.. + +## /data/minetest/world/worldmods + +All installed mods + +## create-export.sh + +Creates a server-extract with the main parts (blocks,mods,essential mod-data) to distribute +**NOTE** This will create 2 files that amount to ca. 30 GB in the folder `/export` +**WARNING** Don't do this on the main server, the daily backup _will_ replicate this! diff --git a/docker-compose.yml b/docker-compose.yml index 5d6d13a..a14e2b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,7 @@ services: - "postgres" volumes: - "./data/minetest:/data" - - "./data/minetest/debug.txt:/usr/local/debug.txt" + - "./data/minetest/debug.txt:/root/.minetest/debug.txt" working_dir: /data command: minetestserver --config /data/minetest.conf --world /data/world/ --quiet logging: diff --git a/dump.sh b/dump.sh deleted file mode 100755 index 531cd32..0000000 --- a/dump.sh +++ /dev/null @@ -1 +0,0 @@ -docker-compose exec postgres pg_dump -U postgres postgres diff --git a/restart-and-cleanup.sh b/restart-and-cleanup.sh deleted file mode 100755 index a43ec98..0000000 --- a/restart-and-cleanup.sh +++ /dev/null @@ -1,7 +0,0 @@ -docker-compose stop minetest - -mv data/minetest/world/luaentities data/minetest/world/luaentities.bak -mv data/minetest/world/mesecon_actionqueue data/minetest/world/mesecon_actionqueue.bak - -docker-compose start minetest && docker-compose logs -f --tail 200 minetest - diff --git a/scripts/check_inv_size.sh b/scripts/check_inv_size.sh new file mode 100755 index 0000000..dc7292a --- /dev/null +++ b/scripts/check_inv_size.sh @@ -0,0 +1,2 @@ +#!/bin/sh +docker-compose exec postgres psql -U postgres -c "select player, inv_id, length(item) as size from player_inventory_items where player in (select name from player order by modification_date desc limit 20) order by size desc limit 30" diff --git a/sql/changecount_column.sql b/sql/changecount_column.sql deleted file mode 100644 index e554135..0000000 --- a/sql/changecount_column.sql +++ /dev/null @@ -1,18 +0,0 @@ -alter table blocks add column changecount bigint not null default 0; - -create index CONCURRENTLY blocks_changecount_index on blocks(changecount); - -create or replace function on_blocks_change_count() returns trigger as -$BODY$ -BEGIN - NEW.changecount = OLD.changecount + 1; - return NEW; -END; -$BODY$ -LANGUAGE plpgsql; - -create trigger blocks_update_changecount - before update - on blocks - for each row - execute procedure on_blocks_change_count(); diff --git a/sql/import.sh b/sql/import.sh deleted file mode 100755 index e257348..0000000 --- a/sql/import.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -cat changecount_column.sql | sudo docker-compose exec postgres psql -U postgres