diff --git a/01-core/assets/config.yml b/01-core/assets/config.yml new file mode 100644 index 0000000..b985f49 --- /dev/null +++ b/01-core/assets/config.yml @@ -0,0 +1,72 @@ +title: "Brabros" +subtitle: "VPS Schaltzentrale" +icon: "fas fa-terminal" +header: true +columns: "3" +theme: default + +# Ein homogenes, edles Dark-Theme +colors: + light: + background: "#0f172a" + card-background: "#1e293b" + text: "#f8fafc" + text-header: "#ffffff" + text-subtitle: "#94a3b8" + link: "#38bdf8" + link-hover: "#7dd3fc" + highlight-primary: "#a855f7" + highlight-secondary: "#6366f1" + dark: + background: "#0f172a" + card-background: "#1e293b" + text: "#f8fafc" + text-header: "#ffffff" + text-subtitle: "#94a3b8" + link: "#38bdf8" + link-hover: "#7dd3fc" + highlight-primary: "#a855f7" + highlight-secondary: "#6366f1" + +services: + - name: "Core & Sicherheit" + icon: "fas fa-shield-alt" + items: + - name: "Authelia" + logo: "fas fa-key" + subtitle: "Zentrale Identität" + url: "https://auth.brabros.de" + - name: "Uptime Kuma" + logo: "fas fa-chart-bar" + subtitle: "Status & Monitoring" + url: "https://status.brabros.de" + - name: "Organisation" + icon: "fas fa-folder" + items: + - name: "BookStack Wiki" + logo: "fas fa-book" + subtitle: "Wissensdatenbank" + url: "https://wiki.brabros.de" + - name: "Vikunja To-Do" + logo: "fas fa-check-square" + subtitle: "Aufgaben & Kanban" + url: "https://todo.brabros.de" + - name: "Memos" + logo: "fas fa-sticky-note" + subtitle: "Schnelle Notizen" + url: "https://memos.brabros.de" + - name: "Apps & Media" + icon: "fas fa-cubes" + items: + - name: "File Browser" + logo: "fas fa-hdd" + subtitle: "Dateimanager" + url: "https://files.brabros.de" + - name: "Navidrome" + logo: "fas fa-compact-disc" + subtitle: "Musik-Streaming" + url: "https://music.brabros.de" + - name: "OpenClaw AI" + logo: "fas fa-brain" + subtitle: "Agenten Gateway" + url: "https://claw.brabros.de" diff --git a/01-core/docker-compose.yml b/01-core/docker-compose.yml new file mode 100644 index 0000000..6636d6f --- /dev/null +++ b/01-core/docker-compose.yml @@ -0,0 +1,77 @@ +networks: + traefik_proxy: + external: true + +services: + traefik: + image: traefik:latest + container_name: traefik + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./data/traefik:/etc/traefik + environment: + - DOCKER_API_VERSION=1.45 + command: + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + - "--entrypoints.websecure.address=:443" + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" + - "--certificatesresolvers.myresolver.acme.tlschallenge=true" + - "--certificatesresolvers.myresolver.acme.email=frankberger85@gmail.com" + - "--certificatesresolvers.myresolver.acme.storage=/etc/traefik/acme.json" + networks: + - traefik_proxy + + authelia: + image: authelia/authelia:latest + container_name: authelia + restart: unless-stopped + volumes: + - ./data/authelia:/config + networks: + - traefik_proxy + labels: + - "traefik.enable=true" + - "traefik.http.routers.authelia.rule=Host(`auth.brabros.de`)" + - "traefik.http.routers.authelia.entrypoints=websecure" + - "traefik.http.routers.authelia.tls.certresolver=myresolver" + - "traefik.http.services.authelia.loadbalancer.server.port=9091" + - "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.brabros.de/" + - "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true" + - "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email" + + homer: + image: b4bz/homer:latest + container_name: homer + restart: unless-stopped + volumes: + - ./data/homer:/www/assets + networks: + - traefik_proxy + labels: + - "traefik.enable=true" + - "traefik.http.routers.homer.rule=Host(`dashboard.brabros.de`)" + - "traefik.http.routers.homer.entrypoints=websecure" + - "traefik.http.routers.homer.tls.certresolver=myresolver" + - "traefik.http.routers.homer.middlewares=authelia@docker" + + uptime-kuma: + image: louislam/uptime-kuma:1 + container_name: uptime-kuma + restart: unless-stopped + volumes: + - ./data/uptime-kuma:/app/data + networks: + - traefik_proxy + labels: + - "traefik.enable=true" + - "traefik.http.routers.uptime.rule=Host(`status.brabros.de`)" + - "traefik.http.routers.uptime.entrypoints=websecure" + - "traefik.http.routers.uptime.tls.certresolver=myresolver" + - "traefik.http.routers.uptime.middlewares=authelia@docker" diff --git a/01-core/homer-data/config.yml b/01-core/homer-data/config.yml new file mode 100644 index 0000000..b985f49 --- /dev/null +++ b/01-core/homer-data/config.yml @@ -0,0 +1,72 @@ +title: "Brabros" +subtitle: "VPS Schaltzentrale" +icon: "fas fa-terminal" +header: true +columns: "3" +theme: default + +# Ein homogenes, edles Dark-Theme +colors: + light: + background: "#0f172a" + card-background: "#1e293b" + text: "#f8fafc" + text-header: "#ffffff" + text-subtitle: "#94a3b8" + link: "#38bdf8" + link-hover: "#7dd3fc" + highlight-primary: "#a855f7" + highlight-secondary: "#6366f1" + dark: + background: "#0f172a" + card-background: "#1e293b" + text: "#f8fafc" + text-header: "#ffffff" + text-subtitle: "#94a3b8" + link: "#38bdf8" + link-hover: "#7dd3fc" + highlight-primary: "#a855f7" + highlight-secondary: "#6366f1" + +services: + - name: "Core & Sicherheit" + icon: "fas fa-shield-alt" + items: + - name: "Authelia" + logo: "fas fa-key" + subtitle: "Zentrale Identität" + url: "https://auth.brabros.de" + - name: "Uptime Kuma" + logo: "fas fa-chart-bar" + subtitle: "Status & Monitoring" + url: "https://status.brabros.de" + - name: "Organisation" + icon: "fas fa-folder" + items: + - name: "BookStack Wiki" + logo: "fas fa-book" + subtitle: "Wissensdatenbank" + url: "https://wiki.brabros.de" + - name: "Vikunja To-Do" + logo: "fas fa-check-square" + subtitle: "Aufgaben & Kanban" + url: "https://todo.brabros.de" + - name: "Memos" + logo: "fas fa-sticky-note" + subtitle: "Schnelle Notizen" + url: "https://memos.brabros.de" + - name: "Apps & Media" + icon: "fas fa-cubes" + items: + - name: "File Browser" + logo: "fas fa-hdd" + subtitle: "Dateimanager" + url: "https://files.brabros.de" + - name: "Navidrome" + logo: "fas fa-compact-disc" + subtitle: "Musik-Streaming" + url: "https://music.brabros.de" + - name: "OpenClaw AI" + logo: "fas fa-brain" + subtitle: "Agenten Gateway" + url: "https://claw.brabros.de" diff --git a/02-orga/docker-compose.yml b/02-orga/docker-compose.yml new file mode 100644 index 0000000..75d9eb5 --- /dev/null +++ b/02-orga/docker-compose.yml @@ -0,0 +1,72 @@ +networks: + traefik_proxy: + external: true + orga_private: + driver: bridge + +services: + orga-db: + image: mariadb:10.11 + container_name: orga-db + restart: unless-stopped + volumes: + - ./data/db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: '%sjkhfl9(nvskl98fdsodkgjldsdölkgjpsdkrjg' + networks: + - orga_private + + bookstack: + image: lscr.io/linuxserver/bookstack:latest + container_name: bookstack + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - APP_URL=https://wiki.brabros.de + - DB_HOST=orga-db + - DB_PORT=3306 + - DB_DATABASE=bookstack + # HIER SIND DIE KORREKTEN VARIABLENNAMEN: + - DB_USERNAME=bookstack + - DB_PASSWORD=BkStkPasswd2026Secure + - APP_KEY=base64:c3VwZXJzZWN1cmVhcHBrZXlib29rc3RhY2syMDI2bXk= + volumes: + - ./data/bookstack:/config + networks: + - traefik_proxy + - orga_private + labels: + - "traefik.enable=true" + - "traefik.http.routers.bookstack.rule=Host(`wiki.brabros.de`)" + - "traefik.http.routers.bookstack.entrypoints=websecure" + - "traefik.http.routers.bookstack.tls.certresolver=myresolver" + - "traefik.http.routers.bookstack.middlewares=authelia@docker" + - "traefik.http.services.bookstack.loadbalancer.server.port=80" + - "traefik.docker.network=traefik_proxy" + + vikunja: + image: vikunja/vikunja:latest + container_name: vikunja + restart: unless-stopped + environment: + - VIKUNJA_DATABASE_HOST=orga-db + - VIKUNJA_DATABASE_PASSWORD=)%klsjfl8mnfwmf98ewiouhffwef + - VIKUNJA_DATABASE_TYPE=mysql + - VIKUNJA_DATABASE_USER=vikunja + - VIKUNJA_DATABASE_DATABASE=vikunja + - VIKUNJA_SERVICE_SECRET=EinZufaelligerLangerStringFuerJWT + - VIKUNJA_SERVICE_PUBLICURL=https://todo.brabros.de/ + volumes: + - ./data/vikunja:/app/vikunja/files + networks: + - traefik_proxy + - orga_private + labels: + - "traefik.enable=true" + - "traefik.http.routers.vikunja.rule=Host(`todo.brabros.de`)" + - "traefik.http.routers.vikunja.entrypoints=websecure" + - "traefik.http.routers.vikunja.tls.certresolver=myresolver" + - "traefik.http.routers.vikunja.middlewares=authelia@docker" + - "traefik.http.services.vikunja.loadbalancer.server.port=3456" + - "traefik.docker.network=traefik_proxy" diff --git a/04-media/docker-compose.yml b/04-media/docker-compose.yml new file mode 100644 index 0000000..7851011 --- /dev/null +++ b/04-media/docker-compose.yml @@ -0,0 +1,25 @@ +networks: + traefik_proxy: + external: true + +services: + navidrome: + image: deluan/navidrome:latest + container_name: navidrome + restart: unless-stopped + environment: + - ND_SCANINTERVAL=10m + - ND_LOGLEVEL=info + volumes: + - ./data/navidrome:/data + - ./music:/music:ro + networks: + - traefik_proxy + labels: + - "traefik.enable=true" + - "traefik.http.routers.navidrome.rule=Host(`music.brabros.de`)" + - "traefik.http.routers.navidrome.entrypoints=websecure" + - "traefik.http.routers.navidrome.tls.certresolver=myresolver" + - "traefik.http.routers.navidrome.middlewares=authelia@docker" + - "traefik.http.services.navidrome.loadbalancer.server.port=4533" + - "traefik.docker.network=traefik_proxy"