diff --git a/Taskfile.yaml b/Taskfile.yaml new file mode 100644 index 0000000..32a585a --- /dev/null +++ b/Taskfile.yaml @@ -0,0 +1,57 @@ +# https://taskfile.dev + +version: '3' + +includes: + firefoxsync: ./firefoxsync/Tasks.yaml + git: ./git/Tasks.yaml + news: ./news/Tasks.yaml + nextcloud: ./nextcloud/Tasks.yaml + proxy: ./proxy/Tasks.yaml + push: ./push/Tasks.yaml + rustdesk: ./rustdesk/Tasks.yaml + wallabag: ./wallabag/Tasks.yaml + + +tasks: + default: + desc: List all Tasks + cmds: + - task --list-all + silent: true + + all:pull: + desc: Pull and build all images + cmds: + - task: firefoxsync:pull + - task: git:pull + - task: news:pull + - task: nextcloud:pull + - task: proxy:pull + - task: push:pull + - task: rustdesk:pull + - task: wallabag:pull + + all:up: + desc: Start all containers + cmds: + - task: proxy:up + - task: nextcloud:up + - task: firefoxsync:up + - task: git:up + - task: news:up + - task: push:up + - task: rustdesk:up + - task: wallabag:up + + all:down: + desc: Stop all containers + cmds: + - task: firefoxsync:down + - task: git:down + - task: news:down + - task: push:down + - task: rustdesk:down + - task: wallabag:down + - task: nextcloud:down + - task: proxy:down diff --git a/firefoxsync/Tasks.yaml b/firefoxsync/Tasks.yaml new file mode 100644 index 0000000..4301d7b --- /dev/null +++ b/firefoxsync/Tasks.yaml @@ -0,0 +1,42 @@ +version: '3' + +vars: + NAME: firefoxsync + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + db:backup: + desc: Create database dump + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - docker compose exec db pg_dumpall -U $POSTGRES_USER > pgdump.sql + + db:restore: + desc: Restores database dump. Clear database directory first! + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - task: down + - docker compose up -d db --wait + - docker compose exec -T db psql -U $POSTGRES_USER $POSTGRES_DB < pgdump.sql + - docker compose exec -i db psql -U $POSTGRES_USER -d $POSTGRES_DB -c "ALTER USER \"$POSTGRES_USER\" PASSWORD '$POSTGRES_PASSWORD';" + - task: up diff --git a/git/Tasks.yaml b/git/Tasks.yaml new file mode 100644 index 0000000..abf2008 --- /dev/null +++ b/git/Tasks.yaml @@ -0,0 +1,43 @@ +version: '3' + +vars: + NAME: git + + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + db:backup: + desc: Create database dump + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - docker compose exec db pg_dumpall -U $POSTGRES_USER > pgdump.sql + + db:restore: + desc: Restores database dump. Clear database directory first! + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - task: down + - docker compose up -d db --wait + - docker compose exec -T db psql -U $POSTGRES_USER $POSTGRES_DB < pgdump.sql + - docker compose exec -i db psql -U $POSTGRES_USER -d $POSTGRES_DB -c "ALTER USER \"$POSTGRES_USER\" PASSWORD '$POSTGRES_PASSWORD';" + - task: up diff --git a/news/Tasks.yaml b/news/Tasks.yaml new file mode 100644 index 0000000..7831824 --- /dev/null +++ b/news/Tasks.yaml @@ -0,0 +1,42 @@ +version: '3' + +vars: + NAME: news + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + db:backup: + desc: Create database dump + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - docker compose exec db pg_dumpall -U $POSTGRES_USER > pgdump.sql + + db:restore: + desc: Restores database dump. Clear database directory first! + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - task: down + - docker compose up -d db --wait + - docker compose exec -T db psql -U $POSTGRES_USER $POSTGRES_DB < pgdump.sql + - docker compose exec -i db psql -U $POSTGRES_USER -d $POSTGRES_DB -c "ALTER USER \"$POSTGRES_USER\" PASSWORD '$POSTGRES_PASSWORD';" + - task: up diff --git a/nextcloud/Tasks.yaml b/nextcloud/Tasks.yaml new file mode 100644 index 0000000..f099fbb --- /dev/null +++ b/nextcloud/Tasks.yaml @@ -0,0 +1,74 @@ +version: '3' + +vars: + NAME: nextcloud + +tasks: + + pull: + desc: Pull all images for {{.NAME}} and build images + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose build --pull + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + occ: + desc: Nexctcloud command line OCC aka "ownCloud Console". Give command like 'task nextcloud:occ -- maintenance:mode --off' + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose exec --user www-data app php occ {{.CLI_ARGS}} + + + update: + desc: Manual execute update of nextcloud AFTER Version inkrement and nextcloud running" + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose exec --user www-data app php occ upgrade + - docker compose exec --user www-data app php occ maintenance:repair --include-expensive + - docker compose exec --user www-data app php occ db:add-missing-indices + - docker compose exec --user www-data app php occ db:add-missing-columns + - docker compose exec --user www-data app php occ db:add-missing-primary-keys + - docker compose exec --user www-data app php occ maintenance:mode --off + - docker compose exec --user www-data app php occ status + + status: + desc: Nextcloud status + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose exec --user www-data app php occ status + + files-scan: + desc: Scan for changed files in Nextcloud storage + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose exec --user www-data app php occ files:scan --all + - docker compose exec --user www-data app php occ files:scan-app-data + + db:backup: + desc: Create database dump + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - docker compose exec db mariadb-dump --single-transaction -u $MYSQL_USER -p"$MYSQL_PASSWORD" $MYSQL_DATABASE > mysqldump.sql + + db:restore: + desc: Restore database dump. Clear database directory first! + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - task: down + - docker compose up -d db --wait + - docker compose exec db mariadb -u $MYSQL_USER -p"$MYSQL_PASSWORD" $MYSQL_DATABASE < mysqldump.sql + - task: up diff --git a/nextcloud/update-nc.sh b/nextcloud/update-nc.sh deleted file mode 100755 index 9828e3b..0000000 --- a/nextcloud/update-nc.sh +++ /dev/null @@ -1,19 +0,0 @@ -#/bin/bash/ - -function occ { - docker compose --project-directory /home/flz/git/selfhost/nextcloud exec --user www-data app php occ "$@" -} - - -#docker compose build --pull -#docker compose pull --ignore-buildable -#occ status -#docker compose up -d -#watch docker compose ps - -occ upgrade -occ maintenance:repair --include-expensive -occ db:add-missing-indices -occ db:add-missing-columns -occ db:add-missing-primary-keys -occ status diff --git a/proxy/Tasks.yaml b/proxy/Tasks.yaml new file mode 100644 index 0000000..9302e82 --- /dev/null +++ b/proxy/Tasks.yaml @@ -0,0 +1,31 @@ +version: '3' + +vars: + NAME: proxy + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + reload: + desc: Reload Caddyfile config file without restarting container + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose exec -w /etc/caddy caddy caddy reload + diff --git a/proxy/reload.sh b/proxy/reload.sh deleted file mode 100755 index 27d9320..0000000 --- a/proxy/reload.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -docker compose exec -w /etc/caddy caddy caddy reload \ No newline at end of file diff --git a/pull-all.sh b/pull-all.sh deleted file mode 100755 index 9f2eb85..0000000 --- a/pull-all.sh +++ /dev/null @@ -1,11 +0,0 @@ -#/bin/bash/ - -for dir in ./*/ ; do - echo "[Building and Pulling $dir]" - cd "$dir"; - docker compose pull --ignore-buildable - docker compose build --pull; - cd ..; - echo; -done - diff --git a/push/Tasks.yaml b/push/Tasks.yaml new file mode 100644 index 0000000..231b66a --- /dev/null +++ b/push/Tasks.yaml @@ -0,0 +1,30 @@ +version: '3' + +vars: + NAME: push + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + ntfy: + desc: Ntfy command + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose exec ntfy ntfy diff --git a/rustdesk/Tasks.yaml b/rustdesk/Tasks.yaml new file mode 100644 index 0000000..10277af --- /dev/null +++ b/rustdesk/Tasks.yaml @@ -0,0 +1,25 @@ +version: '3' + +vars: + NAME: rustdesk + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + diff --git a/start-all.sh b/start-all.sh deleted file mode 100755 index 2846ba4..0000000 --- a/start-all.sh +++ /dev/null @@ -1,15 +0,0 @@ -#/bin/bash/ - -function up { - (cd "$1" && echo "[$1]" && docker compose up -d "${@:2}"); -} - -#up proxy --scale whoami=3; -up proxy; -up nextcloud; -up git; -up wallabag; -up firefoxsync; -up push; -up rustdesk; -up news; diff --git a/stop-all.sh b/stop-all.sh deleted file mode 100755 index 46b6645..0000000 --- a/stop-all.sh +++ /dev/null @@ -1,6 +0,0 @@ -#/bin/bash/ - -for dir in ./*/ ; do - (cd "$dir" && echo "[$dir]" && docker compose down); -done - diff --git a/wallabag/Tasks.yaml b/wallabag/Tasks.yaml new file mode 100644 index 0000000..c628f9c --- /dev/null +++ b/wallabag/Tasks.yaml @@ -0,0 +1,42 @@ +version: '3' + +vars: + NAME: wallabag + +tasks: + + pull: + desc: Pull all images for {{.NAME}} + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose pull --ignore-buildable + + up: + desc: Starting {{.NAME}} docker compose as daemon + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose up -d + + down: + desc: Stop {{.NAME}} docker compose + dir: "{{.TASKFILE_DIR}}" + cmds: + - docker compose down + + db:backup: + desc: Create database dump + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - docker compose exec db /usr/bin/mariadb-dump --single-transaction -u $MYSQL_USER -p"$MYSQL_PASSWORD" $MYSQL_DATABASE > mysqldump.sql + + db:restore: + desc: Restore database dump. Clear database directory first! + dir: "{{.TASKFILE_DIR}}" + dotenv: [".env"] + cmds: + - task: down + - docker compose up -d db --wait + - docker compose exec db mariadb -u $MYSQL_USER -p"$MYSQL_PASSWORD" $MYSQL_DATABASE < mysqldump.sql + - task: up +