Compare commits

...

11 Commits

19 changed files with 1413 additions and 63 deletions
+3 -1
View File
@@ -21,6 +21,7 @@ metube/MeTube_downloads
uptime-kuma/data/ uptime-kuma/data/
termix/termix-data/* termix/termix-data/*
cfddns/config.json cfddns/config.json
checkmk/checkmk/*
# Steaming services files # Steaming services files
streaming/jellyfin/* streaming/jellyfin/*
@@ -32,7 +33,8 @@ streaming/qbittorrent/*
streaming/prowlarr/* streaming/prowlarr/*
# Homepage # Homepage
homepage/files/assets/images/team/* homepages/forust_files/assets/images/team/*
# Traefik files # Traefik files
traefik/letsencrypt/acme.json traefik/letsencrypt/acme.json
+20
View File
@@ -0,0 +1,20 @@
# ===================================
# Authentification app (authentik)
# PostgresQL conf
PG_PASS=change_this_cuz_its_ur_db_pass
PG_USER=authentik # it's okay
# Image Settings
AUTHENTIK_IMAGE=ghcr.io/goauthentik/server
AUTHENTIK_TAG=2025.10.2
# Networking
PORT_HTTP=9000
PORT_HTTPS=9443 # btw likely already used by portainer
AUTHENTIK_SECRET_KEY=super_secret_super_scary_authenik_key
AUTHENTIK_BOOTSTRAP_PASSWORD=pls_change_this
AUTHENTIK_ERROR_REPORTING__ENABLED=true # Or false to turn off
+106
View File
@@ -0,0 +1,106 @@
services:
postgresql:
image: docker.io/library/postgres:15-alpine
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_DB: ${PG_DB:-authentik}
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
POSTGRES_USER: ${PG_USER:-authentik}
healthcheck:
interval: 30s
retries: 5
start_period: 20s
test:
- CMD-SHELL
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
timeout: 5s
volumes:
- database:/var/lib/postgresql/data
networks:
- authentik
server:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.10.2}
command: server
container_name: authentik-server
restart: unless-stopped
ports:
- ${PORT_HTTP:-9000}:9000
- ${PORT_HTTPS:-9443}:9443
env_file:
- .env
environment:
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-proxy"
# Services
# - "traefik.http.services.authentik-server.loadbalancer.server.port=9443"
- "traefik.http.services.authentik-server.loadbalancer.server.port=9000"
# Prod Router
- "traefik.http.routers.authentik-server.rule=Host(`auth.forust.xyz`)"
- "traefik.http.routers.authentik-server.entrypoints=websecure"
- "traefik.http.routers.authentik-server.middlewares=security-headers@file"
- "traefik.http.routers.authentik-server.service=authentik-server"
- "traefik.http.routers.authentik-server.tls=true"
# Local Router
- "traefik.http.routers.authentik-server-local.rule=Host(`auth.workstation.internal`) || Host(`auth-dashboard.internal`)"
- "traefik.http.routers.authentik-server-local.entrypoints=websecure"
- "traefik.http.routers.authentik-server-local.middlewares=security-headers@file"
- "traefik.http.routers.authentik-server-local.service=authentik-server"
- "traefik.http.routers.authentik-server-local.tls=true"
# Dev Router
- "traefik.http.routers.authentik-server-dev.rule=Host(`auth.gigaforust.internal`)"
- "traefik.http.routers.authentik-server-dev.entrypoints=websecure"
- "traefik.http.routers.authentik-server-dev.middlewares=security-headers@file"
- "traefik.http.routers.authentik-server-dev.service=authentik-server"
- "traefik.http.routers.authentik-server-dev.tls=true"
volumes:
- ./media:/media
- ./custom-templates:/templates
networks:
- traefik-proxy
- authentik
depends_on:
postgresql:
condition: service_healthy
worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.10.2}
restart: unless-stopped
user: root
command: worker
env_file:
- .env
environment:
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./media:/media
- ./certs:/certs
- ./custom-templates:/templates
networks:
- authentik
depends_on:
postgresql:
condition: service_healthy
volumes:
database:
driver: local
networks:
authentik:
traefik-proxy:
external: true
+2 -2
View File
@@ -24,7 +24,7 @@ services:
# Prod Router # Prod Router
- "traefik.http.routers.dockmon.rule=Host(`dockmon.forust.xyz`)" - "traefik.http.routers.dockmon.rule=Host(`dockmon.forust.xyz`)"
- "traefik.http.routers.dockmon.entrypoints=websecure" - "traefik.http.routers.dockmon.entrypoints=websecure"
- "traefik.http.routers.dockmon.middlewares=security-headers@file,dockmon-auth@file" - "traefik.http.routers.dockmon.middlewares=security-chain@file"
- "traefik.http.routers.dockmon.service=dockmon" - "traefik.http.routers.dockmon.service=dockmon"
- "traefik.http.routers.dockmon.tls=true" - "traefik.http.routers.dockmon.tls=true"
- "traefik.http.services.dockmon.loadbalancer.server.port=443" - "traefik.http.services.dockmon.loadbalancer.server.port=443"
@@ -41,7 +41,7 @@ services:
# Dev Router # Dev Router
- "traefik.http.routers.dockmon-dev.rule=Host(`dockmon.gigaforust.internal`)" - "traefik.http.routers.dockmon-dev.rule=Host(`dockmon.gigaforust.internal`)"
- "traefik.http.routers.dockmon-dev.entrypoints=websecure" - "traefik.http.routers.dockmon-dev.entrypoints=websecure"
- "traefik.http.routers.dockmon-dev.middlewares=security-headers@file" - "traefik.http.routers.dockmon-dev.middlewares=security-chain@file"
- "traefik.http.routers.dockmon-dev.service=dockmon" - "traefik.http.routers.dockmon-dev.service=dockmon"
- "traefik.http.routers.dockmon-dev.tls=true" - "traefik.http.routers.dockmon-dev.tls=true"
+2 -2
View File
@@ -16,7 +16,7 @@ services:
# Prod Router # Prod Router
- "traefik.http.routers.glance.rule=Host(`glance.forust.xyz`)" - "traefik.http.routers.glance.rule=Host(`glance.forust.xyz`)"
- "traefik.http.routers.glance.entrypoints=websecure" - "traefik.http.routers.glance.entrypoints=websecure"
- "traefik.http.routers.glance.middlewares=security-headers@file" - "traefik.http.routers.glance.middlewares=security-chain@file"
- "traefik.http.routers.glance.tls=true" - "traefik.http.routers.glance.tls=true"
# Local Router # Local Router
@@ -28,7 +28,7 @@ services:
# Dev Router # Dev Router
- "traefik.http.routers.glance-dev.rule=Host(`glance.gigaforust.internal`)" - "traefik.http.routers.glance-dev.rule=Host(`glance.gigaforust.internal`)"
- "traefik.http.routers.glance-dev.entrypoints=websecure" - "traefik.http.routers.glance-dev.entrypoints=websecure"
- "traefik.http.routers.glance-dev.middlewares=security-headers@file" - "traefik.http.routers.glance-dev.middlewares=security-chain@file"
- "traefik.http.routers.glance-dev.tls=true" - "traefik.http.routers.glance-dev.tls=true"
networks: networks:
- traefik-proxy - traefik-proxy
-39
View File
@@ -1,39 +0,0 @@
services:
forust-homepage:
build: .
ports:
- "8085:80"
restart: unless-stopped
volumes:
- ./files:/usr/share/nginx/html
networks:
- traefik-proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-proxy"
# Prod Router
- "traefik.http.routers.forust-homepage.rule=Host(`forust.xyz`)"
- "traefik.http.routers.forust-homepage.entrypoints=websecure"
- "traefik.http.routers.forust-homepage.middlewares=security-headers@file"
- "traefik.http.routers.forust-homepage.service=forust-homepage"
- "traefik.http.routers.forust-homepage.tls=true"
- "traefik.http.services.forust-homepage.loadbalancer.server.port=80"
# Local Router
- "traefik.http.routers.forust-homepage-local.rule=Host(`landing.workstation.internal`) || Host(`landing.internal`)"
- "traefik.http.routers.forust-homepage-local.entrypoints=websecure"
- "traefik.http.routers.forust-homepage-local.middlewares=security-headers@file"
- "traefik.http.routers.forust-homepage-local.service=forust-homepage"
- "traefik.http.routers.forust-homepage-local.tls=true"
# Dev Router
- "traefik.http.routers.forust-homepage-dev.rule=Host(`landing.gigaforust.internal`)"
- "traefik.http.routers.forust-homepage-dev.entrypoints=websecure"
- "traefik.http.routers.forust-homepage-dev.middlewares=security-headers@file"
- "traefik.http.routers.forust-homepage-dev.service=forust-homepage"
- "traefik.http.routers.forust-homepage-dev.tls=true"
networks:
traefik-proxy:
external: true
+10
View File
@@ -0,0 +1,10 @@
# everyone use that
FROM nginx:alpine
RUN rm -rf /usr/share/nginx/html/*
COPY ./forust_files /usr/share/nginx/html
EXPOSE 80
# Start
CMD ["nginx", "-g", "daemon off;"]
@@ -3,7 +3,7 @@ FROM nginx:alpine
RUN rm -rf /usr/share/nginx/html/* RUN rm -rf /usr/share/nginx/html/*
COPY ./files /usr/share/nginx/html COPY ./xdfnx_files /usr/share/nginx/html
EXPOSE 80 EXPOSE 80
# Start # Start
+83
View File
@@ -0,0 +1,83 @@
services:
forust:
build:
context: .
dockerfile: Dockerfile.forust
ports:
- "8085:80"
restart: unless-stopped
volumes:
- ./forust_files:/usr/share/nginx/html
networks:
- traefik-proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-proxy"
# Services
- "traefik.http.services.forust-homepage.loadbalancer.server.port=80"
# Prod Router
- "traefik.http.routers.forust-homepage.rule=Host(`forust.xyz`)"
- "traefik.http.routers.forust-homepage.entrypoints=websecure"
- "traefik.http.routers.forust-homepage.middlewares=security-headers@file"
- "traefik.http.routers.forust-homepage.service=forust-homepage"
- "traefik.http.routers.forust-homepage.tls=true"
# Local Router
- "traefik.http.routers.forust-homepage-local.rule=Host(`landing.workstation.internal`) || Host(`landing.internal`)"
- "traefik.http.routers.forust-homepage-local.entrypoints=websecure"
- "traefik.http.routers.forust-homepage-local.middlewares=security-headers@file"
- "traefik.http.routers.forust-homepage-local.service=forust-homepage"
- "traefik.http.routers.forust-homepage-local.tls=true"
# Dev Router
- "traefik.http.routers.forust-homepage-dev.rule=Host(`landing.gigaforust.internal`)"
- "traefik.http.routers.forust-homepage-dev.entrypoints=websecure"
- "traefik.http.routers.forust-homepage-dev.middlewares=security-headers@file"
- "traefik.http.routers.forust-homepage-dev.service=forust-homepage"
- "traefik.http.routers.forust-homepage-dev.tls=true"
xdfnx:
build:
context: .
dockerfile: Dockerfile.xdfnx
ports:
- "8086:80"
restart: unless-stopped
volumes:
- ./xdfnx_files:/usr/share/nginx/html
networks:
- traefik-proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-proxy"
# Services
- "traefik.http.services.xdfnx-homepage.loadbalancer.server.port=80"
# Prod Router
- "traefik.http.routers.xdfnx.rule=Host(`xdfnx.cfd`)"
- "traefik.http.routers.xdfnx.entrypoints=websecure"
- "traefik.http.routers.xdfnx.middlewares=security-headers@file"
- "traefik.http.routers.xdfnx.service=xdfnx-homepage"
- "traefik.http.routers.xdfnx.tls=true"
# Local Router
- "traefik.http.routers.xdfnx-local.rule=Host(`xdfnx.workstation.internal`) || Host(`xdfnx.internal`)"
- "traefik.http.routers.xdfnx-local.entrypoints=websecure"
- "traefik.http.routers.xdfnx-local.middlewares=security-headers@file"
- "traefik.http.routers.xdfnx-local.service=xdfnx-homepage"
- "traefik.http.routers.xdfnx-local.tls=true"
# Dev Router
- "traefik.http.routers.xdfnx-dev.rule=Host(`xdfnx.gigaforust.internal`)"
- "traefik.http.routers.xdfnx-dev.entrypoints=websecure"
- "traefik.http.routers.xdfnx-dev.middlewares=security-headers@file"
- "traefik.http.routers.xdfnx-dev.service=xdfnx-homepage"
- "traefik.http.routers.xdfnx-dev.tls=true"
networks:
traefik-proxy:
external: true
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -19,7 +19,7 @@ services:
# Prod Router # Prod Router
- "traefik.http.routers.metube.rule=Host(`metube.forust.xyz`)" - "traefik.http.routers.metube.rule=Host(`metube.forust.xyz`)"
- "traefik.http.routers.metube.entrypoints=websecure" - "traefik.http.routers.metube.entrypoints=websecure"
- "traefik.http.routers.metube.middlewares=security-headers@file,metube-auth@file" - "traefik.http.routers.metube.middlewares=security-chain@file"
- "traefik.http.routers.metube.service=metube" - "traefik.http.routers.metube.service=metube"
- "traefik.http.routers.metube.tls=true" - "traefik.http.routers.metube.tls=true"
- "traefik.http.services.metube.loadbalancer.server.port=8081" - "traefik.http.services.metube.loadbalancer.server.port=8081"
@@ -27,14 +27,14 @@ services:
# Local Router # Local Router
- "traefik.http.routers.metube-local.rule=Host(`metube.workstation.internal`) || Host(`metube.internal`)" - "traefik.http.routers.metube-local.rule=Host(`metube.workstation.internal`) || Host(`metube.internal`)"
- "traefik.http.routers.metube-local.entrypoints=websecure" - "traefik.http.routers.metube-local.entrypoints=websecure"
- "traefik.http.routers.metube-local.middlewares=security-headers@file,metube-auth@file" - "traefik.http.routers.metube-local.middlewares=security-headers@file"
- "traefik.http.routers.metube-local.service=metube" - "traefik.http.routers.metube-local.service=metube"
- "traefik.http.routers.metube-local.tls=true" - "traefik.http.routers.metube-local.tls=true"
# Dev Router # Dev Router
- "traefik.http.routers.metube-dev.rule=Host(`metube.gigaforust.internal`)" - "traefik.http.routers.metube-dev.rule=Host(`metube.gigaforust.internal`)"
- "traefik.http.routers.metube-dev.entrypoints=websecure" - "traefik.http.routers.metube-dev.entrypoints=websecure"
- "traefik.http.routers.metube-dev.middlewares=security-headers@file,metube-auth@file" - "traefik.http.routers.metube-dev.middlewares=security-chain@file"
- "traefik.http.routers.metube-dev.service=metube" - "traefik.http.routers.metube-dev.service=metube"
- "traefik.http.routers.metube-dev.tls=true" - "traefik.http.routers.metube-dev.tls=true"
+1 -2
View File
@@ -1,6 +1,6 @@
services: services:
nextcloud-aio-mastercontainer: nextcloud-aio-mastercontainer:
image: ghcr.io/nextcloud-releases/all-in-one:latest image: ghcr.io/nextcloud-releases/all-in-one:beta
init: true # This setting makes sure that signals from main process inside the container are correctly forwarded to children. See https://docs.docker.com/reference/compose-file/services/#init init: true # This setting makes sure that signals from main process inside the container are correctly forwarded to children. See https://docs.docker.com/reference/compose-file/services/#init
restart: unless-stopped restart: unless-stopped
container_name: nextcloud-aio-mastercontainer # Do not change container_name: nextcloud-aio-mastercontainer # Do not change
@@ -10,7 +10,6 @@ services:
networks: networks:
- nextcloud-aio - nextcloud-aio
- traefik-proxy # Optional: Connects the mastercontainer to the traefik-proxy network in order to make the built-in reverse proxy detection work. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md - traefik-proxy # Optional: Connects the mastercontainer to the traefik-proxy network in order to make the built-in reverse proxy detection work. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# ports: # ports:
# - 8081:80 # may be removed if under reverse-proxy # - 8081:80 # may be removed if under reverse-proxy
# - 8443:8443 # - 8443:8443
+3
View File
@@ -0,0 +1,3 @@
# ===================================
# Traefik envs
EMAIL=bobrovod@national.shitposting.agency
+8 -8
View File
@@ -44,24 +44,24 @@ services:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.docker.network=traefik-proxy" - "traefik.docker.network=traefik-proxy"
# Prod Router (Dashboard) - DISABLED per user request # Prod Router (Dash)
# - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.forust.xyz`)" - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.forust.xyz`)"
# - "traefik.http.routers.traefik-dashboard.entrypoints=websecure" - "traefik.http.routers.traefik-dashboard.entrypoints=websecure"
# - "traefik.http.routers.traefik-dashboard.middlewares=auth,security-headers" - "traefik.http.routers.traefik-dashboard.middlewares=security-chain@file"
# - "traefik.http.routers.traefik-dashboard.service=api@internal" - "traefik.http.routers.traefik-dashboard.service=api@internal"
# - "traefik.http.routers.traefik-dashboard.tls=true" - "traefik.http.routers.traefik-dashboard.tls=true"
# Local Router # Local Router
- "traefik.http.routers.traefik-dashboard-local.rule=Host(`traefik.workstation.internal`) || Host(`traefik.internal`)" - "traefik.http.routers.traefik-dashboard-local.rule=Host(`traefik.workstation.internal`) || Host(`traefik.internal`)"
- "traefik.http.routers.traefik-dashboard-local.entrypoints=websecure" - "traefik.http.routers.traefik-dashboard-local.entrypoints=websecure"
- "traefik.http.routers.traefik-dashboard-local.middlewares=auth@file,security-headers@file" - "traefik.http.routers.traefik-dashboard-local.middlewares=security-headers@file"
- "traefik.http.routers.traefik-dashboard-local.service=api@internal" - "traefik.http.routers.traefik-dashboard-local.service=api@internal"
- "traefik.http.routers.traefik-dashboard-local.tls=true" - "traefik.http.routers.traefik-dashboard-local.tls=true"
# Dev Router # Dev Router
- "traefik.http.routers.traefik-dashboard-dev.rule=Host(`traefik.gigaforust.internal`)" - "traefik.http.routers.traefik-dashboard-dev.rule=Host(`traefik.gigaforust.internal`)"
- "traefik.http.routers.traefik-dashboard-dev.entrypoints=websecure" - "traefik.http.routers.traefik-dashboard-dev.entrypoints=websecure"
- "traefik.http.routers.traefik-dashboard-dev.middlewares=security-headers@file" - "traefik.http.routers.traefik-dashboard-dev.middlewares=security-chain@file"
- "traefik.http.routers.traefik-dashboard-dev.service=api@internal" - "traefik.http.routers.traefik-dashboard-dev.service=api@internal"
- "traefik.http.routers.traefik-dashboard-dev.tls=true" - "traefik.http.routers.traefik-dashboard-dev.tls=true"
+27 -4
View File
@@ -10,7 +10,7 @@ http:
metube-auth: metube-auth:
basicAuth: basicAuth:
users: users:
- "vv:$2y$05$JdT8AGUO9bd.E/PiCmKaoOJS1RFlXkrrmZ5mJ4f8/a1bEW39L3FbS" - "vv:$2y$05$JdT8AGUO9bd.E/PiCmKaoOJS1RFlXkrrmZ5mJ4f8/a1bEW39L3FbS"
realm: "MeTube Access" realm: "MeTube Access"
@@ -27,7 +27,7 @@ http:
users: users:
- "admin:$2y$05$.CKDD82sNUxcpaRrLbHuK.dopqt1fgurc2yfTKAT5OFzT7RvPrJHK" - "admin:$2y$05$.CKDD82sNUxcpaRrLbHuK.dopqt1fgurc2yfTKAT5OFzT7RvPrJHK"
realm: "Dockmon Access" realm: "Dockmon Access"
# Cloudflare IP Whitelist # Cloudflare IP Whitelist
cloudflare-ipwhitelist: cloudflare-ipwhitelist:
ipWhiteList: ipWhiteList:
@@ -48,6 +48,29 @@ http:
- "172.64.0.0/13" - "172.64.0.0/13"
- "131.0.72.0/22" - "131.0.72.0/22"
# Authentik + secure headers
security-chain:
chain:
middlewares:
- authentik@file
- security-headers@file
authentik:
forwardAuth:
address: "http://authentik-server:9000/outpost.goauthentik.io/auth/traefik"
trustForwardHeader: true
authResponseHeaders:
- X-authentik-username
- X-authentik-groups
- X-authentik-email
- X-authentik-name
- X-authentik-uid
- X-authentik-jwt
- X-authentik-meta-jwks
- X-authentik-meta-outpost
- X-authentik-meta-provider
- X-authentik-meta-app
- X-authentik-meta-version
# Security Headers # Security Headers
security-headers: security-headers:
headers: headers:
@@ -82,5 +105,5 @@ http:
nextcloud-chain: nextcloud-chain:
chain: chain:
middlewares: middlewares:
- nextcloud-secure-headers - nextcloud-secure-headers@file
- security-headers - security-headers@file
+2 -1
View File
@@ -4,7 +4,8 @@ tls:
# Cloudflare Origin CA *.forust.xyz # Cloudflare Origin CA *.forust.xyz
- certFile: /certs/cloudflare.pem - certFile: /certs/cloudflare.pem
keyFile: /certs/cloudflare.key keyFile: /certs/cloudflare.key
- certFile: /certs/xdfnx.pem
keyFile: /certs/xdfnx.key
stores: stores:
default: default:
defaultCertificate: defaultCertificate: