add mkdocs-wiki (#601)
Reviewed-on: #601 Co-authored-by: Michael Grote <michael.grote@posteo.de> Co-committed-by: Michael Grote <michael.grote@posteo.de>
This commit is contained in:
parent
55f002f828
commit
7c0c860600
14 changed files with 200 additions and 15 deletions
|
@ -78,6 +78,11 @@ services:
|
||||||
url: "http://docker10.grote.lan:2342"
|
url: "http://docker10.grote.lan:2342"
|
||||||
target: "_blank"
|
target: "_blank"
|
||||||
subtitle: "Bildersammlung"
|
subtitle: "Bildersammlung"
|
||||||
|
- name: "Wiki"
|
||||||
|
logo: "assets/icons/mkdocs.png"
|
||||||
|
url: "http://wiki2.mgrote.net" # noch ändern
|
||||||
|
target: "_blank"
|
||||||
|
subtitle: "Wiki"
|
||||||
|
|
||||||
- name: "Web"
|
- name: "Web"
|
||||||
icon: "fas fa-cloud"
|
icon: "fas fa-cloud"
|
||||||
|
|
BIN
docker-compose/homer/assets/icons/mkdocs.png
Normal file
BIN
docker-compose/homer/assets/icons/mkdocs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.5 KiB |
|
@ -63,7 +63,7 @@ services:
|
||||||
subtitle: "Container-Registry"
|
subtitle: "Container-Registry"
|
||||||
- name: "Woodpecker"
|
- name: "Woodpecker"
|
||||||
logo: "assets/icons/woodpecker.svg"
|
logo: "assets/icons/woodpecker.svg"
|
||||||
url: "http://docker10.grote.lan:8000"
|
url: "https://ci.mgrote.net"
|
||||||
target: "_blank"
|
target: "_blank"
|
||||||
subtitle: "CI/CD"
|
subtitle: "CI/CD"
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ services:
|
||||||
|
|
||||||
traefik.http.routers.registry.middlewares: registry-ipwhitelist
|
traefik.http.routers.registry.middlewares: registry-ipwhitelist
|
||||||
|
|
||||||
traefik.http.middlewares.registry-ipwhitelist.ipwhitelist.sourcerange: 192.168.2.0/24,10.25.25.0/24,192.168.48.0/24 # .48. ist Docker
|
traefik.http.middlewares.registry-ipwhitelist.ipwhitelist.sourcerange: 192.168.2.0/24,10.25.25.0/24,192.168.48.0/24,172.18.0.0/16 # .48. ist Docker
|
||||||
traefik.http.middlewares.registry-ipwhitelist.ipwhitelist.ipstrategy.depth: 0 # https://doc.traefik.io/traefik/middlewares/http/ipwhitelist/#ipstrategydepth
|
traefik.http.middlewares.registry-ipwhitelist.ipwhitelist.ipstrategy.depth: 0 # https://doc.traefik.io/traefik/middlewares/http/ipwhitelist/#ipstrategydepth
|
||||||
|
|
||||||
com.centurylinklabs.watchtower.depends-on: oci-registry-redis
|
com.centurylinklabs.watchtower.depends-on: oci-registry-redis
|
||||||
|
@ -80,7 +80,7 @@ services:
|
||||||
traefik.http.routers.registry-ui.entrypoints: entry_https
|
traefik.http.routers.registry-ui.entrypoints: entry_https
|
||||||
traefik.http.services.registry-ui.loadbalancer.server.port: 80
|
traefik.http.services.registry-ui.loadbalancer.server.port: 80
|
||||||
|
|
||||||
traefik.http.middlewares.registry-ui-ipwhitelist.ipwhitelist.sourcerange: 192.168.2.0/24,10.25.25.0/24,192.168.48.0/24 # .48. ist Docker
|
traefik.http.middlewares.registry-ui-ipwhitelist.ipwhitelist.sourcerange: 192.168.2.0/24,10.25.25.0/24 # .48. ist Docker
|
||||||
traefik.http.middlewares.registry-ui-ipwhitelist.ipwhitelist.ipstrategy.depth: 0 # https://doc.traefik.io/traefik/middlewares/http/ipwhitelist/#ipstrategydepth
|
traefik.http.middlewares.registry-ui-ipwhitelist.ipwhitelist.ipstrategy.depth: 0 # https://doc.traefik.io/traefik/middlewares/http/ipwhitelist/#ipstrategydepth
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ version: '3'
|
||||||
services:
|
services:
|
||||||
######## traefik ########
|
######## traefik ########
|
||||||
traefik:
|
traefik:
|
||||||
container_name: "traefik"
|
container_name: traefik
|
||||||
image: traefik:latest
|
image: traefik:latest
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -21,19 +21,40 @@ services:
|
||||||
TZ: Europe/Berlin
|
TZ: Europe/Berlin
|
||||||
labels:
|
labels:
|
||||||
com.centurylinklabs.watchtower.enable: true
|
com.centurylinklabs.watchtower.enable: true
|
||||||
# hier sind gemeinsame middlewares defniert und zu einer chain zusammengefasst
|
|
||||||
# CAVE: die Reihenfolge innerhalb von Chains/von Middlewares ist wichtig
|
######## nforwardauth ########
|
||||||
# Aufbau: traefik.http.middlewares.<NAME>.chain.middlewares: middleware1,middleware2,middleware3
|
nforwardauth:
|
||||||
# diese kann dann direkt eingebunden werden:
|
image: nosduco/nforwardauth:v1
|
||||||
# Beispiel: XXXXX
|
container_name: traefik-nforwardauth
|
||||||
# beim Einsatz von nforwardauth:
|
environment:
|
||||||
# Beispiel: YYYYY
|
TOKEN_SECRET: {{ lookup('keepass', 'nforwardauth_token_secret', 'password') }}
|
||||||
|
AUTH_HOST: auth.mgrote.net
|
||||||
|
labels:
|
||||||
|
traefik.enable: true
|
||||||
|
traefik.http.routers.nforwardauth.rule: Host(`auth.mgrote.net`)
|
||||||
|
|
||||||
|
traefik.http.middlewares.nforwardauth.forwardauth.address: http://nforwardauth:3000
|
||||||
|
|
||||||
|
traefik.http.services.nforwardauth.loadbalancer.server.port: 3000
|
||||||
|
traefik.http.routers.nforwardauth.tls: true
|
||||||
|
traefik.http.routers.nforwardauth.tls.certresolver: resolver_letsencrypt
|
||||||
|
traefik.http.routers.nforwardauth.entrypoints: entry_https
|
||||||
|
|
||||||
|
com.centurylinklabs.watchtower.depends-on: traefik
|
||||||
|
com.centurylinklabs.watchtower.enable: true
|
||||||
|
volumes:
|
||||||
|
- "./passwd:/passwd:ro" # Mount local passwd file at /passwd as read only
|
||||||
|
networks:
|
||||||
|
- traefik
|
||||||
|
|
||||||
######## Networks ########
|
######## Networks ########
|
||||||
networks:
|
networks:
|
||||||
traefik:
|
traefik:
|
||||||
external: true
|
external: true
|
||||||
|
|
||||||
######## Volumes ########
|
######## Volumes ########
|
||||||
volumes:
|
volumes:
|
||||||
acme_data:
|
acme_data:
|
||||||
|
|
||||||
|
|
||||||
|
# passwd
|
||||||
|
# echo "<user>:$(mkpasswd -m sha-512 <password>)"
|
||||||
|
|
1
docker-compose/traefik/passwd.j2
Normal file
1
docker-compose/traefik/passwd.j2
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{{ lookup('keepass', 'nforwardauth-mg-hash', 'password') }}
|
|
@ -31,8 +31,14 @@ certificatesResolvers:
|
||||||
tlsChallenge: true
|
tlsChallenge: true
|
||||||
|
|
||||||
log:
|
log:
|
||||||
level: DEBUG
|
level: INFO
|
||||||
|
|
||||||
api:
|
api:
|
||||||
insecure: true
|
insecure: true
|
||||||
dashboard: true # unter Port 8081 erreichbar
|
dashboard: true # unter Port 8081 erreichbar
|
||||||
|
|
||||||
|
#experimental:
|
||||||
|
# plugins:
|
||||||
|
# ldapAuth:
|
||||||
|
# moduleName: "github.com/wiltonsr/ldapAuth"
|
||||||
|
# version: "v0.1.4"
|
||||||
|
|
31
docker-compose/wiki/docker-compose.yml.j2
Normal file
31
docker-compose/wiki/docker-compose.yml.j2
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
wiki-webserver:
|
||||||
|
container_name: wiki-webserver
|
||||||
|
image: httpd:2.4
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik
|
||||||
|
ports:
|
||||||
|
- 8087:80
|
||||||
|
volumes:
|
||||||
|
- /docker/wiki/site:/usr/local/apache2/htdocs/
|
||||||
|
# /docker/wiki/site ist ein lokales Verzeichnis auf docker10
|
||||||
|
# dieser Verzeichnis wird direkt in der wiki ci gemountet
|
||||||
|
# und die daten werden dort reingeschrieben
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.wiki.rule: Host(`wiki2.mgrote.net`)
|
||||||
|
traefik.enable: true
|
||||||
|
traefik.http.routers.wiki.tls: true
|
||||||
|
traefik.http.routers.wiki.tls.certresolver: resolver_letsencrypt
|
||||||
|
traefik.http.routers.wiki.entrypoints: entry_https
|
||||||
|
traefik.http.services.wiki.loadbalancer.server.port: 80
|
||||||
|
|
||||||
|
traefik.http.routers.wiki.middlewares: nforwardauth
|
||||||
|
|
||||||
|
com.centurylinklabs.watchtower.enable: true
|
||||||
|
|
||||||
|
######## Networks ########
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
external: true
|
|
@ -5,7 +5,7 @@ services:
|
||||||
woodpecker-server:
|
woodpecker-server:
|
||||||
restart: always
|
restart: always
|
||||||
container_name: woodpecker-server
|
container_name: woodpecker-server
|
||||||
image: woodpeckerci/woodpecker-server:latest
|
image: woodpeckerci/woodpecker-server:v1.0
|
||||||
ports:
|
ports:
|
||||||
- 8000:8000
|
- 8000:8000
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -13,6 +13,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
WOODPECKER_OPEN: false
|
WOODPECKER_OPEN: false
|
||||||
WOODPECKER_HOST: https://ci.mgrote.net
|
WOODPECKER_HOST: https://ci.mgrote.net
|
||||||
|
WOODPECKER_WEBHOOK_HOST: http://docker10.grote.lan:8000
|
||||||
WOODPECKER_GITEA: true
|
WOODPECKER_GITEA: true
|
||||||
WOODPECKER_GITEA_URL: https://git.mgrote.net
|
WOODPECKER_GITEA_URL: https://git.mgrote.net
|
||||||
WOODPECKER_GITEA_CLIENT: {{ lookup('keepass', 'woodpecker-oauth2-client-id', 'password') }}
|
WOODPECKER_GITEA_CLIENT: {{ lookup('keepass', 'woodpecker-oauth2-client-id', 'password') }}
|
||||||
|
@ -42,7 +43,7 @@ services:
|
||||||
|
|
||||||
woodpecker-agent:
|
woodpecker-agent:
|
||||||
container_name: woodpecker-agent
|
container_name: woodpecker-agent
|
||||||
image: woodpeckerci/woodpecker-agent:latest
|
image: woodpeckerci/woodpecker-agent:v1.0
|
||||||
command: agent
|
command: agent
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|
73
friedhof/lldap/docker-compose.yml.j2
Normal file
73
friedhof/lldap/docker-compose.yml.j2
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
######## App ########
|
||||||
|
lldap:
|
||||||
|
image: nitnelave/lldap:stable
|
||||||
|
container_name: lldap-app
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
# For LDAP
|
||||||
|
- "3890:3890"
|
||||||
|
# For the web front-end
|
||||||
|
- "17170:17170"
|
||||||
|
networks:
|
||||||
|
- intern
|
||||||
|
- traefik
|
||||||
|
- mail-relay
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- "lldap:/data"
|
||||||
|
environment:
|
||||||
|
UID: 1000
|
||||||
|
GID: 1000
|
||||||
|
LLDAP_HTTP_PORT: 17170
|
||||||
|
LLDAP_HTTP_URL: http://docker10.grote.lan:17170
|
||||||
|
LLDAP_KEY_SEED: ganz_lang
|
||||||
|
LLDAP_VERBOSE: true
|
||||||
|
LLDAP_JWT_SECRET: jwt_secret
|
||||||
|
LLDAP_LDAP_BASE_DN: dc=grote,dc=lan
|
||||||
|
LLDAP_USER_DN: admin
|
||||||
|
LLDAP_LDAP_USER_PASS: user_pass_geheim
|
||||||
|
LLDAP_DATABASE_URL: mysql://lldap-db-user:mysql_password@lldap-db/lldap
|
||||||
|
LLDAP_SMTP_OPTIONS__ENABLE_PASSWORD_reset: true
|
||||||
|
LLDAP_SMTP_OPTIONS__FROM: "LLDAP Admin <info@mgrote.net>"
|
||||||
|
LLDAP_SMTP_OPTIONS__REPLY_TO: "Do not reply <info@mgrote.net>"
|
||||||
|
LLDAP_SMTP_OPTIONS__SERVER: mail-relay
|
||||||
|
LLDAP_SMTP_OPTIONS__PORT: 25
|
||||||
|
LLDAP_SMTP_OPTIONS__SMTP_ENCRYPTION: NONE
|
||||||
|
LLDAP_SMTP_OPTIONS__USER: info@mgrote.net
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
- com.centurylinklabs.watchtower.depends-on=lldap-db
|
||||||
|
######## DB ########
|
||||||
|
lldap-db:
|
||||||
|
image: mariadb:10
|
||||||
|
container_name: lldap-db
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- db:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=mysql_root_password
|
||||||
|
- MYSQL_PASSWORD=mysql_password
|
||||||
|
- MYSQL_DATABASE=lldap
|
||||||
|
- MYSQL_USER=lldap-db-user
|
||||||
|
- MYSQL_INITDB_SKIP_TZINFO=1
|
||||||
|
networks:
|
||||||
|
- intern
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
|
||||||
|
######## Volumes ########
|
||||||
|
volumes:
|
||||||
|
lldap:
|
||||||
|
db:
|
||||||
|
######## Networks ########
|
||||||
|
networks:
|
||||||
|
intern:
|
||||||
|
traefik:
|
||||||
|
external: true
|
||||||
|
mail-relay:
|
||||||
|
external: true
|
40
friedhof/lldap/docker-compose0.yml.j2
Normal file
40
friedhof/lldap/docker-compose0.yml.j2
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
wiki-webserver:
|
||||||
|
container_name: wiki-webserver
|
||||||
|
image: httpd:2.4
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- traefik
|
||||||
|
ports:
|
||||||
|
- 8087:80
|
||||||
|
volumes:
|
||||||
|
- /docker/wiki/site:/usr/local/apache2/htdocs/
|
||||||
|
# /docker/wiki/site ist ein lokales Verzeichnis auf docker10
|
||||||
|
# dieser Verzeichnis wird direkt in der wiki ci gemountet
|
||||||
|
# und die daten werden dort reingeschrieben
|
||||||
|
labels:
|
||||||
|
traefik.http.routers.wiki.rule: Host(`wiki2.mgrote.net`)
|
||||||
|
traefik.enable: true
|
||||||
|
traefik.http.routers.wiki.tls: true
|
||||||
|
traefik.http.routers.wiki.tls.certresolver: resolver_letsencrypt
|
||||||
|
traefik.http.routers.wiki.entrypoints: entry_https
|
||||||
|
traefik.http.services.wiki.loadbalancer.server.port: 80
|
||||||
|
|
||||||
|
traefik.http.routers.wiki.middlewares: nforwardauth
|
||||||
|
# traefik.http.routers.wiki.middlewares: ldap_auth
|
||||||
|
#
|
||||||
|
# # ldapAuth Options
|
||||||
|
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.enabled: true
|
||||||
|
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.logLevel: DEBUG
|
||||||
|
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.url: ldap://lldap-app
|
||||||
|
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.port: 3890
|
||||||
|
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.baseDN: "ou=people,dc=grote,dc=lan"
|
||||||
|
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.attribute: uid
|
||||||
|
|
||||||
|
com.centurylinklabs.watchtower.enable: true
|
||||||
|
|
||||||
|
######## Networks ########
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
external: true
|
|
@ -76,6 +76,12 @@ compose_files:
|
||||||
- name: whoami
|
- name: whoami
|
||||||
state: absent
|
state: absent
|
||||||
network: traefik_test
|
network: traefik_test
|
||||||
|
- name: wiki
|
||||||
|
state: present
|
||||||
|
network: traefik
|
||||||
|
- name: lldap
|
||||||
|
state: absent
|
||||||
|
network: ldap
|
||||||
|
|
||||||
### oefenweb.ufw
|
### oefenweb.ufw
|
||||||
ufw_rules:
|
ufw_rules:
|
||||||
|
|
BIN
keepass_db.kdbx
BIN
keepass_db.kdbx
Binary file not shown.
|
@ -37,6 +37,7 @@
|
||||||
dest: "{{ compose_dest_basedir }}/{{ item | replace(compose_src_basedir + '/', '') | replace('.j2', '') }}"
|
dest: "{{ compose_dest_basedir }}/{{ item | replace(compose_src_basedir + '/', '') | replace('.j2', '') }}"
|
||||||
with_items: "{{ lookup('pipe', 'find '+ compose_src_basedir +'/ -type f -name *.j2').split('\n') }}"
|
with_items: "{{ lookup('pipe', 'find '+ compose_src_basedir +'/ -type f -name *.j2').split('\n') }}"
|
||||||
no_log: true
|
no_log: true
|
||||||
|
register: copy_template
|
||||||
|
|
||||||
- name: Ensure needed networks exists
|
- name: Ensure needed networks exists
|
||||||
become: true
|
become: true
|
||||||
|
|
Loading…
Reference in a new issue