Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f27dab280 | ||
|
|
52d51d568f | ||
|
|
d1b8342ca8 | ||
|
|
42611ca3b7 | ||
|
|
627a6ee08b | ||
|
|
cf8f1ea43b |
@@ -1,7 +0,0 @@
|
||||
liberapay: marcpartensky
|
||||
patreon: marcpartensky
|
||||
github: marcpartensky
|
||||
custom:
|
||||
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
|
||||
- https://paypal.me/marcpartensky
|
||||
- https://buymeacoffee.com/marcpartensky
|
||||
@@ -1,27 +0,0 @@
|
||||
name: Check docker compose files
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- v*
|
||||
jobs:
|
||||
build:
|
||||
env:
|
||||
BIND_MOUNTS: "/srv"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install make and docker-compose
|
||||
run: sudo apt install -y docker-compose make
|
||||
# - name: Check docker-compose files
|
||||
# run: for file in `find services/*`; do docker-compose -f $file config > /dev/null; done
|
||||
- name: Clone validator
|
||||
run: git clone https://github.com/serviceprototypinglab/dcvalidator /opt/validator
|
||||
- name: Merge to docker-compose.yml
|
||||
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
|
||||
+2
-23
@@ -1,27 +1,6 @@
|
||||
docker-compose.yml
|
||||
data/openvpn
|
||||
data/secrets
|
||||
data/certbot
|
||||
data/searx
|
||||
data/jenkins
|
||||
data/beef
|
||||
data/tmate/keys
|
||||
data/authelia
|
||||
data/mx-puppet-discord
|
||||
data/matrix
|
||||
data/heimdall
|
||||
data/pihole/etc-pihole
|
||||
data/pxe
|
||||
data/postgres
|
||||
data/wireguard
|
||||
data/vaultwarden
|
||||
data/filebrowser
|
||||
data/focalboard
|
||||
data/openvpn_*
|
||||
data/mailcow
|
||||
data/dockvpn
|
||||
data/hydra
|
||||
data/traefik
|
||||
data/caddy
|
||||
data.tar.gz
|
||||
data.7z
|
||||
data.7z.gpg
|
||||
services/template.yml
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
image: docker:stable
|
||||
|
||||
stages:
|
||||
- deploy
|
||||
|
||||
services:
|
||||
- docker:dind
|
||||
|
||||
before_script:
|
||||
- apk update
|
||||
- apk add py-pip python3-dev libffi-dev openssl-dev gcc libc-dev make
|
||||
- pip install docker-compose
|
||||
|
||||
deploy_app:
|
||||
stage: deploy
|
||||
script:
|
||||
- docker-compose down
|
||||
- docker-compose up -d
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
FROM docker:dood
|
||||
|
||||
# RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
# RUN chmod +x /usr/local/bin/docker-compose
|
||||
COPY docker-compose.yml docker-compose.yml
|
||||
COPY vps.yml vps.yml
|
||||
|
||||
RUN docker stack deploy -c vps.yml vps
|
||||
|
||||
ENTRYPOINT ["docker"]
|
||||
CMD ["service", "ls"]
|
||||
@@ -1,24 +1,8 @@
|
||||
compose:
|
||||
cat ./env/vps.txt | xargs ./bin/docker-setup.sh
|
||||
swarm:
|
||||
cat ./env/vps.txt | STACK=vps xargs ./bin/docker-setup.sh
|
||||
merge:
|
||||
./bin/docker-setup.sh merge vps
|
||||
mswarm: merge
|
||||
docker stack deploy -c stacks/docker-compose.yml vps
|
||||
down:
|
||||
docker stack rm vps
|
||||
export:
|
||||
7z a -p data.7z data
|
||||
gpg --encrypt --sign --recipient 'marc@marcpartensky.com' data.7z
|
||||
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 --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
|
||||
node:
|
||||
docker node update --label-add net=web contabo
|
||||
docker node update --label-add net=none tower
|
||||
tar cvzf /tmp/docker_data.tgz /root/docker/data
|
||||
gpg --encrypt --recipient 'marc.partensky@gmail.com' /tmp/docker_data.tgz
|
||||
mv /tmp/docker_data.tgz.gpg .
|
||||
rm /tmp/docker_data.tgz
|
||||
clean:
|
||||
rm ./docker_data.tgz.gpg
|
||||
rm /tmp/docker_data.tgz
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
[](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml)
|
||||
|
||||
# Docker
|
||||
[](https://swarm.marcpartensky.com)
|
||||
|
||||
## Domains
|
||||
- https://marcpartensky.com
|
||||
@@ -9,23 +6,20 @@
|
||||
- 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
|
||||
- https://business.marcpartensky.com
|
||||
- https://todolist.marcpartensky.com
|
||||
- https://api.todolist.marcpartensky.com
|
||||
- https://marc.wp.marcpartensky.com
|
||||
- https://alex.wp.marcpartensky.com
|
||||
- https://uml.marcpartensky.com
|
||||
- https://grafana.marcpartensky.com
|
||||
- https://prometheus.marcpartensky.com
|
||||
- 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://dns.marcpartensky.com
|
||||
<!-- - https://dev.marcpartensky.com -->
|
||||
<!-- - https://box.marcpartensky.com -->
|
||||
<!-- - https://glou.marcpartensky.com -->
|
||||
<!-- - https://minecraft.marcpartensky.com -->
|
||||
|
||||
@@ -35,38 +29,14 @@ The `docker-compose.yml` configuration is compatible with the following reverse-
|
||||
- caddy
|
||||
- nginx
|
||||
|
||||
## Run few services at once
|
||||
- Example : run a monero node
|
||||
## Commands
|
||||
```sh
|
||||
docker-compose -f services/monero-node.yml up -d
|
||||
certbot certonly -d newdomain.com -n --standalone
|
||||
certbot -d domain name,subdomain.domain name,www.domain name --expand
|
||||
```
|
||||
|
||||
- Example : run multiple a wordpress website behind a proxy
|
||||
```sh
|
||||
# create a global network
|
||||
docker network create --attachable caddy # add '--driver overlay' for swarm
|
||||
# then deploy both services
|
||||
docker-compose -f services/caddy.yml -f services/wordpress.yml up -d
|
||||
```
|
||||
|
||||
## Deploy lots of services at once
|
||||
- Select your services by putting those in ./env/vps.txt
|
||||
```sh
|
||||
nvim ./env/vps.txt
|
||||
```
|
||||
|
||||
- Generate a ./stack/docker-compose.yml with all merged configurations
|
||||
```sh
|
||||
./bin/docker-setup.sh merge vps # or make merge
|
||||
```
|
||||
|
||||
- Deploy
|
||||
```sh
|
||||
# as a swarm stack
|
||||
docker stack deploy -c ./stack/docker-compose.yml vps # or make mswarm
|
||||
|
||||
# or using docker-compose
|
||||
docker-compose -f ./stacks/docker-compose.yml up -d
|
||||
docker exec -i docker_minecraft_1 rcon-cli
|
||||
```
|
||||
|
||||
### Links
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
PROJECT_PATH="$PROGRAMS_PATH/docker"
|
||||
export COMPOSE_PATH_SEPARATOR=":"
|
||||
export COMPOSE_FILE=$(find $PROJECT_PATH/services/*.yml | xargs -I @ echo -n @:)
|
||||
export COMPOSE_FILE=${COMPOSE_FILE::-1}
|
||||
|
||||
|
||||
if [ "$1" = "-f" ]
|
||||
then
|
||||
docker-compose --file $@
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -f $PWD/docker-compose.yml ]
|
||||
then
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
docker-compose ps
|
||||
exit
|
||||
fi
|
||||
docker-compose --file $PWD/docker-compose.yml $@
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
docker-compose ps
|
||||
exit
|
||||
fi
|
||||
|
||||
docker-compose $@
|
||||
if [ "$1" = "up" ]
|
||||
then
|
||||
if [ "$2" = "-d" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 3}
|
||||
else
|
||||
docker-compose logs -f ${@: 2}
|
||||
fi
|
||||
elif [ "$1" = "start" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 2}
|
||||
elif [ "$1" = "restart" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 2}
|
||||
fi
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import yaml
|
||||
import collections.abc
|
||||
|
||||
|
||||
def update(d, u):
|
||||
for k, v in u.items():
|
||||
if isinstance(v, collections.abc.Mapping):
|
||||
d[k] = update(d.get(k, {}), v)
|
||||
else:
|
||||
d[k] = v
|
||||
return d
|
||||
|
||||
|
||||
d = {}
|
||||
for file in sys.argv[1:]:
|
||||
with open(file, "r") as stream:
|
||||
di = yaml.safe_load(stream)
|
||||
d = update(d, di)
|
||||
|
||||
print(yaml.safe_dump(d))
|
||||
@@ -1,35 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $1 = merge ]
|
||||
then
|
||||
cat ./env/$2.txt | xargs -I @ echo ./services/@.yml | xargs ./bin/docker-merge.py > ./stacks/docker-compose.yml
|
||||
# export COMPOSE_FILE="$PWD/../docker-compose.yml"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if [ -z $STACK ]
|
||||
then
|
||||
sep="-f"
|
||||
else
|
||||
sep="-c"
|
||||
fi
|
||||
|
||||
services=$@
|
||||
|
||||
config_files() {
|
||||
for service in $services
|
||||
do
|
||||
echo -n "$sep services/$service.yml "
|
||||
done
|
||||
}
|
||||
|
||||
if [ -z $STACK ]
|
||||
then
|
||||
cmd="docker compose $(config_files) up -d"
|
||||
else
|
||||
cmd="docker stack deploy $(config_files) $STACK"
|
||||
fi
|
||||
|
||||
echo $cmd
|
||||
eval $cmd
|
||||
@@ -0,0 +1,18 @@
|
||||
FROM ubuntu:latest
|
||||
|
||||
# Escape from here if you can
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y openssh-server neovim
|
||||
|
||||
RUN service ssh start
|
||||
|
||||
# RUN useradd $NAME -p $PASSWORD
|
||||
|
||||
# need to:
|
||||
# nvim /etc/ssh/sshd_config
|
||||
# service ssh restart
|
||||
# docker run -it -p 7022:7022 --name box marcpartensky/box
|
||||
# maybe change guest passwd
|
||||
|
||||
EXPOSE 22
|
||||
@@ -0,0 +1,47 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
marc:
|
||||
image: marcpartensky/dotfiles
|
||||
build:
|
||||
context: /root/git/dotfiles
|
||||
networks:
|
||||
- box
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
samy:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
|
||||
etienne:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
valentin:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
|
||||
alexandre:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
|
||||
networks:
|
||||
box:
|
||||
@@ -1,164 +0,0 @@
|
||||
bind_host: 0.0.0.0
|
||||
bind_port: 3000
|
||||
beta_bind_port: 0
|
||||
users:
|
||||
- name: marc
|
||||
password: $2a$10$E9cknJr/bTLtSUJ9EaW8r.Gw30FX8Plm8jgq.LaYxMwiX4DEuDK7O
|
||||
auth_attempts: 5
|
||||
block_auth_min: 15
|
||||
http_proxy: ""
|
||||
language: ""
|
||||
debug_pprof: false
|
||||
web_session_ttl: 720
|
||||
dns:
|
||||
bind_hosts:
|
||||
- 0.0.0.0
|
||||
port: 53
|
||||
statistics_interval: 1
|
||||
querylog_enabled: true
|
||||
querylog_file_enabled: true
|
||||
querylog_interval: 2160h
|
||||
querylog_size_memory: 1000
|
||||
anonymize_client_ip: false
|
||||
protection_enabled: true
|
||||
blocking_mode: default
|
||||
blocking_ipv4: ""
|
||||
blocking_ipv6: ""
|
||||
blocked_response_ttl: 10
|
||||
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: false
|
||||
max_goroutines: 300
|
||||
handle_ddr: true
|
||||
ipset: []
|
||||
ipset_file: ""
|
||||
filtering_enabled: true
|
||||
filters_update_interval: 24
|
||||
parental_enabled: false
|
||||
safesearch_enabled: false
|
||||
safebrowsing_enabled: false
|
||||
safebrowsing_cache_size: 1048576
|
||||
safesearch_cache_size: 1048576
|
||||
parental_cache_size: 1048576
|
||||
cache_time: 30
|
||||
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: []
|
||||
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
|
||||
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: 14
|
||||
@@ -1,30 +0,0 @@
|
||||
# first caddyfile
|
||||
|
||||
{
|
||||
security {
|
||||
authorization policy marc {
|
||||
set auth url https://gate.marcpartensky.com/
|
||||
crypto key verify {env.JWT_SECRET}
|
||||
allow roles authp/admin authp/user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
marc.wf {
|
||||
redir https://marcpartensky.com/{uri}
|
||||
}
|
||||
|
||||
marc.tf {
|
||||
redir https://marcpartensky.com{uri}
|
||||
}
|
||||
|
||||
# authent.marcpartensky.com {
|
||||
# reverse_proxy authentik:9443 {
|
||||
# tls internal
|
||||
# }
|
||||
# }
|
||||
|
||||
# healthcheck
|
||||
# :8080 {
|
||||
# status 200 /
|
||||
# }
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,40 +0,0 @@
|
||||
# Pi-hole: A black hole for Internet advertisements
|
||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
||||
# Network-wide ad blocking via your own hardware.
|
||||
#
|
||||
# Dnsmasq config for Pi-hole's FTLDNS
|
||||
#
|
||||
# This file is copyright under the latest version of the EUPL.
|
||||
# Please see LICENSE file for your rights under this license.
|
||||
|
||||
###############################################################################
|
||||
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
|
||||
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
|
||||
# #
|
||||
# IF YOU WISH TO CHANGE THE UPSTREAM SERVERS, CHANGE THEM IN: #
|
||||
# /etc/pihole/setupVars.conf #
|
||||
# #
|
||||
# ANY OTHER CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
|
||||
# WITHIN /etc/dnsmasq.d/yourname.conf #
|
||||
###############################################################################
|
||||
|
||||
addn-hosts=/etc/pihole/local.list
|
||||
addn-hosts=/etc/pihole/custom.list
|
||||
|
||||
|
||||
localise-queries
|
||||
|
||||
|
||||
no-resolv
|
||||
|
||||
|
||||
|
||||
cache-size=10000
|
||||
|
||||
log-queries
|
||||
log-facility=/var/log/pihole.log
|
||||
|
||||
log-async
|
||||
server=8.8.8.8
|
||||
server=8.8.4.4
|
||||
interface=eth0
|
||||
@@ -1,42 +0,0 @@
|
||||
# Pi-hole: A black hole for Internet advertisements
|
||||
# (c) 2021 Pi-hole, LLC (https://pi-hole.net)
|
||||
# Network-wide ad blocking via your own hardware.
|
||||
#
|
||||
# RFC 6761 config file for Pi-hole
|
||||
#
|
||||
# This file is copyright under the latest version of the EUPL.
|
||||
# Please see LICENSE file for your rights under this license.
|
||||
|
||||
###############################################################################
|
||||
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
|
||||
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
|
||||
# #
|
||||
# CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
|
||||
# WITHIN /etc/dnsmasq.d/yourname.conf #
|
||||
###############################################################################
|
||||
|
||||
# RFC 6761: Caching DNS servers SHOULD recognize
|
||||
# test, localhost, invalid
|
||||
# names as special and SHOULD NOT attempt to look up NS records for them, or
|
||||
# otherwise query authoritative DNS servers in an attempt to resolve these
|
||||
# names.
|
||||
server=/test/
|
||||
server=/localhost/
|
||||
server=/invalid/
|
||||
|
||||
# The same RFC requests something similar for
|
||||
# 10.in-addr.arpa. 21.172.in-addr.arpa. 27.172.in-addr.arpa.
|
||||
# 16.172.in-addr.arpa. 22.172.in-addr.arpa. 28.172.in-addr.arpa.
|
||||
# 17.172.in-addr.arpa. 23.172.in-addr.arpa. 29.172.in-addr.arpa.
|
||||
# 18.172.in-addr.arpa. 24.172.in-addr.arpa. 30.172.in-addr.arpa.
|
||||
# 19.172.in-addr.arpa. 25.172.in-addr.arpa. 31.172.in-addr.arpa.
|
||||
# 20.172.in-addr.arpa. 26.172.in-addr.arpa. 168.192.in-addr.arpa.
|
||||
# Pi-hole implements this via the dnsmasq option "bogus-priv" (see
|
||||
# 01-pihole.conf) because this also covers IPv6.
|
||||
|
||||
# OpenWRT furthermore blocks bind, local, onion domains
|
||||
# see https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=package/network/services/dnsmasq/files/rfc6761.conf;hb=HEAD
|
||||
# and https://www.iana.org/assignments/special-use-domain-names/special-use-domain-names.xhtml
|
||||
# We do not include the ".local" rule ourselves, see https://github.com/pi-hole/pi-hole/pull/4282#discussion_r689112972
|
||||
server=/bind/
|
||||
server=/onion/
|
||||
@@ -0,0 +1 @@
|
||||
settings.yml
|
||||
@@ -0,0 +1,47 @@
|
||||
[uwsgi]
|
||||
# Who will run the code
|
||||
uid = searx
|
||||
gid = searx
|
||||
|
||||
# Number of workers (usually CPU count)
|
||||
workers = 4
|
||||
|
||||
# The right granted on the created socket
|
||||
chmod-socket = 666
|
||||
|
||||
# Plugin to use and interpretor config
|
||||
single-interpreter = true
|
||||
master = true
|
||||
plugin = python3
|
||||
lazy-apps = true
|
||||
enable-threads = true
|
||||
|
||||
# Module to import
|
||||
module = searx.webapp
|
||||
|
||||
# Virtualenv and python path
|
||||
pythonpath = /usr/local/searx/
|
||||
chdir = /usr/local/searx/searx/
|
||||
|
||||
# Disable logging for privacy
|
||||
disable-logging=True
|
||||
|
||||
# But keep errors for 2 days
|
||||
touch-logrotate = /run/uwsgi-logrotate
|
||||
unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate }
|
||||
log-backupname = /var/log/uwsgi/uwsgi.log.1
|
||||
logto = /var/log/uwsgi/uwsgi.log
|
||||
|
||||
# No keep alive
|
||||
# See https://github.com/searx/searx-docker/issues/24
|
||||
add-header = Connection: close
|
||||
|
||||
# uwsgi serves the static files
|
||||
# expires set to one day as Flask does
|
||||
static-map = /static=/usr/local/searx/searx/static
|
||||
static-expires = /* 864000
|
||||
static-gzip-all = True
|
||||
offload-threads = %k
|
||||
|
||||
# Cache
|
||||
cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
KEYS_PATH="./data/tmate/keys"
|
||||
|
||||
set -eu
|
||||
|
||||
gen_key() {
|
||||
keytype=$1
|
||||
ks="${keytype}_"
|
||||
key="$KEYS_PATH/ssh_host_${ks}key"
|
||||
if [ ! -e "${key}" ] ; then
|
||||
ssh-keygen -t "${keytype}" -f "${key}" -N ''
|
||||
echo ""
|
||||
fi
|
||||
SIG=$(ssh-keygen -l -E SHA256 -f "$key.pub" | cut -d ' ' -f 2)
|
||||
}
|
||||
|
||||
mkdir -p $KEYS_PATH
|
||||
gen_key rsa
|
||||
RSA_SIG=$SIG
|
||||
gen_key ed25519
|
||||
ED25519_SIG=$SIG
|
||||
|
||||
|
||||
echo "You may use the following settings this in your .tmate.conf:"
|
||||
echo ""
|
||||
echo "set -g tmate-server-host localhost"
|
||||
echo "set -g tmate-server-port 22"
|
||||
echo "set -g tmate-server-rsa-fingerprint $RSA_SIG"
|
||||
echo "set -g tmate-server-ed25519-fingerprint $ED25519_SIG"
|
||||
@@ -1,7 +0,0 @@
|
||||
http:
|
||||
middlewares:
|
||||
basic:
|
||||
basicAuth:
|
||||
users:
|
||||
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
|
||||
# usersFile: etc/traefik/.htpasswd
|
||||
@@ -1,97 +0,0 @@
|
||||
# https://doc.traefik.io/traefik/routing/overview/
|
||||
global:
|
||||
checkNewVersion: true
|
||||
sendAnonymousUsage: false
|
||||
api:
|
||||
# insecure: false # = secure
|
||||
insecure: true
|
||||
dashboard: true
|
||||
debug: true
|
||||
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 ##
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Vendored
-22
@@ -1,22 +0,0 @@
|
||||
traefik
|
||||
website
|
||||
valentin
|
||||
open-web-calendar
|
||||
adguard
|
||||
servant
|
||||
discord-bot
|
||||
ia
|
||||
docker-api
|
||||
ialab
|
||||
portainer
|
||||
authentik
|
||||
nextcloud
|
||||
jenkins
|
||||
seafile
|
||||
matrix
|
||||
etherpad
|
||||
pritunl
|
||||
pritunl-mongo
|
||||
fail2ban
|
||||
ldap
|
||||
ldap-manager
|
||||
Executable
+80
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! [ -x "$(command -v docker-compose)" ]; then
|
||||
echo 'Error: docker-compose is not installed.' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
domains=(marcpartensky.com www.marcpartensky.com)
|
||||
rsa_key_size=4096
|
||||
data_path="./data/certbot"
|
||||
email="" # Adding a valid address is strongly recommended
|
||||
staging=0 # Set to 1 if you're testing your setup to avoid hitting request limits
|
||||
|
||||
if [ -d "$data_path" ]; then
|
||||
read -p "Existing data found for $domains. Continue and replace existing certificate? (y/N) " decision
|
||||
if [ "$decision" != "Y" ] && [ "$decision" != "y" ]; then
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -e "$data_path/conf/options-ssl-nginx.conf" ] || [ ! -e "$data_path/conf/ssl-dhparams.pem" ]; then
|
||||
echo "### Downloading recommended TLS parameters ..."
|
||||
mkdir -p "$data_path/conf"
|
||||
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > "$data_path/conf/options-ssl-nginx.conf"
|
||||
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > "$data_path/conf/ssl-dhparams.pem"
|
||||
echo
|
||||
fi
|
||||
|
||||
echo "### Creating dummy certificate for $domains ..."
|
||||
path="/etc/letsencrypt/live/$domains"
|
||||
mkdir -p "$data_path/conf/live/$domains"
|
||||
docker-compose run --rm --entrypoint "\
|
||||
openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1\
|
||||
-keyout '$path/privkey.pem' \
|
||||
-out '$path/fullchain.pem' \
|
||||
-subj '/CN=localhost'" certbot
|
||||
echo
|
||||
|
||||
|
||||
echo "### Starting nginx ..."
|
||||
docker-compose up --force-recreate -d nginx
|
||||
echo
|
||||
|
||||
echo "### Deleting dummy certificate for $domains ..."
|
||||
docker-compose run --rm --entrypoint "\
|
||||
rm -Rf /etc/letsencrypt/live/$domains && \
|
||||
rm -Rf /etc/letsencrypt/archive/$domains && \
|
||||
rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot
|
||||
echo
|
||||
|
||||
|
||||
echo "### Requesting Let's Encrypt certificate for $domains ..."
|
||||
#Join $domains to -d args
|
||||
domain_args=""
|
||||
for domain in "${domains[@]}"; do
|
||||
domain_args="$domain_args -d $domain"
|
||||
done
|
||||
|
||||
# Select appropriate email arg
|
||||
case "$email" in
|
||||
"") email_arg="--register-unsafely-without-email" ;;
|
||||
*) email_arg="--email $email" ;;
|
||||
esac
|
||||
|
||||
# Enable staging mode if needed
|
||||
if [ $staging != "0" ]; then staging_arg="--staging"; fi
|
||||
|
||||
docker-compose run --rm --entrypoint "\
|
||||
certbot certonly --webroot -w /var/www/certbot \
|
||||
$staging_arg \
|
||||
$email_arg \
|
||||
$domain_args \
|
||||
--rsa-key-size $rsa_key_size \
|
||||
--agree-tos \
|
||||
--force-renewal" certbot
|
||||
echo
|
||||
|
||||
echo "### Reloading nginx ..."
|
||||
docker-compose exec nginx nginx -s reload
|
||||
@@ -1,49 +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
|
||||
labels:
|
||||
caddy: adguard.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: Host(`adguard.marcpartensky.com`)
|
||||
traefik.http.routers.adguard.entrypoints: websecure
|
||||
traefik.http.routers.adguard.tls.certresolver: tls
|
||||
traefik.http.services.adguard.loadbalancer.server.port: 3000
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: Host(`adguard.marcpartensky.com`)
|
||||
traefik.http.routers.adguard.entrypoints: websecure
|
||||
traefik.http.routers.adguard.tls.certresolver: tls
|
||||
traefik.http.services.adguard.loadbalancer.server.port: 3000
|
||||
traefik.http.routers.adguard.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
adguard:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,25 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
agenda_militant:
|
||||
image: marcpartensky/agenda-militant
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
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
|
||||
deploy:
|
||||
labels:
|
||||
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,27 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
android:
|
||||
image: budtmo/docker-android-x86-12.0
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
# - "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
|
||||
@@ -1,56 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
arch:
|
||||
image: marcpartensky/arch:vnc
|
||||
restart: unless-stopped
|
||||
ports: # vnc is shared
|
||||
- "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
|
||||
|
||||
volumes:
|
||||
arch:
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,45 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
authelia:
|
||||
image: authelia/authelia
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 9091
|
||||
environment:
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/authelia:/config
|
||||
networks:
|
||||
- authelia
|
||||
- caddy
|
||||
labels:
|
||||
caddy: authelia.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9091}}"
|
||||
traefik.enable: true
|
||||
traefik.http.routers.authelia.rule: Host(`authelia.marcpartensky.com`)
|
||||
traefik.http.routers.authelia.entrypoints: websecure
|
||||
traefik.http.routers.authelia.tls: true
|
||||
traefik.http.routers.authelia.tls.certresolver: tls
|
||||
traefik.http.middlewares.authelia.forwardauth.address: http://authelia:9091/api/verify?rd=https://authelia.marcpartensky.com # yamllint disable-line rule:line-length
|
||||
traefik.http.middlewares.authelia.forwardauth.trustForwardHeader: true
|
||||
traefik.http.middlewares.authelia.forwardauth.authResponseHeaders: Remote-User,Remote-Groups,Remote-Name,Remote-Email # yamllint disable-line rule:line-length
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 6379
|
||||
environment:
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- authelia_redis:/data
|
||||
networks:
|
||||
- authelia
|
||||
|
||||
volumes:
|
||||
authelia_redis:
|
||||
|
||||
networks:
|
||||
authelia:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,103 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
authentik:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
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"
|
||||
depends_on:
|
||||
- authentik_postgres
|
||||
- authentik_redis
|
||||
- authentik_worker
|
||||
networks:
|
||||
- authentik
|
||||
- caddy
|
||||
labels:
|
||||
caddy: authentik.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 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
|
||||
|
||||
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: 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
|
||||
- authentik_backups:/backups
|
||||
- authentik_media:/media
|
||||
- authentik_certs:/certs
|
||||
- authentik_templates:/templates
|
||||
- authentik_geoip:/geoip
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
networks:
|
||||
- authentik
|
||||
|
||||
# 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
|
||||
|
||||
volumes:
|
||||
authentik_postgres:
|
||||
authentik_backups:
|
||||
authentik_media:
|
||||
authentik_certs:
|
||||
authentik_templates:
|
||||
authentik_geoip:
|
||||
|
||||
networks:
|
||||
authentik:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,34 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
beef:
|
||||
image: marcpartensky/beef
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
- "6789:6789"
|
||||
- "61985:61985"
|
||||
- "61986:61986"
|
||||
volumes:
|
||||
- beef:/root/.ms4f
|
||||
- /tmp/beef:/tmp/data
|
||||
- ../data/beef/config.yaml:/beef/config.yaml
|
||||
labels:
|
||||
caddy: beef.marcpartensky.com"
|
||||
caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
caddy.@ws.0_header: "Connection *Upgrade*"
|
||||
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.entrypoints: websecure
|
||||
traefik.http.routers.beef.tls.certresolver: tls
|
||||
traefik.http.services.beef.loadbalancer.server.port: 3000
|
||||
|
||||
volumes:
|
||||
beef:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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,55 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
configs:
|
||||
caddy-basic-content:
|
||||
file: ../data/caddy/Caddyfile
|
||||
labels:
|
||||
caddy:
|
||||
|
||||
services:
|
||||
caddy:
|
||||
image: marcpartensky/caddy
|
||||
ports:
|
||||
- "80:80"
|
||||
# - "443:443"
|
||||
environment:
|
||||
CADDY_INGRESS_NETWORKS: caddy
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- caddy_data:/data
|
||||
- ../data/caddy/Caddyfile:/etc/Caddyfile
|
||||
networks:
|
||||
caddy:
|
||||
# ipv4_address: 10.0.0.1
|
||||
logging:
|
||||
# syslog?
|
||||
options:
|
||||
max-size: 5m
|
||||
max-file: "10"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "localhost:80"]
|
||||
deploy:
|
||||
labels: # Global options
|
||||
caddy.email: marc@marcpartensky.com
|
||||
update_config:
|
||||
parallelism: 1
|
||||
delay: 5s
|
||||
order: start-first
|
||||
failure_action: rollback
|
||||
rollback_config:
|
||||
order: start-first
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
# restart_policy:
|
||||
# condition: any
|
||||
resources:
|
||||
reservations:
|
||||
cpus: '1'
|
||||
memory: 500M
|
||||
volumes:
|
||||
caddy_data:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,6 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
chatgpt:
|
||||
image: wongsaang/chatgpt-ui:latest
|
||||
ports:
|
||||
- "8000:80"
|
||||
@@ -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:
|
||||
@@ -1,47 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
discord_bot_mongo:
|
||||
image: mongo
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- discord_bot_mongo:/data/db
|
||||
networks:
|
||||
- discord
|
||||
ports:
|
||||
- "27017:27017"
|
||||
env_file:
|
||||
- ../data/secrets/discord_bot_mongo.env
|
||||
# healthcheck:
|
||||
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
|
||||
|
||||
discord_mongo_express:
|
||||
image: mongo-express
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
|
||||
env_file:
|
||||
- ../data/secrets/discord_mongo_express.env
|
||||
networks:
|
||||
- discord
|
||||
- caddy
|
||||
depends_on:
|
||||
- discord_bot_mongo
|
||||
labels:
|
||||
caddy: mongo.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8081}}"
|
||||
traefik.enable: "true"
|
||||
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: 80
|
||||
|
||||
volumes:
|
||||
discord_bot_mongo:
|
||||
|
||||
networks:
|
||||
discord:
|
||||
caddy:
|
||||
external: true
|
||||
attachable: true
|
||||
driver: overlay
|
||||
@@ -1,34 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
bot:
|
||||
image: marcpartensky/discord-bot
|
||||
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:
|
||||
@@ -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:
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,47 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
duplicati:
|
||||
image: lscr.io/linuxserver/duplicati:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: Europe/Paris
|
||||
# CLI_ARGS: #optional
|
||||
volumes:
|
||||
- /srv:/srv
|
||||
- duplicati_config:/config
|
||||
- duplicati_backups:/backups
|
||||
- duplicati_source:/source
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: duplicati.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8200}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: 8200
|
||||
traefik.http.routers.duplicati.rule: >
|
||||
Host(`duplicati.marcpartensky.com`) || Host(`dupliati.marcpartensky.fr`)
|
||||
traefik.http.routers.duplicati.entrypoints: websecure
|
||||
# traefik.http.routers.duplicati.tls.certresolver: tls
|
||||
traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: 8200
|
||||
# traefik.http.routers.duplicati.rule: Host(`duplicati.marcpartensky.com`)
|
||||
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
|
||||
|
||||
volumes:
|
||||
duplicati_config:
|
||||
duplicati_backups:
|
||||
duplicati_source:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,7 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
image: fazalfarhan01/earnapp:lite
|
||||
volumes:
|
||||
- earnapp:/etc/earnapp
|
||||
environment:
|
||||
EARNAPP_UUID: $EARNAPP_DEVICE_ID
|
||||
@@ -1,30 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
etherpad:
|
||||
image: etherpad/etherpad
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ADMIN_PASSWORD: supersecret
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: etherpad.marcpartensky.com, pad.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9001}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.etherpad.rule: Host(`pad.marcpartensky.com`)
|
||||
traefik.http.routers.etherpad.entrypoints: websecure
|
||||
traefik.http.routers.etherpad.tls.certresolver: tls
|
||||
traefik.http.services.etherpad.loadbalancer.server.port: 9001
|
||||
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: tls
|
||||
traefik.http.services.etherpad.loadbalancer.server.port: 9001
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,18 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
fail2ban:
|
||||
image: crazymax/fail2ban:latest
|
||||
restart: unless-stopped
|
||||
network_mode: "host"
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
volumes:
|
||||
- fail2ban:/data
|
||||
- /var/log:/var/log:ro
|
||||
env_file:
|
||||
- ../data/secrets/fail2ban.env
|
||||
|
||||
volumes:
|
||||
fail2ban:
|
||||
@@ -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
|
||||
@@ -1,29 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
filebrowser:
|
||||
image: hurlenko/filebrowser
|
||||
restart: unless-stopped
|
||||
# user: "${UID}:${GID}"
|
||||
volumes:
|
||||
- data:/data
|
||||
- ../data/filebrowser:/config
|
||||
# environment:
|
||||
# FB_BASEURL: /filebrowser
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.filebrowser.rule: 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:
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,19 +0,0 @@
|
||||
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:
|
||||
@@ -1,50 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.14.6
|
||||
restart: unless-stopped
|
||||
# user: git
|
||||
# environment:
|
||||
# - USER=git
|
||||
# - USER_UID=1004
|
||||
# - USER_GID=1004
|
||||
env_file:
|
||||
- ../data/secrets/gitea.env
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
volumes:
|
||||
- ssh:/data/git/.ssh
|
||||
- data:/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.rule: 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
|
||||
|
||||
volumes:
|
||||
data:
|
||||
ssh:
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,56 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitlab:
|
||||
image: gitlab/gitlab-ee:latest
|
||||
restart: unless-stopped
|
||||
hostname: gitlab.marcpartensky.com
|
||||
environment:
|
||||
GITLAB_OMNIBUS_CONFIG: |
|
||||
external_url 'http://gitlab.marcpartensky.com'
|
||||
gitlab_rails['gitlab_shell_ssh_port'] = 7020
|
||||
ports:
|
||||
- '7020:22'
|
||||
networks:
|
||||
- caddy
|
||||
volumes:
|
||||
- gitlab_config:/etc/gitlab
|
||||
- gitlab_log:/var/log/gitlab
|
||||
- gitlab_data:/var/opt/gitlab
|
||||
labels:
|
||||
caddy: gitlab.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams http 80}}"
|
||||
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
|
||||
# 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
|
||||
|
||||
volumes:
|
||||
gitlab_config:
|
||||
gitlab_log:
|
||||
gitlab_data:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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
|
||||
@@ -1,37 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
heimdall:
|
||||
image: lscr.io/linuxserver/heimdall:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/heimdall:/config
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: heimdall.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams}}"
|
||||
traefik.enable: "true"
|
||||
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:
|
||||
external: true
|
||||
@@ -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
|
||||
@@ -1,28 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
homer:
|
||||
image: b4bz/homer
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- homer:/www/assets
|
||||
environment:
|
||||
INIT_ASSETS: 1 # default
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: homer.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.homer.rule: Host(`homer.marcpartensky.com`)
|
||||
traefik.http.routers.homer.entrypoints: websecure
|
||||
traefik.http.routers.homer.tls.certresolver: tls
|
||||
traefik.http.services.homer.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
homer:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,6 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
honeygain:
|
||||
image: marcpartensky/honeygain
|
||||
env_file:
|
||||
- ../data/secrets/honeygain.env
|
||||
@@ -1,14 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
hydra:
|
||||
image: marcpartensky/hydra
|
||||
network: host
|
||||
command: -P /rockyou.txt -L /usernames.txt ssh://192.168.252.84
|
||||
workdir: /root
|
||||
volumes:
|
||||
- ../data/hydra/rockyou.txt:/rockyou.txt
|
||||
- ../data/hydra/usernames.txt:/usernames.txt
|
||||
- hydra:/root
|
||||
|
||||
volumes:
|
||||
hydra:
|
||||
@@ -1,19 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ia:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7011:8000"
|
||||
networks:
|
||||
- discord
|
||||
depends_on:
|
||||
- docker_api
|
||||
env_file:
|
||||
- ../data/secrets/ia.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
networks:
|
||||
discord:
|
||||
@@ -1,31 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ialab:
|
||||
image: marcpartensky/ialab:latest
|
||||
# volumes:
|
||||
# - ialab:/app
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: ialab.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8000}}"
|
||||
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
|
||||
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
|
||||
|
||||
# volumes:
|
||||
# ialab:
|
||||
#
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,63 +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
|
||||
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.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.service_nextcloud.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
|
||||
@@ -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:
|
||||
@@ -1,46 +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.com`)
|
||||
traefik.http.routers.jellyfin.rule: Host(`jellyfin.marcpartensky.fr`)
|
||||
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
|
||||
@@ -1,28 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jenkins:
|
||||
image: jenkins/jenkins:lts-jdk11
|
||||
user: root
|
||||
volumes:
|
||||
- jenkins:/var/jenkins_home
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- caddy
|
||||
# ports:
|
||||
# - "50000:50000"
|
||||
labels:
|
||||
caddy: jenkins.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.jenkins.rule: Host(`jenkins.marcpartensky.com`)
|
||||
traefik.http.routers.jenkins.entrypoints: websecure
|
||||
traefik.http.routers.jenkins.tls.certresolver: tls
|
||||
traefik.http.services.jenkins.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
jenkins:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,39 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jupyterhub:
|
||||
image: marcpartensky/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:
|
||||
- caddy
|
||||
- jupyterhub
|
||||
environment:
|
||||
DOCKER_JUPYTER_IMAGE: marcpartensky/jupyterlab
|
||||
DOCKER_NETWORK_NAME: jupyterhub
|
||||
HUB_IP: jupyterhub
|
||||
labels:
|
||||
caddy: jupyterhub.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8000}}"
|
||||
traefik.enable: "true"
|
||||
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
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
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
|
||||
|
||||
networks:
|
||||
jupyterhub:
|
||||
name: jupyterhub
|
||||
driver: overlay
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,37 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jupyterlab:
|
||||
image: jupyter/datascience-notebook:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
# - GEN_CERT=yes
|
||||
JUPYTER_ENABLE_LAB: "yes"
|
||||
GRANT_SUDO: "yes"
|
||||
# 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/jovyan
|
||||
# entrypoint: start-notebook.sh \
|
||||
# --NotebookApp.keyfile=key/0000_key-certbot.pem
|
||||
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
|
||||
# volumes:
|
||||
# - /etc/letsencrypt/keys:/home/jovyan/work/key
|
||||
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
|
||||
# - /etc/letsencrypt:/etc/letsencrypt
|
||||
#
|
||||
volumes:
|
||||
jupyterlab:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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
|
||||
@@ -1,6 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
kippo:
|
||||
image: tomdesinto/kippo
|
||||
ports:
|
||||
- "22:22"
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,45 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ldap_manager:
|
||||
image: wheelybird/ldap-user-manager:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
SERVER_HOSTNAME: auth.marcpartensy.com
|
||||
LDAP_URI: ldap://ldap
|
||||
LDAP_BASE_DN: dc=admin,dc=org
|
||||
LDAP_ADMINS_GROUP: admins
|
||||
LDAP_ADMIN_BIND_DN: cn=admin,dc=admin,dc=org
|
||||
LDAP_IGNORE_CERT_ERRORS: "true"
|
||||
LDAP_REQUIRE_STARTTLS: "FALSE"
|
||||
NO_HTTPS: "TRUE"
|
||||
env_file:
|
||||
- ../data/secrets/ldap.env
|
||||
depends_on:
|
||||
- ldap
|
||||
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
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,29 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ldap:
|
||||
image: osixia/openldap
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
LDAP_ORGANISATION: admin
|
||||
LDAP_DOMAIN: admin.org
|
||||
LDAP_RFC2307BIS_SCHEMA: "true"
|
||||
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
|
||||
LDAP_TLS_VERIFY_CLIENT: never
|
||||
env_file:
|
||||
- ../data/secrets/ldap.env
|
||||
networks:
|
||||
- ldap
|
||||
ports:
|
||||
- "636:636"
|
||||
volumes:
|
||||
- ldap:/var/lib/ldap
|
||||
- ldap_slapd:/etc/ldap/slapd.d
|
||||
|
||||
volumes:
|
||||
ldap:
|
||||
ldap_slapd:
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
@@ -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:
|
||||
@@ -1,687 +0,0 @@
|
||||
version: '3.9'
|
||||
x-common:
|
||||
dns: &dns
|
||||
dns:
|
||||
- 10.22.1.254
|
||||
redis: &redis
|
||||
ipv4_address: 10.22.1.249
|
||||
sogo: &sogo
|
||||
ipv4_address: 10.22.1.248
|
||||
nginx: &nginx
|
||||
ipv4_address: 10.22.1.252
|
||||
postfix: &postfix
|
||||
ipv4_address: 10.22.1.253
|
||||
unbound: &unbound
|
||||
ipv4_address: 10.22.1.254
|
||||
|
||||
|
||||
services:
|
||||
|
||||
unbound:
|
||||
image: mailcow/unbound:1.15
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- ../data/mailcow/hooks/unbound:/hooks:Z
|
||||
- ../data/mailcow/conf/unbound/unbound.conf:/etc/unbound/unbound.conf:ro,Z
|
||||
tty: true
|
||||
networks:
|
||||
mailcow:
|
||||
<<: *unbound
|
||||
ipv4_address: 10.22.1.254
|
||||
aliases:
|
||||
- unbound
|
||||
|
||||
mysql:
|
||||
image: mariadb:10.5
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- unbound
|
||||
stop_grace_period: 45s
|
||||
volumes:
|
||||
- mysql-vol-1:/var/lib/mysql/:Z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
- ../data/mailcow/conf/mysql/:/etc/mysql/conf.d/:ro,Z
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# TZ: ${TZ}
|
||||
# MYSQL_ROOT_PASSWORD: ${DBROOT}
|
||||
# MYSQL_DATABASE: ${DBNAME}
|
||||
# MYSQL_USER: ${DBUSER}
|
||||
# MYSQL_PASSWORD: ${DBPASS}
|
||||
# MYSQL_INITDB_SKIP_TZINFO: 1
|
||||
# ports:
|
||||
# - "${SQL_PORT:-127.0.0.1:13306}:3306"
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- mysql
|
||||
|
||||
redis:
|
||||
image: redis:6-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- redis-vol-1:/data/:Z
|
||||
# ports:
|
||||
# - "${REDIS_PORT:-127.0.0.1:7654}:6379"
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
sysctls:
|
||||
- net.core.somaxconn=4096
|
||||
networks:
|
||||
mailcow:
|
||||
<<: *redis
|
||||
ipv4_address: 10.22.1.249
|
||||
aliases:
|
||||
- redis
|
||||
|
||||
clamd:
|
||||
image: mailcow/clamd:1.43
|
||||
restart: unless-stopped
|
||||
<<: *dns
|
||||
volumes:
|
||||
- ../data/mailcow/conf/clamav/:/etc/clamav/:Z
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- clamd
|
||||
|
||||
rspamd:
|
||||
image: mailcow/rspamd:1.79
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 30s
|
||||
depends_on:
|
||||
- dovecot
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# TZ: ${TZ}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
volumes:
|
||||
- ../data/mailcow/hooks/rspamd:/hooks:Z
|
||||
- ../data/mailcow/conf/rspamd/custom/:/etc/rspamd/custom:z
|
||||
- ../data/mailcow/conf/rspamd/override.d/:/etc/rspamd/override.d:Z
|
||||
- ../data/mailcow/conf/rspamd/local.d/:/etc/rspamd/local.d:Z
|
||||
- ../data/mailcow/conf/rspamd/plugins.d/:/etc/rspamd/plugins.d:Z
|
||||
- ../data/mailcow/conf/rspamd/lua/:/etc/rspamd/lua/:ro,Z
|
||||
- ../data/mailcow/conf/rspamd/rspamd.conf.local:/etc/rspamd/rspamd.conf.local:Z
|
||||
- ../data/mailcow/conf/rspamd/rspamd.conf.override:/etc/rspamd/rspamd.conf.override:Z
|
||||
- rspamd-vol-1:/var/lib/rspamd:z
|
||||
hostname: rspamd
|
||||
<<: *dns
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- rspamd
|
||||
|
||||
php-fpm:
|
||||
image: mailcow/phpfpm:1.78
|
||||
restart: unless-stopped
|
||||
command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
|
||||
depends_on:
|
||||
- redis
|
||||
volumes:
|
||||
- rspamd-vol-1:/var/lib/rspamd:z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
- ../data/mailcow/hooks/phpfpm:/hooks:Z
|
||||
- ../data/mailcow/web:/web:z
|
||||
- ../data/mailcow/conf/rspamd/dynmaps:/dynmaps:ro,z
|
||||
- ../data/mailcow/conf/rspamd/custom/:/rspamd_custom_maps:z
|
||||
- ../data/mailcow/conf/sogo/:/etc/sogo/:z
|
||||
- ../data/mailcow/conf/rspamd/meta_exporter:/meta_exporter:ro,z
|
||||
- ../data/mailcow/conf/phpfpm/sogo-sso/:/etc/sogo-sso/:z
|
||||
- ../data/mailcow/conf/phpfpm/php-fpm.d/pools.conf:/usr/local/etc/php-fpm.d/z-pools.conf:Z
|
||||
- ../data/mailcow/conf/phpfpm/php-conf.d/opcache-recommended.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini:Z
|
||||
- ../data/mailcow/conf/phpfpm/php-conf.d/upload.ini:/usr/local/etc/php/conf.d/upload.ini:Z
|
||||
- ../data/mailcow/conf/phpfpm/php-conf.d/other.ini:/usr/local/etc/php/conf.d/zzz-other.ini:Z
|
||||
- ../data/mailcow/conf/dovecot/global_sieve_before:/global_sieve/before:z
|
||||
- ../data/mailcow/conf/dovecot/global_sieve_after:/global_sieve/after:z
|
||||
- ../data/mailcow/assets/templates:/tpls:z
|
||||
- ../data/mailcow/conf/nginx/:/etc/nginx/conf.d/:z
|
||||
<<: *dns
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
# LOG_LINES: ${LOG_LINES:-9999}
|
||||
# TZ: ${TZ}
|
||||
# DBNAME: ${DBNAME}
|
||||
# DBUSER: ${DBUSER}
|
||||
# DBPASS: ${DBPASS}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
# MAILCOW_PASS_SCHEME: ${MAILCOW_PASS_SCHEME:-BLF-CRYPT}
|
||||
# IMAP_PORT: ${IMAP_PORT:-143}
|
||||
# IMAPS_PORT: ${IMAPS_PORT:-993}
|
||||
# POP_PORT: ${POP_PORT:-110}
|
||||
# POPS_PORT: ${POPS_PORT:-995}
|
||||
# SIEVE_PORT: ${SIEVE_PORT:-4190}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
# SUBMISSION_PORT: ${SUBMISSION_PORT:-587}
|
||||
# SMTPS_PORT: ${SMTPS_PORT:-465}
|
||||
# SMTP_PORT: ${SMTP_PORT:-25}
|
||||
# API_KEY: ${API_KEY:-invalid}
|
||||
# API_KEY_READ_ONLY: ${API_KEY_READ_ONLY:-invalid}
|
||||
# API_ALLOW_FROM: ${API_ALLOW_FROM:-invalid}
|
||||
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
||||
# SKIP_SOLR: ${SKIP_SOLR:-y}
|
||||
# SKIP_CLAMD: ${SKIP_CLAMD:-n}
|
||||
# SKIP_SOGO: ${SKIP_SOGO:-n}
|
||||
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
||||
# MASTER: ${MASTER:-y}
|
||||
# DEV_MODE: ${DEV_MODE:-n}
|
||||
# WEBAUTHN_ONLY_TRUSTED_VENDORS: ${WEBAUTHN_ONLY_TRUSTED_VENDORS:-n}
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- phpfpm
|
||||
|
||||
sogo:
|
||||
image: mailcow/sogo:1.106
|
||||
restart: unless-stopped
|
||||
# environment:
|
||||
# DBNAME: ${DBNAME}
|
||||
# DBUSER: ${DBUSER}
|
||||
# DBPASS: ${DBPASS}
|
||||
# TZ: ${TZ}
|
||||
# LOG_LINES: ${LOG_LINES:-9999}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
# MAILCOW_PASS_SCHEME: ${MAILCOW_PASS_SCHEME:-BLF-CRYPT}
|
||||
# ACL_ANYONE: ${ACL_ANYONE:-disallow}
|
||||
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# SOGO_EXPIRE_SESSION: ${SOGO_EXPIRE_SESSION:-480}
|
||||
# SKIP_SOGO: ${SKIP_SOGO:-n}
|
||||
# MASTER: ${MASTER:-y}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
<<: *dns
|
||||
volumes:
|
||||
- ../data/mailcow/hooks/sogo:/hooks:Z
|
||||
- ../data/mailcow/conf/sogo/:/etc/sogo/:z
|
||||
- ../data/mailcow/web/inc/init_db.inc.php:/init_db.inc.php:Z
|
||||
- ../data/mailcow/conf/sogo/custom-favicon.ico:/usr/lib/GNUstep/SOGo/WebServerResources/img/sogo.ico:z
|
||||
- ../data/mailcow/conf/sogo/custom-theme.js:/usr/lib/GNUstep/SOGo/WebServerResources/js/theme.js:z
|
||||
- ../data/mailcow/conf/sogo/custom-sogo.js:/usr/lib/GNUstep/SOGo/WebServerResources/js/custom-sogo.js:z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
- sogo-web-vol-1:/sogo_web:z
|
||||
- sogo-userdata-backup-vol-1:/sogo_backup:Z
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
labels:
|
||||
ofelia.enabled: "true"
|
||||
ofelia.job-exec.sogo_sessions.schedule: "@every 1m"
|
||||
ofelia.job-exec.sogo_sessions.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-tool expire-sessions $${SOGO_EXPIRE_SESSION} || exit 0\""
|
||||
ofelia.job-exec.sogo_ealarms.schedule: "@every 1m"
|
||||
ofelia.job-exec.sogo_ealarms.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-ealarms-notify -p /etc/sogo/sieve.creds || exit 0\""
|
||||
ofelia.job-exec.sogo_eautoreply.schedule: "@every 5m"
|
||||
ofelia.job-exec.sogo_eautoreply.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds || exit 0\""
|
||||
ofelia.job-exec.sogo_backup.schedule: "@every 24h"
|
||||
ofelia.job-exec.sogo_backup.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu sogo /usr/sbin/sogo-tool backup /sogo_backup ALL || exit 0\""
|
||||
networks:
|
||||
mailcow:
|
||||
<<: *sogo
|
||||
ipv4_address: 10.22.1.248
|
||||
aliases:
|
||||
- sogo
|
||||
|
||||
dovecot:
|
||||
image: mailcow/dovecot:1.159
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mysql
|
||||
<<: *dns
|
||||
cap_add:
|
||||
- NET_BIND_SERVICE
|
||||
volumes:
|
||||
- ../data/mailcow/hooks/dovecot:/hooks:Z
|
||||
- ../data/mailcow/conf/dovecot:/etc/dovecot:z
|
||||
- ../data/mailcow/assets/ssl:/etc/ssl/mail/:ro,z
|
||||
- ../data/mailcow/conf/sogo/:/etc/sogo/:z
|
||||
- ../data/mailcow/conf/phpfpm/sogo-sso/:/etc/phpfpm/:z
|
||||
- ../data/mailcow/conf/rspamd/custom/:/etc/rspamd/custom:z
|
||||
- ../data/mailcow/assets/templates:/templates:z
|
||||
- vmail-vol-1:/var/vmail:Z
|
||||
- vmail-index-vol-1:/var/vmail_index:Z
|
||||
- crypt-vol-1:/mail_crypt/:z
|
||||
- rspamd-vol-1:/var/lib/rspamd:z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# DOVECOT_MASTER_USER: ${DOVECOT_MASTER_USER:-}
|
||||
# DOVECOT_MASTER_PASS: ${DOVECOT_MASTER_PASS:-}
|
||||
# LOG_LINES: ${LOG_LINES:-9999}
|
||||
# DBNAME: ${DBNAME}
|
||||
# DBUSER: ${DBUSER}
|
||||
# DBPASS: ${DBPASS}
|
||||
# TZ: ${TZ}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
# MAILCOW_PASS_SCHEME: ${MAILCOW_PASS_SCHEME:-BLF-CRYPT}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
||||
# MAILDIR_GC_TIME: ${MAILDIR_GC_TIME:-7200}
|
||||
# ACL_ANYONE: ${ACL_ANYONE:-disallow}
|
||||
# SKIP_SOLR: ${SKIP_SOLR:-y}
|
||||
# MAILDIR_SUB: ${MAILDIR_SUB:-}
|
||||
# MASTER: ${MASTER:-y}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
||||
ports:
|
||||
- "${DOVEADM_PORT:-127.0.0.1:19991}:12345"
|
||||
- "${IMAP_PORT:-143}:143"
|
||||
- "${IMAPS_PORT:-993}:993"
|
||||
- "${POP_PORT:-110}:110"
|
||||
- "${POPS_PORT:-995}:995"
|
||||
- "${SIEVE_PORT:-4190}:4190"
|
||||
tty: true
|
||||
labels:
|
||||
ofelia.enabled: "true"
|
||||
ofelia.job-exec.dovecot_imapsync_runner.schedule: "@every 1m"
|
||||
ofelia.job-exec.dovecot_imapsync_runner.no-overlap: "true"
|
||||
ofelia.job-exec.dovecot_imapsync_runner.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu nobody /usr/local/bin/imapsync_runner.pl || exit 0\""
|
||||
ofelia.job-exec.dovecot_trim_logs.schedule: "@every 1m"
|
||||
ofelia.job-exec.dovecot_trim_logs.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu vmail /usr/local/bin/trim_logs.sh || exit 0\""
|
||||
ofelia.job-exec.dovecot_quarantine.schedule: "@every 20m"
|
||||
ofelia.job-exec.dovecot_quarantine.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu vmail /usr/local/bin/quarantine_notify.py || exit 0\""
|
||||
ofelia.job-exec.dovecot_clean_q_aged.schedule: "@every 24h"
|
||||
ofelia.job-exec.dovecot_clean_q_aged.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/local/bin/gosu vmail /usr/local/bin/clean_q_aged.sh || exit 0\""
|
||||
ofelia.job-exec.dovecot_maildir_gc.schedule: "@every 30m"
|
||||
ofelia.job-exec.dovecot_maildir_gc.command: "/bin/bash -c \"source /source_env.sh ; /usr/local/bin/gosu vmail /usr/local/bin/maildir_gc.sh\""
|
||||
ofelia.job-exec.dovecot_sarules.schedule: "@every 24h"
|
||||
ofelia.job-exec.dovecot_sarules.command: "/bin/bash -c \"/usr/local/bin/sa-rules.sh\""
|
||||
ofelia.job-exec.dovecot_fts.schedule: "@every 24h"
|
||||
ofelia.job-exec.dovecot_fts.command: "/usr/bin/curl http://solr:8983/solr/dovecot-fts/update?optimize=true"
|
||||
ofelia.job-exec.dovecot_repl_health.schedule: "@every 5m"
|
||||
ofelia.job-exec.dovecot_repl_health.command: "/bin/bash -c \"/usr/local/bin/gosu vmail /usr/local/bin/repl_health.sh\""
|
||||
# ulimits:
|
||||
# nproc: 65535
|
||||
# nofile:
|
||||
# soft: 20000
|
||||
postfix:
|
||||
image: mailcow/postfix:1.66
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mysql
|
||||
volumes:
|
||||
- ../data/mailcow/hooks/postfix:/hooks:Z
|
||||
- ../data/mailcow/conf/postfix:/opt/postfix/conf:z
|
||||
- ../data/mailcow/assets/ssl:/etc/ssl/mail/:ro,z
|
||||
- postfix-vol-1:/var/spool/postfix:z
|
||||
- crypt-vol-1:/var/lib/zeyple:z
|
||||
- rspamd-vol-1:/var/lib/rspamd:z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# LOG_LINES: ${LOG_LINES:-9999}
|
||||
# TZ: ${TZ}
|
||||
# DBNAME: ${DBNAME}
|
||||
# DBUSER: ${DBUSER}
|
||||
# DBPASS: ${DBPASS}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
cap_add:
|
||||
- NET_BIND_SERVICE
|
||||
ports:
|
||||
- "${SMTP_PORT:-25}:25"
|
||||
- "${SMTPS_PORT:-465}:465"
|
||||
- "${SUBMISSION_PORT:-587}:587"
|
||||
<<: *dns
|
||||
networks:
|
||||
mailcow:
|
||||
<<: *postfix
|
||||
ipv4_address: 10.22.1.253
|
||||
aliases:
|
||||
- postfix
|
||||
|
||||
memcached:
|
||||
image: memcached:alpine
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# - TZ=${TZ}
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- memcached
|
||||
|
||||
nginx:
|
||||
image: nginx:mainline-alpine
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- sogo
|
||||
- php-fpm
|
||||
- redis
|
||||
<<: *dns
|
||||
command: /bin/sh -c "envsubst < /etc/nginx/conf.d/templates/listen_plain.template > /etc/nginx/conf.d/listen_plain.active &&
|
||||
envsubst < /etc/nginx/conf.d/templates/listen_ssl.template > /etc/nginx/conf.d/listen_ssl.active &&
|
||||
envsubst < /etc/nginx/conf.d/templates/sogo.template > /etc/nginx/conf.d/sogo.active &&
|
||||
. /etc/nginx/conf.d/templates/server_name.template.sh > /etc/nginx/conf.d/server_name.active &&
|
||||
. /etc/nginx/conf.d/templates/sites.template.sh > /etc/nginx/conf.d/sites.active &&
|
||||
. /etc/nginx/conf.d/templates/sogo_eas.template.sh > /etc/nginx/conf.d/sogo_eas.active &&
|
||||
nginx -qt &&
|
||||
until ping phpfpm -c1 > /dev/null; do sleep 1; done &&
|
||||
until ping sogo -c1 > /dev/null; do sleep 1; done &&
|
||||
until ping redis -c1 > /dev/null; do sleep 1; done &&
|
||||
until ping rspamd -c1 > /dev/null; do sleep 1; done &&
|
||||
exec nginx -g 'daemon off;'"
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# HTTPS_PORT: ${HTTPS_PORT:-443}
|
||||
# HTTP_PORT: ${HTTP_PORT:-80}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# TZ: ${TZ}
|
||||
# SKIP_SOGO: ${SKIP_SOGO:-n}
|
||||
# ALLOW_ADMIN_EMAIL_LOGIN: ${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
||||
# ADDITIONAL_SERVER_NAMES: ${ADDITIONAL_SERVER_NAMES:-}
|
||||
volumes:
|
||||
- ../data/mailcow/web:/web:ro,z
|
||||
- ../data/mailcow/conf/rspamd/dynmaps:/dynmaps:ro,z
|
||||
- ../data/mailcow/assets/ssl/:/etc/ssl/mail/:ro,z
|
||||
- ../data/mailcow/conf/nginx/:/etc/nginx/conf.d/:z
|
||||
- ../data/mailcow/conf/rspamd/meta_exporter:/meta_exporter:ro,z
|
||||
- sogo-web-vol-1:/usr/lib/GNUstep/SOGo/:z
|
||||
# ports:
|
||||
# - "${HTTPS_BIND:-:}:${HTTPS_PORT:-443}:${HTTPS_PORT:-443}"
|
||||
# - "${HTTP_BIND:-:}:${HTTP_PORT:-80}:${HTTP_PORT:-80}"
|
||||
labels:
|
||||
caddy: mail.marcpartensky.com, mail.marc.wf, mail.marc.tf, m.marc.wf, m.marc.tf
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nginx.rule: Host(`mail.marcpartensky.com`)
|
||||
traefik.http.routers.nginx.entrypoints: websecure
|
||||
traefik.http.routers.nginx.tls.certresolver: tls
|
||||
traefik.http.services.nginx.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nginx.rule: Host(`mail.marcpartensky.com`)
|
||||
traefik.http.routers.nginx.entrypoints: websecure
|
||||
traefik.http.routers.nginx.tls.certresolver: tls
|
||||
traefik.http.services.nginx.loadbalancer.server.port: 80
|
||||
networks:
|
||||
caddy:
|
||||
mailcow:
|
||||
<<: *nginx
|
||||
ipv4_address: 10.22.1.252
|
||||
aliases:
|
||||
- nginx
|
||||
|
||||
acme:
|
||||
image: mailcow/acme:1.81
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- nginx
|
||||
<<: *dns
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# LOG_LINES: ${LOG_LINES:-9999}
|
||||
# ACME_CONTACT: ${ACME_CONTACT:-}
|
||||
# ADDITIONAL_SAN: ${ADDITIONAL_SAN}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
# DBNAME: ${DBNAME}
|
||||
# DBUSER: ${DBUSER}
|
||||
# DBPASS: ${DBPASS}
|
||||
# SKIP_LETS_ENCRYPT: ${SKIP_LETS_ENCRYPT:-n}
|
||||
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
||||
# DIRECTORY_URL: ${DIRECTORY_URL:-}
|
||||
# ENABLE_SSL_SNI: ${ENABLE_SSL_SNI:-n}
|
||||
# SKIP_IP_CHECK: ${SKIP_IP_CHECK:-n}
|
||||
# SKIP_HTTP_VERIFICATION: ${SKIP_HTTP_VERIFICATION:-n}
|
||||
# ONLY_MAILCOW_HOSTNAME: ${ONLY_MAILCOW_HOSTNAME:-n}
|
||||
# LE_STAGING: ${LE_STAGING:-n}
|
||||
# TZ: ${TZ}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
# SNAT_TO_SOURCE: ${SNAT_TO_SOURCE:-n}
|
||||
# SNAT6_TO_SOURCE: ${SNAT6_TO_SOURCE:-n}
|
||||
volumes:
|
||||
- ../data/mailcow/web/.well-known/acme-challenge:/var/www/acme:z
|
||||
- ../data/mailcow/assets/ssl:/var/lib/acme/:z
|
||||
- ../data/mailcow/assets/ssl-example:/var/lib/ssl-example/:ro,Z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- acme
|
||||
|
||||
netfilter:
|
||||
image: mailcow/netfilter:1.46
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 30s
|
||||
depends_on:
|
||||
- dovecot
|
||||
- postfix
|
||||
- sogo
|
||||
- php-fpm
|
||||
- redis
|
||||
privileged: true
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# TZ: ${TZ}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
# SNAT_TO_SOURCE: ${SNAT_TO_SOURCE:-n}
|
||||
# SNAT6_TO_SOURCE: ${SNAT6_TO_SOURCE:-n}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
network_mode: "host"
|
||||
volumes:
|
||||
- /lib/modules:/lib/modules:ro
|
||||
|
||||
watchdog:
|
||||
image: mailcow/watchdog:1.96
|
||||
restart: unless-stopped
|
||||
<<: *dns
|
||||
tmpfs:
|
||||
- /tmp
|
||||
volumes:
|
||||
- rspamd-vol-1:/var/lib/rspamd:z
|
||||
- mysql-socket-vol-1:/var/run/mysqld/:z
|
||||
- postfix-vol-1:/var/spool/postfix:z
|
||||
- ../data/mailcow/assets/ssl:/etc/ssl/mail/:ro,z
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# IPV6_NETWORK: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
# LOG_LINES: ${LOG_LINES:-9999}
|
||||
# TZ: ${TZ}
|
||||
# DBNAME: ${DBNAME}
|
||||
# DBUSER: ${DBUSER}
|
||||
# DBPASS: ${DBPASS}
|
||||
# DBROOT: ${DBROOT}
|
||||
# USE_WATCHDOG: ${USE_WATCHDOG:-n}
|
||||
# WATCHDOG_NOTIFY_EMAIL: ${WATCHDOG_NOTIFY_EMAIL}
|
||||
# WATCHDOG_NOTIFY_BAN: ${WATCHDOG_NOTIFY_BAN:-y}
|
||||
# WATCHDOG_SUBJECT: ${WATCHDOG_SUBJECT:-Watchdog ALERT}
|
||||
# WATCHDOG_EXTERNAL_CHECKS: ${WATCHDOG_EXTERNAL_CHECKS:-n}
|
||||
# WATCHDOG_MYSQL_REPLICATION_CHECKS: ${WATCHDOG_MYSQL_REPLICATION_CHECKS:-n}
|
||||
# WATCHDOG_VERBOSE: ${WATCHDOG_VERBOSE:-n}
|
||||
# MAILCOW_HOSTNAME: ${MAILCOW_HOSTNAME}
|
||||
# COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
||||
# IPV4_NETWORK: ${IPV4_NETWORK:-172.22.1}
|
||||
# IP_BY_DOCKER_API: ${IP_BY_DOCKER_API:-0}
|
||||
# CHECK_UNBOUND: ${CHECK_UNBOUND:-1}
|
||||
# SKIP_CLAMD: ${SKIP_CLAMD:-n}
|
||||
# SKIP_LETS_ENCRYPT: ${SKIP_LETS_ENCRYPT:-n}
|
||||
# SKIP_SOGO: ${SKIP_SOGO:-n}
|
||||
# HTTPS_PORT: ${HTTPS_PORT:-443}
|
||||
# REDIS_SLAVEOF_IP: ${REDIS_SLAVEOF_IP:-}
|
||||
# REDIS_SLAVEOF_PORT: ${REDIS_SLAVEOF_PORT:-}
|
||||
# EXTERNAL_CHECKS_THRESHOLD: ${EXTERNAL_CHECKS_THRESHOLD:-1}
|
||||
# NGINX_THRESHOLD: ${NGINX_THRESHOLD:-5}
|
||||
# UNBOUND_THRESHOLD: ${UNBOUND_THRESHOLD:-5}
|
||||
# REDIS_THRESHOLD: ${REDIS_THRESHOLD:-5}
|
||||
# MYSQL_THRESHOLD: ${MYSQL_THRESHOLD:-5}
|
||||
# MYSQL_REPLICATION_THRESHOLD: ${MYSQL_REPLICATION_THRESHOLD:-1}
|
||||
# SOGO_THRESHOLD: ${SOGO_THRESHOLD:-3}
|
||||
# POSTFIX_THRESHOLD: ${POSTFIX_THRESHOLD:-8}
|
||||
# CLAMD_THRESHOLD: ${CLAMD_THRESHOLD:-15}
|
||||
# DOVECOT_THRESHOLD: ${DOVECOT_THRESHOLD:-12}
|
||||
# DOVECOT_REPL_THRESHOLD: ${DOVECOT_REPL_THRESHOLD:-20}
|
||||
# PHPFPM_THRESHOLD: ${PHPFPM_THRESHOLD:-5}
|
||||
# RATELIMIT_THRESHOLD: ${RATELIMIT_THRESHOLD:-1}
|
||||
# FAIL2BAN_THRESHOLD: ${FAIL2BAN_THRESHOLD:-1}
|
||||
# ACME_THRESHOLD: ${ACME_THRESHOLD:-1}
|
||||
# RSPAMD_THRESHOLD: ${RSPAMD_THRESHOLD:-5}
|
||||
# OLEFY_THRESHOLD: ${OLEFY_THRESHOLD:-5}
|
||||
# MAILQ_THRESHOLD: ${MAILQ_THRESHOLD:-20}
|
||||
# ILQ_CRIT: ${MAILQ_CRIT:-30}
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- watchdog
|
||||
|
||||
dockerapi:
|
||||
image: mailcow/dockerapi:1.41
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- label=disable
|
||||
# oom_kill_disable: true
|
||||
<<: *dns
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# - DBROOT=${DBROOT}
|
||||
# - TZ=${TZ}
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- dockerapi
|
||||
|
||||
solr:
|
||||
image: mailcow/solr:1.8.1
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- solr-vol-1:/opt/solr/server/solr/dovecot-fts/data:Z
|
||||
ports:
|
||||
- "${SOLR_PORT:-127.0.0.1:18983}:8983"
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# - TZ=${TZ}
|
||||
# - SOLR_HEAP=${SOLR_HEAP:-1024}
|
||||
# - SKIP_SOLR=${SKIP_SOLR:-y}
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- solr
|
||||
|
||||
olefy:
|
||||
image: mailcow/olefy:1.8.1
|
||||
restart: unless-stopped
|
||||
# environment:
|
||||
# TZ: ${TZ}
|
||||
# OLEFY_BINDADDRESS: 0.0.0.0
|
||||
# OLEFY_BINDPORT: 10055
|
||||
# OLEFY_TMPDIR: /tmp
|
||||
# OLEFY_PYTHON_PATH: /usr/bin/python3
|
||||
# OLEFY_OLEVBA_PATH: /usr/bin/olevba3
|
||||
# OLEFY_LOGLVL: 20
|
||||
# OLEFY_MINLENGTH: 500
|
||||
# OLEFY_DEL_TMP: 1
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- olefy
|
||||
|
||||
ofelia:
|
||||
image: mcuadros/ofelia:latest
|
||||
restart: unless-stopped
|
||||
command: daemon --docker
|
||||
env_file:
|
||||
- ../data/secrets/mailcow.env
|
||||
# environment:
|
||||
# - TZ=${TZ}
|
||||
depends_on:
|
||||
- sogo
|
||||
- dovecot
|
||||
labels:
|
||||
ofelia.enabled: "true"
|
||||
security_opt:
|
||||
- label=disable
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
networks:
|
||||
mailcow:
|
||||
aliases:
|
||||
- ofelia
|
||||
|
||||
# ipv6nat:
|
||||
# image: robbertkl/ipv6nat
|
||||
# restart: unless-stopped
|
||||
# depends_on:
|
||||
# - unbound
|
||||
# - mysql
|
||||
# - redis
|
||||
# - clamd
|
||||
# - rspamd
|
||||
# - php-fpm
|
||||
# - sogo
|
||||
# - dovecot
|
||||
# - postfix
|
||||
# - memcached
|
||||
# - nginx
|
||||
# - acme
|
||||
# - netfilter
|
||||
# - watchdog
|
||||
# - dockerapi
|
||||
# - solr
|
||||
# env_file:
|
||||
# - ../data/secrets/mailcow.env
|
||||
# # environment:
|
||||
# # - TZ=${TZ}
|
||||
# security_opt:
|
||||
# - label=disable
|
||||
# privileged: true
|
||||
# network_mode: "host"
|
||||
# volumes:
|
||||
# - /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
# - /lib/modules:/lib/modules:ro
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
mailcow:
|
||||
driver: overlay
|
||||
attachable: true
|
||||
ipam:
|
||||
config:
|
||||
# - subnet: 172.22.1.0/24
|
||||
- subnet: 10.22.1.1/24
|
||||
# - subnet: ${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
# enable_ipv6: true # not allowed in docker-commpose version 3
|
||||
# # driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: br-mailcow
|
||||
|
||||
volumes:
|
||||
vmail-vol-1:
|
||||
vmail-index-vol-1:
|
||||
mysql-vol-1:
|
||||
mysql-socket-vol-1:
|
||||
redis-vol-1:
|
||||
rspamd-vol-1:
|
||||
solr-vol-1:
|
||||
postfix-vol-1:
|
||||
crypt-vol-1:
|
||||
sogo-web-vol-1:
|
||||
sogo-userdata-backup-vol-1:
|
||||
@@ -1,43 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
matrix:
|
||||
image: matrixdotorg/synapse
|
||||
restart: unless-stopped
|
||||
# environment:
|
||||
# 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
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
labels:
|
||||
caddy: matrix.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8008}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.matrix.rule: Host(`matrix.marcpartensky.com`)
|
||||
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:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,23 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
backups:
|
||||
image: itzg/mc-backup
|
||||
environment:
|
||||
BACKUP_INTERVAL: "1d"
|
||||
# instead of network_mode below, could declare RCON_HOST
|
||||
SERVE_PORT: 25565
|
||||
RCON_HOST: minecraft
|
||||
RCON_PORT: 25575
|
||||
PAUSE_IF_NO_PLAYER: true
|
||||
PLAYERS_ONLINE_CHECK_INTERVAL: 1h
|
||||
TZ: Europe/Paris
|
||||
DEST_DIR: /backups
|
||||
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
|
||||
- ./mc-backups:/backups
|
||||
# share network namespace with server to simplify rcon access
|
||||
# network_mode: "service:mc"
|
||||
@@ -1,17 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
router:
|
||||
image: ${MC_ROUTER_IMAGE:-itzg/mc-router}
|
||||
environment:
|
||||
# enable API
|
||||
API_BINDING: ":25564"
|
||||
ports:
|
||||
- 25565:25565
|
||||
# bind the API port to only loopback to avoid external exposure
|
||||
- 127.0.0.1:25564:25564
|
||||
command: --mapping=champi.marcpartensky.com=champi:25565,jungle.marcpartensky.com=jungle:25565
|
||||
networks:
|
||||
- minecraft
|
||||
|
||||
networks:
|
||||
minecraft:
|
||||
@@ -1,41 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
mcmyadmin:
|
||||
image: tekgator/docker-mcmyadmin:latest
|
||||
restart: unless-stopped
|
||||
# environment:
|
||||
# PUID: 1001
|
||||
# PGID: 1001
|
||||
# EULA: 1
|
||||
volumes:
|
||||
- mcmyadmin:/data
|
||||
ports:
|
||||
- "25566:25565"
|
||||
networks:
|
||||
- minecraft
|
||||
- caddy
|
||||
labels:
|
||||
caddy: mcadmin.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
authorize.with: marc
|
||||
traefik.enable: "true"
|
||||
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
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
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:
|
||||
|
||||
networks:
|
||||
minecraft:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,36 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
mcvnc:
|
||||
image: dorowu/ubuntu-desktop-lxde-vnc
|
||||
volumes:
|
||||
- /dev/shm:/dev/shm
|
||||
- mcvnc:/home/marc
|
||||
- mcvnc_usr:/usr
|
||||
ports:
|
||||
- 7900:5900
|
||||
environment:
|
||||
USER: marc
|
||||
PASSWORD: test
|
||||
networks:
|
||||
- minecraft
|
||||
- caddy
|
||||
depends_on:
|
||||
- minecraft
|
||||
labels:
|
||||
caddy: minecraft.marcpartensky.com, mc.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.gitea.rule: Host(`mc.marcpartensky.com`)
|
||||
traefik.http.routers.gitea.entrypoints: websecure
|
||||
traefik.http.routers.gitea.tls.certresolver: tls
|
||||
traefik.http.services.gitea.loadbalancer.server.port: 80
|
||||
|
||||
volumes:
|
||||
mcvnc:
|
||||
mcvnc_usr:
|
||||
|
||||
networks:
|
||||
minecraft:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,13 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
minecraft_bedrock:
|
||||
image: itzg/minecraft-bedrock-server
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "19132:19132"
|
||||
- "39926:39926"
|
||||
environment:
|
||||
EULA: "true"
|
||||
VERSION: "1.18"
|
||||
OPS: "000901FA5EE9A31B"
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
minecraft_champi:
|
||||
image: itzg/minecraft-server
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
EULA: "TRUE"
|
||||
OPS: MazexRedstone
|
||||
ENABLE_COMMAND_BLOCK: "TRUE"
|
||||
MEMORY: 2G
|
||||
VERSION: 1.16.5
|
||||
ICON: https://cdn.discordapp.com/attachments/507519157387132940/998015338966945822/unknown.png
|
||||
MOTD: Made in Marc Partensky
|
||||
ANNOUNCE_PLAYER_ACHIEVEMENTS: "TRUE"
|
||||
LEVEL: Server
|
||||
ONLINE_MODE: "FALSE" # no need for an account
|
||||
DIFFICULTY: hard
|
||||
VIEW_DISTANCE: 32
|
||||
# MAX_PLAYERS: 50
|
||||
# WORLD: $BIND_MOUNTS/minecraft/zip/Server.zip
|
||||
# SNOOPER_ENABLED: false
|
||||
volumes:
|
||||
- /srv/minecraft/champi:/data
|
||||
# - minecraft:/data
|
||||
ports:
|
||||
- "25565:25565"
|
||||
networks:
|
||||
- minecraft
|
||||
|
||||
# volumes:
|
||||
# minecraft:
|
||||
|
||||
networks:
|
||||
minecraft:
|
||||
@@ -1,36 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
minecraft_jungle:
|
||||
image: itzg/minecraft-server
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
EULA: "TRUE"
|
||||
OPS: MazexRedstone
|
||||
ENABLE_COMMAND_BLOCK: "TRUE"
|
||||
MEMORY: 2G
|
||||
VERSION: 1.16.5
|
||||
ICON: https://media.discordapp.net/attachments/507519157387132940/984995267197677598/unknown.png
|
||||
MOTD: Made in Marc Partensky
|
||||
ANNOUNCE_PLAYER_ACHIEVEMENTS: "TRUE"
|
||||
LEVEL: Server
|
||||
ONLINE_MODE: "FALSE" # no need for an account
|
||||
DIFFICULTY: hard
|
||||
VIEW_DISTANCE: 32
|
||||
# MAX_PLAYERS: 50
|
||||
# WORLD: $BIND_MOUNTS/minecraft/zip/Server.zip
|
||||
# SNOOPER_ENABLED: false
|
||||
volumes:
|
||||
- /srv/minecraft/jungle:/data
|
||||
# - minecraft:/data
|
||||
ports:
|
||||
- "25564:25565"
|
||||
networks:
|
||||
- minecraft
|
||||
|
||||
# volumes:
|
||||
# minecraft:
|
||||
|
||||
networks:
|
||||
minecraft:
|
||||
@@ -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,24 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
miner:
|
||||
image: giansalex/monero-miner
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/monero_miner.env
|
||||
# entrypoint: /xmr/xmrig \
|
||||
# -o pool.supportxmr.com:3333 \
|
||||
# -u $WALLET \
|
||||
# -k \
|
||||
# --cpu-priority=2
|
||||
deploy:
|
||||
resources:
|
||||
# reservations:
|
||||
# cpus: "2"
|
||||
# # memory: "512M"
|
||||
# memory: "5G"
|
||||
limits:
|
||||
cpus: "4"
|
||||
# memory: "512M"
|
||||
memory: "5G"
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
monero_node:
|
||||
image: kannix/monero-full-node
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- monero_node_xmrchain:/home/monero/.bitmonero
|
||||
ports:
|
||||
- "18080:18080"
|
||||
- "18081:18081"
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1'
|
||||
memory: 2000M
|
||||
|
||||
volumes:
|
||||
monero_node_xmrchain:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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
|
||||
@@ -1,57 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
mongo:
|
||||
image: mongo
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- mongo:/data/db
|
||||
networks:
|
||||
- mongo
|
||||
ports:
|
||||
- "27017:27017"
|
||||
env_file:
|
||||
- ../data/secrets/mongo.env
|
||||
# healthcheck:
|
||||
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
|
||||
|
||||
express:
|
||||
image: mongo-express
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
|
||||
env_file:
|
||||
- ../data/secrets/mongo_express.env
|
||||
networks:
|
||||
- mongo
|
||||
- caddy
|
||||
depends_on:
|
||||
- mongo
|
||||
labels:
|
||||
caddy: mongo.marcpartensky.com, mongo.marc.wf, mongo.marc.tf
|
||||
caddy.reverse_proxy: "{{upstreams 8081}}"
|
||||
traefik.enable: "true"
|
||||
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.entrypoints: websecure
|
||||
traefik.http.routers.mongo.tls.certresolver: tls
|
||||
traefik.http.services.mongo.loadbalancer.server.port: 8081
|
||||
traefik.http.routers.mongo.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
mongo:
|
||||
|
||||
networks:
|
||||
mongo:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
attachable: true
|
||||
driver: overlay
|
||||
@@ -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
|
||||
@@ -1,52 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
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
|
||||
env_file:
|
||||
- ../data/secrets/nextcloud.env
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- ldap
|
||||
- nextcloud
|
||||
# depends_on:
|
||||
# - nextcloud_mariadb
|
||||
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
|
||||
deploy:
|
||||
labels:
|
||||
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
|
||||
|
||||
volumes:
|
||||
data:
|
||||
config:
|
||||
themes:
|
||||
apps:
|
||||
|
||||
networks:
|
||||
nextcloud:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
@@ -1,20 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
nextcloud_mariadb:
|
||||
image: mariadb
|
||||
restart: unless-stopped
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
volumes:
|
||||
- nextcloud_mariadb:/var/lib/mysql
|
||||
env_file:
|
||||
- ../data/secrets/nextcloud.env
|
||||
networks:
|
||||
- caddy
|
||||
- nextcloud
|
||||
|
||||
volumes:
|
||||
nextcloud_mariadb:
|
||||
|
||||
networks:
|
||||
nextcloud:
|
||||
@@ -1,5 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
nixos:
|
||||
image: nixos/nix
|
||||
restart: unless-stopped
|
||||
@@ -1,71 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
|
||||
phpmyadmin:
|
||||
image: phpmyadmin/phpmyadmin:latest
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/numeris.env
|
||||
links:
|
||||
- numeris:db
|
||||
networks:
|
||||
- caddy
|
||||
- numeris
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.phpmyadmin.rule: Host(`phpmyadmin.numeris.marcpartensky.com`)
|
||||
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.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.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:
|
||||
@@ -1,27 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
open_web_calendar:
|
||||
image: marcpartensky/open-web-calendar
|
||||
restart: unless-stopped
|
||||
working_dir: /app
|
||||
environment:
|
||||
HOST: open_web_calendar
|
||||
PORT: 80
|
||||
networks:
|
||||
- caddy
|
||||
entrypoint: python app.py
|
||||
depends_on:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: calendar.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.open_web_calendar.rule: Host(`calendar.marcpartensky.com`)
|
||||
traefik.http.routers.open_web_calendar.entrypoints: websecure
|
||||
traefik.http.routers.open_web_calendar.tls.certresolver: tls
|
||||
traefik.http.services.open_web_calendar.loadbalancer.server.port: 80
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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:
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user