Compare commits

..

2 commits

20 changed files with 90 additions and 434 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,8 +1,7 @@
services: services:
forgejo: forgejo:
image: codeberg.org/forgejo/forgejo:${FORGEJO_VERSION} # official url image: codeberg.org/forgejo/forgejo:${FORGEJO_VERSION}
# image: data.forgejo.org/forgejo/forgejo:${FORGEJO_VERSION} # mirror
volumes: volumes:
- ${STORAGE_PATH}/forgejo_data:/data - ${STORAGE_PATH}/forgejo_data:/data
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
@ -51,8 +50,39 @@ services:
- "docker.group=git" - "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: networks:
git: git:
web: web:
external: true external: true
runner:

View file

@ -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

View file

@ -1,4 +1,4 @@
ARG NC_MAIN_VERSION=stable ARG NC_MAIN_VERSION
FROM nextcloud:$NC_MAIN_VERSION-fpm FROM nextcloud:$NC_MAIN_VERSION-fpm
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \

View file

@ -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

View file

@ -49,7 +49,7 @@ services:
cron: cron:
image: ${DOCKER_REGISTRY}/nextcloud:${NC_MAIN_VERSION}-fpm image: nextcloud:${NC_MAIN_VERSION}-fpm-own
build: build:
context: ./ context: ./
args: args:

19
nextcloud/update-nc.sh Executable file
View file

@ -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

View file

@ -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

View file

@ -82,21 +82,11 @@
} }
} }
@ffsync host firefoxsync.{$DOMAIN}
handle @ffsync {
reverse_proxy syncserver:5000
}
@mail host mail.{$DOMAIN} @mail host mail.{$DOMAIN}
handle @mail { handle @mail {
reverse_proxy nginx-mailcow:8090 reverse_proxy nginx-mailcow:8090
} }
@meet host meet.{$DOMAIN}
handle @meet {
reverse_proxy jitsi-meet-web:80
}
# Fallback unhandled (sub)domains # Fallback unhandled (sub)domains
handle { handle {
error 404 error 404
@ -112,12 +102,6 @@
} }
} }
# redirect URL without subdomain to www
{$DOMAIN} { {$DOMAIN} {
redir https://www.{$DOMAIN}{uri} permanent 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
}

View file

@ -1,9 +1,7 @@
ARG CADDY_VERSION=2 FROM caddy:2-builder AS builder
FROM caddy:${CADDY_VERSION}-builder AS builder
RUN xcaddy build --with github.com/caddy-dns/netcup 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 COPY --from=builder /usr/bin/caddy /usr/bin/caddy

View file

@ -1,7 +1,7 @@
services: services:
caddy: caddy:
image: ${DOCKER_REGISTRY}/caddy:${CADDY_VERSION} image: florianzirker.de/caddy-netcup
build: ./caddy build: ./caddy
networks: networks:
- web - web

2
proxy/reload.sh Executable file
View file

@ -0,0 +1,2 @@
#!/bin/bash
docker compose exec -w /etc/caddy caddy caddy reload

11
pull-all.sh Executable file
View file

@ -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

View file

@ -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

View file

@ -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

15
start-all.sh Executable file
View file

@ -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;

6
stop-all.sh Executable file
View file

@ -0,0 +1,6 @@
#/bin/bash/
for dir in ./*/ ; do
(cd "$dir" && echo "[$dir]" && docker compose down);
done

View file

@ -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