Compare commits

1 Commits

Author SHA1 Message Date
john 2210e36581 Upload files to "authelia"
working
2026-06-18 12:38:53 +01:00
10 changed files with 718 additions and 390 deletions
+36 -36
View File
@@ -21,7 +21,7 @@
# certificates_directory: '/config/certificates/' # certificates_directory: '/config/certificates/'
## The theme to display: light, dark, grey, auto. ## The theme to display: light, dark, grey, auto.
theme: 'dark' theme: 'grey'
## Set the default 2FA method for new users and for when a user has a preferred method configured that has been ## Set the default 2FA method for new users and for when a user has a preferred method configured that has been
## disabled. This setting must be a method that is enabled. ## disabled. This setting must be a method that is enabled.
@@ -121,7 +121,7 @@ server:
## ##
log: log:
## Level of verbosity for logs: info, debug, trace. ## Level of verbosity for logs: info, debug, trace.
level: 'debug' level: 'info'
## Format the logs are written as: json, text. ## Format the logs are written as: json, text.
format: 'text' format: 'text'
@@ -438,13 +438,13 @@ authentication_backend:
## This is the recommended Authentication Provider in production ## This is the recommended Authentication Provider in production
## because it allows Authelia to offload the stateful operations ## because it allows Authelia to offload the stateful operations
## onto the LDAP service. ## onto the LDAP service.
ldap: # ldap:
## The address of the directory server to connect to in the address common syntax. ## The address of the directory server to connect to in the address common syntax.
## Format: [<scheme>://]<hostname>[:<port>]. ## Format: [<scheme>://]<hostname>[:<port>].
## Square brackets indicate optional portions of the format. Scheme must be 'ldap', 'ldaps', or 'ldapi`. ## Square brackets indicate optional portions of the format. Scheme must be 'ldap', 'ldaps', or 'ldapi`.
## The default scheme is 'ldapi' if the address is an absolute path otherwise it's 'ldaps'. ## The default scheme is 'ldapi' if the address is an absolute path otherwise it's 'ldaps'.
## The default port is '636', unless the scheme is 'ldap' in which case it's '389'. ## The default port is '636', unless the scheme is 'ldap' in which case it's '389'.
# address: 'lldap_lldap:3890' # address: 'ldaps://127.0.0.1:636'
## The LDAP implementation, this affects elements like the attribute utilized for resetting a password. ## The LDAP implementation, this affects elements like the attribute utilized for resetting a password.
## Acceptable options are as follows: ## Acceptable options are as follows:
@@ -457,19 +457,19 @@ authentication_backend:
## Depending on the option here certain other values in this section have a default value, notably all of the ## Depending on the option here certain other values in this section have a default value, notably all of the
## attribute mappings have a default value that this config overrides, you can read more about these default values ## attribute mappings have a default value that this config overrides, you can read more about these default values
## at https://www.authelia.com/c/ldap#defaults ## at https://www.authelia.com/c/ldap#defaults
implementation: 'lldap' # implementation: 'custom'
address: 'ldap://lldap_lldap:3890'
## The dial timeout for LDAP in the duration common syntax. ## The dial timeout for LDAP in the duration common syntax.
timeout: '10 seconds' # timeout: '20 seconds'
## Use StartTLS with the LDAP connection. ## Use StartTLS with the LDAP connection.
# start_tls: false # start_tls: false
## TLS configuration. ## TLS configuration.
tls: # tls:
## The server subject name to check the servers certificate against during the validation process. ## The server subject name to check the servers certificate against during the validation process.
## This option is not required if the certificate has a SAN which matches the address options hostname. ## This option is not required if the certificate has a SAN which matches the address options hostname.
server_name: 'lldap_lldap' # server_name: 'ldap.example.com'
## Skip verifying the server certificate entirely. In preference to setting this we strongly recommend you add the ## Skip verifying the server certificate entirely. In preference to setting this we strongly recommend you add the
## certificate or the certificate of the authority signing the certificate to the certificates directory which is ## certificate or the certificate of the authority signing the certificate to the certificates directory which is
@@ -477,7 +477,7 @@ authentication_backend:
## It's important to note the public key should be added to the directory, not the private key. ## It's important to note the public key should be added to the directory, not the private key.
## This option is strongly discouraged but may be useful in some self-signed situations where validation is not ## This option is strongly discouraged but may be useful in some self-signed situations where validation is not
## important to the administrator. ## important to the administrator.
skip_verify: true # skip_verify: false
## Minimum TLS version for the connection. ## Minimum TLS version for the connection.
# minimum_version: 'TLS1.2' # minimum_version: 'TLS1.2'
@@ -518,7 +518,7 @@ authentication_backend:
## The distinguished name of the container searched for objects in the directory information tree. ## The distinguished name of the container searched for objects in the directory information tree.
## See also: additional_users_dn, additional_groups_dn. ## See also: additional_users_dn, additional_groups_dn.
base_dn: 'dc=johnsnexus,dc=click' # base_dn: 'dc=example,dc=com'
## The additional_users_dn is prefixed to base_dn and delimited by a comma when searching for users. ## The additional_users_dn is prefixed to base_dn and delimited by a comma when searching for users.
## i.e. with this set to OU=Users and base_dn set to DC=a,DC=com; OU=Users,DC=a,DC=com is searched for users. ## i.e. with this set to OU=Users and base_dn set to DC=a,DC=com; OU=Users,DC=a,DC=com is searched for users.
@@ -536,7 +536,7 @@ authentication_backend:
## ##
## To allow sign in both with username and email, one can use a filter like ## To allow sign in both with username and email, one can use a filter like
## (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)) ## (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person))
users_filter: '(&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person))' # users_filter: '(&({username_attribute}={input})(objectClass=person))'
## The additional_groups_dn is prefixed to base_dn and delimited by a comma when searching for groups. ## The additional_groups_dn is prefixed to base_dn and delimited by a comma when searching for groups.
## i.e. with this set to OU=Groups and base_dn set to DC=a,DC=com; OU=Groups,DC=a,DC=com is searched for groups. ## i.e. with this set to OU=Groups and base_dn set to DC=a,DC=com; OU=Groups,DC=a,DC=com is searched for groups.
@@ -548,27 +548,27 @@ authentication_backend:
## ##
## If your groups use the `groupOfUniqueNames` structure use this instead: ## If your groups use the `groupOfUniqueNames` structure use this instead:
## (&(uniqueMember={dn})(objectClass=groupOfUniqueNames)) ## (&(uniqueMember={dn})(objectClass=groupOfUniqueNames))
groups_filter: '(&(member={dn})(objectClass=groupOfNames))' # groups_filter: '(&(member={dn})(objectClass=groupOfNames))'
## The group search mode to use. Options are 'filter' or 'memberof'. It's essential to read the docs if you wish to ## The group search mode to use. Options are 'filter' or 'memberof'. It's essential to read the docs if you wish to
## use 'memberof'. Also 'filter' is the best choice for most use cases. ## use 'memberof'. Also 'filter' is the best choice for most use cases.
group_search_mode: 'filter' # group_search_mode: 'filter'
## Follow referrals returned by the server. ## Follow referrals returned by the server.
## This is especially useful for environments where read-only servers exist. Only implemented for write operations. ## This is especially useful for environments where read-only servers exist. Only implemented for write operations.
# permit_referrals: false # permit_referrals: false
## The username and password of the admin user. ## The username and password of the admin user.
user: 'UID=heimdall,OU=people,DC=johnsnexus,DC=click' # user: 'cn=admin,dc=example,dc=com'
## Password can also be set using a secret: https://www.authelia.com/c/secrets ## Password can also be set using a secret: https://www.authelia.com/c/secrets
password: 'ragnarok' # password: 'password'
## The attributes for users and objects from the directory server. ## The attributes for users and objects from the directory server.
# attributes: # attributes:
## The distinguished name attribute if your directory server supports it. Users should read the docs before ## The distinguished name attribute if your directory server supports it. Users should read the docs before
## configuring. Only used for the 'memberof' group search mode. ## configuring. Only used for the 'memberof' group search mode.
# distinguished_name: 'Administrator' # distinguished_name: ''
## The attribute holding the username of the user. This attribute is used to populate the username in the session ## The attribute holding the username of the user. This attribute is used to populate the username in the session
## information. For your information, Microsoft Active Directory usually uses 'sAMAccountName' and OpenLDAP ## information. For your information, Microsoft Active Directory usually uses 'sAMAccountName' and OpenLDAP
@@ -578,14 +578,14 @@ authentication_backend:
## Technically non-unique attributes like 'mail' can also be used but we don't recommend using them, we instead ## Technically non-unique attributes like 'mail' can also be used but we don't recommend using them, we instead
## advise to use a filter to perform alternative lookups and the attributes mentioned above ## advise to use a filter to perform alternative lookups and the attributes mentioned above
## (sAMAccountName and uid) to follow https://datatracker.ietf.org/doc/html/rfc2307. ## (sAMAccountName and uid) to follow https://datatracker.ietf.org/doc/html/rfc2307.
# username: 'uid' # username: 'uid'
## The attribute holding the display name of the user. This will be used to greet an authenticated user. ## The attribute holding the display name of the user. This will be used to greet an authenticated user.
# display_name: 'displayName' # display_name: 'displayName'
## The attribute holding the mail address of the user. If multiple email addresses are defined for a user, only ## The attribute holding the mail address of the user. If multiple email addresses are defined for a user, only
## the first one returned by the directory server is used. ## the first one returned by the directory server is used.
# mail: 'mail' # mail: 'mail'
## The attribute which provides distinguished names of groups an object is a member of. ## The attribute which provides distinguished names of groups an object is a member of.
## Only used for the 'memberof' group search mode. ## Only used for the 'memberof' group search mode.
@@ -606,21 +606,21 @@ authentication_backend:
## ##
## Important: Kubernetes (or HA) users must read https://www.authelia.com/t/statelessness ## Important: Kubernetes (or HA) users must read https://www.authelia.com/t/statelessness
## ##
# file: file:
# path: '/config/users_database.yml' path: '/config/users_database.yml'
# watch: false watch: false
# search: search:
# email: false email: false
# case_insensitive: false case_insensitive: false
# password: password:
# algorithm: 'argon2' algorithm: 'argon2'
# argon2: argon2:
# variant: 'argon2id' variant: 'argon2id'
# iterations: 3 iterations: 3
# memory: 65536 memory: 65536
# parallelism: 4 parallelism: 4
# key_length: 32 key_length: 32
# salt_length: 16 salt_length: 16
# scrypt: # scrypt:
# variant: 'scrypt' # variant: 'scrypt'
# iterations: 16 # iterations: 16
@@ -829,7 +829,7 @@ session:
## - The above 'domain' option MUST either: ## - The above 'domain' option MUST either:
## - Match the host portion of this URI. ## - Match the host portion of this URI.
## - Match the suffix of the host portion when prefixed with '.'. ## - Match the suffix of the host portion when prefixed with '.'.
authelia_url: 'https://auth.home.johnsnexus.click' authelia_url: 'https://auth.johnsnexus.click'
## Optional. The fully qualified URI used as the redirection location if the portal is accessed directly. Not ## Optional. The fully qualified URI used as the redirection location if the portal is accessed directly. Not
## configuring this option disables the automatic redirection behavior. ## configuring this option disables the automatic redirection behavior.
+5 -5
View File
@@ -5,9 +5,9 @@ services:
image: authelia/authelia image: authelia/authelia
container_name: authelia container_name: authelia
volumes: volumes:
- /mnt/disk/authelia/config:/config - /media/gv0/docker/authelia/config:/config
networks: networks:
- jda_net - caddy_net
security_opt: security_opt:
- no-new-privileges:true - no-new-privileges:true
ports: ports:
@@ -24,9 +24,9 @@ services:
image: redis:alpine image: redis:alpine
container_name: redis container_name: redis
volumes: volumes:
- /mnt/disk/authelia/redis:/data - /media/gv0/docker/redis:/data
networks: networks:
- jda_net - caddy_net
expose: expose:
- 6379 - 6379
restart: unless-stopped restart: unless-stopped
@@ -35,5 +35,5 @@ services:
networks: networks:
jda_net: caddy_net:
external: true external: true
+64
View File
@@ -0,0 +1,64 @@
services:
postgresql:
env_file:
- /media/gv0/docker/authentik/.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
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
volumes:
- /media/gv0/docker/authentik/postgres/database:/var/lib/postgresql/data
server:
command: server
depends_on:
postgresql:
condition: service_healthy
env_file:
- /media/gv0/docker/authentik/.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}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.5.3}
ports:
- ${COMPOSE_PORT_HTTP:-9000}:9000
- ${COMPOSE_PORT_HTTPS:-9443}:9443
restart: unless-stopped
shm_size: 512mb
volumes:
- /media/gv0/docker/authentik/data:/data
- /media/gv0/docker/authentik/custom-templates:/templates
worker:
command: worker
depends_on:
postgresql:
condition: service_healthy
env_file:
- /media/gv0/docker/authentik/.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}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.5.3}
restart: unless-stopped
shm_size: 512mb
user: root
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /media/gv0/docker/authentik/data:/data
- /media/gv0/docker/authentik/certs:/certs
- /media/gv0/docker/authentik/custom-templates:/templates
+103 -133
View File
@@ -2,7 +2,7 @@
{ {
# Global options, omly one such block at the head of the file # Global options, omly one such block at the head of the file
servers { servers {
trusted_proxies static 192.168.1.0/24 10.0.0.0/24 2a00:23c6::/32 trusted_proxies static 192.168.1.0/24 2a00:23c6::/32
} }
# make admin available to all trusted nodes on the network # make admin available to all trusted nodes on the network
admin :2019 admin :2019
@@ -11,19 +11,19 @@
# #
# #
# For Authelia # For Authelis
# #
(trusted_proxy_list) { (trusted_proxy_list) {
trusted_proxies 192.168.1.0/24 10.0.0.0/24 2a00:23c6::/32 trusted_proxies 192.168.1.0/24 2a00:23c6::/32
} }
(secure_site) { (secure_site) {
forward_auth {args[0]} 192.168.1.21:9091 { forward_auth {args[0]} 192.168.1.1:9091 {
uri /api/verify?rd=https://auth.home.johnsnexus.click uri /api/verify?rd=https://auth.johnsnexus.click
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
import trusted_proxy_list import trusted_proxy_list
header_up Host {upstream_hostport} header_up Host {upstream_hostport}
} }
} }
# #
# it appears you need this to allow prometheus on a remote node to scrape the metrics # it appears you need this to allow prometheus on a remote node to scrape the metrics
@@ -36,8 +36,8 @@
# Snippet for basic authorisation # Snippet for basic authorisation
# #
(basic-auth) { (basic-auth) {
basic_auth { basic_auth {
john.anderson $2a$10$4ka55bXqNBpoQcBDrJtd5OQje6Nt/HmvRNAGavqO03xq/Noth5xH. john.anderson $2a$10$T.yetVs9CmektYsaU8RqYu37fVaFAsPDLf90lsDDfxLkaC.zWH3Oi
mary.anderson $2a$10$UOuB5DpDcKRho0rRPDCmCeFlDSx/f6Bkwqpw8CEeQCbAGA0yULcny mary.anderson $2a$10$UOuB5DpDcKRho0rRPDCmCeFlDSx/f6Bkwqpw8CEeQCbAGA0yULcny
frazer.anderson $2a$10$UleGw5O0BB18XtSenFSawudO.qKbNVMFU772XMP4cAAUbWzRo/zr6 frazer.anderson $2a$10$UleGw5O0BB18XtSenFSawudO.qKbNVMFU772XMP4cAAUbWzRo/zr6
chris.anderson $2a$10$1MeL9m8M7FW/k6/DW3HB1.rkijS3qao8RraNO/tJKN8OuRTCzc3fK chris.anderson $2a$10$1MeL9m8M7FW/k6/DW3HB1.rkijS3qao8RraNO/tJKN8OuRTCzc3fK
@@ -55,33 +55,21 @@
barbara.wright $2a$10$Mlp0Y2wPzzomL1EnTInS2u18yv7ksMY.ATURzQz4luRRe2JwBMEJS barbara.wright $2a$10$Mlp0Y2wPzzomL1EnTInS2u18yv7ksMY.ATURzQz4luRRe2JwBMEJS
janet.kennedy $2a$10$/8VCpm68CLSF2zSL5sHtR.hzwJ.h3cX3r8XHogHbz8o7KIYPDHOVW janet.kennedy $2a$10$/8VCpm68CLSF2zSL5sHtR.hzwJ.h3cX3r8XHogHbz8o7KIYPDHOVW
} }
# respond "Welcome, {http.auth.user.id}" 200
} }
# #
# Authelia running on Production Cluster # Authelia from HOSTS
# #
auth.home.johnsnexus.click { auth.johnsnexus.click {
reverse_proxy 192.168.1.21:9091 { reverse_proxy 192.168.1.1:9091 {
import trusted_proxy_list import trusted_proxy_list
} }
} }
# #
# Portainer running on PROXMOX cluster
#
port.home.johnsnexus.click {
reverse_proxy https://192.168.1.240:9443 {
transport http {
tls
tls_insecure_skip_verify
}
}
}
#
# Locally hosted site # Locally hosted site
# #
testcaddy.home.johnsnexus.click { testcaddy.johnsnexus.click {
root * /usr/share/caddy # compose file points to this root * /usr/share/caddy # compose file points to this
php_fastcgi 192.168.1.11:80 php_fastcgi 192.168.1.1:80
file_server file_server
} }
# #
@@ -90,118 +78,96 @@ testcaddy.home.johnsnexus.click {
sandancer.ddnsfree.com { sandancer.ddnsfree.com {
root * /var/www/html root * /var/www/html
file_server file_server
reverse_proxy 192.168.1.243:8081 # reverse_proxy 192.168.1.1:8888
# reverse_proxy famhistweb_famhistweb reverse_proxy famhistweb_famhistweb
} }
# #
# Family History Web Site on virtual machine on PROXMOX cluster # PocketID OIDC security, come here from DYNU, running on OMEGA to access token device
nginx.home.johnsnexus.click {
reverse_proxy 192.168.1.243:80
}
#
famhist.home.johnsnexus.click {
root * /var/www/html
file_server
reverse_proxy 192.168.1.243:8081
}
#
# PocketID OIDC security, come here from DYNU, running on PROXMOX cluster
# #
https://hold.johnsnexus.click { https://hold.johnsnexus.click {
reverse_proxy 192.168.1.238:1411 reverse_proxy 192.168.1.5:1411
} }
# #
# Test GHOST site on BETA # Test GHOST site on ELITE cluster
# #
#ghost.johnsnexus.click { ghost.johnsnexus.click {
# root * /var/www/mymag root * /var/www/mymag
# file_server
# reverse_proxy 192.168.1.9:2368
#}
#
# Fanily History Web site on Production cluster system, come here via BIND9
#
nextfam.home.johnsnexus.click {
# import secure_site *
# root * /mnt/disk/NextFamilyWeb
file_server file_server
reverse_proxy 192.168.1.243:8082 { reverse_proxy 192.168.1.4:2368
}
#
# Fanily History Web site on Production cluster system, come here via HOSTS file
#
nextfamhistweb.johnsnexus.click {
# import basic-auth
import secure_site *
# root * /usr/local/apache2/htdocs
# file_server
reverse_proxy nextfamhistweb_nextfamhistweb {
import trusted_proxy_list import trusted_proxy_list
} }
} }
# #
# Test web site on Production Cluster, come here via BIND9 # Test web site on Production Cluster, come here via HOSTS file
# an example of a non-secure site on a different domain
# #
northweb.home.johnsnexus.click { http://northweb.johns.study {
import secure_site * import basic-auth
root * /usr/local/apache2/htdocs
file_server file_server
reverse_proxy 192.168.1.243:8083 reverse_proxy testweb_testweb
} }
# #
# Test version of paperless-ngx on OMEGA come here via BIND9 # Test version of paperless-ngx on Elite cluster, come here via HOSTS file
# #
wastebin.johnsnexus.click { wastebin.johnsnexus.click {
file_server file_server
reverse_proxy 192.168.1.5:8600 reverse_proxy 192.168.1.4:8600
} }
# #
# Version of pydio cells on NODE-16 using SAMBA volume - DYNU public address # Version of pydio cells on NODE-16 using SAMBA volume - DYNU public address
# #
#pydiocells.johnsnexus.click { pydiocells.johnsnexus.click {
# tls tls@johnsnexus.click # tls tls@johnsnexus.click
# reverse_proxy 192.168.1.4:8888 { reverse_proxy 192.168.1.4:8888 {
# transport http { transport http {
# tls tls
# tls_insecure_skip_verify tls_insecure_skip_verify
# } }
# } }
#}
#
# NEXTCLOUDAIO on virtual node 22, via DYNU
#
amudanan.johnsnexus.click {
file_server
reverse_proxy 192.168.1.22:11000
} }
# #
#codeamud.johnsnexus.click { # Nextcloud AIO on NODE-16, was Beta (220 or 9)
# file_server
# reverse_proxy 192.168.1.26:9980 {
# header_up X-Forwarded-Proto {scheme}
# transport http {
# tls_insecure_skip_verify
# }
# }
#}
# #
# OWNCLOUD on vmnode21 https://amudanan.johnsnexus.click:443 {
header Strict-Transport-Security max-age=15552000
file_server
reverse_proxy http://192.168.1.16:11000
}
#
# OWNCLOUD on BEES swarm via DYNU
# #
mycloud.johnsnexus.click { mycloud.johnsnexus.click {
header Strict-Transport-Security max-age=15552000 header Strict-Transport-Security max-age=15552000
file_server file_server
reverse_proxy 192.168.1.21:8080 reverse_proxy 192.168.1.3:8080
} }
# #
code.johnsnexus.click { code.johnsnexus.click {
encode gzip
file_server file_server
reverse_proxy 192.168.1.21:9980 { reverse_proxy https://192.168.1.3:9980 {
header_up X-Forwarded-Proto {scheme} transport http {
# transport http { tls_insecure_skip_verify
# tls_insecure_skip_verify }
# }
} }
} }
# #
# Vaultwarden on PROXMOX Cluster # Vaultwarden on Production Cluster, come here via HOSTS
# #
warden.johnsnexus.click { #warden.johnsnexus.click {
reverse_proxy https://192.168.1.25:8000 { # reverse_proxy http://192.168.1.1:80
transport http { #}
tls
tls_insecure_skip_verify
}
}
}
# #
# SongKong on VALHALLA, come here via DYNU # SongKong on VALHALLA, come here via DYNU
https://chord.johnsnexus.click { https://chord.johnsnexus.click {
@@ -212,56 +178,60 @@ https://chord.johnsnexus.click {
## ##
# n8n running on DELTA, come here via DYNU # n8n running on DELTA, come here via DYNU
# #
#donut.johnsnexus.click { donut.johnsnexus.click {
# reverse_proxy http://192.168.1.10:5678 { reverse_proxy http://192.168.1.10:5678 {
# flush_interval -1 flush_interval -1
# } }
#} }
# #
# CTiO magazine using NICEPAGE on PROXMOX Cluster # CTiO magazine using Ghost on production
# two ways to access
# #
ctio.johnsnexus.click { ctio.johnsnexus.click {
file_server file_server
reverse_proxy 192.168.1.243:8084 reverse_proxy 192.168.1.1:2368
} }
# #
#**************************************** #****************************************
# #
# Needs SSL; # Hoarder from hosts file, keep in extenal domain
# Needs SSL; leave as explicit address; use 3200 as gitea uses 3000
# #
hoard.johnsnexus.click { hoarder.johnsnexus.click {
reverse_proxy 192.168.1.234:3000 reverse_proxy 192.168.1.4:3200
} }
# #
# runs on virtual LXC # # although "prod" it runs on Elite Cluster
grafana.johnsnexus.click {
# file_server
reverse_proxy 192.168.1.4:3030
}
# new gitea on elite cluster
mygit.johnsnexus.click {
reverse_proxy 192.168.1.4:3000
}
# #
https://grafana.home.johnsnexus.click { # copy of mygit on the production cluster
gitea.johnsnexus.click {
file_server file_server
reverse_proxy 192.168.1.236:3000 reverse_proxy 192.168.1.1:3000
} }
# #
# runs on virtual node 21; not sure about additional line! gotify.johnsnexus.click {
# reverse_proxy 192.168.1.4:8111
lldap.home.johnsnexus.click {
reverse_proxy 192.168.1.21:17170 {
header_up Host {http.request.host}
}
} }
# #
# copy of mygit on the proxmox cluster # Portainer manageed on ELITE cluster, come here via HOSTS
gitea.home.johnsnexus.click { # Use port 9000 not 9443
file_server portainer.johnsnexus.click {
reverse_proxy 192.168.1.235:3000 reverse_proxy 192.168.1.4:9000
} }
# #
# now a virtual container on PROXMOX # Open Media Vault from HOSTS file
gotify.home.johnsnexus.click { #
reverse_proxy 192.168.1.230:80 omv.valhalla.johnsnexus.click {
reverse_proxy 192.168.1.7
} }
# #
# New home assistant, running under docker on NODE-16 via wireless omv.paradise.johnsnexus.click {
https://have.johnsnexus.click { reverse_proxy 192.168.1.8
file_server }
reverse_proxy 192.168.1.16:8123
}
+258
View File
@@ -0,0 +1,258 @@
Caddyfile on production cluster
{
# Global options, omly one such block at the head of the file
servers {
trusted_proxies static 192.168.1.0/24 2a00:23c6::/32
}
# make admin available to all trusted nodes on the network
admin :2019
metrics
}
#
#
# For Authelis
#
(trusted_proxy_list) {
trusted_proxies 192.168.1.0/24 2a00:23c6::/32
}
(secure_site) {
forward_auth {args[0]} 192.168.1.1:9091 {
uri /api/verify?rd=https://auth.johnsnexus.click
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
import trusted_proxy_list
header_up Host {upstream_hostport}
}
}
#
# it appears you need this to allow prometheus on a remote node to scrape the metrics
:2019 {
handle {
metrics
}
}
#
# Snippet for basic authorisation
#
(basic-auth) {
basic_auth {
john.anderson $2a$10$4ka55bXqNBpoQcBDrJtd5OQje6Nt/HmvRNAGavqO03xq/Noth5xH.
mary.anderson $2a$10$UOuB5DpDcKRho0rRPDCmCeFlDSx/f6Bkwqpw8CEeQCbAGA0yULcny
frazer.anderson $2a$10$UleGw5O0BB18XtSenFSawudO.qKbNVMFU772XMP4cAAUbWzRo/zr6
chris.anderson $2a$10$1MeL9m8M7FW/k6/DW3HB1.rkijS3qao8RraNO/tJKN8OuRTCzc3fK
ruth.hoyos $2a$10$9z/3SajAWhxJfu6Xs1lbEeuPpZWUzcuBI/8n5hfv5FUqt11Uxo92S
sarah.anderson-beecham $2a$10$.8J1FMBwGDr8XSXCMWcn2ODxSW6txLEqSBHZmA6zQs8qQCDT2KbR2
fiona.green $2a$10$Nid0Lg6Wauwi/5BN4N2H5u8T6XumK4EE2MBxZaKXajxUAuUXPEvGO
helen.crichton $2a$10$zOcnxMCr62NtNK3YTaWbRuOclI/lC1Lkn1RidTOxkgBTgruQgfg9K
david.rawsthorne $2a$10$OIALdPjjQT6i5exUg8GtmOGk4BD4WmanmDhF7wCVH/IbpQQSt6PAS
peter.rawsthorne $2a$10$asUwJpdwc4QlGc8b1A1v7ukBCIQTlzm59uRnBH6AnWiK6NAECW03S
marilyn.pope $2a$10$6iD1J3FVmFbY7i02gQaF0eu1fY4ufUsXiXMyc1G9YfXbYKwuamjI2
alan.potts $2a$10$tzbIZwIuzcdrIzJICIS1oeadwoKyr3JqL2Ec9aB8Dj.MR4Q7lMcV.
kate.griffin $2a$10$9R57yOgGilEPZNwCbjWHeOu/ytTv4SLbW0P/plRnI.GqHe3w3IJjO
craig.johnson $2a$10$LQf3tK0ZHl63LHybpDfSdu1WT9OtcLeNZTfCwniPlmuqHiNF.yOq6
grant.johnson $2a$10$7XZ3aoQdL/fLex48t6hgi.p9Xt3yNJNIXJKflxChprwT5O9zPy2hG
barbara.wright $2a$10$Mlp0Y2wPzzomL1EnTInS2u18yv7ksMY.ATURzQz4luRRe2JwBMEJS
janet.kennedy $2a$10$/8VCpm68CLSF2zSL5sHtR.hzwJ.h3cX3r8XHogHbz8o7KIYPDHOVW
}
# respond "Welcome, {http.auth.user.id}" 200
}
#
# Authelia from PIHOLE
#
auth.johnsnexus.click {
reverse_proxy 192.168.1.1:9091 {
import trusted_proxy_list
}
}
#
# Locally hosted site
#
testcaddy.johnsnexus.click {
root * /usr/share/caddy # compose file points to this
php_fastcgi 192.168.1.11:80
file_server
}
#
# Family history web site via container on this cluster
#
sandancer.ddnsfree.com {
root * /var/www/html
file_server
# reverse_proxy 192.168.1.1:8888
reverse_proxy famhistweb_famhistweb
}
#
# PocketID OIDC security, come here from DYNU, running on OMEGA to access token device
#
https://hold.johnsnexus.click {
reverse_proxy 192.168.1.5:1411
}
#
# Test GHOST site on BETA
#
#ghost.johnsnexus.click {
# root * /var/www/mymag
# file_server
# reverse_proxy 192.168.1.9:2368
#}
#
# Fanily History Web site on Production cluster system, come here via BIND9
#
nextfamhistweb.johnsnexus.click {
# import basic-auth
# import secure_site *
# root * /usr/local/apache2/htdocs
# file_server
reverse_proxy nextfamhistweb_nextfamhistweb {
import trusted_proxy_list
}
}
#
# Test web site on Production Cluster, come here via BIND9
#
northweb.johnsnexus.click {
# import secure_site *
# import basic-auth
# root * /usr/local/apache2/htdocs
file_server
reverse_proxy testweb_testweb
}
#
# Test version of paperless-ngx on OMEGA come here via BIND9
#
wastebin.johnsnexus.click {
file_server
reverse_proxy 192.168.1.5:8600
}
#
# Version of pydio cells on NODE-16 using SAMBA volume - DYNU public address
#
#pydiocells.johnsnexus.click {
# tls tls@johnsnexus.click
# reverse_proxy 192.168.1.4:8888 {
# transport http {
# tls
# tls_insecure_skip_verify
# }
# }
#}
#
# NEXTCLOUDAIO on virtual node 22, via DYNU
#
amudanan.johnsnexus.click {
file_server
reverse_proxy 192.168.1.22:11000
}
#
#codeamud.johnsnexus.click {
# file_server
# reverse_proxy 192.168.1.26:9980 {
# header_up X-Forwarded-Proto {scheme}
# transport http {
# tls_insecure_skip_verify
# }
# }
#}
#
# OWNCLOUD on vmnode21
#
mycloud.johnsnexus.click {
header Strict-Transport-Security max-age=15552000
file_server
reverse_proxy 192.168.1.21:8080
}
#
code.johnsnexus.click {
file_server
reverse_proxy 192.168.1.21:9980 {
header_up X-Forwarded-Proto {scheme}
# transport http {
# tls_insecure_skip_verify
# }
}
}
#
# TESTCLOUD/Nextcloud Alpine on ZETA
#testcloud.johnsnexus.click {
# file_server
# reverse_proxy 192.168.1.26
#}
#
# TESTCLOUD/nextcloud-alpine in a secure LXC on ZETA
#
testcloud.johnsnexus.click {
header Strict-Transport-Security max-age=15552000
file_server
reverse_proxy https://192.168.1.232:443 {
transport http {
tls_insecure_skip_verify
}
}
}
#
# Vaultwarden on Production Cluster, come here via HOSTS
#
#warden.johnsnexus.click {
# reverse_proxy http://192.168.1.1:80
#}
#
# SongKong on VALHALLA, come here via DYNU
https://chord.johnsnexus.click {
root * /music
file_server
reverse_proxy http://192.168.1.7:4567
}
##
# n8n running on DELTA, come here via DYNU
#
#donut.johnsnexus.click {
# reverse_proxy http://192.168.1.10:5678 {
# flush_interval -1
# }
#}
#
# CTiO magazine using NICEPAGE on PROXMOX
#
ctio.johnsnexus.click {
file_server
reverse_proxy ctiomag_ctiomag
}
#
#****************************************
#
# Needs SSL; leave as explicit address; use 3200 as gitea uses 3000
#
hoarder.johnsnexus.click {
reverse_proxy 192.168.1.15:3200
}
#
#
# runs on virtual node-15 in a docker container
#
grafana.johnsnexus.click {
# import basic-auth
reverse_proxy 192.168.1.15:3030
}
#
# new gitea on Elite cluster
#
mygit.johnsnexus.click {
reverse_proxy 192.168.1.15:3000
}
#
# copy of mygit on the production cluster
gitea.johnsnexus.click {
file_server
reverse_proxy 192.168.1.1:3000
}
#
# now a cirtual container on PROXMOX
gotify.johnsnexus.click {
reverse_proxy 192.168.1.230:80
}
#
# New home assistant, running under docker on NODE-16 via wireless
https://have.johnsnexus.click {
file_server
reverse_proxy 192.168.1.16:8123
+248
View File
@@ -0,0 +1,248 @@
# Caddyfile on production cluster
{
# Global options, omly one such block at the head of the file
servers {
trusted_proxies static 192.168.1.0/24 2a00:23c6::/32
}
# make admin available to all trusted nodes on the network
admin :2019
metrics
}
#
#
# For Authelis
#
(trusted_proxy_list) {
trusted_proxies 192.168.1.0/24 2a00:23c6::/32
}
(secure_site) {
forward_auth {args[0]} 192.168.1.1:9091 {
uri /api/verify?rd=https://auth.johnsnexus.click
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
import trusted_proxy_list
header_up Host {upstream_hostport}
}
}
#
# it appears you need this to allow prometheus on a remote node to scrape the metrics
:2019 {
handle {
metrics
}
}
#
# Snippet for basic authorisation
#
(basic-auth) {
basic_auth {
john.anderson $2a$10$T.yetVs9CmektYsaU8RqYu37fVaFAsPDLf90lsDDfxLkaC.zWH3Oi
mary.anderson $2a$10$UOuB5DpDcKRho0rRPDCmCeFlDSx/f6Bkwqpw8CEeQCbAGA0yULcny
frazer.anderson $2a$10$UleGw5O0BB18XtSenFSawudO.qKbNVMFU772XMP4cAAUbWzRo/zr6
chris.anderson $2a$10$1MeL9m8M7FW/k6/DW3HB1.rkijS3qao8RraNO/tJKN8OuRTCzc3fK
ruth.hoyos $2a$10$9z/3SajAWhxJfu6Xs1lbEeuPpZWUzcuBI/8n5hfv5FUqt11Uxo92S
sarah.anderson-beecham $2a$10$.8J1FMBwGDr8XSXCMWcn2ODxSW6txLEqSBHZmA6zQs8qQCDT2KbR2
fiona.green $2a$10$Nid0Lg6Wauwi/5BN4N2H5u8T6XumK4EE2MBxZaKXajxUAuUXPEvGO
helen.crichton $2a$10$zOcnxMCr62NtNK3YTaWbRuOclI/lC1Lkn1RidTOxkgBTgruQgfg9K
david.rawsthorne $2a$10$OIALdPjjQT6i5exUg8GtmOGk4BD4WmanmDhF7wCVH/IbpQQSt6PAS
peter.rawsthorne $2a$10$asUwJpdwc4QlGc8b1A1v7ukBCIQTlzm59uRnBH6AnWiK6NAECW03S
marilyn.pope $2a$10$6iD1J3FVmFbY7i02gQaF0eu1fY4ufUsXiXMyc1G9YfXbYKwuamjI2
alan.potts $2a$10$tzbIZwIuzcdrIzJICIS1oeadwoKyr3JqL2Ec9aB8Dj.MR4Q7lMcV.
kate.griffin $2a$10$9R57yOgGilEPZNwCbjWHeOu/ytTv4SLbW0P/plRnI.GqHe3w3IJjO
craig.johnson $2a$10$LQf3tK0ZHl63LHybpDfSdu1WT9OtcLeNZTfCwniPlmuqHiNF.yOq6
grant.johnson $2a$10$7XZ3aoQdL/fLex48t6hgi.p9Xt3yNJNIXJKflxChprwT5O9zPy2hG
barbara.wright $2a$10$Mlp0Y2wPzzomL1EnTInS2u18yv7ksMY.ATURzQz4luRRe2JwBMEJS
janet.kennedy $2a$10$/8VCpm68CLSF2zSL5sHtR.hzwJ.h3cX3r8XHogHbz8o7KIYPDHOVW
}
# respond "Welcome, {http.auth.user.id}" 200
}
#
# Authelia from PIHOLE
#
auth.johnsnexus.click {
reverse_proxy 192.168.1.1:9091 {
import trusted_proxy_list
}
}
#
# Locally hosted site
#
testcaddy.johnsnexus.click {
root * /usr/share/caddy # compose file points to this
php_fastcgi 192.168.1.1:80
file_server
}
#
# Family history web site via container on this cluster
#
sandancer.ddnsfree.com {
root * /var/www/html
file_server
# reverse_proxy 192.168.1.1:8888
reverse_proxy famhistweb_famhistweb
}
#
# PocketID OIDC security, come here from DYNU, running on OMEGA to access token device
#
https://hold.johnsnexus.click {
reverse_proxy 192.168.1.5:1411
}
#
# Test GHOST site on BETA
#
ghost.johnsnexus.click {
root * /var/www/mymag
file_server
reverse_proxy 192.168.1.9:2368
}
#
# Fanily History Web site on Production cluster system, come here via BIND9
#
nextfamhistweb.johnsnexus.click {
# import basic-auth
# import secure_site *
# root * /usr/local/apache2/htdocs
# file_server
reverse_proxy nextfamhistweb_nextfamhistweb {
import trusted_proxy_list
}
}
#
# Test web site on Production Cluster, come here via BIND9
#
northweb.johnsnexus.click {
# import secure_site *
# import basic-auth
root * /usr/local/apache2/htdocs
file_server
reverse_proxy testweb_testweb
}
#
# Test version of paperless-ngx on OMEGA come here via BIND9
#
wastebin.johnsnexus.click {
file_server
reverse_proxy 192.168.1.5:8600
}
#
# Version of pydio cells on NODE-16 using SAMBA volume - DYNU public address
#
#pydiocells.johnsnexus.click {
# tls tls@johnsnexus.click
# reverse_proxy 192.168.1.4:8888 {
# transport http {
# tls
# tls_insecure_skip_verify
# }
# }
#}
#
# Owncloud on ELITE "cluster", via DYNU
#
amudanan.johnsnexus.click {
file_server
reverse_proxy 192.168.1.9:11000
}
#
codeamud.johnsnexus.click {
file_server
reverse_proxy 192.168.1.9:9980 {
header_up X-Forwarded-Proto {scheme}
# transport http {
# tls_insecure_skip_verify
# }
}
}
#
# OWNCLOUD on DELTA come here via BIND9
#
mycloud.johnsnexus.click {
header Strict-Transport-Security max-age=15552000
file_server
reverse_proxy 192.168.1.10:8080
}
#
code.johnsnexus.click {
file_server
reverse_proxy 192.168.1.10:9980 {
header_up X-Forwarded-Proto {scheme}
# transport http {
# tls_insecure_skip_verify
# }
}
}
#
# TESTCLOUD/NEXTCLOUDAIO on ZETA come here via BIND9
#
testcloud.johnsnexus.click {
file_server
reverse_proxy http://192.168.1.20:11000
}
#
# Vaultwarden on Production Cluster, come here via HOSTS
#
#warden.johnsnexus.click {
# reverse_proxy http://192.168.1.1:80
#}
#
# SongKong on VALHALLA, come here via DYNU
https://chord.johnsnexus.click {
root * /music
file_server
reverse_proxy http://192.168.1.7:4567
}
##
# n8n running on DELTA, come here via DYNU
#
donut.johnsnexus.click {
reverse_proxy http://192.168.1.10:5678 {
flush_interval -1
}
}
#
# CTiO magazine using Ghost on production
#
ctio.johnsnexus.click {
file_server
reverse_proxy 192.168.1.1:2368
}
#
#****************************************
#
# Hoarder from PIHOLR
# Needs SSL; leave as explicit address; use 3200 as gitea uses 3000
#
hoarder.johnsnexus.click {
reverse_proxy 192.168.1.9:3200
}
#
#
# although "prod" it runs on Elite Cluster
#
grafana.johnsnexus.click {
# file_server
reverse_proxy 192.168.1.9:3030
}
#
# new gitea on Elite cluster
#
mygit.johnsnexus.click {
reverse_proxy 192.168.1.9:3000
}
#
# copy of mygit on the production cluster
gitea.johnsnexus.click {
file_server
reverse_proxy 192.168.1.1:3000
}
#
gotify.johnsnexus.click {
reverse_proxy 192.168.1.9:8111
}
#
# New home assistant, running unde docker on ZETA
https://have.johnsnexus.click {
file_server
reverse_proxy 192.168.1.16:8123
}
-19
View File
@@ -1,19 +0,0 @@
services:
lldap:
image: lldap/lldap:stable
container_name: lldap
ports:
- "3890:3890" # LDAP port
- "17170:17170" # Web UI port
volumes:
- /mnt/disk/lldap/data:/data
environment:
LLDAP_JWT_SECRET: "/K{5T.'-zR,W*gg|xI,u-[/[5.1?HI-S"
LLDAP_LDAP_USER_PASS: "Password1" # Change this!
restart: unless-stopped
networks:
- jda_net
networks:
jda_net:
external: true
-174
View File
@@ -1,174 +0,0 @@
## Default configuration for Docker.
## All the values can be overridden through environment variables, prefixed
## with "LLDAP_". For instance, "ldap_port" can be overridden with the
## "LLDAP_LDAP_PORT" variable.
## Tune the logging to be more verbose by setting this to be true.
## You can set it with the LLDAP_VERBOSE environment variable.
# verbose=false
## The host address that the LDAP server will be bound to.
## To enable IPv6 support, simply switch "ldap_host" to "::":
## To only allow connections from localhost (if you want to restrict to local self-hosted services),
## change it to "127.0.0.1" ("::1" in case of IPv6).
## If LLDAP server is running in docker, set it to "0.0.0.0" ("::" for IPv6) to allow connections
## originating from outside the container.
#ldap_host = "0.0.0.0"
## The port on which to have the LDAP server.
#ldap_port = 3890
## The host address that the HTTP server will be bound to.
## To enable IPv6 support, simply switch "http_host" to "::".
## To only allow connections from localhost (if you want to restrict to local self-hosted services),
## change it to "127.0.0.1" ("::1" in case of IPv6).
## If LLDAP server is running in docker, set it to "0.0.0.0" ("::" for IPv6) to allow connections
## originating from outside the container.
#http_host = "0.0.0.0"
## The port on which to have the HTTP server, for user login and
## administration.
#http_port = 17170
## The public URL of the server, for password reset links.
#http_url = "http://localhost"
## The path to the front-end assets (relative to the working directory).
#assets_path = "./app"
## Random secret for JWT signature.
## This secret should be random, and should be shared with application
## servers that need to consume the JWTs.
## Changing this secret will invalidate all user sessions and require
## them to re-login.
## You should probably set it through the LLDAP_JWT_SECRET environment
## variable from a secret ".env" file.
## This can also be set from a file's contents by specifying the file path
## in the LLDAP_JWT_SECRET_FILE environment variable
## You can generate it with (on linux):
## LC_ALL=C tr -dc 'A-Za-z0-9!#%&'\''()*+,-./:;<=>?@[\]^_{|}~' </dev/urandom | head -c 32; echo ''
#jwt_secret = "REPLACE_WITH_RANDOM"
## Base DN for LDAP.
## This is usually your domain name, and is used as a
## namespace for your users. The choice is arbitrary, but will be needed
## to configure the LDAP integration with other services.
## The sample value is for "example.com", but you can extend it with as
## many "dc" as you want, and you don't actually need to own the domain
## name.
ldap_base_dn = "dc=johnsnexus,dc=click"
## Admin username.
## For the LDAP interface, a value of "admin" here will create the LDAP
## user "cn=admin,ou=people,dc=example,dc=com" (with the base DN above).
## For the administration interface, this is the username.
#ldap_user_dn = "admin"
## Admin email.
## Email for the admin account. It is only used when initially creating
## the admin user, and can safely be omitted.
#ldap_user_email = "admin@example.com"
## Admin password.
## Password for the admin account, both for the LDAP bind and for the
## administration interface. It is only used when initially creating
## the admin user.
## It should be minimum 8 characters long.
## You can set it with the LLDAP_LDAP_USER_PASS environment variable.
## This can also be set from a file's contents by specifying the file path
## in the LLDAP_LDAP_USER_PASS_FILE environment variable
## Note: you can create another admin user for user administration, this
## is just the default one.
#ldap_user_pass = "REPLACE_WITH_PASSWORD"
## Force reset of the admin password.
## Break glass in case of emergency: if you lost the admin password, you
## can set this to true to force a reset of the admin password to the value
## of ldap_user_pass above.
## Alternatively, you can set it to "always" to reset every time the server starts.
# force_ldap_user_pass_reset = false
## Database URL.
## This encodes the type of database (SQlite, MySQL, or PostgreSQL)
## , the path, the user, password, and sometimes the mode (when
## relevant).
## Note: SQlite should come with "?mode=rwc" to create the DB
## if not present.
## Example URLs:
## - "postgres://postgres-user:password@postgres-server/my-database"
## - "mysql://mysql-user:password@mysql-server/my-database"
##
## This can be overridden with the LLDAP_DATABASE_URL env variable.
database_url = "sqlite:///data/users.db?mode=rwc"
## Private key file.
## Not recommended, use key_seed instead.
## Contains the secret private key used to store the passwords safely.
## Note that even with a database dump and the private key, an attacker
## would still have to perform an (expensive) brute force attack to find
## each password.
## Randomly generated on first run if it doesn't exist.
## Env variable: LLDAP_KEY_FILE
#key_file = "/data/private_key"
## Seed to generate the server private key, see key_file above.
## This can be any random string, the recommendation is that it's at least 12
## characters long.
## Env variable: LLDAP_KEY_SEED
key_seed = "RanD0m STR1ng"
## Ignored attributes.
## Some services will request attributes that are not present in LLDAP. When it
## is the case, LLDAP will warn about the attribute being unknown. If you want
## to ignore the attribute and the service works without, you can add it to this
## list to silence the warning.
#ignored_user_attributes = [ "sAMAccountName" ]
#ignored_group_attributes = [ "mail", "userPrincipalName" ]
## Options to configure SMTP parameters, to send password reset emails.
## To set these options from environment variables, use the following format
## (example with "password"): LLDAP_SMTP_OPTIONS__PASSWORD
[smtp_options]
## Whether to enabled password reset via email, from LLDAP.
#enable_password_reset=true
## The SMTP server.
#server="smtp.gmail.com"
## The SMTP port.
#port=587
## How the connection is encrypted, either "NONE" (no encryption), "TLS" or "STARTTLS".
#smtp_encryption = "TLS"
## The SMTP user, usually your email address.
#user="sender@gmail.com"
## The SMTP password.
#password="password"
## The header field, optional: how the sender appears in the email. The first
## is a free-form name, followed by an email between <>.
#from="LLDAP Admin <sender@gmail.com>"
## Same for reply-to, optional.
#reply_to="Do not reply <noreply@localhost>"
## Options to configure LDAPS.
## To set these options from environment variables, use the following format
## (example with "port"): LLDAP_LDAPS_OPTIONS__PORT
[ldaps_options]
## Whether to enable LDAPS.
#enabled=true
## Port on which to listen.
#port=6360
## Certificate file.
#cert_file="/data/cert.pem"
## Certificate key file.
#key_file="/data/key.pem"
## Options to configure the healthcheck command.
## To set these options from environment variables, use the following format
## (example with http_host): LLDAP_HEALTHCHECK_OPTIONS__HTTP_HOST
[healthcheck_options]
## The host address that the healthcheck should verify for the HTTP server.
## If "http_host" is set to a specific IP address, this must be set to match if the built-in
## healthcheck command is used. Note: if this is an IPv6 address, it must be wrapped in [].
#http_host = "localhost"
## The host address that the healthcheck should verify for the LDAP server.
## If "ldap_host" is set to a specific IP address, this must be set to match if the built-in
## healthcheck command is used.
#ldap_host = "localhost"
+4 -4
View File
@@ -2,10 +2,10 @@ services:
uptime-kuma: uptime-kuma:
image: louislam/uptime-kuma:2.2.1 image: louislam/uptime-kuma:2.2.1
container_name: uptime-kuma container_name: uptime-kuma
# deploy: deploy:
# placement: placement:
# constraints: constraints:
# - node.labels.target != here - node.labels.target != here
restart: always restart: always
ports: ports:
- "3010:3001" - "3010:3001"
-19
View File
@@ -1,19 +0,0 @@
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- DOMAIN=https://warden.johnsnexus.click
- SIGNUPS_ALLOWED=true # Set to false after creating your account
ports:
- 8080:80
volumes:
- /media/gv0/docker/vw-data:/data
networks:
- caddy_net
networks:
caddy_net:
external: true