diff --git a/Taskfile.yaml b/Taskfile.yaml deleted file mode 100644 index 02ea30c..0000000 --- a/Taskfile.yaml +++ /dev/null @@ -1,65 +0,0 @@ -# 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 - -vars: - GIT_COMMIT_HASH: - sh: git log -n 1 --format=%h - -tasks: - default: - desc: List all Tasks - cmds: - - task --list-all - silent: true - - git:hash: - desc: Prints current git commit hash - cmds: - - echo {{.GIT_COMMIT_HASH}} - - 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 deleted file mode 100644 index 4301d7b..0000000 --- a/firefoxsync/Tasks.yaml +++ /dev/null @@ -1,42 +0,0 @@ -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 deleted file mode 100644 index abf2008..0000000 --- a/git/Tasks.yaml +++ /dev/null @@ -1,43 +0,0 @@ -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/git/docker-compose.yaml b/git/docker-compose.yaml index 16f495b..a65c951 100644 --- a/git/docker-compose.yaml +++ b/git/docker-compose.yaml @@ -1,8 +1,7 @@ services: forgejo: - image: codeberg.org/forgejo/forgejo:${FORGEJO_VERSION} # official url - # image: data.forgejo.org/forgejo/forgejo:${FORGEJO_VERSION} # mirror + image: codeberg.org/forgejo/forgejo:${FORGEJO_VERSION} volumes: - ${STORAGE_PATH}/forgejo_data:/data - /etc/timezone:/etc/timezone:ro @@ -51,8 +50,39 @@ services: - "docker.group=git" + docker-in-docker: + image: docker:dind + privileged: 'true' + command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false'] + restart: 'unless-stopped' + networks: + - runner + + + runner: + image: code.forgejo.org/forgejo/runner:${FORGEJO_RUNNER_VERSION} + links: + - docker-in-docker + depends_on: + docker-in-docker: + condition: service_started + environment: + DOCKER_HOST: tcp://docker-in-docker:2375 + user: 1002:1002 + volumes: + - /var/dockervolumes/git/runner:/data + restart: 'unless-stopped' + # command: '/bin/sh -c "while : ; do sleep 1 ; done ;"' # for registration + command: '/bin/sh -c "sleep 5; forgejo-runner daemon"' + networks: + - git + - runner + + networks: git: web: external: true + runner: + diff --git a/news/Tasks.yaml b/news/Tasks.yaml deleted file mode 100644 index 7831824..0000000 --- a/news/Tasks.yaml +++ /dev/null @@ -1,42 +0,0 @@ -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/Dockerfile b/nextcloud/Dockerfile index 5ff5e7d..7b9cb73 100644 --- a/nextcloud/Dockerfile +++ b/nextcloud/Dockerfile @@ -1,4 +1,4 @@ -ARG NC_MAIN_VERSION=stable +ARG NC_MAIN_VERSION FROM nextcloud:$NC_MAIN_VERSION-fpm RUN apt-get update && apt-get install -y --no-install-recommends \ diff --git a/nextcloud/Tasks.yaml b/nextcloud/Tasks.yaml deleted file mode 100644 index 9e589fb..0000000 --- a/nextcloud/Tasks.yaml +++ /dev/null @@ -1,81 +0,0 @@ -version: '3' - -vars: - NAME: nextcloud - -tasks: - - pull: - desc: Pull all images for {{.NAME}} and build images - dir: "{{.TASKFILE_DIR}}" - deps: [build] - cmds: - - docker compose pull --ignore-buildable - - up: - desc: Starting {{.NAME}} docker compose as daemon - dir: "{{.TASKFILE_DIR}}" - cmds: - - docker compose up -d - - build: - desc: "Building special Nextcloud image (Mainly install software)" - dir: "{{.TASKFILE_DIR}}" - dotenv: [.env] - cmds: - - docker build --pull --build-arg NC_MAIN_VERSION=$NC_MAIN_VERSION --tag $DOCKER_REGISTRY/nextcloud:${NC_MAIN_VERSION}-fpm . - - 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/docker-compose.yaml b/nextcloud/docker-compose.yaml index f96d77b..644f0fd 100644 --- a/nextcloud/docker-compose.yaml +++ b/nextcloud/docker-compose.yaml @@ -49,7 +49,7 @@ services: cron: - image: ${DOCKER_REGISTRY}/nextcloud:${NC_MAIN_VERSION}-fpm + image: nextcloud:${NC_MAIN_VERSION}-fpm-own build: context: ./ args: diff --git a/nextcloud/update-nc.sh b/nextcloud/update-nc.sh new file mode 100755 index 0000000..9828e3b --- /dev/null +++ b/nextcloud/update-nc.sh @@ -0,0 +1,19 @@ +#/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 deleted file mode 100644 index ad9002d..0000000 --- a/proxy/Tasks.yaml +++ /dev/null @@ -1,39 +0,0 @@ -version: '3' - -vars: - NAME: proxy - -tasks: - - pull: - desc: Pull all images for {{.NAME}} - dir: "{{.TASKFILE_DIR}}" - deps: [build] - cmds: - - docker compose pull --ignore-buildable - - build: - desc: "Building special Caddy image with netcup support" - dir: "{{.TASKFILE_DIR}}" - dotenv: [.env] - cmds: - - docker build --pull --file caddy/Dockerfile --build-arg CADDY_VERSION=$CADDY_VERSION --tag $DOCKER_REGISTRY/caddy:${CADDY_VERSION} . - - 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/caddy/Caddyfile b/proxy/caddy/Caddyfile index 9a91c5b..a1e9b11 100644 --- a/proxy/caddy/Caddyfile +++ b/proxy/caddy/Caddyfile @@ -82,21 +82,11 @@ } } - @ffsync host firefoxsync.{$DOMAIN} - handle @ffsync { - reverse_proxy syncserver:5000 - } - @mail host mail.{$DOMAIN} handle @mail { reverse_proxy nginx-mailcow:8090 } - @meet host meet.{$DOMAIN} - handle @meet { - reverse_proxy jitsi-meet-web:80 - } - # Fallback unhandled (sub)domains handle { error 404 @@ -112,12 +102,6 @@ } } -# redirect URL without subdomain to www {$DOMAIN} { redir https://www.{$DOMAIN}{uri} permanent } - -# shortcut to prevent double redirect (http --> https AND without subdomain to www) -http://{$DOMAIN} { - redir https://www.{$DOMAIN}{uri} permanent -} diff --git a/proxy/caddy/Dockerfile b/proxy/caddy/Dockerfile index 7c550b1..7223e84 100644 --- a/proxy/caddy/Dockerfile +++ b/proxy/caddy/Dockerfile @@ -1,9 +1,7 @@ -ARG CADDY_VERSION=2 - -FROM caddy:${CADDY_VERSION}-builder AS builder +FROM caddy:2-builder AS builder RUN xcaddy build --with github.com/caddy-dns/netcup -FROM caddy:${CADDY_VERSION} +FROM caddy:2 COPY --from=builder /usr/bin/caddy /usr/bin/caddy diff --git a/proxy/docker-compose.yaml b/proxy/docker-compose.yaml index 499851b..262e603 100755 --- a/proxy/docker-compose.yaml +++ b/proxy/docker-compose.yaml @@ -1,7 +1,7 @@ services: caddy: - image: ${DOCKER_REGISTRY}/caddy:${CADDY_VERSION} + image: florianzirker.de/caddy-netcup build: ./caddy networks: - web diff --git a/proxy/reload.sh b/proxy/reload.sh new file mode 100755 index 0000000..27d9320 --- /dev/null +++ b/proxy/reload.sh @@ -0,0 +1,2 @@ +#!/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 new file mode 100755 index 0000000..9f2eb85 --- /dev/null +++ b/pull-all.sh @@ -0,0 +1,11 @@ +#/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 deleted file mode 100644 index 231b66a..0000000 --- a/push/Tasks.yaml +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 10277af..0000000 --- a/rustdesk/Tasks.yaml +++ /dev/null @@ -1,25 +0,0 @@ -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 new file mode 100755 index 0000000..2846ba4 --- /dev/null +++ b/start-all.sh @@ -0,0 +1,15 @@ +#/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 new file mode 100755 index 0000000..46b6645 --- /dev/null +++ b/stop-all.sh @@ -0,0 +1,6 @@ +#/bin/bash/ + +for dir in ./*/ ; do + (cd "$dir" && echo "[$dir]" && docker compose down); +done + diff --git a/wallabag/Tasks.yaml b/wallabag/Tasks.yaml deleted file mode 100644 index c628f9c..0000000 --- a/wallabag/Tasks.yaml +++ /dev/null @@ -1,42 +0,0 @@ -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 -