diff --git a/.gitmodules b/.gitmodules index 287a0fa..6c29318 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,3 +9,6 @@ [submodule "repos/main-site"] path = repos/main-site url = git@git.faulty.nl:didier/site +[submodule "repos/backups"] + path = repos/backups + url = git@git.faulty.nl:infra/backups diff --git a/docker-compose.utils.yml b/docker-compose.utils.yml index d95ab90..c6cf878 100644 --- a/docker-compose.utils.yml +++ b/docker-compose.utils.yml @@ -45,4 +45,18 @@ services: - 21027:21027/udp restart: unless-stopped networks: - - proxy \ No newline at end of file + - proxy + + backups: + build: + context: ./repos/backups + dockerfile: Containerfile + user: backups + environment: + - PYTHONUNBUFFERED=1 + - IMMEDIATE=1 + volumes: + - /docker/files/backups:/config:ro # an exception to keep stuff up to date. + - /srv:/services:ro + - /srv/backups/data:/local:rw + - /mnt/backups/neo:/remote:rw \ No newline at end of file diff --git a/files/backups/global.json b/files/backups/global.json new file mode 100644 index 0000000..6b89115 --- /dev/null +++ b/files/backups/global.json @@ -0,0 +1,4 @@ +{ + "remote_dir": "/remote", + "tasks_dir": "/config/tasks" +} \ No newline at end of file diff --git a/files/backups/tasks/generic_services.json b/files/backups/tasks/generic_services.json new file mode 100644 index 0000000..5185199 --- /dev/null +++ b/files/backups/tasks/generic_services.json @@ -0,0 +1,17 @@ +{ + "name": "GenericServices", + "interval": 86400, + "base": "/services", + "paths": [ + ".webcers", + "proxy", + "jellyfin", + "ghost", + "gitlab", + "searx", + "wireguard" + ], + "local_days_of_retention": 1, + "remote_days_of_retention": 30, + "backup_dir": "/local" +} \ No newline at end of file diff --git a/files/backups/tasks/smpxmc.json b/files/backups/tasks/smpxmc.json new file mode 100644 index 0000000..b7478f8 --- /dev/null +++ b/files/backups/tasks/smpxmc.json @@ -0,0 +1,11 @@ +{ + "name": "SMPXMC", + "interval": 86400, + "base": "/services/smpxmc", + "paths": [ + "data" + ], + "local_days_of_retention": 7, + "remote_days_of_retention": 30, + "backup_dir": "/local" +} \ No newline at end of file diff --git a/repos/backups b/repos/backups new file mode 160000 index 0000000..39b8411 --- /dev/null +++ b/repos/backups @@ -0,0 +1 @@ +Subproject commit 39b8411aa6e2f568a4c86bbc619ab5dc58d784a4 diff --git a/tools/manager/main.py b/tools/manager/main.py index ad21333..a7674ea 100644 --- a/tools/manager/main.py +++ b/tools/manager/main.py @@ -9,13 +9,6 @@ PROJECT_NAME = os.environ.get("PROJECT_NAME", "neo") files = glob.glob("docker-compose.*.yml") -def setup_handler(what: str): - types = { - "def": lambda: os.system("sh ./utils/setup.sh"), - "ports": lambda: os.system("sh ./utils/setup-ports.sh ./utils/rulelist.rules") - }.get(what, lambda: print("Invalid setup type")) - - def dc(cmd: str): fopts = "" for f in files: @@ -99,7 +92,6 @@ def main(): "upr": lambda: dc(f"up -d --build {' '.join(args.args)}"), "logs": lambda: dc(f"logs --tail=20 -f {' '.join(args.args)}"), "default": lambda: dc(f"{' '.join(args.args)}"), - "setup": lambda: setup_handler(args.args[0]), "delete-project-files": lambda: os.system(f"sudo rm -rf /srv/{args.args[0]}"), "pull": lambda: update(), "_dump": lambda: dump_data(), diff --git a/utils/setup.sh b/tools/setup.sh similarity index 100% rename from utils/setup.sh rename to tools/setup.sh diff --git a/utils/rulelist.rules b/utils/rulelist.rules deleted file mode 100644 index 56b1cfe..0000000 --- a/utils/rulelist.rules +++ /dev/null @@ -1,24 +0,0 @@ -# HTTP(s) -INPUT -p tcp --dport 80 -j ACCEPT -INPUT -p tcp --dport 443 -j ACCEPT - -# SSH -INPUT -p tcp --dport 8240 -j ACCEPT - -# WIREGUARD -INPUT -p udp --dport 51820 -j ACCEPT - -# MINECRAFT (25565 && 280**) -INPUT -p tcp --dport 25565 -j ACCEPT - -# RUST (281**) -INPUT -p tcp --dport 28115 -j ACCEPT -INPUT -p udp --dport 28115 -j ACCEPT -INPUT -p tcp --dport 28116 -j ACCEPT -INPUT -p udp --dport 28116 -j ACCEPT -INPUT -p tcp --dport 28182 -j ACCEPT -INPUT -p udp --dport 28182 -j ACCEPT - -# ALLOW ALL TRAFFIC FROM xxx.xxx.xxx.xxx -INPUT -s 87.210.9.220 -j ACCEPT - diff --git a/utils/setup-ports.sh b/utils/setup-ports.sh deleted file mode 100755 index bbdb1ee..0000000 --- a/utils/setup-ports.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -run() { - echo "$@" - "$@" -} - -up() { - while read -r line; do - [ -z "$line" ] && continue - if [ "$(echo "$line" | cut -c1)" = "#" ]; then - echo "$line" - else - # shellcheck disable=SC2086 - run iptables -A $line - fi - done < "$1" -} - -down() { - while read -r line; do - [ -z "$line" ] && continue - if [ "$(echo "$line" | cut -c1)" = "#" ]; then - echo "$line" - else - # shellcheck disable=SC2086 - run iptables -D $line - fi - done < "$1" -} - -case "$1" in - up) - up "$2" - ;; - down) - down "$2" - ;; - *) - echo "Usage: $0 {up|down}" - exit 1 -esac \ No newline at end of file