5 Commits
Author SHA1 Message Date
marc d289641cc6 Merge branch 'master' into nosslh 2022-08-20 20:41:11 +02:00
marc ab953f1c2c entrypoint shell 2022-08-19 19:02:18 +02:00
marc 80fe8cbe9e valentin.env 2022-08-19 18:57:10 +02:00
marc e4e7d76592 migrating first btw 2022-08-19 18:55:34 +02:00
marc 16139153a9 443 for caddy 2022-08-17 18:32:09 +02:00
139 changed files with 3659 additions and 6826 deletions
-1
View File
@@ -1,4 +1,3 @@
liberapay: marcpartensky
patreon: marcpartensky
github: marcpartensky
custom:
+1 -2
View File
@@ -23,5 +23,4 @@ jobs:
run: make merge
- name: Validate docker-compose.yml
# run: docker-compose -f stacks/docker-compose.yml config
# run: /opt/validator/validator-cli.py -f stacks/docker-compose.yml
run: docker-compose -f stacks/docker-compose.yml ps
run: /opt/validator/validator-cli.py -f stacks/docker-compose.yml
+1 -15
View File
@@ -2,6 +2,7 @@ docker-compose.yml
data/openvpn
data/secrets
data/certbot
data/traefik
data/searx
data/jenkins
data/beef
@@ -12,20 +13,5 @@ data/matrix
data/heimdall
data/pihole/etc-pihole
data/pxe
data/postgres/certs
data/wireguard
data/vaultwarden
data/filebrowser
data/focalboard
data/openvpn_*
data/mailcow
data/dockvpn
data/hydra
data/yt-dlp
data/mongo
data/gpg
data/redis
data.tar.gz
data.7z
data.7z.gpg
services/template.yml
+4 -16
View File
@@ -8,21 +8,9 @@ mswarm: merge
docker stack deploy -c stacks/docker-compose.yml vps
down:
docker stack rm vps
pull:
for file in services/*; do docker-compose -f $$file pull; done
export:
7z a -p data.7z data
gpg --encrypt --sign --recipient 'marc@marcpartensky.com' data.7z
tar cvzf data.tgz data
gpg --encrypt --recipient 'marc.partensky@gmail.com' data.tgz
rm data.tgz
networks:
docker network create --driver overlay --attachable caddy || true
docker network create --driver overlay --attachable ldap || true
docker network create --driver overlay --attachable postgres || true
docker network create --driver overlay --attachable mongo || true
docker network create --driver overlay --attachable vpn || true
docker network create --driver overlay --attachable redis || true
docker network create --driver overlay --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
docker network create --driver overlay --subnet 10.22.69.0/24 --gateway 10.22.69.1 --attachable pritunl || true
node:
docker node update --label-add net=web contabo
docker node update --label-add net=none tower
network:
docker network create --driver overlay --attachable caddy
+1 -4
View File
@@ -1,7 +1,6 @@
[![Docker Swarm Deployed](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml/badge.svg)](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml)
# Docker
[![Docker Swarm Services](https://cdn.discordapp.com/attachments/809914059981586462/1042966875514077227/unknown.png)](https://swarm.marcpartensky.com)
## Domains
- https://marcpartensky.com
@@ -9,6 +8,7 @@
- https://ialab.marcpartensky.com
- https://notebook.marcpartensky.com
- https://searx.marcpartensky.com
- https://cloud.marcpartensky.com
- https://wordpress.marcpartensky.com
- https://git.marcpartensky.com
- https://gitlab.marcpartensky.com
@@ -20,11 +20,8 @@
- https://swarm.marcpartensky.com
- https://auth.marcpartensky.com
- https://seafile.marcpartensky.com
- https://cloud.marcpartensky.com
- https://mail.marcpartensky.com
- https://arch.marcpartensky.com
- https://matrix.marcpartensky.com
- https://vault.marcpartensky.com
<!-- - https://dns.marcpartensky.com -->
<!-- - https://glou.marcpartensky.com -->
<!-- - https://minecraft.marcpartensky.com -->
-183
View File
@@ -1,183 +0,0 @@
bind_host: 0.0.0.0
bind_port: 3000
users:
- name: marc
password: $2a$10$E9cknJr/bTLtSUJ9EaW8r.Gw30FX8Plm8jgq.LaYxMwiX4DEuDK7O
auth_attempts: 5
block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
debug_pprof: false
web_session_ttl: 720
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
protection_enabled: true
blocking_mode: default
blocking_ipv4: ""
blocking_ipv6: ""
blocked_response_ttl: 10
protection_disabled_until: null
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
ratelimit: 20
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- https://dns10.quad9.net/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 9.9.9.10
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
all_servers: false
fastest_addr: false
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
blocked_hosts:
- version.bind
- id.server
- hostname.bind
trusted_proxies:
- 127.0.0.0/8
- ::1/128
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
cache_optimistic: false
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet:
custom_ip: ""
enabled: false
use_custom: false
max_goroutines: 300
handle_ddr: true
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
filtering_enabled: true
filters_update_interval: 24
parental_enabled: false
safebrowsing_enabled: false
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
safe_search:
enabled: false
bing: true
duckduckgo: true
google: true
pixabay: true
yandex: true
youtube: true
rewrites:
- domain: medium.com
answer: 0.0.0.0
- domain: marc
answer: marcpartensky.com
blocked_services: []
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: true
local_ptr_upstreams: []
use_dns64: false
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 853
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
strict_sni_check: false
querylog:
ignored: []
interval: 2160h
size_memory: 1000
enabled: true
file_enabled: true
statistics:
ignored: []
interval: 24h
enabled: true
filters:
- enabled: true
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
name: AdGuard DNS filter
id: 1
- enabled: true
url: https://adaway.org/hosts.txt
name: AdAway Default Blocklist
id: 2
- enabled: true
url: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
name: WindowsSpyBlocker - Hosts spy rules
id: 1668812860
- enabled: true
url: https://malware-filter.gitlab.io/malware-filter/phishing-filter-agh.txt
name: Phishing URL Blocklist (PhishTank and OpenPhish)
id: 1668812861
- enabled: true
url: https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt
name: Perflyst and Dandelion Sprout's Smart-TV Blocklist
id: 1668812862
- enabled: true
url: https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hosts
name: The Big List of Hacked Malware Web Sites
id: 1668812863
whitelist_filters: []
user_rules: []
dhcp:
enabled: false
interface_name: ""
local_domain_name: lan
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
clients:
runtime_sources:
whois: true
arp: true
rdns: true
dhcp: true
hosts: true
persistent: []
log_file: ""
log_max_backups: 0
log_max_size: 100
log_max_age: 3
log_compress: false
log_localtime: false
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 20
-11
View File
@@ -1,11 +0,0 @@
[database]
type = postgres
host = postgres:5432
name = grafana
user = grafana
password = ZTliY2MwOWQ5ZjNiMzUyMTc5YWMwNmJi
ssl_mode = disable
[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-35
View File
@@ -1,35 +0,0 @@
[ req ]
default_bits = 8192
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
dirstring_type = nobmp
[ req_distinguished_name ]
countryName = FR
countryName_default = FR
countryName_min = 2
countryName_max = 2
localityName = Europe/Paris
organizationalUnitName = Marc Partensky Corp
commonName = Marc Partensky
commonName_max = 64
emailAddress = marc@marcpartensky.com
emailAddress_max = 40
# [ req_attributes ]
# challengePassword = A challenge password
# challengePassword_min = 4
# challengePassword_max = 20
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
@@ -1,8 +0,0 @@
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER marc PASSWORD ZGQ4ZDk5OWEwYjNlMDJlNmQ5NmE1NjM5;
GRANT ALL PRIVILEGES ON DATABASE * TO marc;
EOSQL
-14
View File
@@ -1,14 +0,0 @@
#!/bin/sh
cd /var/lib/postgresql/certs
# private key and certificate from it
openssl req -new -text -newkey rsa:8192 -passout pass:$POSTGRES_PASSWORD -subj /CN=localhost -out server.req -keyout privkey.pem
# self signed root certificate
openssl rsa -in privkey.pem -passin pass:$POSTGRES_PASSWORD -out server.key
# derived certificate
openssl req -x509 -in server.req -text -key server.key -out server.crt
# change permissions to the root certificate for postgres
chmod 600 server.key
chown postgres:postgres server.key
+2 -6
View File
@@ -11,13 +11,9 @@ global:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['node-exporter:9100']
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080
- targets: ['localhost:9090']
-7
View File
@@ -1,7 +0,0 @@
http:
middlewares:
basic:
basicAuth:
users:
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
# usersFile: etc/traefik/.htpasswd
-98
View File
@@ -1,98 +0,0 @@
# https://doc.traefik.io/traefik/routing/overview/
global:
checkNewVersion: true
sendAnonymousUsage: false
api:
# insecure: false # = secure
insecure: true
dashboard: true
# debug: true
debug: false
providers:
docker:
swarmMode: true
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # traefik enabled containers only
network: caddy
file:
filename: dynamic.yml
serversTransport: # enable ssl backend
insecureSkipVerify: true
certificatesResolvers:
# https://community.traefik.io/t/help-with-multiple-certificate-resolvers/15134
tls:
acme:
tlsChallenge: {}
email: marc.partensky@gmail.com
storage: /config/acme.json
cloudflare:
acme:
email: marc.partensky@gmail.com
storage: /config/acme.json
dnsChallenge:
provider: cloudflare
resolvers:
- "1.1.1.1:53"
ping: {} # mandatory for healthcheck
log:
level: debug
# level: error
entryPoints:
websecure:
address: ':443'
forwardedHeaders:
insecure: true
# http3:
# advertisedPort: 443
http:
tls:
certResolver: tls
# middlewares:
# - ldap
# http3:
# advertisedPort: 443
web:
address: ':80'
forwardedHeaders:
insecure: true
# forwardedHeaders:
# trustedIPs:
# - "127.0.0.1/32"
# - "192.168.1.7"
http:
redirections:
entryPoint:
to: websecure
scheme: https
permanent: true
priority: 10
experimental:
# http3: true
plugins:
ldapAuth:
moduleName: "github.com/wiltonsr/ldapAuth"
version: "v0.0.19"
souin:
moduleName: "github.com/darkweak/souin"
version: "v1.6.22"
sablier:
moduleName: "github.com/acouvreur/sablier"
version: "v1.0.0"
# ldap entreprise https://doc.traefik.io/traefik-enterprise/operations/static-configuration/
# authSources:
# ldapSource:
# ldap:
# url: ldaps://marcpartensky.com:636
# startTLS: true
# insecureSkipVerify: true
# bindDN: cn=admin,dc=admin,dc=org
# - --providers.docker.network=web # <== Operate on the docker network named web
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_TLSCHALLENGE=true
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_EMAIL=marc.partensky@gmail.com
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_STORAGE=/letsencrypt/acme.json # log settings (options: error, debug, panic, fatal, warn, info) - https://docs.traefik.io/observability/logs/ ##
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
Vendored
+9 -6
View File
@@ -1,23 +1,26 @@
traefik
caddy
website
valentin
arch
open-web-calendar
adguard
oxivia
wordpress-oxivia
servant
discord
discord-bot
ia
docker-api
ialab
portainer
authentik
todolist
nextcloud
jenkins
seafile
matrix
etherpad
monero-miner
monero-node
pritunl
pritunl-mongo
fail2ban
ldap
ldap-manager
vaultwarden
authentik
-43
View File
@@ -1,43 +0,0 @@
version: "3.9"
services:
adguard:
image: adguard/adguardhome
restart: unless-stopped
ports:
- 53:53/tcp
- 53:53/udp
- 67:67/udp
- 68:68/udp # adguard home as dhcp
# - 80:80/tcp # https/dns-over-https
# - 443:443/tcp
# - 443:443/udp
# - 3000:3000/tcp # adguard home's admin
- 853:853/tcp # dns-over-tls
- 784:784/udp # dns-over-quic
- 853:853/udp
- 8853:8853/udp
- 5443:5443/tcp # dnscrypt server
- 5443:5443/udp
volumes:
- adguard:/opt/adguardhome/work
- ../data/adguard:/opt/adguardhome/conf
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.adguard.rule: >
Host(`adguard.marcpartensky.com`) ||
Host(`adguard.marcpartensky.fr`)
traefik.http.routers.adguard.entrypoints: websecure
traefik.http.routers.adguard.tls.certresolver: cloudflare
traefik.http.services.adguard.loadbalancer.server.port: 3000
traefik.http.routers.adguard.middlewares: ldap_auth
volumes:
adguard:
networks:
caddy:
external: true
-19
View File
@@ -1,19 +0,0 @@
version: "3.9"
services:
agenda_militant:
image: marcpartensky/agenda-militant
restart: unless-stopped
networks:
- caddy
deploy:
labels:
caddy: agenda.militant.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.agenda_militant.rule: Host(`agenda.militant.marcpartensky.com`)
traefik.http.routers.agenda_militant.entrypoints: websecure
traefik.http.routers.agenda_militant.tls.certresolver: tls
traefik.http.services.agenda_militant.loadbalancer.server.port: 8080
networks:
caddy:
external: true
+1 -15
View File
@@ -4,24 +4,10 @@ services:
image: budtmo/docker-android-x86-12.0
restart: unless-stopped
privileged: true
networks:
- caddy
ports:
# - "6080:6080"
- "6080:6080"
- "5554:5554"
- "5555:5555"
- "4723:4723"
environment:
DEVICE: "Samsung Galaxy S6"
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.android.rule: >
Host(`android.marcpartensky.fr`)
traefik.http.routers.android.entrypoints: websecure
traefik.http.routers.android.tls.certresolver: cloudflare
traefik.http.services.android.loadbalancer.server.port: 6080
networks:
caddy:
external: true
+8 -38
View File
@@ -7,50 +7,20 @@ services:
- "5900:5900"
networks:
- caddy
- ldap
volumes:
- arch:/home/marc
deploy:
labels:
caddy: arch.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.arch.rule: Host(`arch.marcpartensky.com`)
traefik.http.routers.arch.entrypoints: websecure
traefik.http.routers.arch.tls.certresolver: tls
traefik.http.services.arch.loadbalancer.server.port: 8080
# traefik.http.routers.arch.middlewares: ldap_auth, sablier
#
# # sablier
# # The sablier URL service, must be reachable from the Traefik instance
# traefik.http.middlewares.sablier.plugin.sablierUrl: http://sablier:10000
# # Comma separated names of containers/services/deployments etc.
# traefik.http.middlewares.sablier.plugin.names: arch
# # The session duration after which containers/services/deployments instances are shutdown
# traefik.http.middlewares.sablier.plugin.sessionDuration: 1m
# # You can only use one strategy at a time
# # To do so, only declare `dynamic` or `blocking`
#
# # Dynamic strategy, provides the waiting webui
# # (Optional) Defaults to the middleware name
# traefik.http.middlewares.sablier.plugin.dynamic.displayName: Starting application
# # (Optional) Set to true or false to show details specifcally for this middleware, unset to use Sablier server defaults
# traefik.http.middlewares.sablier.plugin.dynamic.showDetails: "true"
# # (Optional) The theme to use
# traefik.http.middlewares.sablier.plugin.dynamic.theme: hacker-terminal
# # (Optional) The loading page refresh frequency
# traefik.http.middlewares.sablier.plugin.dynamic.refreshFrequency: 5s
#
# # Blocking strategy, waits until services are up and running
# # but will not wait more than `timeout`
# # blocking:
# # timeout: 1m
labels:
caddy: arch.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.arch.rule: Host(`arch.marcpartensky.com`)
traefik.http.routers.arch.entrypoints: websecure
traefik.http.routers.arch.tls.certresolver: tls
traefik.http.services.arch.loadbalancer.server.port: 8080
volumes:
arch:
networks:
ldap:
external: true
caddy:
external: true
+55 -71
View File
@@ -6,114 +6,98 @@ services:
restart: unless-stopped
command: server
environment:
AUTHENTIK_DEBUG: "true"
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: admin
# WORKERS: 2
volumes:
- authentik_media:/media
- authentik_templates:/templates
- authentik_geoip:/geoip
env_file:
- ../data/secrets/authentik.env
# ports:
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
volumes:
- media:/media
- templates:/templates
- geoip:/geoip
# depends_on:
# - postgres
# - redis
# - worker
depends_on:
- authentik_postgres
- authentik_redis
- authentik_worker
networks:
- authentik
- caddy
- postgres
- redis
- ldap
labels:
caddy: authentik.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9000}}"
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.fr`)
traefik.http.routers.authentik.entrypoints: websecure
traefik.http.routers.authentik.tls.certresolver: cloudflare
traefik.http.services.authentik.loadbalancer.server.port: 9000
traefik.enable: "true"
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
traefik.http.routers.authentik.entrypoints: websecure
traefik.http.routers.authentik.tls.certresolver: tls
traefik.http.services.authentik.loadbalancer.server.port: 9000
worker:
authentik_postgres:
image: postgres:alpine
restart: unless-stopped
volumes:
- authentik_postgres:/var/lib/postgresql/data
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
authentik_redis:
image: redis:alpine
restart: unless-stopped
networks:
- authentik
authentik_worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
restart: unless-stopped
user: root
command: worker
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgres
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
# This is optional, and can be removed. If you remove this, the following will happen
# - The permissions for the /backups and /media folders aren't fixed, so make sure they are 1000:1000
# - The docker socket can't be accessed anymore
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/authentik:/backups
- media:/media
- certs:/certs
- templates:/templates
- geoip:/geoip
- authentik_backups:/backups
- authentik_media:/media
- authentik_certs:/certs
- authentik_templates:/templates
- authentik_geoip:/geoip
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
- postgres
- redis
# authentik_geoipupdate:
# image: maxmindinc/geoipupdate:latest
# restart: unless-stopped
# volumes:
# - authentik_geoip:/usr/share/GeoIP
# environment:
# GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
# GEOIPUPDATE_FREQUENCY: "8"
# # env_file:
# # - ../data/secrets/authentik.env
# networks:
# - authentik
# version: "3.5"
ldap:
image: ghcr.io/goauthentik/ldap
ports:
- 3389:389
- 6636:636
# Optionally specify which networks the container should be
# might be needed to reach the core authentik server
authentik_geoipupdate:
image: maxmindinc/geoipupdate:latest
restart: unless-stopped
volumes:
- authentik_geoip:/usr/share/GeoIP
environment:
GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
GEOIPUPDATE_FREQUENCY: "8"
# env_file:
# - ../data/secrets/authentik.env
networks:
- authentik
environment:
AUTHENTIK_DEBUG: "true"
AUTHENTIK_HOST: http://authentik:9000
# AUTHENTIK_HOST: https://authentik:9443
# AUTHENTIK_HOST: https://authentik.marcpartensky.fr
AUTHENTIK_INSECURE: "false"
env_file:
- ../data/secrets/authentik_ldap.env
volumes:
# backups:
postgres:
media:
certs:
templates:
geoip:
authentik_postgres:
authentik_backups:
authentik_media:
authentik_certs:
authentik_templates:
authentik_geoip:
networks:
authentik:
ldap:
external: true
redis:
external: true
postgres:
external: true
caddy:
external: true
+1 -2
View File
@@ -21,8 +21,7 @@ services:
caddy.@ws.1_header: "Upgrade websocket"
caddy.0_reverse_proxy: "@ws {{upstreams 61985}}"
traefik.enable: "true"
# traefik.http.routers.beef.rule: Host(`beef.marcpartensky.com`)
traefik.http.routers.beef.rule: Host(`beef.marcpartensky.fr`)
traefik.http.routers.beef.rule: Host(`beef.marcpartensky.com`)
traefik.http.routers.beef.entrypoints: websecure
traefik.http.routers.beef.tls.certresolver: tls
traefik.http.services.beef.loadbalancer.server.port: 3000
-26
View File
@@ -1,26 +0,0 @@
version: "3.9"
services:
burpserver:
image: pschiffe/burp-server
ports:
- "4971:4971"
volumes:
- conf:/etc/burp
- data:/var/spool/burp
environment:
BURP_CLIENTS_CONFIG: "host1:pass1 host2:pass2 host3:pass3"
tmpfs:
- /run
- /tmp
privileged: true
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.burpserver.rule: Host(`burp.marcpartensky.fr`)
# traefik.http.routers.burpserver.entrypoints: websecure
# traefik.http.routers.burpserver.tls.certresolver: tls
# traefik.http.services.burpserver.loadbalancer.server.port: 4971
volumes:
conf:
data:
+1 -1
View File
@@ -11,7 +11,7 @@ services:
image: marcpartensky/caddy
ports:
- "80:80"
# - "443:443"
- "443:443"
environment:
CADDY_INGRESS_NETWORKS: caddy
volumes:
-54
View File
@@ -1,54 +0,0 @@
version: '3'
services:
cadvisor:
# image: google/cadvisor:v0.39.0
# image: google/cadvisor
image: gcr.io/cadvisor/cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
command:
- '-docker_only'
- '-logtostderr'
# - '-storage-driver=influxdb'
# - '-storage-opt=host=swarm-manager1:8086'
# - '-storage-opt=database=cadvisor'
# - '-storage-opt=retention=1d'
# - '-storage-opt=user=root'
# - '-storage-opt=password=yourpassword'
# - '-housekeeping_interval=5s'
# - '-enable_load_reader'
# - '-cpu_global_percentage=true'
# - '-cpu_historic_interval=1m'
# - '-docker_label_enable'
networks:
- caddy
deploy:
placement:
constraints:
- node.role == manager
resources:
limits:
memory: 1g
reservations:
memory: 512m
restart_policy:
condition: on-failure
mode: global
labels:
traefik.enable: "true"
traefik.http.routers.cadvisor.rule: Host(`cadvisor.marcpartensky.fr`)
# traefik.http.routers.cadvisor.rule: >
# Host(`cadvisor.marcpartensky.com`) || Host(`cadvisor.marcpartensky.fr`)
traefik.http.routers.cadvisor.entrypoints: websecure
traefik.http.routers.cadvisor.tls.certresolver: tls
traefik.http.services.cadvisor.loadbalancer.server.port: 8080
traefik.http.routers.cadvisor.middlewares: ldap_auth
networks:
caddy:
external: true
-6
View File
@@ -1,6 +0,0 @@
version: "3.9"
services:
chatgpt:
image: wongsaang/chatgpt-ui:latest
ports:
- "8000:80"
-11
View File
@@ -1,11 +0,0 @@
version: "3.9"
services:
cloudflare:
image: cloudflare/cloudflared:latest
env_file: ../data/secrets/cloudflare.env
command: tunnel --no-autoupdate run
networks:
- caddy
networks:
caddy:
external: true
-17
View File
@@ -1,17 +0,0 @@
version: "3.9"
services:
cowrie:
image: rayson/cowrie:20160907-1
user: cowrie
ports:
- "22:2222/tcp"
- "23:2223/tcp"
environment:
COWRIE_TELNET_ENABLED: "yes"
volumes:
- cowrie:/opt/cowrie/data:Z
- cowrie-log:/opt/cowrie/log:Z
volumes:
cowrie:
cowrie-log:
-21
View File
@@ -1,21 +0,0 @@
version: "3.9"
services:
controller:
image: cybercube/crafty-controller
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.controller.loadbalancer.server.port: 8000
traefik.http.routers.controller.rule: Host(`controller.marcpartensky.fr`)
# traefik.http.routers.controller.rule: >
# Host(`controller.marcpartensky.com`) || Host(`controller.marcpartensky.fr`)
traefik.http.routers.controller.entrypoints: websecure
# traefik.http.routers.controller.tls.certresolver: tls
traefik.http.routers.controller.tls.certresolver: cloudflare
# traefik.http.routers.controller.middlewares: ldap_auth
networks:
caddy:
external: true
-29
View File
@@ -1,29 +0,0 @@
version: "3.9"
services:
ui:
image: alseambusher/crontab-ui
networks:
- caddy
# ports:
# - 8000:8000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- crontabs:/crontab-ui/crontabs
deploy:
labels:
traefik.enable: "true"
traefik.http.services.ui.loadbalancer.server.port: 8000
traefik.http.routers.ui.rule: >
Host(`cron.marcpartensky.com`) ||
Host(`cron.marcpartensky.fr`)
traefik.http.routers.ui.entrypoints: websecure
# traefik.http.routers.ui.tls.certresolver: tls
traefik.http.routers.ui.tls.certresolver: cloudflare
traefik.http.routers.ui.middlewares: ldap_auth
volumes:
crontabs:
networks:
caddy:
external: true
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
discord-bot:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7010:8000"
networks:
- discord
depends_on:
- docker_api
env_file:
- ../data/secrets/esclave.env
deploy:
replicas: 1
networks:
discord:
-34
View File
@@ -1,34 +0,0 @@
version: "3.9"
services:
bot:
image: marcpartensky/discord-bot:v107.be20e90.2022-05-21
restart: unless-stopped
ports:
- "7010:8000"
networks:
- discord
env_file:
- ../data/secrets/discord-bot.env
deploy:
replicas: 1
ia:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7011:8000"
networks:
- discord
env_file:
- ../data/secrets/ia.env
deploy:
replicas: 1
chatgpt:
image: xxxbrian/discord_chatgpt_bot:latest
env_file:
- ../data/secrets/discord_chatgpt.env
networks:
discord:
+13
View File
@@ -0,0 +1,13 @@
version: "3.9"
services:
docker_api:
image: marcpartensky/docker-api
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- discord
networks:
discord:
-22
View File
@@ -1,22 +0,0 @@
version: "3.9"
services:
docker_api:
image: marcpartensky/docker-api
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- discord
# db:
# image: postgres
# container_name: docker-app-db
# restart: unless-stopped
# environment:
# POSTGRES_USER: docker_user
# POSTGRES_PASSWORD: d3kTrklm54208
# POSTGRES_DB: docker
networks:
discord:
-8
View File
@@ -1,8 +0,0 @@
version: "3.3"
services:
dockercraft:
image: gaetan/dockercraft
ports:
- "25567:25565"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:Z
-28
View File
@@ -1,28 +0,0 @@
version: "3.9"
services:
dockvpn:
image: alekslitvinenk/openvpn
cap_add:
- NET_ADMIN
networks:
- caddy
devices:
- /dev/net/tun
ports:
- 1194:1194/udp
- 8080:8080/tcp
volumes:
- ../data/dockvpn:/opt/Dockovpn_data/clients
environment:
HOST_ADDR: vpn.marcpartensky.fr
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.dockvpn.rule: >
Host(`dockvpn.marcpartensky.fr`)
traefik.http.routers.dockvpn.entrypoints: websecure
traefik.http.routers.dockvpn.tls.certresolver: cloudflare
traefik.http.services.dockvpn.loadbalancer.server.port: 8080
networks:
caddy:
external: true
+3 -11
View File
@@ -15,17 +15,9 @@ services:
- duplicati_source:/source
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.duplicati.loadbalancer.server.port: 8200
traefik.http.routers.duplicati.rule: >
Host(`duplicati.marcpartensky.com`) ||
Host(`duplicati.marcpartensky.fr`)
traefik.http.routers.duplicati.entrypoints: websecure
traefik.http.routers.duplicati.tls.certresolver: tls
# traefik.http.routers.duplicati.tls.certresolver: cloudflare
# traefik.http.routers.duplicati.middlewares: ldap_auth
labels:
caddy: duplicati.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8200}}"
volumes:
duplicati_config:
-7
View File
@@ -1,7 +0,0 @@
version: "3.9"
services:
image: fazalfarhan01/earnapp:lite
volumes:
- earnapp:/etc/earnapp
environment:
EARNAPP_UUID: $EARNAPP_DEVICE_ID
-34
View File
@@ -1,34 +0,0 @@
version: "3.9"
services:
etesync:
image: victorrds/etesync
restart: unless-stopped
networks:
- caddy
- postgres
env_file:
- ../data/secrets/etesync.env
volumes:
- static:/srv/etebase/static
- media:/data/media
deploy:
labels:
traefik.enable: "true"
traefik.http.services.etesync.loadbalancer.server.port: 3735
traefik.http.routers.etesync.rule: >
# Host(`etesync.marcpartensky.com`) ||
Host(`etesync.marcpartensky.fr`)
traefik.http.routers.etesync.entrypoints: websecure
traefik.http.routers.etesync.tls.certresolver: tls
# traefik.http.routers.etesync.tls.certresolver: cloudflare
# traefik.http.routers.etesync.middlewares: ldap_auth
networks:
postgres:
external: true
caddy:
external: true
volumes:
static:
media:
+11 -28
View File
@@ -4,36 +4,19 @@ services:
etherpad:
image: etherpad/etherpad
restart: unless-stopped
env_file:
- ../data/secrets/etherpad.env
# environment:
# SETTINGS_PATH: /etc/etherpad/settings.json
environment:
ADMIN_PASSWORD: supersecret
networks:
- caddy
- postgres
# volumes:
# - data:/opt/etherpad-lite/var
# volumes:
# - ../data/etherpad/settings.json:/opt/etherpad-lite/settings.json
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.etherpad.rule: >
Host(`pad.marcpartensky.com`) ||
Host(`pad.marcpartensky.fr`)
traefik.http.routers.etherpad.entrypoints: websecure
traefik.http.routers.etherpad.tls.certresolver: cloudflare
traefik.http.services.etherpad.loadbalancer.server.port: 9001
traefik.http.middlewares.redirect-pad-com.redirectregex.regex: "^https://etherpad.marcpartensky.com/(.*)"
traefik.http.middlewares.redirect-pad-com.redirectregex.replacement: "https://pad.marcpartensky.com/$${1}"
traefik.http.middlewares.redirect-pad-fr.redirectregex.regex: "^https://etherpad.marcpartensky.fr/(.*)"
traefik.http.middlewares.redirect-pad-fr.redirectregex.replacement: "https://pad.marcpartensky.fr/$${1}"
# volumes:
# data:
- caddy
labels:
caddy: etherpad.marcpartensky.com, pad.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9001}}"
traefik.enable: "true"
traefik.http.routers.etherpad.rule: Host(`etherpad.marcpartensky.com`)
traefik.http.routers.etherpad.entrypoints: websecure
traefik.http.routers.etherpad.tls.certresolver: tls
traefik.http.services.etherpad.loadbalancer.server.port: 9001
networks:
caddy:
external: true
postgres:
external: true
-10
View File
@@ -1,10 +0,0 @@
version: "3.9"
services:
feroxbuster:
image: epi052/feroxbuster
volumes:
- /srv/feroxbuster:/srv
command: >
-u http://ravens-pu8yvgzavpu7ooyr.francecentral.cloudapp.azure.com
-x php
--wordlist /srv/rockyou.txt
-31
View File
@@ -1,31 +0,0 @@
version: "3.9"
services:
filebrowser:
image: hurlenko/filebrowser
restart: unless-stopped
# user: "${UID}:${GID}"
volumes:
- /root/Videos:/data
- ../data/filebrowser:/config
# environment:
# FB_BASEURL: /filebrowser
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.filebrowser.rule: >
Host(`file.marcpartensky.fr`) ||
Host(`file.marcpartensky.com`)
traefik.http.routers.filebrowser.entrypoints: websecure
traefik.http.routers.filebrowser.tls.certresolver: tls
traefik.http.services.filebrowser.loadbalancer.server.port: 8080
traefik.http.routers.filebrowser.middlewares: ldap_auth
networks:
caddy:
external: true
volumes:
data:
-31
View File
@@ -1,31 +0,0 @@
version: "3.9"
services:
focalboard:
image: mattermost/focalboard
volumes:
- data:/opt/focalboard/data
- pack:/opt/focalboard/pack
- ../data/focalboard/config.json:/opt/focalboard/config.json
environment:
EXCLUDE_ENTERPRISE: "1"
networks:
- caddy
- postgres
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.focalboard.rule: >
Host(`board.marcpartensky.com`) || Host(`board.marcpartensky.fr`)
traefik.http.routers.focalboard.entrypoints: websecure
# traefik.http.routers.focalboard.tls.certresolver: tls
traefik.http.services.focalboard.loadbalancer.server.port: 8000
# traefik.http.routers.focalboard.middlewares: ldap_auth
volumes:
data:
pack:
networks:
postgres:
external: true
caddy:
external: true
-31
View File
@@ -1,31 +0,0 @@
version: "3.9"
services:
fuseki:
image: stain/jena-fuseki
volumes:
# - ./config:/fuseki/configuration
- data:/fuseki/databases
# environment:
# - FUSEKI_HOME=/fuseki
# - FUSEKI_BASE=/fuseki/databases
env_file:
- ../data/secrets/fuseki.env
networks:
- caddy
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
labels:
traefik.enable: "true"
traefik.http.routers.fuseki.rule: Host(`fuseki.marcpartensky.com`)
traefik.http.services.fuseki.loadbalancer.server.port: 3030
networks:
caddy:
external: true
volumes:
data:
-25
View File
@@ -1,25 +0,0 @@
version: "3.9"
services:
gitbook:
image: marcpartensky/gitbook
# image: billryan/gitbook
# image: yanqd0/gitbook
restart: unless-stopped
# volumes:
# - ../data/gitbook:/gitbook
environment:
# BOOK_URL: https://github.com/marcpartensky/docker
BOOK_URL: https://github.com/marcpartensky/markdown
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.gitbook.rule: Host(`gitbook.marcpartensky.com`)
traefik.http.routers.gitbook.entrypoints: websecure
traefik.http.routers.gitbook.tls.certresolver: tls
traefik.http.services.gitbook.loadbalancer.server.port: 4000
networks:
caddy:
external: true
+19
View File
@@ -0,0 +1,19 @@
version: "3.9"
services:
gitea_postgres:
image: postgres
restart: unless-stopped
env_file:
- ../data/secrets/gitea.env
networks:
- caddy
- gitea
volumes:
- gitea_postgres:/var/lib/postgresql/data
volumes:
gitea_postgres:
networks:
gitea:
+17 -26
View File
@@ -13,38 +13,29 @@ services:
- ../data/secrets/gitea.env
networks:
- caddy
- postgres
- gitea
volumes:
- ssh:/data/git/.ssh
- data:/data
- gitea_ssh:/data/git/.ssh
- gitea:/data
# - /etc/localtime:/etc/localtime:ro
ports:
- "42070:22"
# labels:
# caddy: gitea.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 3000}}"
# traefik.enable: "true"
# traefik.http.routers.gitea.rule: Host(`git.marcpartensky.com`)
# traefik.http.routers.gitea.entrypoints: websecure
# traefik.http.routers.gitea.tls.certresolver: tls
# traefik.http.services.gitea.loadbalancer.server.port: 3000
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.gitea.rule: >
Host(`git.marcpartensky.com`) ||
Host(`git.marcpartensky.fr`)
traefik.http.routers.gitea.entrypoints: websecure
# traefik.http.routers.gitea.tls.certresolver: tls
traefik.http.routers.gitea.tls.certresolver: cloudflare
traefik.http.services.gitea.loadbalancer.server.port: 3000
- "7012:22"
depends_on:
- gitea_postgres
labels:
caddy: gitea.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 3000}}"
traefik.enable: "true"
traefik.http.routers.gitea.rule: Host(`git.marcpartensky.com`)
traefik.http.routers.gitea.entrypoints: websecure
traefik.http.routers.gitea.tls.certresolver: tls
traefik.http.services.gitea.loadbalancer.server.port: 3000
volumes:
data:
ssh:
gitea:
gitea_ssh:
networks:
postgres:
external: true
gitea:
caddy:
external: true
+2 -14
View File
@@ -17,6 +17,7 @@ services:
- gitlab_config:/etc/gitlab
- gitlab_log:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
shm_size: '256m'
labels:
caddy: gitlab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 80}}"
@@ -25,26 +26,13 @@ services:
traefik.http.routers.gitlab.entrypoints: websecure
traefik.http.routers.gitlab.tls.certresolver: tls
traefik.http.services.gitlab.loadbalancer.server.port: 80
# shm_size: '512m'
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.gitlab.rule: Host(`gitlab.marcpartensky.com`)
traefik.http.routers.gitlab.entrypoints: websecure
traefik.http.routers.gitlab.tls.certresolver: tls
traefik.http.services.gitlab.loadbalancer.server.port: 80
resources:
reservations:
cpus: "1"
# memory: "512M"
memory: "3G"
gitlab-runner:
image: gitlab/gitlab-runner:alpine
restart: unless-stopped
deploy:
mode: replicated
replicas: 2
replicas: 4
volumes:
gitlab_config:
-36
View File
@@ -1,36 +0,0 @@
version: "3.9"
services:
gluetun:
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
env_file:
- ../data/secrets/gluetun.env
# environment:
# # VPN_SERVICE_PROVIDER: protonvpn
# # VPN_SERVICE_PROVIDER: openvpn
# OPENVPN_USER: marcpartensky
# OPENVPN_PASSWORD: Lxxxxxxxxxyyyyyxxxxn
# # SERVER_COUNTRIES: France
# # FREE_ONLY: on # Only required when using ProtonVPN's free service
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp # Application container's ports to be published
networks:
- vpn
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.gluetun.loadbalancer.server.port: 8000
traefik.http.routers.gluetun.rule: Host(`gluetun.marcpartensky.com`)
traefik.http.routers.gluetun.entrypoints: websecure
traefik.http.routers.gluetun.tls.certresolver: tls
traefik.http.routers.gluetun.middlewares: ldap_auth
networks:
vpn:
external: true
caddy:
external: true
-7
View File
@@ -1,7 +0,0 @@
version: "3.9"
services:
gpg:
image: marcpartensky/gpg
volumes:
- /srv:/srv
- ../data/gpg:/root/keys
-38
View File
@@ -1,38 +0,0 @@
version: "3.9"
services:
grafana:
image: grafana/grafana
restart: unless-stopped
env_file:
- ../data/secrets/grafana.env
# environment:
# GF_INSTALL_PLUGINS: grafana-ldap-auth
volumes:
- ../data/grafana:/etc/grafana
- grafana:/var/lib/grafana
networks:
- caddy
- postgres
- ldap
deploy:
labels:
caddy: grafana.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 3000}}"
traefik.enable: "true"
traefik.http.routers.grafana.rule: >
Host(`grafana.marcpartensky.fr`) ||
Host(`grafana.marcpartensky.com`)
traefik.http.routers.grafana.entrypoints: websecure
traefik.http.routers.grafana.tls.certresolver: tls
traefik.http.services.grafana.loadbalancer.server.port: 3000
volumes:
grafana:
networks:
ldap:
external: true
postgres:
external: true
caddy:
external: true
-10
View File
@@ -19,18 +19,8 @@ services:
traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
traefik.http.routers.heimdall.entrypoints: websecure
traefik.http.routers.heimdall.tls: "true"
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.source: marcpartensky.com
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.baseDN: dc=marcpartensky,dc=com
# traefik.http.services.heimdall.loadbalancer.server.port: 80
# traefik.http.routers.heimdall.middlewares: authelia-basic@docker
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
traefik.http.routers.heimdall.entrypoints: websecure
traefik.http.routers.heimdall.tls.certresolver: tls
traefik.http.services.heimdall.loadbalancer.server.port: 80
traefik.http.routers.duplicati.middlewares: ldap_auth
networks:
caddy:
-10
View File
@@ -1,10 +0,0 @@
version: "3.9"
services:
homeassistant:
restart: unless-stopped
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- config:/config
- /etc/localtime:/etc/localtime:ro
privileged: true
network_mode: host
-9
View File
@@ -12,15 +12,6 @@ services:
labels:
caddy: homer.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.homer.rule: >
Host(`homer.marcpartensky.com`) ||
Host(`homer.marcpartensky.fr`)
traefik.http.routers.homer.entrypoints: websecure
traefik.http.routers.homer.tls.certresolver: tls
traefik.http.services.homer.loadbalancer.server.port: 8080
volumes:
homer:
-6
View File
@@ -1,6 +0,0 @@
version: "3.9"
services:
honeygain:
image: marcpartensky/honeygain
env_file:
- ../data/secrets/honeygain.env
-16
View File
@@ -1,16 +0,0 @@
version: "3.9"
services:
hydra:
image: marcpartensky/hydra:latest
network_mode: host
env_file:
- ../data/secrets/hydra.env
# command: -P /rockyou.txt -L /usernames.txt ssh://192.168.252.18
# workdir: /root
volumes:
- ../data/hydra/rockyou.txt:/rockyou.txt
- ../data/hydra/usernames.txt:/usernames.txt
- hydra:/root
volumes:
hydra:
+15 -14
View File
@@ -2,11 +2,19 @@ version: "3.9"
services:
ialab:
image: marcpartensky/ialab:latest
# volumes:
# - ialab:/app
image: marcpartensky/ialab
user: nobody
restart: unless-stopped
environment:
FLASK_APP: server.py
# entrypoint: "gunicorn server:app"
# entrypoint: "gunicorn --chdir /app server:app"
volumes:
- ialab:/app
networks:
- caddy
depends_on:
- caddy
labels:
caddy: ialab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8000}}"
@@ -14,18 +22,11 @@ services:
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
traefik.http.routers.ialab.entrypoints: websecure
traefik.http.routers.ialab.tls.certresolver: tls
traefik.http.services.ialab.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
traefik.http.routers.ialab.entrypoints: websecure
traefik.http.routers.ialab.tls.certresolver: tls
traefik.http.services.ialab.loadbalancer.server.port: 80
traefik.http.services.ialab.loadbalancer.server.port: 8000
volumes:
ialab:
# volumes:
# ialab:
#
networks:
caddy:
external: true
-65
View File
@@ -1,65 +0,0 @@
version: "3.9"
services:
ipfs:
restart: unless-stopped
image: lscr.io/linuxserver/ipfs
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Paris
volumes:
- ipfs:/config
- /srv/:/srv
networks:
- caddy
ports:
# - 80:80 #dumb http client
# - 443:443 #optional
- 4001:4001
- 5001:5001
- 8080:8080
deploy:
resources:
limits:
cpus: '0.1'
memory: 500M
# reservations:
# cpus: '0.1'
# memory: 100M
labels:
traefik.enable: "true"
# traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.com`)
traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.fr`)
# traefik.http.routers.ipfs.rule: >
# Host(`ipfs.marcpartensky.com`) || Host(`ipfs.marcpartensky.fr`)
# traefik.http.routers.ipfs.entrypoints: websecure
# traefik.http.routers.ipfs.tls.certresolver: tls
traefik.http.routers.ipfs.tls.certresolver: cloudflare
traefik.http.services.ipfs.loadbalancer.server.port: 5001
traefik.http.routers.ifps.middlewares: ldap_auth
# traefik.frontend.redirect.regex: ^https://ipfs.marcpartensky.com$$
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
# traefik.http.routers.ifps.middlewares: add-context
#
# # here is the logic provided by gustavomtborges of this gist:
# traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
# traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
#
traefik.http.routers.ipfs.middlewares: custom_repath
traefik.http.middlewares.custom_repath.replacepathregex.regex: ^/$$
traefik.http.middlewares.custom_repath.replacepathregex.replacement: /webui
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
traefik.http.routers.ipfs.middlewares: add-context
# here is the logic provided by gustavomtborges of this gist:
traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
volumes:
ipfs:
networks:
caddy:
external: true
-15
View File
@@ -1,15 +0,0 @@
version: "3.9"
services:
ipsec:
image: hwdsl2/ipsec-vpn-server
restart: unless-stopped
privileged: true
ports:
- "500:500/udp"
- "4500:4500/udp"
volumes:
- ikev2-vpn:/etc/ipsec.d
- /lib/modules:/lib/modules:ro
volumes:
ikev2-vpn:
-47
View File
@@ -1,47 +0,0 @@
version: "3.9"
services:
jellyfin:
image: jellyfin/jellyfin:latest
environment:
# PUID: 1000
# PGID: 1000
# TZ: Europe/Paris
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.fr
devices:
- /dev/dri
volumes:
- config:/config
- cache:/cache
- media:/media
- movies:/movies
- musics:/musics
- photos:/photos
- ~/Videos/Youtube:/videos
# ports:
# - 8920:8920 #optional https self signed
# - 7359:7359/udp #optional lan discovery
# - 1900:1900/udp #optional dnla
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.jellyfin.rule: >
Host(`jellyfin.marcpartensky.fr`) ||
Host(`jellyfin.marcpartensky.com`)
traefik.http.routers.jellyfin.entrypoints: websecure
traefik.http.routers.jellyfin.tls.certresolver: tls
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
volumes:
config:
cache:
media:
movies:
musics:
photos:
videos:
networks:
caddy:
external: true
+5 -24
View File
@@ -2,22 +2,17 @@ version: "3.9"
services:
jupyterhub:
image: marcpartensky/jupyterhub
image: jupyterhub/jupyterhub
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ../data/jupyterhub/jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py
# - jupyterhub:/srv/jupyterhub
networks:
- ldap
- caddy
- jupyterhub
- caddy
environment:
# DOCKER_IMAGE: marcpartensky/jupyterlab
DOCKER_IMAGE: jupyterhub/singleuser
DOCKER_NETWORK_NAME: caddy
DOCKER_JUPYTER_IMAGE: marcpartensky/jupyterlab
DOCKER_NETWORK_NAME: jupyterhub
HUB_IP: jupyterhub
DOCKER_HOST: unix:///var/run/docker.sock
labels:
caddy: jupyterhub.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8000}}"
@@ -25,22 +20,8 @@ services:
traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
traefik.http.routers.jupyterhub.entrypoints: websecure
traefik.http.routers.jupyterhub.tls.certresolver: tls
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
# traefik.docker.network: jupyterhub_default
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
traefik.http.routers.jupyterhub.rule: Host(`hub.marcpartensky.fr`)
traefik.http.routers.jupyterhub.entrypoints: websecure
traefik.http.routers.jupyterhub.tls.certresolver: tls
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
traefik.http.services.jupyterhub.loadbalancer.server.port: 3000
networks:
jupyterhub:
name: jupyterhub
driver: overlay
caddy:
external: true
ldap:
external: true
+10 -30
View File
@@ -2,41 +2,23 @@ version: "3.9"
services:
jupyterlab:
# image: jupyter/datascience-notebook:latest
image: marcpartensky/jupyterlab
# restart: unless-stopped
restart: unless-stopped
environment:
# - GEN_CERT=yes
JUPYTER_ENABLE_LAB: "yes"
GRANT_SUDO: "yes"
JUPYTER_CONFIG_DIR: /home/jupyter/.jupyter
# entrypoint: python -m jupyter lab
# entrypoint: start.sh jupyter lab --user root
entrypoint: start.sh jupyter lab --user root
networks:
- caddy
# labels:
# caddy: lab.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8888}}"
# traefik.enable: "true"
# traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.com`)
# traefik.http.routers.jupyterlab.entrypoints: websecure
# traefik.http.routers.jupyterlab.tls.certresolver: tls
# traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
# volumes:
# - jupyterlab:/home/jupyter
# - ../data/jupyterlab/:/home/jupyter/.jupyter/
deploy:
placement:
constraints:
- node.role == manager
labels:
traefik.enable: "true"
# traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.fr`)
traefik.http.routers.jupyterlab.rule: >
Host(`lab.marcpartensky.fr`) && Host(`lab.marcpartensky.com`)
traefik.http.routers.jupyterlab.entrypoints: websecure
traefik.http.routers.jupyterlab.tls.certresolver: cloudflare
traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
labels:
caddy: lab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8888}}"
traefik.enable: "true"
traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.com`)
traefik.http.routers.jupyterlab.entrypoints: websecure
traefik.http.routers.jupyterlab.tls.certresolver: tls
traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
# entrypoint: start-notebook.sh \
# --NotebookApp.keyfile=key/0000_key-certbot.pem
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
@@ -45,8 +27,6 @@ services:
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
# - /etc/letsencrypt:/etc/letsencrypt
#
volumes:
jupyterlab:
networks:
caddy:
-29
View File
@@ -1,29 +0,0 @@
version: "3.9"
services:
keycloak:
image: quay.io/keycloak/keycloak:19.0.3
env_file:
- ../data/secrets/keycloak.env
networks:
- caddy
# command: start-dev
command: start --optimized
labels:
caddy: keycloak.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8080}}"
traefik.enable: "true"
traefik.http.routers.keycloak.rule: Host(`keycloak.marcpartensky.com`)
traefik.http.routers.keycloak.entrypoints: websecure
traefik.http.routers.keycloak.tls.certresolver: tls
traefik.http.services.keycloak.loadbalancer.server.port: 8080
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.keycloak.rule: Host(`keycloak.marcpartensky.com`)
traefik.http.routers.keycloak.entrypoints: websecure
traefik.http.routers.keycloak.tls.certresolver: tls
traefik.http.services.keycloak.loadbalancer.server.port: 8080
networks:
caddy:
external: true
-6
View File
@@ -1,6 +0,0 @@
version: "3.9"
services:
kippo:
image: tomdesinto/kippo
ports:
- "22:22"
-14
View File
@@ -1,14 +0,0 @@
version: "3.9"
services:
languagetool:
image: erikvl87/languagetool
restart: unless-stopped
networks:
- caddy
labels:
caddy: languagetoo.marcpartensky.com
caddy.reverse_proxy: "{{ upstreams 8010 }}"
networks:
caddy:
external: true
-48
View File
@@ -1,48 +0,0 @@
version: "3.9"
services:
ldap_manager_go:
image: romnn/ldap-manager
# command: --generate
env_file:
- ../data/secrets/ldap_manager_go.env
networks:
- ldap
- caddy
environment:
HTTP_PORT: 80
LDAP_HOST: "ldap"
LDAP_PORT: 636
# LDAP_ADMIN_PASSWORD: admin
# LDAP_CONFIG_PASSWORD: config
LDAP_ORGANIZATION: Marc Partensky
# LDAP_DOMAIN: marcpartensky.com
LDAP_DOMAIN: marcpartensky.fr
DAP_BASE_DN: dc=admin,dc=org
# DEFAULT_ADMIN_USERNAME: ldapadmin
# DEFAULT_ADMIN_PASSWORD: changeme
# FORCE_CREATE_ADMIN: "true"
LDAP_TLS: "false"
LDAP_USE_RFC2307BIS: "true"
ISSUER: ldap@marcpartensky.com
AUDIENCE: marcpartensky.com
GENERATE: "true" # ports:
# - 9090:9090
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
traefik.http.routers.ldap_manager_go.rule: >
Host(`ldapgo.marcpartensky.com`) || Host(`ldapgo.marcpartensky.fr`)
traefik.http.routers.ldap_manager_go.entrypoints: websecure
traefik.http.routers.ldap_manager_go.tls.certresolver: tls
traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
networks:
ldap:
external: true
caddy:
external: true
+8 -18
View File
@@ -20,26 +20,16 @@ services:
networks:
- ldap
- caddy
# labels:
# caddy: auth.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams}}"
# traefik.enable: "true"
# traefik.http.routers.ldap_manager.rule: Host(`auth.marcpartensky.com`)
# traefik.http.routers.ldap_manager.entrypoints: websecure
# traefik.http.routers.ldap_manager.tls.certresolver: tls
# traefik.http.services.ldap_manager.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.ldap_manager.rule: >
Host(`auth.marcpartensky.com`) || Host(`auth.marcpartensky.fr`)
traefik.http.routers.ldap_manager.entrypoints: websecure
# traefik.http.routers.ldap_manager.tls.certresolver: tls
traefik.http.routers.ldap_manager.tls.certresolver: cloudflare
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
labels:
caddy: auth.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.ldap_manager.rule: Host(`auth.marcpartensky.com`)
traefik.http.routers.ldap_manager.entrypoints: websecure
traefik.http.routers.ldap_manager.tls.certresolver: tls
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
networks:
ldap:
external: true
caddy:
external: true
-8
View File
@@ -20,17 +20,9 @@ services:
- ldap:/var/lib/ldap
- ldap_slapd:/etc/ldap/slapd.d
backup:
image: osixia/openldap-backup:1.5.0
environment:
LDAP_BACKUP_CONFIG_CRON_EXP: "0 5 * * *"
LDAP_BACKUP_DATA_CRON_EXP: "0 5 * * *"
volumes:
ldap:
ldap_slapd:
networks:
ldap:
external: true
-16
View File
@@ -1,16 +0,0 @@
version: "3.9"
services:
libreswan:
image: ibotty/ipsec-libreswan
restart: unless-stopped
privileged: true
environment:
HOST: /host
IMAGE: ipsec-libreswan
NAME: libreswan
entrypoint: /bin/sh
command: /bin/install.sh
volumes:
- libreswan:/host
volumes:
libreswan:
-29
View File
@@ -1,29 +0,0 @@
version: "3.9"
services:
logseq:
image: ghcr.io/logseq/logseq-webapp:latest
# volumes:
networks:
- traefik
- postgres
labels:
traefik.enable: "true"
# traefik.http.routers.focalboard.rule: >
# Host(`board.marcpartensky.com`) || Host(`board.marcpartensky.fr`)
traefik.http.routers.logseq.service: logseq
traefik.http.routers.logseq.rule: >
Host(`logseq.marcpartensky.com`)
traefik.http.routers.logseq.tls: true
traefik.http.routers.logseq.entrypoints: web-secure
traefik.http.routers.logseq.tls.certresolver: default
traefik.http.services.logseq.loadbalancer.server.port: 80
# traefik.http.routers.focalboard.middlewares: ldap_auth
volumes:
data:
pack:
networks:
postgres:
external: true
traefik:
external: true
+382 -427
View File
File diff suppressed because it is too large Load Diff
+1 -20
View File
@@ -8,20 +8,11 @@ services:
# SYNAPSE_REPORT_STATS: "no"
# SYNAPSE_SERVER_NAME: matrix.marcpartensky.com
# SYNAPSE_ENABLE_REGISTRATION: "true"
environment:
SYNAPSE_CONFIG_PATH: /data/homeserver.yml
volumes:
- ../data/matrix:/data
# - matrix:/data
networks:
- caddy
- postgres
healthcheck:
test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"]
interval: 15s
timeout: 5s
retries: 3
start_period: 5s
- caddy
labels:
caddy: matrix.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8008}}"
@@ -30,17 +21,7 @@ services:
traefik.http.routers.matrix.entrypoints: websecure
traefik.http.routers.matrix.tls.certresolver: tls
traefik.http.services.matrix.loadbalancer.server.port: 8008
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.matrix.rule: >
Host(`matrix.marcpartensky.com`) || Host(`matrix.marcpartensky.fr`)
traefik.http.routers.matrix.entrypoints: websecure
traefik.http.routers.matrix.tls.certresolver: tls
traefik.http.services.matrix.loadbalancer.server.port: 8008
networks:
postgres:
external: true
caddy:
external: true
+3 -3
View File
@@ -1,7 +1,7 @@
version: "3.9"
services:
backup:
backups:
image: itzg/mc-backup
environment:
BACKUP_INTERVAL: "1d"
@@ -9,7 +9,7 @@ services:
SERVE_PORT: 25565
RCON_HOST: minecraft
RCON_PORT: 25575
PAUSE_IF_NO_PLAYER: "true"
PAUSE_IF_NO_PLAYER: true
PLAYERS_ONLINE_CHECK_INTERVAL: 1h
TZ: Europe/Paris
DEST_DIR: /backups
@@ -18,6 +18,6 @@ services:
- /srv/minecraft/champi:/data:ro
# use a host attached directory so that it in turn can be backed up
# to external/cloud storage
- /srv/mcbackups:/backups
- ./mc-backups:/backups
# share network namespace with server to simplify rcon access
# network_mode: "service:mc"
+4 -12
View File
@@ -20,18 +20,10 @@ services:
caddy.reverse_proxy: "{{upstreams 8080}}"
authorize.with: marc
traefik.enable: "true"
traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.com`)
traefik.http.routers.mcmyadmin.entrypoints: websecure
traefik.http.routers.mcmyadmin.tls.certresolver: tls
traefik.http.services.mcmyadmin.loadbalancer.server.port: 8080
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.com`)
traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.fr`)
traefik.http.routers.mcmyadmin.entrypoints: websecure
traefik.http.routers.mcmyadmin.tls.certresolver: tls
traefik.http.services.mcmyadmin.loadbalancer.server.port: 8080
traefik.http.routers.minecraft.rule: Host(`mcadmin.marcpartensky.com`)
traefik.http.routers.minecraft.entrypoints: websecure
traefik.http.routers.minecraft.tls.certresolver: tls
traefik.http.services.minecraft.loadbalancer.server.port: 8080
volumes:
mcmyadmin:
+1 -24
View File
@@ -1,7 +1,7 @@
version: "3.9"
services:
server:
minecraft_champi:
image: itzg/minecraft-server
restart: unless-stopped
environment:
@@ -29,29 +29,6 @@ services:
networks:
- minecraft
backup:
image: itzg/mc-backup
environment:
BACKUP_INTERVAL: "1d"
# instead of network_mode below, could declare RCON_HOST
SERVE_PORT: 25565
RCON_HOST: server
RCON_PORT: 25575
PAUSE_IF_NO_PLAYER: "true"
PLAYERS_ONLINE_CHECK_INTERVAL: 1h
TZ: Europe/Paris
DEST_DIR: /backups
networks:
- minecraft
volumes:
# mount the same volume used by server, but read-only
- /srv/minecraft/champi:/data:ro
# use a host attached directory so that it in turn can be backed up
# to external/cloud storage
- /srv/mcbackups:/backups
# share network namespace with server to simplify rcon access
# network_mode: "service:mc"
# volumes:
# minecraft:
-33
View File
@@ -1,33 +0,0 @@
version: "3.9"
services:
minidlna:
image: geekduck/minidlna
volumes:
- music:/opt/Music
- videos:/opt/Videos
- pictures:/opt/Pictures
- db:/var/cache/minidlna
# - ../data/minidlna/minidlna.conf:/etc/minidlna.conf
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.services.minidlna.loadbalancer.server.port: 8200
traefik.http.routers.minidlna.rule: Host(`minidlna.marcpartensky.fr`)
# traefik.http.routers.minidlna.rule: >
# Host(`minidlna.marcpartensky.com`) || Host(`minidlna.marcpartensky.fr`)
traefik.http.routers.minidlna.entrypoints: websecure
# traefik.http.routers.minidlna.tls.certresolver: tls
traefik.http.routers.minidlna.tls.certresolver: cloudflare
# traefik.http.routers.minidlna.middlewares: ldap_auth
volumes:
music:
videos:
pictures:
db:
networks:
caddy:
external: true
-45
View File
@@ -1,45 +0,0 @@
version: "3.9"
services:
master:
image: efaviere/mobydock-master:lastest
# image: marcpartensky/mobidock-master:latest
# depends_on:
# - db
env_file:
- ../data/secrets/mobydock.env
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- caddy
- postgres
deploy:
labels:
traefik.enable: "true"
traefik.http.services.svc_mobydock.loadbalancer.server.port: 8080
traefik.http.routers.mobydock.service: svc_mobydock
traefik.http.routers.mobydock.rule: >
Host(`mobydock.marcpartensky.com`) || Host(`mobydock.marcpartensky.fr`)
traefik.http.routers.mobydock.entrypoints: websecure
# traefik.http.routers.dockerdash.middlewares: ldap_auth
traefik.http.services.svc_mobydockwss.loadbalancer.server.port: 8000
traefik.http.routers.mobydockwss.service: svc_mobydockwss
traefik.http.routers.mobydockwss.rule: >
Host(`wss.mobydock.marcpartensky.com`) || Host(`wss.mobydock.marcpartensky.fr`)
traefik.http.routers.mobydockwss.entrypoints: websecure
worker:
image: efaviere/mobidock-worker:latest
environment:
# MASTER_HOST: "https://mobydock.marcpartensky.com:8000"
MASTER_HOST: "https://wss.mobydock.marcpartensky.com"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
discord:
postgres:
external: true
caddy:
external: true
+1 -12
View File
@@ -1,7 +1,7 @@
version: "3.9"
services:
miner:
monero_miner:
image: giansalex/monero-miner
restart: unless-stopped
env_file:
@@ -11,14 +11,3 @@ services:
# -u $WALLET \
# -k \
# --cpu-priority=2
deploy:
resources:
# reservations:
# cpus: "2"
# # memory: "512M"
# memory: "5G"
limits:
cpus: "4"
# memory: "512M"
memory: "5G"
-33
View File
@@ -1,33 +0,0 @@
version: "3.9"
services:
honeygain:
image: marcpartensky/honeygain
env_file:
- ../data/secrets/honeygain.env
repocket:
image: repocket/repocket
env_file:
- ../data/secrets/repocket.env
traffmonetizer:
image: marcpartensky/traffmonetizer
env_file:
- ../data/secrets/traffmonetizer.env
packetstream:
image: packetstream/psclient:latest
environment:
CID: 4bYb
peer2profit:
image: peer2profit/peer2profit_x86_64:latest
environment:
P2P_EMAIL: marc@marcpartensky.com
# earnapp:
# image: fazalfarhan01/earnapp:lite
# volumes:
# - earnapp:/etc/earnapp
# environment:
# EARNAPP_UUID: $EARNAPP_DEVICE_ID
+2 -17
View File
@@ -5,8 +5,6 @@ services:
image: mongo
restart: unless-stopped
volumes:
- ../data/mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- ../data/mongo/config:/etc/mongo
- mongo:/data/db
networks:
- mongo
@@ -17,7 +15,7 @@ services:
# healthcheck:
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
express:
mongo_express:
image: mongo-express
restart: unless-stopped
environment:
@@ -36,26 +34,13 @@ services:
traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
traefik.http.routers.mongo.entrypoints: websecure
traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.services.mongo.loadbalancer.server.port: 8081
traefik.http.routers.duplicati.middlewares: ldap_auth
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
traefik.http.routers.mongo.rule: >
Host(`mongo.marcpartensky.fr`) ||
Host(`mongo.marcpartensky.com`)
traefik.http.routers.mongo.entrypoints: websecure
traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.services.mongo.loadbalancer.server.port: 8081
traefik.http.routers.mongo.middlewares: ldap_auth
traefik.http.services.mongo.loadbalancer.server.port: 80
volumes:
mongo:
networks:
mongo:
external: true
caddy:
external: true
attachable: true
-11
View File
@@ -1,11 +0,0 @@
version: "3.9"
services:
mysql:
image: mysql
restart: unless-stopped
networks:
- mysql
volumes:
- mysql:/var/lib/mysql
env_file:
- ../data/secrets/mysql.env
+16 -26
View File
@@ -5,41 +5,31 @@ services:
image: nextcloud
restart: unless-stopped
volumes:
# - nextcloud:/var/www/html
- data:/var/www/html/data
- config:/var/www/html/config
- themes:/var/www/html/themes
- apps:/var/www/html/custom_apps
- nextcloud:/var/www/html
# - nextcloud:/var/www/html/data
# - nextcloud_theme:/var/www/html/themes/<YOUR_CUSTOM_THEME>
# - nextcloud_apps:/var/www/html/custom_apps
# - nextcloud_config:/var/www/html/config
env_file:
- ../data/secrets/nextcloud.env
networks:
- caddy
- postgres
- ldap
- nextcloud
# depends_on:
# - nextcloud_mariadb
deploy:
labels:
caddy: cloud.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 80}}"
traefik.enable: "true"
traefik.http.routers.nextcloud.rule: >
Host(`cloud.marcpartensky.com`) ||
Host(`cloud.marcpartensky.fr`)
traefik.http.routers.nextcloud.entrypoints: websecure
traefik.http.routers.nextcloud.tls.certresolver: tls
traefik.http.services.nextcloud.loadbalancer.server.port: 80
labels:
caddy: cloud.marcpartensky.com
caddy.reverse_proxy: "{{upstreams http 80}}"
traefik.enable: "true"
traefik.http.routers.nextcloud.rule: Host(`cloud.marcpartensky.com`)
traefik.http.routers.nextcloud.entrypoints: websecure
traefik.http.routers.nextcloud.tls.certresolver: tls
traefik.http.services.nextcloud.loadbalancer.server.port: 80
volumes:
data:
config:
themes:
apps:
nextcloud:
networks:
ldap:
external: true
nextcloud:
caddy:
external: true
postgres:
external: true
-5
View File
@@ -1,5 +0,0 @@
version: "3.9"
services:
nixos:
image: nixos/nix
restart: unless-stopped
-105
View File
@@ -1,105 +0,0 @@
version: "3.9"
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: unless-stopped
env_file:
- ../data/secrets/numeris.env
links:
- mysql:db
networks:
- caddy
- numeris
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.phpmyadmin.rule: Host(`phpmyadmin.numeris.marcpartensky.fr`)
traefik.http.routers.phpmyadmin.entrypoints: websecure
traefik.http.routers.phpmyadmin.tls.certresolver: tls
traefik.http.services.phpmyadmin.loadbalancer.server.port: 80
traefik.http.routers.phpmyadmin.middlewares: ldap_auth
mysql:
image: mysql:5.7
restart: unless-stopped
networks:
- numeris
volumes:
- numeris:/var/lib/mysql
env_file:
- ../data/secrets/numeris.env
back:
image: numerisisep/numeris-back:prod
networks:
- caddy
- numeris
env_file:
- ../data/secrets/numeris.env
# volumes:
# - .env:/home/numeris/.env
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.com`)
traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.fr`)
traefik.http.routers.back.entrypoints: websecure
traefik.http.routers.back.tls.certresolver: tls
traefik.http.services.back.loadbalancer.server.port: 80
front:
image: numerisisep/numeris-front:prod
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.front.rule: Host(`numeris.marcpartensky.com`)
traefik.http.routers.front.rule: Host(`numeris.marcpartensky.fr`)
traefik.http.routers.front.entrypoints: websecure
traefik.http.routers.front.tls.certresolver: tls
traefik.http.services.front.loadbalancer.server.port: 80
traefik.http.routers.front.middlewares: ldap_auth
back-staging:
image: numerisisep/numeris-back:staging
networks:
- caddy
- numeris
env_file:
- ../data/secrets/numeris.env
# volumes:
# - .env:/home/numeris/.env
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.com`)
traefik.http.routers.back.rule: Host(`staging.api.numeris.marcpartensky.fr`)
traefik.http.routers.back.entrypoints: websecure
traefik.http.routers.back.tls.certresolver: tls
traefik.http.services.back.loadbalancer.server.port: 80
front-staging:
image: numerisisep/numeris-front:staging
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.front.rule: Host(`numeris.marcpartensky.com`)
traefik.http.routers.front.rule: Host(`staging.numeris.marcpartensky.fr`)
traefik.http.routers.front.entrypoints: websecure
traefik.http.routers.front.tls.certresolver: tls
traefik.http.services.front.loadbalancer.server.port: 80
traefik.http.routers.front.middlewares: ldap_auth
networks:
numeris:
caddy:
external: true
volumes:
numeris:
caddy_data:
mysql:
-28
View File
@@ -1,28 +0,0 @@
version: "3.9"
services:
openvpn:
image: ghcr.io/linuxserver/openvpn-as
cap_add:
- NET_ADMIN
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Paris
# INTERFACE: eth0 #optional
volumes:
- config:/config
ports:
# - 943:943 # web
# - 9443:9443
- 1194:1194/udp
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.openvpn.rule: >
Host(`vpn.marcpartensky.fr`)
traefik.http.routers.openvpn.entrypoints: websecure
traefik.http.routers.openvpn.tls.certresolver: tls
traefik.http.services.openvpn.loadbalancer.server.port: 943
volumes:
config:
-16
View File
@@ -1,16 +0,0 @@
version: "3.9"
services:
openvpn_client:
image: dperson/openvpn-client
device: /dev/net/tun
volumes:
- ../data/openvpn_client:/vpn
- 'vpn.server.name;username;password'
cap-add:
- NET_ADMIN
networks:
- vpn
# sudo cp /path/to/vpn.crt /some/path/vpn-ca.crt
networks:
vpn:
external: true
-19
View File
@@ -1,19 +0,0 @@
version: "3.9"
services:
openvpn_client2:
image: frauhottelmann/openvpn-client
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
command: --config /vpn/client.ovpn --askpass /vpn/client.pwd --auth-nocache --script-security 3 --data-ciphers AES-128-CBC
volumes:
- ../data/openvpn_client2:/vpn
networks:
- vpn
# network_mode: "bridge"
networks:
vpn:
external: true
-10
View File
@@ -1,10 +0,0 @@
version: "3.9"
services:
openvpn-client:
image: ghcr.io/wfg/openvpn-client
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes:
- ../data/openvpn_client3:/data/vpn
-20
View File
@@ -1,20 +0,0 @@
version: "3.9"
services:
openvpnclient:
image: haugene/transmission-openvpn
cap-add:
- NET_ADMIN
ports:
- 9091:9091
environment:
OPENVPN_PROVIDER: custom
OPENVPN_CONFIG: france
OPENVPN_USERNAME: user
OPENVPN_PASSWORD: pass
LOCAL_NETWORK: 192.168.0.0/16
volumes:
- data:/data
- ../data/openvpnclient4/:/config
volumes:
data:
-26
View File
@@ -1,26 +0,0 @@
version: "3.9"
services:
owncloud:
image: owncloud
networks:
- caddy
- postgres
volumes:
- data:/var/www/html/data
deploy:
labels:
traefik.enable: "true"
traefik.http.services.owncloud.loadbalancer.server.port: 80
traefik.http.routers.owncloud.rule: >
Host(`owncloud.marcpartensky.com`) || Host(`owncloud.marcpartensky.fr`)
traefik.http.routers.owncloud.entrypoints: websecure
traefik.http.routers.owncloud.tls.certresolver: tls
volumes:
data:
networks:
caddy:
external: true
postgres:
external: true
-7
View File
@@ -26,13 +26,6 @@ services:
traefik.http.routers.oxivia.entrypoints: websecure
traefik.http.routers.oxivia.tls.certresolver: tls
traefik.http.services.oxivia.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.oxivia.rule: Host(`oxivia.business.marcpartensky.com`)
traefik.http.routers.oxivia.entrypoints: websecure
traefik.http.routers.oxivia.tls.certresolver: tls
traefik.http.services.oxivia.loadbalancer.server.port: 80
networks:
oxivia:
-11
View File
@@ -1,11 +0,0 @@
version: "3.9"
services:
client:
image: packetstream/psclient:latest
environment:
CID: 4bYb
# watchtower:
# image: containrrr/watchtower
# command: --cleanup --include-stopped --revive-stopped --interval 60 ${_COMPOSE_PROJECT_NAME}_Packetstream_PsClient_${_COMPOSE_PROJECT_STACK_ID}
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
+10 -10
View File
@@ -9,18 +9,18 @@ services:
- ../data/secrets/pandoc.env
volumes:
- pandoc:/app/files
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
traefik.http.routers.pandoc.rule: >
Host(`pandoc.marcpartensky.com`) ||
Host(`pandoc.marcpartensky.fr`)
traefik.http.routers.pandoc.entrypoints: websecure
traefik.http.routers.pandoc.tls.certresolver: tls
traefik.http.services.pandoc.loadbalancer.server.port: 80
labels:
caddy: pandoc.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
traefik.http.routers.pandoc.entrypoints: websecure
traefik.http.routers.pandoc.tls.certresolver: tls
traefik.http.services.pandoc.loadbalancer.server.port: 80
networks:
- caddy
depends_on:
- caddy
volumes:
pandoc:
-7
View File
@@ -1,7 +0,0 @@
version: "3.9"
services:
pawns:
image: marcpartensky/pawns
env_file:
- ../data/secrets/pawns.env
-6
View File
@@ -1,6 +0,0 @@
version: "3.9"
services:
peer2profit:
image: peer2profit/peer2profit_x86_64:latest
environment:
P2P_EMAIL: marc@marcpartensky.com
+37 -53
View File
@@ -1,79 +1,63 @@
version: "3.9"
version: "3.3"
services:
peertube:
image: chocobozzz/peertube:production-bullseye
restart: unless-stopped
networks:
- caddy
env_file:
- ../data/secrets/peertube.env
ports:
- "1935:1935" # If you don't want to use the live feature, you can comment this line
# - "9000:9000" # If you provide your own webserver and reverse-proxy, otherwise not suitable for production
volumes:
- assets:/app/client/dist
- data:/data
- peertube_assets:/app/client/dist
- peertube:/data
- ../data/peertube:/config
networks:
- peertube
- caddy
- postgres
- redis
# depends_on:
# - peertube_postgres
# - peertube_redis
# - peertube_postfix
depends_on:
- peertube_postgres
- peertube_redis
- peertube_postfix
labels:
caddy: peertube.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.peertube.rule: Host(`peertube.marcpartensky.com`)
traefik.http.routers.peertube.entrypoints: websecure
traefik.http.routers.peertube.tls.certresolver: tls
traefik.http.services.peertube.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.peertube.rule: Host(`peertube.marcpartensky.fr`)
traefik.http.routers.peertube.entrypoints: websecure
traefik.http.routers.peertube.tls.certresolver: tls
traefik.http.services.peertube.loadbalancer.server.port: 80
traefik.http.routers.gitea.rule: Host(`peertube.marcpartensky.com`)
traefik.http.routers.gitea.entrypoints: websecure
traefik.http.routers.gitea.tls.certresolver: tls
traefik.http.services.gitea.loadbalancer.server.port: 80
# peertube_postgres:
# image: postgres:13-alpine
# restart: unless-stopped
# env_file:
# - ../data/secrets/peertube.env
# volumes:
# - peertube_postgres:/var/lib/postgresql/data
peertube_postgres:
image: postgres:13-alpine
restart: unless-stopped
env_file:
- ../data/secrets/peertube.env
volumes:
- peertube_postgres:/var/lib/postgresql/data
# peertube_redis:
# image: redis:6-alpine
# restart: unless-stopped
# volumes:
# - peertube_redis:/data
peertube_redis:
image: redis:6-alpine
restart: unless-stopped
volumes:
- peertube_redis:/data
# postfix:
# image: mwader/postfix-relay
# restart: unless-stopped
# networks:
# - peertube
# env_file:
# - .env
# volumes:
# - postfix:/etc/opendkim/keys
peertube_postfix:
image: mwader/postfix-relay
restart: unless-stopped
env_file:
- .env
volumes:
- peertube_postfix:/etc/opendkim/keys
networks:
peertube:
postgres:
external: true
redis:
external: true
caddy:
external: true
volumes:
data:
assets:
postgres:
postfix:
peertube:
peertube_assets:
peertube_postgres:
peertube_redis:
peertube_postfix:
-16
View File
@@ -1,16 +0,0 @@
version: "3.9"
services:
pg_backup:
image: kartoza/pg-backup:14-3.1
env_file:
- ../data/secrets/pg_backup.env
# environment:
# POSTGRES_MAJOR_VERSION: 14
networks:
- postgres
volumes:
- /srv/pg-backup:/backups
networks:
postgres:
external: true
-47
View File
@@ -1,47 +0,0 @@
version: "3.9"
services:
pgadmin:
image: dpage/pgadmin4
restart: unless-stopped
env_file:
- ../data/secrets/pgadmin.env
environment:
PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION: "True"
# PGADMIN_CONFIG_LOGIN_BANNER: "Authorised users only!"
PGADMIN_CONFIG_CONSOLE_LOG_LEVEL: 10
networks:
- postgres
- caddy
volumes:
- /srv/pgadmin:/usr/local/
labels:
caddy: pgadmin.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
# caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
# caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
# caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
# caddy.basicauth: /* bcrypt
# caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
traefik.enable: "true"
traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
traefik.http.routers.pgadmin.entrypoints: websecure
traefik.http.routers.pgadmin.tls.certresolver: tls
traefik.http.services.pgadmin.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.fr`)
traefik.http.routers.pgadmin.entrypoints: websecure
traefik.http.routers.pgadmin.tls.certresolver: tls
traefik.http.services.pgadmin.loadbalancer.server.port: 80
volumes:
postgres:
networks:
postgres:
external: true
caddy:
external: true
-40
View File
@@ -1,40 +0,0 @@
version: "3.9"
services:
pgweb:
image: marcpartensky/pgweb
restart: unless-stopped
env_file:
- ../data/secrets/pgweb.env
networks:
- postgres
- caddy
# depends_on:
# - postgres
labels:
caddy: pgweb.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8081}}"
# caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
# caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
# caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
caddy.basicauth: /* bcrypt
caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
traefik.enable: "true"
traefik.http.routers.pgweb.rule: Host(`pgweb.marcpartensky.com`)
traefik.http.routers.pgweb.entrypoints: websecure
traefik.http.routers.pgweb.tls.certresolver: tls
traefik.http.services.pgweb.loadbalancer.server.port: 8081
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.pgweb.rule: Host(`pgweb.marcpartensky.com`)
traefik.http.routers.pgweb.entrypoints: websecure
traefik.http.routers.pgweb.tls.certresolver: tls
traefik.http.services.pgweb.loadbalancer.server.port: 8081
# ldapAuth Register Middleware ====================================================
traefik.http.routers.pgweb.middlewares: ldap_auth
networks:
postgres:
external: true
caddy:
external: true

Some files were not shown because too many files have changed in this diff Show More