diff --git a/chatgpt/chatgpt.env b/compose/chatgpt/chatgpt.env similarity index 100% rename from chatgpt/chatgpt.env rename to compose/chatgpt/chatgpt.env diff --git a/chatgpt/docker-compose.yml b/compose/chatgpt/docker-compose.yml similarity index 100% rename from chatgpt/docker-compose.yml rename to compose/chatgpt/docker-compose.yml diff --git a/cstrike/configs/amxx.cfg b/compose/cstrike/configs/amxx.cfg similarity index 100% rename from cstrike/configs/amxx.cfg rename to compose/cstrike/configs/amxx.cfg diff --git a/cstrike/configs/banned.cfg b/compose/cstrike/configs/banned.cfg similarity index 100% rename from cstrike/configs/banned.cfg rename to compose/cstrike/configs/banned.cfg diff --git a/cstrike/configs/config.cfg b/compose/cstrike/configs/config.cfg similarity index 100% rename from cstrike/configs/config.cfg rename to compose/cstrike/configs/config.cfg diff --git a/cstrike/configs/game.cfg b/compose/cstrike/configs/game.cfg similarity index 100% rename from cstrike/configs/game.cfg rename to compose/cstrike/configs/game.cfg diff --git a/cstrike/configs/game_init.cfg b/compose/cstrike/configs/game_init.cfg similarity index 100% rename from cstrike/configs/game_init.cfg rename to compose/cstrike/configs/game_init.cfg diff --git a/cstrike/configs/listip.cfg b/compose/cstrike/configs/listip.cfg similarity index 100% rename from cstrike/configs/listip.cfg rename to compose/cstrike/configs/listip.cfg diff --git a/cstrike/configs/motd.txt b/compose/cstrike/configs/motd.txt similarity index 100% rename from cstrike/configs/motd.txt rename to compose/cstrike/configs/motd.txt diff --git a/cstrike/configs/plugins.ini b/compose/cstrike/configs/plugins.ini similarity index 100% rename from cstrike/configs/plugins.ini rename to compose/cstrike/configs/plugins.ini diff --git a/cstrike/configs/server.cfg b/compose/cstrike/configs/server.cfg similarity index 89% rename from cstrike/configs/server.cfg rename to compose/cstrike/configs/server.cfg index bd26003..d715bba 100755 --- a/cstrike/configs/server.cfg +++ b/compose/cstrike/configs/server.cfg @@ -23,4 +23,4 @@ exec listip.cfg exec banned.cfg // password -sv_password "hello there" +sv_password "$PASSWORD" diff --git a/cstrike/configs/users.ini b/compose/cstrike/configs/users.ini similarity index 94% rename from cstrike/configs/users.ini rename to compose/cstrike/configs/users.ini index 7c34369..1b32a66 100644 --- a/cstrike/configs/users.ini +++ b/compose/cstrike/configs/users.ini @@ -51,4 +51,4 @@ ; "My Name" "my_password" "abcdefghijklmnopqrstuv" "a" "loopback" "" "abcdefghijklmnopqrstuv" "de" -"STEAM_0:0:618873848" "" "abcdefghijklmnopqrstuv" "ce" +"$STEAMID" "" "abcdefghijklmnopqrstuv" "ce" diff --git a/cstrike/docker-compose.yml b/compose/cstrike/docker-compose.yml similarity index 100% rename from cstrike/docker-compose.yml rename to compose/cstrike/docker-compose.yml diff --git a/dendrite/config/dendrite.yaml b/compose/dendrite/config/dendrite.yaml similarity index 100% rename from dendrite/config/dendrite.yaml rename to compose/dendrite/config/dendrite.yaml diff --git a/dendrite/docker-compose.yml b/compose/dendrite/docker-compose.yml similarity index 100% rename from dendrite/docker-compose.yml rename to compose/dendrite/docker-compose.yml diff --git a/eturnal/docker-compose.yml b/compose/eturnal/docker-compose.yml similarity index 100% rename from eturnal/docker-compose.yml rename to compose/eturnal/docker-compose.yml diff --git a/eturnal/eturnal.env b/compose/eturnal/eturnal.env similarity index 100% rename from eturnal/eturnal.env rename to compose/eturnal/eturnal.env diff --git a/gitea/docker-compose.yml b/compose/gitea/docker-compose.yml similarity index 100% rename from gitea/docker-compose.yml rename to compose/gitea/docker-compose.yml diff --git a/gitea/gitea.env b/compose/gitea/gitea.env similarity index 100% rename from gitea/gitea.env rename to compose/gitea/gitea.env diff --git a/mailu/docker-compose.yml b/compose/mailu/docker-compose.yml similarity index 100% rename from mailu/docker-compose.yml rename to compose/mailu/docker-compose.yml diff --git a/mailu/mailu.env b/compose/mailu/mailu.env similarity index 100% rename from mailu/mailu.env rename to compose/mailu/mailu.env diff --git a/vaultwarden/docker-compose.yml b/compose/vaultwarden/docker-compose.yml similarity index 100% rename from vaultwarden/docker-compose.yml rename to compose/vaultwarden/docker-compose.yml diff --git a/vaultwarden/vaultwarden.env b/compose/vaultwarden/vaultwarden.env similarity index 100% rename from vaultwarden/vaultwarden.env rename to compose/vaultwarden/vaultwarden.env diff --git a/configs/Caddyfile b/configs/Caddyfile new file mode 100644 index 0000000..48fa740 --- /dev/null +++ b/configs/Caddyfile @@ -0,0 +1,94 @@ +# The Caddyfile is an easy way to configure your Caddy web server. +# +# Unless the file starts with a global options block, the first +# uncommented line is always the address of your site. +# +# To use your own domain name (with automatic HTTPS), first make +# sure your domain's A/AAAA DNS records are properly pointed to +# this machine's public IP, then replace ":80" below with your +# domain name. + +{ + email im@fruw.org + acme_dns google_domains $API_KEY +} + +vault.fruw.org { + reverse_proxy localhost:50000 +} + +mail.fruw.org { + reverse_proxy localhost:50001 +} + +matrix.fruw.org, matrix.fruw.org:8448 { + rewrite / /_matrix/static/ + reverse_proxy /_matrix/* localhost:50003 +} + +git.fruw.org { + rewrite / /fruworg + reverse_proxy localhost:50005 +} + +turn.fruw.org { + #route / { + #exec /usr/local/bin/caddy.sh 3478 + #} + + #@available { + # status 0 + #} + + #respond "whoa! eturnal server is runnig" 200 { + # @available + #} + + #respond "oops! eturnal server is not running" 503 + respond "whoa! eturnal server is runnig" 200 +} + +rclone.fruw.org { + reverse_proxy 127.0.0.1:53682 + respond "nothing to auth" 404 +} + +cs.fruw.org { + respond "whoa! cstrike server is runnig" 200 +} + +doom.fruw.org { + #route / { + #exec /usr/local/bin/caddy.sh 10666 + #} + + #exec /usr/local/bin/caddy.sh 10666 + + #@available { + # status 0 + #} + + #respond "whoa! doom2 server is runnig" 200 { + # @available + #} + + respond "oops! doom2 server is not running" 503 +} + +fs.fruw.org, http://fs.fruw.org { + root * /var/caddy + file_server browse +} + +ip.fruw.org, http://ip.fruw.org { + templates + respond "{{.RemoteIP}}" +} + +fruw.org, *.fruw.org { + respond "hello there" +} + +# Refer to the Caddy docs for more information: +# https://caddyserver.com/docs/caddyfile + diff --git a/scripts/backup.sh b/scripts/backup.sh new file mode 100755 index 0000000..fd11c9b --- /dev/null +++ b/scripts/backup.sh @@ -0,0 +1,101 @@ +#!/bin/bash + +# +# dump all +# + +BACKUP_FOLDER="/var/backups/infrastructure" +MEGA_FOLDER="/mnt/mega/backups" +GDRIVE_FOLDER="/mnt/gdrive/backups" + +clean_old_backups() { + local CLEANED_FOLDER="$1" + + for BACKUP_FILE in {/var/backups/infrastructure,/mnt/mega/backups}/*.tar.zst.gpg; do + + BACKUP_DATE="$(echo $BACKUP_FILE | egrep -o [0-9]{2}-[0-9]{2}-[0-9]{4} | sed -e 's/-//g')" + + # if january the first + if [ "${BACKUP_DATE:2:2}${BACKUP_DATE:0:2}" -eq "0101" ]; then + continue + fi + + # if older than year + if [ "${BACKUP_DATE:4}" -lt "$DELETE_BY_YEAR" ]; then + rm "$BACKUP_FILE" + continue + fi + + # if first day of month + if [ "${BACKUP_DATE:0:2}" -eq "01" ]; then + continue + fi + + BACKUP_DATE_FORMATTED="${BACKUP_DATE:4}${BACKUP_DATE:2:2}${BACKUP_DATE:0:2}" + + # if older than week + if [ "$BACKUP_DATE_FORMATTED" -lt "$DELETE_BY_DAYS" ]; then + rm "$BACKUP_FILE" + fi + + done +} + +copy_new_backups() { + local REMOTE_FOLDER="$1" + cp -r "$BACKUP_FOLDER/$(date '+%d-%m-%Y.tar.zst.gpg')" "$REMOTE_FOLDER" +} + +rm -rf "$BACKUP_FOLDER/tmp" && mkdir "$_" + +mkdir "$BACKUP_FOLDER/tmp/sh/" && \ + cp -r /usr/local/bin/{backup.sh,caddy.sh,update.sh} \ + /etc/systemd/system/{backup,update}.{service,timer} "$_" + +mkdir "$BACKUP_FOLDER/tmp/caddy/" && \ + cp -r /etc/caddy/Caddyfile "$_" + +mkdir "$BACKUP_FOLDER/tmp/pg/" && \ + cp -r /etc/postgresql/15/main/{pg_hba.conf,postgresql.conf} "$_" + +mkdir "$BACKUP_FOLDER/tmp/rclone/" && \ + cp -r /etc/systemd/system/rclone-{mega,gdrive}.service \ + /root/.config/rclone/rclone.conf "$_" + +mkdir "$BACKUP_FOLDER/tmp/bashrc/" && cp ~/.bashrc "$_" +mkdir "$BACKUP_FOLDER/tmp/ufw/" && cp -r /etc/ufw/* "$_" + +echo "configs have been successfully backuped" + +mkdir "$BACKUP_FOLDER/tmp/opt/" && \ + cp -r /opt/* "$_" + +echo "compose files have been successfully backuped" + +sudo -i -u postgres pg_dumpall > "$BACKUP_FOLDER/tmp/pg/pg_dumpall.sql" + +echo "postgres have been successfully backuped" + +tar --zstd -cf "$BACKUP_FOLDER/$(date '+%d-%m-%Y.tar.zst')" \ + -C "$BACKUP_FOLDER/tmp" . 2> /dev/null + +rm -rf "$BACKUP_FOLDER/tmp" + +gpg --batch --yes -e -r im@fruw.org "$BACKUP_FOLDER/$(date '+%d-%m-%Y.tar.zst')" +rm "$BACKUP_FOLDER/$(date '+%d-%m-%Y.tar.zst')" + +echo "backup have been successfully encrypted" + +DELETE_BY_YEAR=$(date '+%Y' --date="-365 days") +DELETE_BY_DAYS=$(date '+%Y%m%d' --date="-6 days") + +clean_old_backups "$BACKUP_FOLDER" +# clean_old_backups "$GDRIVE_FOLDER" +clean_old_backups "$MEGA_FOLDER" + +echo "backups have been successfully cleaned" + +# copy_new_backups "$GDRIVE_FOLDER" +copy_new_backups "$MEGA_FOLDER" + +echo "backup have been successfully copied" diff --git a/scripts/update.sh b/scripts/update.sh new file mode 100755 index 0000000..691d9ef --- /dev/null +++ b/scripts/update.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +source /root/.bashrc + +# Iterate through all folders in /opt +for FOLDER in /opt/*; do + if [ -d "$FOLDER" ]; then + echo "Processing folder: $FOLDER" + + # Navigate into the folder + cd "$FOLDER" || continue + + # Pull Docker Compose images + docker compose pull + + # Bring up Docker Compose services in detached mode + docker compose up -d + + # Return to the previous directory + cd - + fi +done + +docker system prune -a -f diff --git a/systemd/backup.service b/systemd/backup.service new file mode 100644 index 0000000..d3821bd --- /dev/null +++ b/systemd/backup.service @@ -0,0 +1,9 @@ +[Unit] +Description=Backup Service + +[Service] +Type=simple +ExecStart=/usr/local/bin/backup.sh + +[Install] +WantedBy=multi-user.target diff --git a/systemd/backup.timer b/systemd/backup.timer new file mode 100644 index 0000000..ef9de67 --- /dev/null +++ b/systemd/backup.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Daily Backup Timer + +[Timer] +OnCalendar=*-*-* 03:00:00 +Unit=backup.service + +[Install] +WantedBy=timers.target diff --git a/systemd/update.service b/systemd/update.service new file mode 100644 index 0000000..dac906e --- /dev/null +++ b/systemd/update.service @@ -0,0 +1,9 @@ +[Unit] +Description=Update Service + +[Service] +Type=simple +ExecStart=/usr/local/bin/update.sh + +[Install] +WantedBy=multi-user.target diff --git a/systemd/update.timer b/systemd/update.timer new file mode 100644 index 0000000..4c16a24 --- /dev/null +++ b/systemd/update.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Daily Update Timer + +[Timer] +OnCalendar=*-*-* 03:30:00 +Unit=update.service + +[Install] +WantedBy=timers.target