Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d743f3f08 | ||
|
|
cdf38224d1 | ||
|
|
ce26163993 | ||
|
|
6c253f3d53 | ||
|
|
859e081eb8 | ||
|
|
d1b8342ca8 |
@@ -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
-37
@@ -1,41 +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/certs
|
||||
data/wireguard
|
||||
data/vaultwarden
|
||||
data/filebrowser
|
||||
data/focalboard
|
||||
data/openvpn_*
|
||||
data/mailcow
|
||||
data/dockvpn
|
||||
data/hydra
|
||||
data/yt-dlp
|
||||
data/mongo
|
||||
data/gpg
|
||||
data/redis
|
||||
data/fdroid
|
||||
data/grafana
|
||||
data/qbittorrent
|
||||
data/webdav
|
||||
data/pufferpanel
|
||||
data/dockge
|
||||
data/ocis
|
||||
data/owncloud
|
||||
data/wg-easy
|
||||
data/nextcloud
|
||||
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,31 +1,6 @@
|
||||
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
|
||||
pull:
|
||||
for file in services/*; do docker-compose -f $$file pull; done
|
||||
export:
|
||||
7z a -p data.7z data
|
||||
import:
|
||||
7z x -p data.7z
|
||||
sign:
|
||||
gpg --encrypt --sign --recipient 'marc@marcpartensky.com' data.7z
|
||||
# rm data.tgz
|
||||
networks:
|
||||
docker network create --attachable caddy || true
|
||||
docker network create --attachable ldap || true
|
||||
docker network create --attachable postgres || true
|
||||
docker network create --attachable mongo || true
|
||||
docker network create --attachable vpn || true
|
||||
docker network create --attachable redis || true
|
||||
docker network create --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
|
||||
docker network create --subnet 10.22.69.0/24 --gateway 10.22.69.1 --attachable pritunl || true
|
||||
node:
|
||||
docker node update --label-add net=web contabo
|
||||
docker node update --label-add net=none tower
|
||||
tar cvzf data.tgz data
|
||||
gpg --encrypt --recipient 'marc.partensky@gmail.com' data.tgz
|
||||
rm data.tgz
|
||||
clean:
|
||||
rm data.tgz.gpg
|
||||
|
||||
@@ -1,57 +1,25 @@
|
||||
<!-- [](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml) -->
|
||||
|
||||
# Docker
|
||||
<!-- [](https://swarm.marcpartensky.com) -->
|
||||
[](https://heimdall.marcpartensky.com)
|
||||
|
||||
Visit my [cloud](https://heimdall.marcpartensky.com)!
|
||||
|
||||
Over 150 docker compose files are in the `services` folder.
|
||||
|
||||
## Domains
|
||||
- https://adguard.marcpartensky.com
|
||||
- https://arch.marcpartensky.com
|
||||
- https://authentik.marcpartensky.com
|
||||
- https://cron.marcpartensky.com
|
||||
- https://dbdesigner.marcpartensky.com
|
||||
- https://dockge.marcpartensky.com
|
||||
- https://docuseal.marcpartensky.com
|
||||
- https://pad.marcpartensky.com
|
||||
- https://firefox.marcpartensky.com
|
||||
- https://file.marcpartensky.com
|
||||
- https://board.marcpartensky.com
|
||||
- https://git.marcpartensky.com
|
||||
- https://gitlab.marcpartensky.com
|
||||
- https://grafana.marcpartensky.com
|
||||
- https://heimdall.marcpartensky.com
|
||||
- https://homer.marcpartensky.com
|
||||
- https://jellyfin.marcpartensky.com
|
||||
- https://jenkins.marcpartensky.com
|
||||
- https://jupyterlab.marcpartensky.com
|
||||
- https://mail.marcpartensky.com
|
||||
- https://mcmyadmin.marcpartensky.com
|
||||
- https://storage.marcpartensky.com
|
||||
- https://pandoc.marcpartensky.com
|
||||
- https://paperless.marcpartensky.com
|
||||
- https://peertube.marcpartensky.com
|
||||
- https://pgadmin.marcpartensky.com
|
||||
- https://pgweb.marcpartensky.com
|
||||
- https://docker.marcpartensky.com
|
||||
- https://printer.marcpartensky.com
|
||||
- https://torrent.marcpartensky.com
|
||||
- https://rancher.marcpartensky.com
|
||||
- https://cv.marcpartensky.com
|
||||
- https://serge.marcpartensky.com
|
||||
- https://syncthing.marcpartensky.com
|
||||
- https://traefik.marcpartensky.com
|
||||
- https://vault.marcpartensky.com
|
||||
- https://terminal.marcpartensky.com
|
||||
- https://webshot.marcpartensky.com
|
||||
- https://marcpartensky.com
|
||||
- https://wger.marcpartensky.com
|
||||
- https://wss.marcpartensky.com
|
||||
- https://yt.marcpartensky.com
|
||||
<!-- - https://dns.marcpartensky.com -->
|
||||
- https://pandoc.marcpartensky.com
|
||||
- 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://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://dns.marcpartensky.com
|
||||
<!-- - https://dev.marcpartensky.com -->
|
||||
<!-- - https://box.marcpartensky.com -->
|
||||
<!-- - https://glou.marcpartensky.com -->
|
||||
<!-- - https://minecraft.marcpartensky.com -->
|
||||
|
||||
@@ -61,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,50 +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}
|
||||
|
||||
# tool=podman-compose
|
||||
tool=docker-compose
|
||||
|
||||
|
||||
if [ "$1" = "-f" ]
|
||||
then
|
||||
$tool --file $@
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -f $PWD/docker-compose.yml ]
|
||||
then
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
$tool ps
|
||||
exit
|
||||
fi
|
||||
$tool --file $PWD/docker-compose.yml $@
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
docker-compose ps
|
||||
exit
|
||||
fi
|
||||
|
||||
$tool $@
|
||||
if [ "$1" = "up" ]
|
||||
then
|
||||
if [ "$2" = "-d" ]
|
||||
then
|
||||
$tool logs -f ${@: 3}
|
||||
else
|
||||
$tool logs -f ${@: 2}
|
||||
fi
|
||||
elif [ "$1" = "start" ]
|
||||
then
|
||||
$tool logs -f ${@: 2}
|
||||
elif [ "$1" = "restart" ]
|
||||
then
|
||||
$tool 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,38 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# tool=podman-compose
|
||||
tool="docker compose"
|
||||
|
||||
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="$tool $(config_files) up -d --force-recreate"
|
||||
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,196 +0,0 @@
|
||||
http:
|
||||
pprof:
|
||||
port: 6060
|
||||
enabled: false
|
||||
address: 0.0.0.0:3000
|
||||
session_ttl: 720h
|
||||
users:
|
||||
- name: marc
|
||||
password: $2a$10$E9cknJr/bTLtSUJ9EaW8r.Gw30FX8Plm8jgq.LaYxMwiX4DEuDK7O
|
||||
auth_attempts: 5
|
||||
block_auth_min: 15
|
||||
http_proxy: ""
|
||||
language: ""
|
||||
theme: auto
|
||||
dns:
|
||||
bind_hosts:
|
||||
- 0.0.0.0
|
||||
port: 53
|
||||
anonymize_client_ip: false
|
||||
ratelimit: 20
|
||||
ratelimit_subnet_len_ipv4: 24
|
||||
ratelimit_subnet_len_ipv6: 56
|
||||
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
|
||||
fallback_dns: []
|
||||
upstream_mode: load_balance
|
||||
fastest_timeout: 1s
|
||||
allowed_clients: []
|
||||
disallowed_clients: []
|
||||
blocked_hosts:
|
||||
- version.bind
|
||||
- id.server
|
||||
- hostname.bind
|
||||
trusted_proxies:
|
||||
- 127.0.0.0/8
|
||||
- ::1/128
|
||||
cache_size: 4194304
|
||||
cache_ttl_min: 0
|
||||
cache_ttl_max: 0
|
||||
cache_optimistic: false
|
||||
bogus_nxdomain: []
|
||||
aaaa_disabled: false
|
||||
enable_dnssec: false
|
||||
edns_client_subnet:
|
||||
custom_ip: ""
|
||||
enabled: false
|
||||
use_custom: false
|
||||
max_goroutines: 300
|
||||
handle_ddr: true
|
||||
ipset: []
|
||||
ipset_file: ""
|
||||
bootstrap_prefer_ipv6: false
|
||||
upstream_timeout: 10s
|
||||
private_networks: []
|
||||
use_private_ptr_resolvers: true
|
||||
local_ptr_upstreams: []
|
||||
use_dns64: false
|
||||
dns64_prefixes: []
|
||||
serve_http3: false
|
||||
use_http3_upstreams: false
|
||||
serve_plain_dns: true
|
||||
hostsfile_enabled: true
|
||||
tls:
|
||||
enabled: false
|
||||
server_name: ""
|
||||
force_https: false
|
||||
port_https: 443
|
||||
port_dns_over_tls: 853
|
||||
port_dns_over_quic: 853
|
||||
port_dnscrypt: 0
|
||||
dnscrypt_config_file: ""
|
||||
allow_unencrypted_doh: false
|
||||
certificate_chain: ""
|
||||
private_key: ""
|
||||
certificate_path: ""
|
||||
private_key_path: ""
|
||||
strict_sni_check: false
|
||||
querylog:
|
||||
dir_path: ""
|
||||
ignored: []
|
||||
interval: 2160h
|
||||
size_memory: 1000
|
||||
enabled: true
|
||||
file_enabled: true
|
||||
statistics:
|
||||
dir_path: ""
|
||||
ignored: []
|
||||
interval: 24h
|
||||
enabled: true
|
||||
filters:
|
||||
- enabled: true
|
||||
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
|
||||
name: AdGuard DNS filter
|
||||
id: 1
|
||||
- enabled: true
|
||||
url: https://adaway.org/hosts.txt
|
||||
name: AdAway Default Blocklist
|
||||
id: 2
|
||||
- enabled: true
|
||||
url: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
|
||||
name: WindowsSpyBlocker - Hosts spy rules
|
||||
id: 1668812860
|
||||
- enabled: true
|
||||
url: https://malware-filter.gitlab.io/malware-filter/phishing-filter-agh.txt
|
||||
name: Phishing URL Blocklist (PhishTank and OpenPhish)
|
||||
id: 1668812861
|
||||
- enabled: true
|
||||
url: https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt
|
||||
name: Perflyst and Dandelion Sprout's Smart-TV Blocklist
|
||||
id: 1668812862
|
||||
- enabled: true
|
||||
url: https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hosts
|
||||
name: The Big List of Hacked Malware Web Sites
|
||||
id: 1668812863
|
||||
whitelist_filters: []
|
||||
user_rules: []
|
||||
dhcp:
|
||||
enabled: false
|
||||
interface_name: ""
|
||||
local_domain_name: lan
|
||||
dhcpv4:
|
||||
gateway_ip: ""
|
||||
subnet_mask: ""
|
||||
range_start: ""
|
||||
range_end: ""
|
||||
lease_duration: 86400
|
||||
icmp_timeout_msec: 1000
|
||||
options: []
|
||||
dhcpv6:
|
||||
range_start: ""
|
||||
lease_duration: 86400
|
||||
ra_slaac_only: false
|
||||
ra_allow_slaac: false
|
||||
filtering:
|
||||
blocking_ipv4: ""
|
||||
blocking_ipv6: ""
|
||||
blocked_services:
|
||||
schedule:
|
||||
time_zone: UTC
|
||||
ids: []
|
||||
protection_disabled_until: null
|
||||
safe_search:
|
||||
enabled: false
|
||||
bing: true
|
||||
duckduckgo: true
|
||||
google: true
|
||||
pixabay: true
|
||||
yandex: true
|
||||
youtube: true
|
||||
blocking_mode: default
|
||||
parental_block_host: family-block.dns.adguard.com
|
||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
||||
rewrites:
|
||||
- domain: medium.com
|
||||
answer: 0.0.0.0
|
||||
- domain: marc
|
||||
answer: marcpartensky.com
|
||||
safebrowsing_cache_size: 1048576
|
||||
safesearch_cache_size: 1048576
|
||||
parental_cache_size: 1048576
|
||||
cache_time: 30
|
||||
filters_update_interval: 24
|
||||
blocked_response_ttl: 10
|
||||
filtering_enabled: true
|
||||
parental_enabled: false
|
||||
safebrowsing_enabled: false
|
||||
protection_enabled: true
|
||||
clients:
|
||||
runtime_sources:
|
||||
whois: true
|
||||
arp: true
|
||||
rdns: true
|
||||
dhcp: true
|
||||
hosts: true
|
||||
persistent: []
|
||||
log:
|
||||
file: ""
|
||||
max_backups: 0
|
||||
max_size: 100
|
||||
max_age: 3
|
||||
compress: false
|
||||
local_time: false
|
||||
verbose: false
|
||||
os:
|
||||
group: ""
|
||||
user: ""
|
||||
rlimit_nofile: 0
|
||||
schema_version: 28
|
||||
@@ -1,156 +0,0 @@
|
||||
# Minimal nginx configuration for AppFlowy-Cloud
|
||||
# Self Hosted AppFlowy Cloud user should alter this file to suit their needs
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
# docker dns resolver
|
||||
resolver 127.0.0.11 valid=10s;
|
||||
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 8080;
|
||||
|
||||
# https://github.com/nginxinc/nginx-prometheus-exporter
|
||||
location = /stub_status {
|
||||
stub_status;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
server {
|
||||
# ssl_certificate /etc/nginx/ssl/certificate.crt;
|
||||
#ssl_certificate_key /etc/nginx/ssl/private_key.key;
|
||||
|
||||
listen 80;
|
||||
listen 443 ssl;
|
||||
client_max_body_size 10M;
|
||||
|
||||
underscores_in_headers on;
|
||||
|
||||
# GoTrue
|
||||
location /gotrue/ {
|
||||
set $gotrue gotrue;
|
||||
proxy_pass http://$gotrue:9999;
|
||||
|
||||
rewrite ^/gotrue(/.*)$ $1 break;
|
||||
|
||||
# Allow headers like redirect_to to be handed over to the gotrue
|
||||
# for correct redirecting
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_pass_request_headers on;
|
||||
}
|
||||
|
||||
# WebSocket
|
||||
location /ws {
|
||||
set $appflowy_cloud appflowy_cloud;
|
||||
proxy_pass http://$appflowy_cloud:8000;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_read_timeout 86400;
|
||||
}
|
||||
|
||||
# AppFlowy-Cloud
|
||||
# created a separate location block for handling CORS preflight (OPTIONS) requests specifically for the /api endpoint.
|
||||
location = /api/options {
|
||||
if ($http_origin ~* (http://127.0.0.1:8000)) {
|
||||
add_header 'Access-Control-Allow-Origin' $http_origin;
|
||||
}
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH';
|
||||
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, Accept, Client-Version';
|
||||
add_header 'Access-Control-Max-Age' 3600;
|
||||
add_header 'Content-Type' 'text/plain; charset=utf-8';
|
||||
add_header 'Content-Length' 0;
|
||||
return 204;
|
||||
}
|
||||
|
||||
location /api {
|
||||
set $appflowy_cloud appflowy_cloud;
|
||||
proxy_pass http://$appflowy_cloud:8000;
|
||||
|
||||
proxy_set_header X-Request-Id $request_id;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# Set CORS headers for other requests
|
||||
if ($http_origin ~* (http://127.0.0.1:8000)) {
|
||||
add_header 'Access-Control-Allow-Origin' $http_origin always;
|
||||
}
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH' always;
|
||||
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, Accept, Client-Version' always;
|
||||
add_header 'Access-Control-Max-Age' 3600 always;
|
||||
}
|
||||
|
||||
# Minio Web UI
|
||||
# Derive from: https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
|
||||
# Optional Module, comment this section if you are did not deploy minio in docker-compose.yml
|
||||
location /minio/ {
|
||||
set $minio minio;
|
||||
proxy_pass http://$minio:9001;
|
||||
|
||||
rewrite ^/minio/(.*) /$1 break;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
|
||||
## This is necessary to pass the correct IP to be hashed
|
||||
real_ip_header X-Real-IP;
|
||||
|
||||
proxy_connect_timeout 300;
|
||||
|
||||
## To support websockets in MinIO versions released after January 2023
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
|
||||
# Uncomment the following line to set the Origin request to an empty string
|
||||
# proxy_set_header Origin '';
|
||||
|
||||
chunked_transfer_encoding off;
|
||||
}
|
||||
|
||||
# PgAdmin
|
||||
# Optional Module, comment this section if you are did not deploy pgadmin in docker-compose.yml
|
||||
location /pgadmin/ {
|
||||
set $pgadmin pgadmin;
|
||||
proxy_pass http://$pgadmin:80;
|
||||
|
||||
proxy_set_header X-Script-Name /pgadmin;
|
||||
proxy_set_header X-Scheme $scheme;
|
||||
proxy_set_header Host $host;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
# Portainer
|
||||
# Optional Module, comment this section if you are did not deploy portainer in docker-compose.yml
|
||||
location /portainer/ {
|
||||
set $portainer portainer;
|
||||
proxy_pass http://$portainer:9000;
|
||||
|
||||
rewrite ^/portainer/(.*) /$1 break;
|
||||
}
|
||||
|
||||
# Admin Frontend
|
||||
# Optional Module, comment this section if you are did not deploy admin_frontend in docker-compose.yml
|
||||
location / {
|
||||
set $admin_frontend admin_frontend;
|
||||
proxy_pass http://$admin_frontend:3000;
|
||||
|
||||
proxy_set_header X-Scheme $scheme;
|
||||
proxy_set_header Host $host;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
||||
[ req ]
|
||||
default_bits = 8192
|
||||
default_keyfile = privkey.pem
|
||||
distinguished_name = req_distinguished_name
|
||||
attributes = req_attributes
|
||||
x509_extensions = v3_ca
|
||||
|
||||
dirstring_type = nobmp
|
||||
|
||||
[ req_distinguished_name ]
|
||||
countryName = FR
|
||||
countryName_default = FR
|
||||
countryName_min = 2
|
||||
countryName_max = 2
|
||||
|
||||
localityName = Europe/Paris
|
||||
|
||||
organizationalUnitName = Marc Partensky Corp
|
||||
|
||||
commonName = Marc Partensky
|
||||
commonName_max = 64
|
||||
|
||||
emailAddress = marc@marcpartensky.com
|
||||
emailAddress_max = 40
|
||||
|
||||
# [ req_attributes ]
|
||||
# challengePassword = A challenge password
|
||||
# challengePassword_min = 4
|
||||
# challengePassword_max = 20
|
||||
|
||||
[ v3_ca ]
|
||||
|
||||
subjectKeyIdentifier=hash
|
||||
authorityKeyIdentifier=keyid:always,issuer:always
|
||||
basicConstraints = CA:true
|
||||
@@ -1,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/
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||
CREATE USER marc PASSWORD ZGQ4ZDk5OWEwYjNlMDJlNmQ5NmE1NjM5;
|
||||
GRANT ALL PRIVILEGES ON DATABASE * TO marc;
|
||||
EOSQL
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd /var/lib/postgresql/certs
|
||||
|
||||
# private key and certificate from it
|
||||
openssl req -new -text -newkey rsa:8192 -passout pass:$POSTGRES_PASSWORD -subj /CN=localhost -out server.req -keyout privkey.pem
|
||||
# self signed root certificate
|
||||
openssl rsa -in privkey.pem -passin pass:$POSTGRES_PASSWORD -out server.key
|
||||
# derived certificate
|
||||
openssl req -x509 -in server.req -text -key server.key -out server.crt
|
||||
|
||||
# change permissions to the root certificate for postgres
|
||||
chmod 600 server.key
|
||||
chown postgres:postgres server.key
|
||||
@@ -11,13 +11,9 @@ global:
|
||||
scrape_configs:
|
||||
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
|
||||
- job_name: 'prometheus'
|
||||
|
||||
# Override the global default and scrape targets from this job every 5 seconds.
|
||||
scrape_interval: 5s
|
||||
static_configs:
|
||||
- targets: ['node-exporter:9100']
|
||||
|
||||
- job_name: cadvisor
|
||||
scrape_interval: 5s
|
||||
static_configs:
|
||||
- targets:
|
||||
- cadvisor:8080
|
||||
- targets: ['localhost:9090']
|
||||
|
||||
@@ -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,628 +0,0 @@
|
||||
http:
|
||||
# middlewares:
|
||||
# basic:
|
||||
# basicAuth:
|
||||
# users:
|
||||
# - test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
|
||||
# # usersFile: etc/traefik/.htpasswd
|
||||
services:
|
||||
pgadmin:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://pgadmin:80
|
||||
jellyfin:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://jellyfin:8096
|
||||
portainer:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://portainer:9000
|
||||
dbdesigner:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://dbdesigner:3000
|
||||
etherpad:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://etherpad:9001
|
||||
mongo:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://mongo:8081
|
||||
resume:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://resume:3000
|
||||
printer:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://resume:3000
|
||||
mailu:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://mailu:80
|
||||
yt-dlp-webui:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://yt-dlp-webui:80
|
||||
wger-nginx:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://wger:80
|
||||
web-terminal:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://web-terminal:7681
|
||||
homer:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://homer:8080
|
||||
pandoc:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://pandoc:80
|
||||
jupyterlab:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://jupyterlab:8888
|
||||
gitlab:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://gitlab:80
|
||||
serge:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://serge:8008
|
||||
arch:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://arch:8080
|
||||
gitea:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://gitea:3000
|
||||
# heimdall:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: http://heimdall:80
|
||||
pgweb:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://pgweb:8081
|
||||
paperless:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://paperless:8000
|
||||
jenkins:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://jenkins:8080
|
||||
rancher:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://rancher:80
|
||||
docuseal:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://docuseal:3000
|
||||
grafana:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://grafana:3000
|
||||
peertube:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://peertube:9000
|
||||
mcmyadmin:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://mcmyadmin:8080
|
||||
qbittorrent:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://qbittorrent:8080
|
||||
dockge:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://dockge:5001
|
||||
webshot:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://webshot:3000
|
||||
|
||||
|
||||
routers:
|
||||
pgadmin:
|
||||
rule: "Host(`pgadmin.marcpartensky.com`)"
|
||||
service: pgadmin
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-pgadmin@file"]
|
||||
jellyfin:
|
||||
rule: "Host(`jellyfin.marcpartensky.com`)"
|
||||
service: jellyfin
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-jellyfin@file"]
|
||||
portainer:
|
||||
rule: "Host(`docker.marcpartensky.com`)"
|
||||
service: portainer
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-portainer@file"]
|
||||
dbdesigner:
|
||||
rule: "Host(`dbdesigner.marcpartensky.com`)"
|
||||
service: dbdesigner
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-dbdesigner@file"]
|
||||
etherpad:
|
||||
rule: "Host(`pad.marcpartensky.com`)"
|
||||
service: etherpad
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-etherpad@file"]
|
||||
mongo:
|
||||
rule: "Host(`mongo.marcpartensky.com`)"
|
||||
service: mongo-express
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-mongo@file"]
|
||||
resume:
|
||||
rule: "Host(`cv.marcpartensky.com`)"
|
||||
service: resume
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-resume@file"]
|
||||
printer:
|
||||
rule: "Host(`printer.marcpartensky.com`)"
|
||||
service: resume
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-resume@file"]
|
||||
mailu:
|
||||
rule: "Host(`mail.marcpartensky.com`)"
|
||||
service: mailu
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-mailu@file"]
|
||||
yt-dlp-webui:
|
||||
rule: "Host(`yt.marcpartensky.com`)"
|
||||
service: yt-dlp-webui
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-yt-dlp-webui@file"]
|
||||
wger:
|
||||
rule: "Host(`wger.marcpartensky.com`)"
|
||||
service: wger-nginx
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-wger@file"]
|
||||
web-terminal:
|
||||
rule: "Host(`terminal.marcpartensky.com`)"
|
||||
service: web-terminal
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-web-terminal@file", "ldap_auth@docker"]
|
||||
homer:
|
||||
rule: "Host(`homer.marcpartensky.com`)"
|
||||
service: homer
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-homer@file"]
|
||||
pandoc:
|
||||
rule: "Host(`pandoc.marcpartensky.com`)"
|
||||
service: pandoc
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-pandoc@file"]
|
||||
jupyterlab:
|
||||
rule: "Host(`jupyterlab.marcpartensky.com`)"
|
||||
service: jupyterlab
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-jupyterlab@file"]
|
||||
gitlab:
|
||||
rule: "Host(`gitlab.marcpartensky.com`)"
|
||||
service: gitlab
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-gitlab@file"]
|
||||
serge:
|
||||
rule: "Host(`serge.marcpartensky.com`)"
|
||||
service: serge
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-serge@file"]
|
||||
arch:
|
||||
rule: "Host(`arch.marcpartensky.com`)"
|
||||
service: arch
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-arch@file"]
|
||||
gitea:
|
||||
rule: "Host(`git.marcpartensky.com`)"
|
||||
service: gitea
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-gitea@file"]
|
||||
# heimdall:
|
||||
# rule: "Host(`heimdall.marcpartensky.com`)"
|
||||
# service: heimdall
|
||||
# entryPoints: ["web"]
|
||||
# middlewares: ["sablier-heimdall@file"]
|
||||
pgweb:
|
||||
rule: "Host(`pgweb.marcpartensky.com`)"
|
||||
service: pgweb
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-pgweb@file", "ldap_auth@docker"]
|
||||
paperless:
|
||||
rule: "Host(`paperless.marcpartensky.com`)"
|
||||
service: paperless
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-paperless@file"]
|
||||
jenkins:
|
||||
rule: "Host(`jenkins.marcpartensky.com`)"
|
||||
service: jenkins
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-jenkins@file"]
|
||||
rancher:
|
||||
rule: "Host(`rancher.marcpartensky.com`)"
|
||||
service: rancher
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-rancher@file"]
|
||||
docuseal:
|
||||
rule: "Host(`docuseal.marcpartensky.com`)"
|
||||
service: docuseal
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-docuseal@file"]
|
||||
grafana:
|
||||
rule: "Host(`grafana.marcpartensky.com`)"
|
||||
service: grafana
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-grafana@file"]
|
||||
peertube:
|
||||
rule: "Host(`peertube.marcpartensky.com`)"
|
||||
service: peertube
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-peertube@file"]
|
||||
mcmyadmin:
|
||||
rule: "Host(`mcmyadmin.marcpartensky.com`)"
|
||||
service: mcmyadmin
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-mcmyadmin@file"]
|
||||
qbittorrent:
|
||||
rule: "Host(`torrent.marcpartensky.com`)"
|
||||
service: qbittorrent
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-qbittorrent@file", "ldap_auth@docker"]
|
||||
dockge:
|
||||
rule: "Host(`dockge.marcpartensky.com`)"
|
||||
service: dockge
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-dockge@file", "ldap_auth@docker"]
|
||||
webshot:
|
||||
rule: "Host(`webshot.marcpartensky.com`)"
|
||||
service: webshot
|
||||
entryPoints: ["web"]
|
||||
middlewares: ["sablier-webshot@file", "ldap_auth@docker"]
|
||||
|
||||
|
||||
middlewares:
|
||||
cloudflarewarp:
|
||||
plugin:
|
||||
cloudflarewarp:
|
||||
disableDefault: false
|
||||
trustip: # Trust IPS not required if disableDefault is false - we will allocate Cloud Flare IPs automatically
|
||||
- "2400:cb00::/32"
|
||||
sablier-pgadmin:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
sessionDuration: 5m
|
||||
names: pgadmin
|
||||
dynamic:
|
||||
displayName: pgAdmin
|
||||
refreshFrequency: 5s
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
sablier-jellyfin:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: jellyfin
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
# showDetails: true
|
||||
displayName: Jellyfin
|
||||
refreshFrequency: 5s
|
||||
theme: shuffle
|
||||
sablier-portainer:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: portainer,portainer-agent
|
||||
sessionDuration: 1m
|
||||
dynamic:
|
||||
displayName: Portainer
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
sablier-dbdesigner:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: dbdesigner
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: dbDesigner
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 1s
|
||||
sablier-etherpad:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: etherpad
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Etherpad
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-mongo:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: mongo-express
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Mongo Express
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-resume:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: resume,printer
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Reactive Resume
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-mailu:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: mailu,mailu-resolver,mailu-admin,mailu-imap,mailu-smtp,mailu-oletools,mailu-antispam,mailu-webdav,mailu-fetchmail
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Mailu
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-yt-dlp-webui:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: yt-dlp-webui
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: yt-dlp WebUI
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-wger:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: wger,wger-nginx,wger-celery,wger-celery-beat
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: yt-dlp WebUI
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-web-terminal:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: web-terminal
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Web Terminal
|
||||
showDetails: true
|
||||
theme: matrix
|
||||
refreshFrequency: 1s
|
||||
sablier-homer:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: homer
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Homer
|
||||
showDetails: true
|
||||
theme: shuffle
|
||||
refreshFrequency: 1s
|
||||
sablier-pandoc:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: pandoc
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Pandoc
|
||||
showDetails: true
|
||||
# theme: hacker-terminal
|
||||
refreshFrequency: 1s
|
||||
sablier-jupyterlab:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: jupyterlab
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Jupyter Lab
|
||||
showDetails: true
|
||||
theme: matrix
|
||||
refreshFrequency: 1s
|
||||
sablier-gitlab:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: gitlab,gitlab-runner
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Gitlab
|
||||
showDetails: true
|
||||
theme: matrix
|
||||
refreshFrequency: 5s
|
||||
sablier-serge:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: serge
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Serge
|
||||
showDetails: true
|
||||
theme: matrix
|
||||
refreshFrequency: 5s
|
||||
sablier-arch:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: arch
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Arch Linux VNC
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-gitea:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: gitea
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: Gitea
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
# sablier-heimdall:
|
||||
# plugin:
|
||||
# sablier:
|
||||
# sablierUrl: http://sablier:10000
|
||||
# names: heimdall
|
||||
# sessionDuration: 5m
|
||||
# dynamic:
|
||||
# displayName: Heimdall
|
||||
# showDetails: true
|
||||
# theme: ghost
|
||||
# refreshFrequency: 5s
|
||||
sablier-pgweb:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: pgweb
|
||||
sessionDuration: 5m
|
||||
dynamic:
|
||||
displayName: PG Web
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-paperless:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: paperless
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Paperless
|
||||
showDetails: true
|
||||
theme: hacker-matrix
|
||||
refreshFrequency: 5s
|
||||
sablier-jenkins:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: jenkins
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Jenkins
|
||||
showDetails: true
|
||||
theme: matrix
|
||||
refreshFrequency: 5s
|
||||
sablier-rancher:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: rancher
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Rancher
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-docuseal:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: docuseal
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Docuseal
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-grafana:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: grafana
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Grafana
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-peertube:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: peertube
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Peertube
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-mcmyadmin:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: mcmyadmin
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: McMyAdmin
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-qbittorrent:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: qbittorrent
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Qbittorrent
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-dockge:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: dockge
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Dockge
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
sablier-webshot:
|
||||
plugin:
|
||||
sablier:
|
||||
sablierUrl: http://sablier:10000
|
||||
names: webshot
|
||||
sessionDuration: 2m
|
||||
dynamic:
|
||||
displayName: Webshot
|
||||
showDetails: true
|
||||
theme: ghost
|
||||
refreshFrequency: 5s
|
||||
@@ -1,105 +0,0 @@
|
||||
# https://doc.traefik.io/traefik/routing/overview/
|
||||
global:
|
||||
checkNewVersion: true
|
||||
sendAnonymousUsage: false
|
||||
api:
|
||||
# insecure: false # = secure
|
||||
insecure: true
|
||||
dashboard: true
|
||||
# debug: true
|
||||
debug: false
|
||||
providers:
|
||||
docker:
|
||||
# swarmMode: false
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false # traefik enabled containers only
|
||||
network: caddy
|
||||
file:
|
||||
filename: /etc/traefik/dynamic.yml
|
||||
watch: true
|
||||
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
|
||||
version: v0.1.10
|
||||
souin:
|
||||
moduleName: github.com/darkweak/souin
|
||||
version: v1.6.22
|
||||
sablier:
|
||||
moduleName: github.com/acouvreur/sablier
|
||||
version: v1.0.0
|
||||
cloudflarewarp:
|
||||
modulename: github.com/BetterCorp/cloudflarewarp
|
||||
version: v1.3.0
|
||||
|
||||
# ldap entreprise https://doc.traefik.io/traefik-enterprise/operations/static-configuration/
|
||||
# authSources:
|
||||
# ldapSource:
|
||||
# ldap:
|
||||
# url: ldaps://marcpartensky.com:636
|
||||
# # url: ldap://ldap:389
|
||||
# startTLS: true
|
||||
# insecureSkipVerify: true
|
||||
# bindDn: ""
|
||||
# # bindDN: cn=marc,dc=marcpartensky,dc=com
|
||||
|
||||
# - --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 ##
|
||||
@@ -1,27 +0,0 @@
|
||||
upstream wger {
|
||||
server wger:8000;
|
||||
}
|
||||
|
||||
server {
|
||||
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
proxy_pass http://wger;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
alias /wger/static/;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
alias /wger/media/;
|
||||
}
|
||||
|
||||
# Increase max body size to allow for video uploads
|
||||
client_max_body_size 100M;
|
||||
}
|
||||
@@ -1,13 +1,203 @@
|
||||
version: "3"
|
||||
services:
|
||||
|
||||
|
||||
traefik:
|
||||
image: traefik
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
command:
|
||||
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
|
||||
# - --providers.docker.exposedbydefault=false # <== Don't expose every container to traefik, only expose enabled ones
|
||||
- --providers.file.filename=/dynamic.yaml # <== Referring to a dynamic configuration file
|
||||
# - --providers.docker.network=web # <== Operate on the docker network named web
|
||||
- --providers.docker=true # <== Enabling docker as the provider for traefik
|
||||
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
|
||||
- --api.insecure=false # <== Enabling insecure api, NOT RECOMMENDED FOR PRODUCTION
|
||||
- --api.dashboard=true
|
||||
- --api.debug=true # <== Enabling additional endpoints for debugging and profiling
|
||||
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
|
||||
- --entrypoints.web.address=:80
|
||||
- --entrypoints.websecure.address=:443
|
||||
- --certificatesresolvers.tls.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
|
||||
- --certificatesresolvers.tls.acme.email=marc.partensky@gmail.com
|
||||
- --certificatesresolvers.tls.acme.storage=/letsencrypt/acme.json # Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) - https://docs.traefik.io/observability/logs/ ##
|
||||
- --log.level=DEBUG # <== Setting the level of the logs from traefik
|
||||
- --entrypoints.web.http.redirections.entryPoint.to=websecure
|
||||
- --entrypoints.web.http.redirections.entryPoint.scheme=https
|
||||
- --entrypoints.web.http.redirections.entrypoint.permanent=true
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
volumes:
|
||||
- ./data/traefik/letsencrypt:/letsencrypt
|
||||
# - ./data/traefik/dynamic.yaml:/dynamic.yaml
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.marcpartensky.com`)"
|
||||
- "traefik.http.routers.traefik.service=api@internal" # <== Enabling the api to be a service to access
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=tls"
|
||||
- "traefik.docker.network=nginx"
|
||||
# - "traefik.http.routers.redirs.entrypoints=web"
|
||||
# - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
||||
# - "traefik.http.routers.redirs.middlewares=redirect-to-https"
|
||||
# - "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
|
||||
|
||||
whoami:
|
||||
image: traefik/whoami
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- VIRTUAL_HOST=whoami.local
|
||||
labels:
|
||||
- "caddy=whoami.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams http 80}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.whoami.rule=Host(`whoami.marcpartensky.com`)"
|
||||
- "traefik.http.routers.whoami.entrypoints=websecure"
|
||||
- "traefik.http.routers.whoami.tls.certresolver=tls"
|
||||
networks:
|
||||
- nginx
|
||||
- caddy
|
||||
|
||||
nginx:
|
||||
image: nginx
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "2222:2222"
|
||||
volumes:
|
||||
- ./data/nginx:/etc/nginx/conf.d
|
||||
- /etc/letsencrypt:/etc/letsencrypt
|
||||
- /var/log/nginx:/var/log/nginx
|
||||
# - ./data/certbot/conf:/etc/letsencrypt
|
||||
# - ./data/certbot/www:/var/www/certbot
|
||||
# - type: bind
|
||||
# source: /home/my-user/elk-stack/.htpasswd
|
||||
# target: /etc/nginx/.htpasswd
|
||||
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
|
||||
networks:
|
||||
- nginx
|
||||
- box
|
||||
|
||||
nginx_proxy:
|
||||
image: jwilder/nginx-proxy
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- ENABLE_IPV6=true
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||
# - ./data/nginx:/etc/nginx/conf.d
|
||||
# - /etc/letsencrypt:/etc/letsencrypt
|
||||
# - /var/log/nginx:/var/log/nginx
|
||||
# - ./data/certbot/conf:/etc/letsencrypt
|
||||
# - ./data/certbot/www:/var/www/certbot
|
||||
# - type: bind
|
||||
# source: /home/my-user/elk-stack/.htpasswd
|
||||
# target: /etc/nginx/.htpasswd
|
||||
# command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
|
||||
networks:
|
||||
- nginx
|
||||
- box
|
||||
|
||||
caddy:
|
||||
image: lucaslorentz/caddy-docker-proxy:ci-alpine
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
environment:
|
||||
CADDY_INGRESS_NETWORKS: caddy
|
||||
# CADDY_DOCKER_CADDYFILE_PATH: /etc/Caddyfile
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- $BIND_MOUNTS/caddy:/data/caddy
|
||||
# - ./data/caddy/Caddyfile:/etc/Caddyfile
|
||||
networks:
|
||||
- nginx
|
||||
- box
|
||||
- caddy
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer-ce
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- VIRTUAL_HOST=docker.marcpartensky.com
|
||||
- VIRTUAL_PORT=9000
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- $BIND_MOUNTS/portainer:/data
|
||||
networks:
|
||||
- nginx
|
||||
- caddy
|
||||
command:
|
||||
- --logo
|
||||
- https://marcpartensky.com/static/home/assets/img/white-orchid.svg
|
||||
labels:
|
||||
- "caddy=docker.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams 9000}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.portainer.rule=Host(`docker.marcpartensky.com`)"
|
||||
- "traefik.http.routers.portainer.entrypoints=websecure"
|
||||
- "traefik.http.routers.portainer.tls.certresolver=tls"
|
||||
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
|
||||
|
||||
registry:
|
||||
restart: unless-stopped
|
||||
image: registry:latest
|
||||
# ports:
|
||||
# - 5000:5000
|
||||
environment:
|
||||
REGISTRY_HTTP_ADDR: 0.0.0.0:80
|
||||
REGISTRY_HTTP_SECRET: akdfjkalsdjfkljadklsfjkajsdfklj
|
||||
# REGISTRY_HTTP_ADDR: 0.0.0.0:443
|
||||
# REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
|
||||
# REGISTRY_HTTP_TLS_KEY: /certs/domain.key
|
||||
# REGISTRY_AUTH: htpasswd
|
||||
# REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
|
||||
# REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
|
||||
volumes:
|
||||
- $BIND_MOUNTS/registry/data:/var/lib/registry
|
||||
- $BIND_MOUNTS/registry/certs:/certs
|
||||
- $BIND_MOUNTS/registry/auth:/auth
|
||||
labels:
|
||||
- "caddy=registry.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams 80}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.registry.rule=Host(`registry.marcpartensky.com`)"
|
||||
- "traefik.http.routers.registry.entrypoints=websecure"
|
||||
- "traefik.http.routers.registry.tls.certresolver=tls"
|
||||
- "traefik.http.services.registry.loadbalancer.server.port=80"
|
||||
|
||||
# registry:
|
||||
# image: registry:latest
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - $BIND_MOUNTS/registry:/var/lib/registry
|
||||
# - "$(pwd)"/certs:/certs
|
||||
# ports:
|
||||
# - "5000:7000"
|
||||
# environment:
|
||||
# - REGISTRY_HTTP_ADDR=0.0.0.0:443 \
|
||||
# - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
|
||||
# - REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
|
||||
# -p 443:443
|
||||
|
||||
website_dev:
|
||||
image: marcpartensky/website
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ./data/secrets/website.env
|
||||
environment:
|
||||
- VIRTUAL_HOST=dev.marcpartensky.com
|
||||
- VIRTUAL_HOST=marcpartensky.com
|
||||
- VIRTUAL_PORT=80
|
||||
- DEBUG=true
|
||||
working_dir: /app
|
||||
@@ -21,7 +211,7 @@ services:
|
||||
- postgres
|
||||
volumes:
|
||||
- $BIND_MOUNTS/website/media:/app/media
|
||||
- $HOME/git/website:/app
|
||||
- ~/git/website:/app
|
||||
networks:
|
||||
- website
|
||||
- nginx
|
||||
@@ -44,6 +234,53 @@ services:
|
||||
- "traefik.http.routers.website_dev.tls.certresolver=tls"
|
||||
- "traefik.http.services.website_dev.loadbalancer.server.port=80"
|
||||
|
||||
website:
|
||||
image: marcpartensky/website
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ./data/secrets/website.env
|
||||
environment:
|
||||
- VIRTUAL_HOST=marcpartensky.com
|
||||
- VIRTUAL_PORT=80
|
||||
- DEBUG=true
|
||||
# - SECURE_SSL_REDIRECT=false
|
||||
# - KEY=/app/privkey.pem
|
||||
# - CERT=/app/fullchain.pem
|
||||
working_dir: /app
|
||||
tty: true
|
||||
entrypoint: >
|
||||
sh -c "./manage.py migrate;
|
||||
./manage.py createsuperuser --noinput;
|
||||
daphne django_project.asgi:application --port 80 --bind 0.0.0.0 -v2"
|
||||
# entrypoint: "daphne -e ssl:443:privateKey=$$KEY:certKey=$$CERT django_project.asgi:application"
|
||||
# entrypoint: daphne -b website -e ssl:443:privateKey=/app/privkey.pem:certKey=/app/fullchain.pem django_project.asgi:application
|
||||
links:
|
||||
- redis
|
||||
- postgres
|
||||
volumes:
|
||||
- $BIND_MOUNTS/website/media:/app/media
|
||||
networks:
|
||||
- website
|
||||
- nginx
|
||||
- caddy
|
||||
depends_on:
|
||||
- redis
|
||||
- postgres
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost/robots.txt"]
|
||||
interval: 1m30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
# start_period: 40s
|
||||
labels:
|
||||
- "caddy=marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams 80}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.website.rule=Host(`marcpartensky.com`)"
|
||||
- "traefik.http.routers.website.entrypoints=websecure"
|
||||
- "traefik.http.routers.website.tls.certresolver=tls"
|
||||
- "traefik.http.services.website.loadbalancer.server.port=80"
|
||||
|
||||
postgres:
|
||||
image: postgres
|
||||
restart: unless-stopped
|
||||
@@ -60,37 +297,74 @@ services:
|
||||
networks:
|
||||
- website
|
||||
|
||||
discordbotix:
|
||||
# certbot:
|
||||
# image: certbot/certbot
|
||||
# volumes:
|
||||
# - ./data/certbot/conf:/etc/letsencrypt
|
||||
# - ./data/certbot/www:/var/www/certbot
|
||||
# entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
|
||||
|
||||
# certbot_nginx:
|
||||
# restart: unless-stopped
|
||||
# image: staticfloat/nginx-certbot
|
||||
# ports:
|
||||
# - "80:80/tcp"
|
||||
# - "443:443/tcp"
|
||||
# environment:
|
||||
# CERTBOT_EMAIL: marc.partensky@gmail.com
|
||||
# # variable names are space-separated
|
||||
# ENVSUBST_VARS: FQDN
|
||||
# FQDN: marcpartensky.com
|
||||
# volumes:
|
||||
# - ./conf.d:/etc/nginx/user.conf.d:ro
|
||||
# - letsencrypt:/etc/letsencrypt
|
||||
|
||||
esclave:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: $HOME/git/discord-bot
|
||||
dockerfile: $HOME/git/discord-bot/Dockerfile
|
||||
args:
|
||||
env_file: $HOME/git/discordbotix/.env
|
||||
context: ~/git/discord-bot
|
||||
dockerfile: ~/git/discord-bot/Dockerfile
|
||||
networks:
|
||||
- discord
|
||||
links:
|
||||
- docker_api
|
||||
env_file:
|
||||
- ./data/secrets/esclave.env
|
||||
|
||||
esclave_dev:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ~/git/discord-bot:/app
|
||||
networks:
|
||||
- discord
|
||||
links:
|
||||
- docker_api
|
||||
env_file:
|
||||
- ~/git/discord-bot/.env
|
||||
|
||||
ia:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
build: ~/git/discord-bot
|
||||
networks:
|
||||
- discord
|
||||
env_file:
|
||||
- ./data/secrets/discordbotix.env
|
||||
- ./data/secrets/ia.env
|
||||
|
||||
discord_bot_mongo:
|
||||
image: mongo
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/discord_bot_mongo:/data/db
|
||||
networks:
|
||||
- discord
|
||||
ports:
|
||||
- "27017:27017"
|
||||
links:
|
||||
- docker_api
|
||||
env_file:
|
||||
- ./data/secrets/discord_bot_mongo.env
|
||||
|
||||
docker_api:
|
||||
image: marcpartensky/docker-api
|
||||
restart: unless-stopped
|
||||
build: $HOME/git/docker-api
|
||||
build: ~/git/docker-api
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
@@ -110,10 +384,9 @@ services:
|
||||
servant:
|
||||
image: marcpartensky/servitor
|
||||
restart: unless-stopped
|
||||
build: $HOME/git/servitor
|
||||
|
||||
pandoc:
|
||||
build: $HOME/git/pandoc-api
|
||||
build: ../git/pandoc-api
|
||||
image: marcpartensky/pandoc-api
|
||||
restart: unless-stopped
|
||||
working_dir: /app
|
||||
@@ -135,7 +408,30 @@ services:
|
||||
- nginx
|
||||
- caddy
|
||||
|
||||
# https://$HOME.com/itzg/docker-minecraft-server/blob/master/README.md
|
||||
# https://...com/itzg/docker-minecraft-server/blob/master/README.md
|
||||
# minecraft_aventure:
|
||||
# image: itzg/minecraft-server
|
||||
# restart: always
|
||||
# environment:
|
||||
# - TZ=Europe/Paris
|
||||
# - OPS=MazexRedstone
|
||||
# - EULA=TRUE
|
||||
# - ENABLE_AUTOPAUSE=TRUE
|
||||
# - ENABLE_COMMAND_BLOCK=TRUE
|
||||
# - MEMORY=2G
|
||||
# - VERSION=1.13.2
|
||||
# - ICON=https://cdn.discordapp.com/attachments/507519157387132940/816443237384454144/maxime.png
|
||||
# - MOTD=Venez jouer sur le serveur de Marc Partensky. Venez! On est bien!
|
||||
# - WORLD=https://download2342.mediafire.com/89adsak3r96g/xavlx2bmrypq2s0/Across+The+Time+II+-+Time+For+Regrets+%28release+1.0.4%29.zip
|
||||
# # - MODS=https://www.example.com/mods/mod1.jar,https://www.example.com/mods/mod2.jar
|
||||
# tty: true
|
||||
# stdin_open: true
|
||||
# volumes:
|
||||
# - .srv/minecraft/data:/data
|
||||
# ports:
|
||||
# - "25565:25565"
|
||||
=======
|
||||
# https://~.com/itzg/docker-minecraft-server/blob/master/README.md
|
||||
minecraft_aventure:
|
||||
image: itzg/minecraft-server
|
||||
restart: unless-stopped
|
||||
@@ -227,7 +523,6 @@ services:
|
||||
volumes:
|
||||
- $BIND_MOUNTS/mcmyadmin/mcmyadmin:/data
|
||||
ports:
|
||||
- "8008:8080"
|
||||
- "25568:25565"
|
||||
networks:
|
||||
- minecraft
|
||||
@@ -242,7 +537,7 @@ services:
|
||||
- "traefik.http.services.minecraft.loadbalancer.server.port=8080"
|
||||
|
||||
# pterodactyl:
|
||||
# build: $HOME/fork/panel
|
||||
# build: ../fork/panel
|
||||
# restart: unless-stopped
|
||||
# networks:
|
||||
# - nginx
|
||||
@@ -255,35 +550,16 @@ services:
|
||||
- mcvnc_usr:/usr
|
||||
ports:
|
||||
- 8065:80
|
||||
- 5901:5900
|
||||
- 5900:5900
|
||||
environment:
|
||||
USER: marc
|
||||
PASSWORD: test
|
||||
networks:
|
||||
- minecraft
|
||||
# links:
|
||||
# - minecraft
|
||||
# - minecraft_1.17
|
||||
# - minecraft_aventure
|
||||
|
||||
novnc:
|
||||
image: dorowu/ubuntu-desktop-lxde-vnc
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /dev/shm:/dev/shm
|
||||
- novnc:/home/marc
|
||||
- novnc_usr:/usr
|
||||
- novnc_var:/var
|
||||
ports:
|
||||
- 8066:80
|
||||
- 5910:5900
|
||||
# user: "${UID}:${GID}"
|
||||
environment:
|
||||
USER: marc
|
||||
PASSWORD: test
|
||||
privileged: true
|
||||
cap_add:
|
||||
- CAP_SYS_ADMIN
|
||||
links:
|
||||
- minecraft
|
||||
- minecraft_1.17
|
||||
- minecraft_aventure
|
||||
|
||||
notebook:
|
||||
image: jupyter/base-notebook
|
||||
@@ -316,11 +592,6 @@ services:
|
||||
|
||||
# env:
|
||||
# image: marcpartensky/env
|
||||
# build:
|
||||
# context: $HOME/git/dotfiles
|
||||
# dockerfile: $HOME/git/dotfiles/Dockerfile
|
||||
# args:
|
||||
# env_file: $HOME/git/dotfiles/.env
|
||||
# ports:
|
||||
# - "22:7020"
|
||||
# - "8022:7021"
|
||||
@@ -365,13 +636,10 @@ services:
|
||||
image: marcpartensky/ialab
|
||||
user: nobody
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: $HOME/git/ialab
|
||||
dockerfile: $HOME/git/ialab/Dockerfile
|
||||
environment:
|
||||
FLASK_APP: server.py
|
||||
# env_file:
|
||||
# - $HOME/git/ialab/.flaskenv
|
||||
# - ../git/ialab/.flaskenv
|
||||
# working_dir: /app
|
||||
entrypoint: flask run --host ialab --port 80
|
||||
# entrypoint: "gunicorn server:app"
|
||||
@@ -391,11 +659,9 @@ services:
|
||||
- "traefik.http.services.ialab.loadbalancer.server.port=80"
|
||||
|
||||
open_web_calendar:
|
||||
working_dir: /app
|
||||
image: marcpartensky/open_web_calendar
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: $HOME/fork/open-web-calendar
|
||||
dockerfile: $HOME/fork/open-web-calendar/Dockerfile
|
||||
working_dir: /app
|
||||
environment:
|
||||
- HOST=open_web_calendar
|
||||
- PORT=80
|
||||
@@ -456,13 +722,13 @@ services:
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
- wordpress
|
||||
- business
|
||||
env_file:
|
||||
- data/secrets/business.env
|
||||
volumes:
|
||||
- $BIND_MOUNTS/business:/var/www/html
|
||||
depends_on:
|
||||
- wordpress_mysql
|
||||
- business_mysql
|
||||
labels:
|
||||
- "caddy=business.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams}}"
|
||||
@@ -472,16 +738,16 @@ services:
|
||||
- "traefik.http.routers.business.tls.certresolver=tls"
|
||||
- "traefik.http.services.business.loadbalancer.server.port=80"
|
||||
|
||||
# business_mysql:
|
||||
# image: mysql
|
||||
# restart: unless-stopped
|
||||
# env_file:
|
||||
# - data/secrets/business.env
|
||||
# networks:
|
||||
# - caddy
|
||||
# - wordpress
|
||||
# volumes:
|
||||
# - $BIND_MOUNTS/business_mysql:/var/lib/mysql
|
||||
business_mysql:
|
||||
image: mysql
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- data/secrets/business.env
|
||||
networks:
|
||||
- caddy
|
||||
- business
|
||||
volumes:
|
||||
- $BIND_MOUNTS/business_mysql:/var/lib/mysql
|
||||
|
||||
oxivia:
|
||||
image: wordpress
|
||||
@@ -552,60 +818,6 @@ services:
|
||||
volumes:
|
||||
- $BIND_MOUNTS/wordpress_mysql_arnaud:/var/lib/mysql
|
||||
|
||||
wordpress_anaelle:
|
||||
image: wordpress
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
- wordpress_anaelle
|
||||
env_file:
|
||||
- data/secrets/wordpress_anaelle.env
|
||||
volumes:
|
||||
- $BIND_MOUNTS/wordpress_anaelle:/var/www/html
|
||||
depends_on:
|
||||
- wordpress_mysql_anaelle
|
||||
labels:
|
||||
- "caddy=anaelle.wp.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.wordpress_anaelle.rule=Host(`anaelle.wp.marcpartensky.com`)"
|
||||
- "traefik.http.routers.wordpress_anaelle.entrypoints=websecure"
|
||||
- "traefik.http.routers.wordpress_anaelle.tls.certresolver=tls"
|
||||
- "traefik.http.services.wordpress_anaelle.loadbalancer.server.port=80"
|
||||
|
||||
wordpress_mysql_anaelle:
|
||||
image: mysql
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- data/secrets/wordpress_anaelle.env
|
||||
networks:
|
||||
- caddy
|
||||
- wordpress_anaelle
|
||||
ports:
|
||||
- "7036:3306"
|
||||
volumes:
|
||||
- $BIND_MOUNTS/wordpress_mysql_anaelle:/var/lib/mysql
|
||||
|
||||
wordpress_anaelle_phpmyadmin:
|
||||
image: phpmyadmin
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- wordpress_anaelle
|
||||
- caddy
|
||||
depends_on:
|
||||
- wordpress_mysql_anaelle
|
||||
env_file:
|
||||
- data/secrets/wordpress_anaelle.env
|
||||
labels:
|
||||
- "caddy=phpmyadmin.anaelle.wp.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.wordpress_anaelle.rule=Host(`phpmyadmin.anaelle.wp.marcpartensky.com`)"
|
||||
- "traefik.http.routers.wordpress_anaelle.entrypoints=websecure"
|
||||
- "traefik.http.routers.wordpress_anaelle.tls.certresolver=tls"
|
||||
- "traefik.http.services.wordpress_anaelle.loadbalancer.server.port=80"
|
||||
|
||||
wordpress_alex:
|
||||
image: wordpress
|
||||
restart: unless-stopped
|
||||
@@ -636,30 +848,9 @@ services:
|
||||
networks:
|
||||
- caddy
|
||||
- wordpress_alex
|
||||
ports:
|
||||
- "7306:3306"
|
||||
volumes:
|
||||
- $BIND_MOUNTS/wordpress_mysql_alex:/var/lib/mysql
|
||||
|
||||
wordpress_alex_phpmyadmin:
|
||||
image: phpmyadmin
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- wordpress_alex
|
||||
- caddy
|
||||
depends_on:
|
||||
- wordpress_mysql_alex
|
||||
env_file:
|
||||
- data/secrets/wordpress_alex.env
|
||||
labels:
|
||||
- "caddy=phpmyadmin.alex.wp.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.wordpress_alex.rule=Host(`phpmyadmin.alex.wp.marcpartensky.com`)"
|
||||
- "traefik.http.routers.wordpress_alex.entrypoints=websecure"
|
||||
- "traefik.http.routers.wordpress_alex.tls.certresolver=tls"
|
||||
- "traefik.http.services.wordpress_alex.loadbalancer.server.port=80"
|
||||
|
||||
wordpress_marc:
|
||||
image: wordpress
|
||||
restart: unless-stopped
|
||||
@@ -722,11 +913,7 @@ services:
|
||||
image: nextcloud
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# - nextcloud:/var/www/html
|
||||
- /mnt/dav/users/marcpartensky/bind_mounts/nextcloud:/var/www/html/data
|
||||
# - nextcloud_theme:/var/www/html/themes/<YOUR_CUSTOM_THEME>
|
||||
# - nextcloud_apps:/var/www/html/custom_apps
|
||||
# - nextcloud_config:/var/www/html/config
|
||||
- nextcloud:/var/www/html
|
||||
env_file:
|
||||
- ./data/secrets/nextcloud.env
|
||||
networks:
|
||||
@@ -748,11 +935,8 @@ services:
|
||||
image: mariadb
|
||||
restart: unless-stopped
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
ports:
|
||||
- "7200:3306"
|
||||
volumes:
|
||||
# - nextcloud_mariadb:/var/lib/mysql
|
||||
- /mnt/dav/users/marcpartensky/bind_mounts/nextcloud_mariadb:/var/www/html
|
||||
- nextcloud_mariadb:/var/lib/mysql
|
||||
env_file:
|
||||
- ./data/secrets/nextcloud.env
|
||||
networks:
|
||||
@@ -783,8 +967,8 @@ services:
|
||||
image: marcpartensky/je-todoapp-react
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: $HOME/git/todoapp/react
|
||||
dockerfile: $HOME/git/todoapp/react/Dockerfile
|
||||
context: ~/git/todoapp/react
|
||||
dockerfile: ~/git/todoapp/react/Dockerfile
|
||||
environment:
|
||||
- PORT=80
|
||||
- SPRING_API_URL=https://api.todolist.marcpartensky.com
|
||||
@@ -807,8 +991,8 @@ services:
|
||||
image: marcpartensky/je-todoapp-spring-api
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: $HOME/git/todoapp/spring-api
|
||||
dockerfile: $HOME/git/todoapp/spring-api/Dockerfile
|
||||
context: ~/git/todoapp/spring-api
|
||||
dockerfile: ~/git/todoapp/spring-api/Dockerfile
|
||||
env_file:
|
||||
- ./data/secrets/todolist.env
|
||||
environment:
|
||||
@@ -843,6 +1027,7 @@ services:
|
||||
openvpn:
|
||||
image: kylemanna/openvpn
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
ports:
|
||||
@@ -866,7 +1051,7 @@ services:
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- $HOME/.docker/config.json:/config.json
|
||||
- ../.docker/config.json:/config.json
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
@@ -917,7 +1102,7 @@ services:
|
||||
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
||||
|
||||
gitea:
|
||||
image: gitea/gitea:1.14.6
|
||||
image: gitea/gitea:1.14.1
|
||||
restart: unless-stopped
|
||||
# user: git
|
||||
environment:
|
||||
@@ -937,7 +1122,6 @@ services:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "7012:22"
|
||||
- "3000:3000"
|
||||
depends_on:
|
||||
- gitea_postgres
|
||||
labels:
|
||||
@@ -974,7 +1158,7 @@ services:
|
||||
image: poiret
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: $HOME/git/poiret
|
||||
context: ../git/poiret
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
@@ -993,14 +1177,12 @@ services:
|
||||
stdin_open: true
|
||||
tty: true
|
||||
volumes:
|
||||
- $BIND_MOUNTS/windows:$HOME
|
||||
- $BIND_MOUNTS/windows:~
|
||||
|
||||
healingpath:
|
||||
image: marcpartensky/brainperformer
|
||||
restart: unless-stopped
|
||||
# user: healingpath
|
||||
build:
|
||||
context: $HOME/git/brainperformer
|
||||
env_file: ./data/secrets/healingpath.env
|
||||
networks:
|
||||
- caddy
|
||||
@@ -1023,7 +1205,7 @@ services:
|
||||
# user: healingpath
|
||||
env_file: ./data/secrets/healingpath.env
|
||||
ports:
|
||||
- "7201:3306"
|
||||
- "8006:3306"
|
||||
volumes:
|
||||
- $BIND_MOUNTS/healingpath/db:/var/lib/mysql
|
||||
networks:
|
||||
@@ -1072,14 +1254,11 @@ services:
|
||||
ports:
|
||||
- "7027:22"
|
||||
volumes:
|
||||
- $HOME/.ssh:/root/.ssh
|
||||
- ../.ssh:~/.ssh:ro
|
||||
environment:
|
||||
SSH_KEYS_PATH: /root/.ssh/id_rsa
|
||||
SSH_KEYS_PATH: ../.ssh
|
||||
SSH_HOSTNAME: marcpartensky.com
|
||||
HAS_WEBSOCKET: 1
|
||||
USE_PROXY_PROTOCOL: 1
|
||||
SSH_PORT_LISTEN: 22
|
||||
SSH_PORT_ADVERTISE: 7023
|
||||
|
||||
vnc:
|
||||
image: consol/centos-xfce-vnc
|
||||
@@ -1090,7 +1269,7 @@ services:
|
||||
env_file:
|
||||
- "./data/secrets/vnc.env"
|
||||
volumes:
|
||||
- $HOME:/root
|
||||
- ~:/root
|
||||
# - /usr/bin:/usr/bin
|
||||
# - /usr/local/bin:/usr/local/bin
|
||||
networks:
|
||||
@@ -1124,7 +1303,7 @@ services:
|
||||
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
networks:
|
||||
# networks:
|
||||
- caddy
|
||||
labels:
|
||||
- "caddy=dns.marcpartensky.com"
|
||||
@@ -1150,8 +1329,8 @@ services:
|
||||
restart: unless-stopped
|
||||
image: marcpartensky/schtroumpfix
|
||||
build:
|
||||
context: $HOME/git/schtroumpfix
|
||||
# dockerfile: $HOME/git/schtroumpfix/Dockerfile
|
||||
context: ~/git/schtroumpfix
|
||||
# dockerfile: ~/git/schtroumpfix/Dockerfile
|
||||
env_file:
|
||||
- data/secrets/schtroumpfix.env
|
||||
environment:
|
||||
@@ -1267,31 +1446,14 @@ services:
|
||||
- NET_ADMIN
|
||||
- SYS_PTRACE
|
||||
|
||||
facebook:
|
||||
image: sebp/lighttpd
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- $HOME/git/facebook:/var/www/localhost/htdocs
|
||||
tty: true
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
labels:
|
||||
- "caddy=facebook.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams http 80}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.facebook.rule=Host(`facebook.marcpartensky.com`)"
|
||||
- "traefik.http.routers.facebook.entrypoints=websecure"
|
||||
- "traefik.http.routers.facebook.tls.certresolver=tls"
|
||||
- "traefik.http.services.facebook.loadbalancer.server.port=80"
|
||||
|
||||
thaiwara:
|
||||
image: sebp/lighttpd
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- $HOME/git/thaiwara:/var/www/localhost/htdocs
|
||||
- $HOME/git/thaiwara/etc/lighttpd:/etc/lighttpd
|
||||
- ~/git/thaiwara:/var/www/localhost/htdocs
|
||||
- ~/git/thaiwara/etc/lighttpd:/etc/lighttpd
|
||||
tty: true
|
||||
>>>>>>> main
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
@@ -1307,7 +1469,7 @@ services:
|
||||
ssh_honeypot:
|
||||
image: local/ssh-honeypot
|
||||
restart: unless-stopped
|
||||
build: $HOME/fork/ssh-honeypot/docker
|
||||
build: ~/fork/ssh-honeypot/docker
|
||||
ports:
|
||||
- "22:2022"
|
||||
volumes:
|
||||
@@ -1318,7 +1480,7 @@ services:
|
||||
image: sebp/lighttpd
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- $HOME/git/valentin:/var/www/localhost/htdocs
|
||||
- ~/git/valentin:/var/www/localhost/htdocs
|
||||
tty: true
|
||||
networks:
|
||||
- caddy
|
||||
@@ -1332,164 +1494,23 @@ services:
|
||||
- "traefik.http.routers.valentin.tls.certresolver=tls"
|
||||
- "traefik.http.services.valentin.loadbalancer.server.port=80"
|
||||
|
||||
pritunl:
|
||||
# image: jippi/pritunl
|
||||
image: goofball222/pritunl
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "1194:1194/udp"
|
||||
- "1194:1194/tcp"
|
||||
# - "1080:80/tcp"
|
||||
# - "1443:443/tcp"
|
||||
depends_on:
|
||||
- mongo
|
||||
# depends_on:
|
||||
# - mongo
|
||||
environment:
|
||||
REVERSE_PROXY: "true"
|
||||
TZ: Europe/Paris
|
||||
# volumes:
|
||||
# - /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- caddy
|
||||
- nginx
|
||||
- pritunl
|
||||
labels:
|
||||
- "caddy=vpn.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams http 9700}}"
|
||||
# - "caddy.reverse_proxy={{upstreams http 80}}"
|
||||
# - "caddy.reverse_proxy={{upstreams https 443}}"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.pritunl.rule=Host(`vpn.marcpartensky.com`)"
|
||||
- "traefik.http.routers.pritunl.entrypoints=websecure"
|
||||
- "traefik.http.routers.pritunl.tls.certresolver=tls"
|
||||
- "traefik.http.services.pritunl.loadbalancer.server.port=9700"
|
||||
# - "traefik.http.services.pritunl.loadbalancer.server.port=80"
|
||||
# - "traefik.http.services.pritunl.loadbalancer.server.port=443"
|
||||
|
||||
mongo:
|
||||
image: mongo:latest
|
||||
# container_name: pritunldb
|
||||
hostname: pritunldb
|
||||
volumes:
|
||||
- $BIND_MOUNTS/pritunl_mongo:/data/db
|
||||
networks:
|
||||
- pritunl
|
||||
|
||||
|
||||
gitlab:
|
||||
image: gitlab/gitlab-ee:latest
|
||||
restart: unless-stopped
|
||||
hostname: gitlab.marcpartensky.com
|
||||
# environment:
|
||||
# GITLAB_OMNIBUS_CONFIG: |
|
||||
# external_url 'http://gitlab.marcpartensky.com:8929'
|
||||
# gitlab_rails['gitlab_shell_ssh_port'] = 2224
|
||||
# ports:
|
||||
# - '8929:8929'
|
||||
# - '2224:22'
|
||||
volumes:
|
||||
- $BIND_MOUNTS/gitlab/config:/etc/gitlab
|
||||
- $BIND_MOUNTS/gitlab/logs:/var/log/gitlab
|
||||
- $BIND_MOUNTS/gitlab/data:/var/opt/gitlab
|
||||
|
||||
minikube:
|
||||
image: whindes/alpine-minikube
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "30000:30000"
|
||||
- "31920:31920"
|
||||
privileged: true
|
||||
tty: true
|
||||
|
||||
rancher:
|
||||
image: rancher/server
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
- "7080:8080"
|
||||
labels:
|
||||
- "caddy=rancher.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams 8080}}"
|
||||
privileged: true
|
||||
|
||||
duplicati:
|
||||
image: ghcr.io/linuxserver/duplicati
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/London
|
||||
- CLI_ARGS= #optional
|
||||
volumes:
|
||||
- $BIND_MOUNTS/duplicati/config:/config
|
||||
- $BIND_MOUNTS/duplicati/backups:/backups
|
||||
- $BIND_MOUNTS/duplicati/source:/source
|
||||
ports:
|
||||
- 8200:8200
|
||||
|
||||
|
||||
|
||||
novnc-arch:
|
||||
image: ponsfrilus/arch-novnc:latest
|
||||
ports:
|
||||
- "8083:8083"
|
||||
environment:
|
||||
DISPLAY: ":0.0"
|
||||
|
||||
|
||||
novnc-arch-i3:
|
||||
image: fennerm/arch-i3-novnc
|
||||
# entrypoint: supervisord
|
||||
ports:
|
||||
- "8084:8083"
|
||||
- "5904:5900"
|
||||
environment:
|
||||
DISPLAY: ":0.0"
|
||||
|
||||
|
||||
novnc-debian:
|
||||
image: theasp/novnc
|
||||
ports:
|
||||
- "8082:8080"
|
||||
environment:
|
||||
DISPLAY_WIDTH: 1920
|
||||
DISPLAY_HEIGHT: 1080
|
||||
# RUN_XTERM={yes|no} (yes)
|
||||
# RUN_FLUXBOX={yes|no} (yes)
|
||||
#
|
||||
#
|
||||
novnc-fedora:
|
||||
image: richxsl/fedora-vnc-desktop
|
||||
ports:
|
||||
- "8085:6080"
|
||||
- "5906:5900"
|
||||
|
||||
volumes:
|
||||
nextcloud:
|
||||
nextcloud_mariadb:
|
||||
mcvnc:
|
||||
mcvnc_usr:
|
||||
novnc:
|
||||
novnc_usr:
|
||||
novnc_var:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
pritunl:
|
||||
healingpath:
|
||||
nextcloud:
|
||||
website:
|
||||
nginx:
|
||||
ldap:
|
||||
wordpress:
|
||||
# business:
|
||||
business:
|
||||
wordpress_alex:
|
||||
wordpress_anaelle:
|
||||
wordpress_marc:
|
||||
wordpress_arnaud:
|
||||
gitea:
|
||||
Vendored
-17
@@ -1,17 +0,0 @@
|
||||
cloudflare
|
||||
traefik
|
||||
postgres
|
||||
mongo
|
||||
website
|
||||
discord
|
||||
authentik
|
||||
nextcloud
|
||||
vaultwarden
|
||||
authentik
|
||||
sablier
|
||||
minio
|
||||
resume
|
||||
syncthing
|
||||
wger
|
||||
redis
|
||||
terminal
|
||||
@@ -1,52 +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:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: >
|
||||
Host(`adguard.marcpartensky.com`)
|
||||
traefik.http.routers.adguard.entrypoints: web
|
||||
# traefik.http.routers.adguard.tls.certresolver: cloudflare
|
||||
traefik.http.services.adguard.loadbalancer.server.port: 3000
|
||||
traefik.http.routers.adguard.middlewares: ldap_auth
|
||||
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.adguard.rule: >
|
||||
# Host(`adguard.marcpartensky.com`) ||
|
||||
# Host(`adguard.marcpartensky.fr`)
|
||||
# traefik.http.routers.adguard.entrypoints: websecure
|
||||
# traefik.http.routers.adguard.tls.certresolver: cloudflare
|
||||
# traefik.http.services.adguard.loadbalancer.server.port: 3000
|
||||
# traefik.http.routers.adguard.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
adguard:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,19 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
agenda_militant:
|
||||
image: marcpartensky/agenda-militant
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
caddy: agenda.militant.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.agenda_militant.rule: Host(`agenda.militant.marcpartensky.com`)
|
||||
traefik.http.routers.agenda_militant.entrypoints: websecure
|
||||
traefik.http.routers.agenda_militant.tls.certresolver: tls
|
||||
traefik.http.services.agenda_militant.loadbalancer.server.port: 8080
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,24 +0,0 @@
|
||||
services:
|
||||
alpine:
|
||||
image: docker.io/marcpartensky/alpine:vnc
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/alpine:/home/marc/data
|
||||
env_file:
|
||||
- ../data/secrets/alpine.env
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.alpine.rule: >
|
||||
Host(`alpine.marcpartensky.com`)
|
||||
traefik.http.routers.alpine.entrypoints: web
|
||||
# traefik.http.routers.alpine.tls.certresolver: tls
|
||||
traefik.http.services.alpine.loadbalancer.server.port: 6080
|
||||
|
||||
volumes:
|
||||
data:
|
||||
|
||||
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,54 +0,0 @@
|
||||
# Essential services for AppFlowy Cloud
|
||||
|
||||
version: "3.9"
|
||||
services:
|
||||
appflowy-nginx:
|
||||
restart: on-failure
|
||||
image: nginx
|
||||
# ports:
|
||||
# - 80:80 # Disable this if you are using TLS
|
||||
volumes:
|
||||
- ../data/appflowy/nginx.conf:/etc/nginx/nginx.conf
|
||||
# - ./nginx/ssl/certificate.crt:/etc/nginx/ssl/certificate.crt
|
||||
# - ./nginx/ssl/private_key.key:/etc/nginx/ssl/private_key.key
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.appflowy.loadbalancer.server.port: 80
|
||||
traefik.http.routers.appflowy.rule: >
|
||||
Host(`appflowy.marcpartensky.com`)
|
||||
traefik.http.routers.appflowy.entrypoints: web
|
||||
# traefik.http.routers.appflowy.tls.certresolver: tls
|
||||
traefik.http.routers.appflowy.middlewares: ldap_auth
|
||||
|
||||
gotrue:
|
||||
image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest}
|
||||
restart: on-failure
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
env_file:
|
||||
- ../data/secrets/appflowy.env
|
||||
|
||||
appflowy-cloud:
|
||||
image: appflowyinc/appflowy_cloud:${BACKEND_VERSION:-latest}
|
||||
restart: on-failure
|
||||
env_file:
|
||||
- ../data/secrets/appflowy.env
|
||||
|
||||
appflowy-admin:
|
||||
restart: on-failure
|
||||
image: appflowyinc/admin_frontend:${BACKEND_VERSION:-latest}
|
||||
depends_on:
|
||||
- gotrue
|
||||
env_file:
|
||||
- ../data/secrets/appflowy.env
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
@@ -1,63 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
arch:
|
||||
image: marcpartensky/arch:vnc
|
||||
container_name: arch
|
||||
restart: unless-stopped
|
||||
ports: # vnc is shared
|
||||
- "5900:5900"
|
||||
networks:
|
||||
- caddy
|
||||
- ldap
|
||||
volumes:
|
||||
- arch:/home/marc
|
||||
healthcheck:
|
||||
test: curl --fail http://localhost:8080/ || exit 1
|
||||
interval: 5m
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
# 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,38 +0,0 @@
|
||||
services:
|
||||
audiobookshelf:
|
||||
image: advplyr/audiobookshelf:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/audiobookshelf/config:/config
|
||||
- /srv/audiobookshelf/audiobooks:/audiobooks
|
||||
- /srv/audiobookshelf/podcasts:/podcasts
|
||||
- /srv/audiobookshelf/metadata:/metadata
|
||||
# env_file:
|
||||
# - ../data/secrets/audiobookshelf.env # Fichier d'environnement optionnel
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.audiobookshelf.rule: >
|
||||
Host(`audiobookshelf.marcpartensky.com`)
|
||||
traefik.http.routers.audiobookshelf.entrypoints: web
|
||||
# traefik.http.services.audiobookshelf.loadbalancer.server.port: 13378
|
||||
traefik.http.services.audiobookshelf.loadbalancer.server.port: 80
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:80"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
environment:
|
||||
- TZ=Europe/Paris # Remplace par ton fuseau horaire
|
||||
- AUDIOBOOKSHELF_UID=1000 # UID pour l'utilisateur
|
||||
- AUDIOBOOKSHELF_GID=1000 # GID pour le groupe
|
||||
|
||||
# volumes:
|
||||
# config:
|
||||
# audiobooks:
|
||||
# podcasts:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,52 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
authelia:
|
||||
image: authelia/authelia
|
||||
restart: unless-stopped
|
||||
# expose:
|
||||
# - 9091
|
||||
env_file:
|
||||
- ../data/secrets/authelia.env
|
||||
environment:
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/authelia:/config
|
||||
networks:
|
||||
- caddy
|
||||
- redis
|
||||
- ldap
|
||||
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: web
|
||||
# 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
|
||||
redis:
|
||||
external: true
|
||||
ldap:
|
||||
external: true
|
||||
@@ -1,120 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
authentik:
|
||||
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
|
||||
image: ghcr.io/goauthentik/server:2024.4.2
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
AUTHENTIK_DEBUG: "true"
|
||||
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
|
||||
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: admin
|
||||
# WORKERS: 2
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
# ports:
|
||||
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
|
||||
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
|
||||
volumes:
|
||||
- authentik_media:/media
|
||||
- templates:/templates
|
||||
- geoip:/geoip
|
||||
# depends_on:
|
||||
# - postgres
|
||||
# - redis
|
||||
# - worker
|
||||
networks:
|
||||
- authentik
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
- ldap
|
||||
labels:
|
||||
caddy: authentik.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9000}}"
|
||||
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
|
||||
traefik.http.routers.authentik.entrypoints: web
|
||||
# traefik.http.routers.authentik.tls.certresolver: cloudflare
|
||||
traefik.http.services.authentik.loadbalancer.server.port: 80
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.fr`)
|
||||
# traefik.http.routers.authentik.entrypoints: websecure
|
||||
# traefik.http.routers.authentik.tls.certresolver: cloudflare
|
||||
# traefik.http.services.authentik.loadbalancer.server.port: 9000
|
||||
|
||||
worker:
|
||||
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
|
||||
image: ghcr.io/goauthentik/server:2024.4.2
|
||||
restart: unless-stopped
|
||||
# user: root
|
||||
command: worker
|
||||
environment:
|
||||
AUTHENTIK_REDIS__HOST: redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: postgres
|
||||
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
|
||||
# This is optional, and can be removed. If you remove this, the following will happen
|
||||
# - The permissions for the /backups and /media folders aren't fixed, so make sure they are 1000:1000
|
||||
# - The docker socket can't be accessed anymore
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /srv/authentik:/backups
|
||||
- authentik_media:/media
|
||||
- certs:/certs
|
||||
- templates:/templates
|
||||
- geoip:/geoip
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
networks:
|
||||
- authentik
|
||||
- postgres
|
||||
- redis
|
||||
|
||||
# authentik_geoipupdate:
|
||||
# image: maxmindinc/geoipupdate:latest
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - authentik_geoip:/usr/share/GeoIP
|
||||
# environment:
|
||||
# GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
|
||||
# GEOIPUPDATE_FREQUENCY: "8"
|
||||
# # env_file:
|
||||
# # - ../data/secrets/authentik.env
|
||||
# networks:
|
||||
# - authentik
|
||||
# version: "3.5"
|
||||
|
||||
ldap:
|
||||
image: ghcr.io/goauthentik/ldap
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
# - 389:389/tcp # no need to expose insecure port
|
||||
- 0.0.0.0:636:636/tcp
|
||||
networks:
|
||||
- authentik # connect to authentik server
|
||||
- ldap # connect to other services
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
|
||||
volumes:
|
||||
# backups:
|
||||
postgres:
|
||||
authentik_media:
|
||||
certs:
|
||||
templates:
|
||||
geoip:
|
||||
|
||||
networks:
|
||||
authentik:
|
||||
ldap:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,7 +0,0 @@
|
||||
services:
|
||||
autodownloader:
|
||||
image: marcpartensky/autodownloader
|
||||
volumes:
|
||||
- /srv/jellyfin/movies:/movies
|
||||
env_file:
|
||||
- ../data/secrets/autodownloader.env
|
||||
@@ -1,35 +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.rule: Host(`beef.marcpartensky.fr`)
|
||||
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,54 +0,0 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
cadvisor:
|
||||
# image: google/cadvisor:v0.39.0
|
||||
# image: google/cadvisor
|
||||
image: gcr.io/cadvisor/cadvisor
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:rw
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker:/var/lib/docker:ro
|
||||
command:
|
||||
- '-docker_only'
|
||||
- '-logtostderr'
|
||||
# - '-storage-driver=influxdb'
|
||||
# - '-storage-opt=host=swarm-manager1:8086'
|
||||
# - '-storage-opt=database=cadvisor'
|
||||
# - '-storage-opt=retention=1d'
|
||||
# - '-storage-opt=user=root'
|
||||
# - '-storage-opt=password=yourpassword'
|
||||
# - '-housekeeping_interval=5s'
|
||||
# - '-enable_load_reader'
|
||||
# - '-cpu_global_percentage=true'
|
||||
# - '-cpu_historic_interval=1m'
|
||||
# - '-docker_label_enable'
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
resources:
|
||||
limits:
|
||||
memory: 1g
|
||||
reservations:
|
||||
memory: 512m
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
mode: global
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.cadvisor.rule: Host(`cadvisor.marcpartensky.fr`)
|
||||
# traefik.http.routers.cadvisor.rule: >
|
||||
# Host(`cadvisor.marcpartensky.com`) || Host(`cadvisor.marcpartensky.fr`)
|
||||
traefik.http.routers.cadvisor.entrypoints: websecure
|
||||
traefik.http.routers.cadvisor.tls.certresolver: tls
|
||||
traefik.http.services.cadvisor.loadbalancer.server.port: 8080
|
||||
traefik.http.routers.cadvisor.middlewares: ldap_auth
|
||||
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,6 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
chatgpt:
|
||||
image: wongsaang/chatgpt-ui:latest
|
||||
ports:
|
||||
- "8000:80"
|
||||
@@ -1,30 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
cloudflare:
|
||||
image: docker.io/cloudflare/cloudflared:latest
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/cloudflare.env
|
||||
command: tunnel --no-autoupdate run
|
||||
networks:
|
||||
- caddy
|
||||
environment:
|
||||
- TUNNEL_METRICS=0.0.0.0:60123
|
||||
# - TUNNEL_TOKEN=${TUNNEL_TOKEN}
|
||||
healthcheck:
|
||||
test: ["CMD", "cloudflared", "tunnel", "--metrics", "localhost:60123", "ready"]
|
||||
interval: 30s
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
|
||||
traefik-cloudflare-tunnel:
|
||||
image: docker.io/justmiles/traefik-cloudflare-tunnel:latest
|
||||
container_name: traefik-cloudflare-tunnel
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/cloudflare.env
|
||||
networks:
|
||||
- caddy
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,50 +0,0 @@
|
||||
# Conduit - Behind Traefik Reverse Proxy
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
homeserver:
|
||||
image: matrixconduit/matrix-conduit:latest
|
||||
restart: unless-stopped
|
||||
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.docker.network=proxy" # Change this to the name of your Traefik docker proxy network
|
||||
|
||||
# - "traefik.http.routers.to-conduit.rule=Host(`sub_domain.domain.com`)" # Change to the address on which Conduit is hosted
|
||||
# - "traefik.http.routers.to-conduit.tls=true"
|
||||
# - "traefik.http.routers.to-conduit.tls.certresolver=letsencrypt"
|
||||
# - "traefik.http.routers.to-conduit.middlewares=cors-headers@docker"
|
||||
|
||||
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*"
|
||||
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
||||
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
|
||||
ports:
|
||||
- 8448:6167
|
||||
|
||||
volumes:
|
||||
- db:/srv/conduit/.local/share/conduit
|
||||
### Uncomment if you want to use conduit.toml to configure Conduit
|
||||
### Note: Set env vars will override conduit.toml values
|
||||
- ./conduit.toml:/srv/conduit/conduit.toml
|
||||
networks:
|
||||
- proxy
|
||||
environment:
|
||||
CONDUIT_SERVER_NAME: sub_domain.domain.com # replace with your own name
|
||||
CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
|
||||
CONDUIT_ALLOW_REGISTRATION : 'true'
|
||||
### Uncomment and change values as desired
|
||||
# CONDUIT_ADDRESS: 0.0.0.0
|
||||
# CONDUIT_PORT: 6167
|
||||
# CONDUIT_CONFIG: '/srv/conduit/conduit.toml' # if you want to configure purely by env vars, set this to an empty string ''
|
||||
# Available levels are: error, warn, info, debug, trace - more info at: https://docs.rs/env_logger/*/env_logger/#enabling-logging
|
||||
# CONDUIT_LOG: info # default is: "warn,_=off,sled=off"
|
||||
CONDUIT_LOG: debug
|
||||
# CONDUIT_ALLOW_JAEGER: 'false'
|
||||
# CONDUIT_ALLOW_ENCRYPTION: 'false'
|
||||
# CONDUIT_ALLOW_FEDERATION: 'false'
|
||||
# CONDUIT_DATABASE_PATH: /srv/conduit/.local/share/conduit
|
||||
# CONDUIT_WORKERS: 10
|
||||
# CONDUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
@@ -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,21 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
controller:
|
||||
image: cybercube/crafty-controller
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.controller.loadbalancer.server.port: 8000
|
||||
traefik.http.routers.controller.rule: Host(`controller.marcpartensky.fr`)
|
||||
# traefik.http.routers.controller.rule: >
|
||||
# Host(`controller.marcpartensky.com`) || Host(`controller.marcpartensky.fr`)
|
||||
traefik.http.routers.controller.entrypoints: websecure
|
||||
# traefik.http.routers.controller.tls.certresolver: tls
|
||||
traefik.http.routers.controller.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.controller.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,28 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
crontab:
|
||||
image: alseambusher/crontab-ui
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
# ports:
|
||||
# - 8000:8000
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /srv/crontab:/crontab-ui/crontabs
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.crontab.loadbalancer.server.port: 8000
|
||||
traefik.http.routers.crontab.rule: >
|
||||
Host(`cron.marcpartensky.com`)
|
||||
traefik.http.routers.crontab.entrypoints: web
|
||||
# traefik.http.routers.ui.tls.certresolver: tls
|
||||
# traefik.http.routers.ui.tls.certresolver: cloudflare
|
||||
traefik.http.routers.crontab.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
crontabs:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,21 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
dbdesigner:
|
||||
image: marcpartensky/dbdesigner
|
||||
container_name: dbdesigner
|
||||
networks:
|
||||
- caddy
|
||||
environment:
|
||||
PORT: 3000
|
||||
labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.services.dbdesigner.loadbalancer.server.port: 3000
|
||||
# traefik.http.routers.dbdesigner.rule: >
|
||||
# Host(`dbdesigner.marcpartensky.com`)
|
||||
# traefik.http.routers.dbdesigner.entrypoints: web
|
||||
# traefik.http.routers.dbdesigner.tls.certresolver: tls
|
||||
traefik.http.routers.dbdesigner.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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,39 +0,0 @@
|
||||
# version: "3.9"
|
||||
|
||||
services:
|
||||
bot:
|
||||
# image: docker.io/marcpartensky/discord-bot:v141.138ee20.2024-09-08
|
||||
image: docker.io/marcpartensky/discord-bot:latest
|
||||
# image: docker.io/marcpartensky/discord-bot:v152.04b7e7a.2024-09-15
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7011:8000"
|
||||
networks:
|
||||
- discord
|
||||
- postgres
|
||||
env_file:
|
||||
- ../data/secrets/discord-bot.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
# ia:
|
||||
# image: marcpartensky/discord-bot
|
||||
# restart: unless-stkopped
|
||||
# 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:
|
||||
postgres:
|
||||
external: true
|
||||
@@ -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,31 +0,0 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
dockge:
|
||||
image: louislam/dockge:1
|
||||
container_name: dockge
|
||||
restart: unless-stopped
|
||||
# ports:
|
||||
# - 5001:5001
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ../data/dockge:/app/data
|
||||
# Stacks Directory
|
||||
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
|
||||
# ⚠️ 1. FULL path only. No relative path (MUST)
|
||||
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
|
||||
- ./:/opt/stacks
|
||||
environment:
|
||||
# Tell Dockge where to find the stacks
|
||||
- DOCKGE_STACKS_DIR=/opt/stacks
|
||||
networks:
|
||||
- caddy
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.services.dockge.loadbalancer.server.port: 5001
|
||||
# traefik.http.routers.dockge.rule: >
|
||||
# Host(`dockge.marcpartensky.com`)
|
||||
# traefik.http.routers.dockge.entrypoints: web
|
||||
# traefik.http.routers.dockge.middlewares: ldap_auth
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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,27 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
docuseal:
|
||||
container_name: docuseal
|
||||
image: docuseal/docuseal:latest
|
||||
ports:
|
||||
- 3000:3000
|
||||
volumes:
|
||||
- /srv/docuseal:/data
|
||||
env_file:
|
||||
- ../data/secrets/docuseal.env
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.docuseal.rule: >
|
||||
# Host(`docuseal.marcpartensky.com`)
|
||||
# traefik.http.routers.docuseal.entrypoints: web
|
||||
# traefik.http.services.docuseal.loadbalancer.server.port: 3000
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
@@ -1,37 +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
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: 8200
|
||||
traefik.http.routers.duplicati.rule: >
|
||||
Host(`duplicati.marcpartensky.com`) ||
|
||||
Host(`duplicati.marcpartensky.fr`)
|
||||
traefik.http.routers.duplicati.entrypoints: websecure
|
||||
traefik.http.routers.duplicati.tls.certresolver: tls
|
||||
# traefik.http.routers.duplicati.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
|
||||
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,32 +0,0 @@
|
||||
services:
|
||||
ebook2audiobook:
|
||||
image: athomasson2/ebook2audiobookxtts:huggingface
|
||||
platform: linux/amd64
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/ebook2audiobookxtts:/app/data
|
||||
# ports:
|
||||
# - "7860:7860" # Exposition du port 7860 pour accéder à l'application
|
||||
networks:
|
||||
- caddy
|
||||
command: python app.py
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ebook2audiobook.rule: >
|
||||
Host(`ebook2audiobook.marcpartensky.com`)
|
||||
traefik.http.routers.ebook2audiobook.entrypoints: web
|
||||
traefik.http.services.ebook2audiobook.loadbalancer.server.port: 7860
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:7860"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
environment:
|
||||
TZ: Europe/Paris # Définir le fuseau horaire
|
||||
UID: 1000 # UID pour l'utilisateur
|
||||
GID: 1000 # GID pour le groupe
|
||||
PYTHONUNBUFFERED: 1 # Désactiver le tampon de sortie Python pour une meilleure visibilité des logs
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,34 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
etesync:
|
||||
image: victorrds/etesync
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
env_file:
|
||||
- ../data/secrets/etesync.env
|
||||
volumes:
|
||||
- static:/srv/etebase/static
|
||||
- media:/data/media
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.etesync.loadbalancer.server.port: 3735
|
||||
traefik.http.routers.etesync.rule: >
|
||||
# Host(`etesync.marcpartensky.com`) ||
|
||||
Host(`etesync.marcpartensky.fr`)
|
||||
traefik.http.routers.etesync.entrypoints: websecure
|
||||
traefik.http.routers.etesync.tls.certresolver: tls
|
||||
# traefik.http.routers.etesync.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.etesync.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
static:
|
||||
media:
|
||||
@@ -1,38 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
etherpad:
|
||||
image: etherpad/etherpad
|
||||
container_name: etherpad
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/etherpad.env
|
||||
# environment:
|
||||
# SETTINGS_PATH: /etc/etherpad/settings.json
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
# volumes:
|
||||
# - data:/opt/etherpad-lite/var
|
||||
# volumes:
|
||||
# - ../data/etherpad/settings.json:/opt/etherpad-lite/settings.json
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.etherpad.rule: >
|
||||
# Host(`pad.marcpartensky.com`)
|
||||
# traefik.http.routers.etherpad.entrypoints: web
|
||||
# # traefik.http.routers.etherpad.tls.certresolver: cloudflare
|
||||
# traefik.http.services.etherpad.loadbalancer.server.port: 9001
|
||||
traefik.http.middlewares.redirect-pad-com.redirectregex.regex: "^https://etherpad.marcpartensky.com/(.*)"
|
||||
traefik.http.middlewares.redirect-pad-com.redirectregex.replacement: "https://pad.marcpartensky.com/$${1}"
|
||||
traefik.http.middlewares.redirect-pad-fr.redirectregex.regex: "^https://etherpad.marcpartensky.fr/(.*)"
|
||||
traefik.http.middlewares.redirect-pad-fr.redirectregex.replacement: "https://pad.marcpartensky.fr/$${1}"
|
||||
|
||||
# volumes:
|
||||
# data:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
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,60 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
|
||||
fdroid:
|
||||
image: nginx
|
||||
# image: registry.gitlab.com/fdroid/docker-executable-fdroidserver:master
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/fdroid.env
|
||||
# command: bash -c './wait-for postgres:5432 -- python3 manage.py migrate && ./httpd-foreground'
|
||||
volumes:
|
||||
- /srv/fdroid:/usr/share/nginx/html:ro
|
||||
- ../data/fdroid/config.py:/apk/config.py
|
||||
- ../data/fdroid/fdroid.keystore:/tmp/my.keystore
|
||||
# - /srv/fdroid/apk:/repo
|
||||
# - /srv/fdroid:/repomaker/data
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.fdroid.loadbalancer.server.port: 80
|
||||
traefik.http.routers.fdroid.rule: Host(`fdroid.marcpartensky.com`)
|
||||
traefik.http.routers.fdroid.entrypoints: web
|
||||
|
||||
# fdroid:
|
||||
# image: registry.gitlab.com/fdroid/repomaker:latest
|
||||
# restart: unless-stopped
|
||||
# env_file:
|
||||
# - ../data/secrets/fdroid.env
|
||||
# command: bash -c './wait-for postgres:5432 -- python3 manage.py migrate && ./httpd-foreground'
|
||||
# volumes:
|
||||
# - /srv/fdroid:/repomaker/data
|
||||
# - ../data/fdroid/settings_docker.py:/repomaker/repomaker/settings_docker.py
|
||||
# networks:
|
||||
# - caddy
|
||||
# - postgres
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.services.fdroid.loadbalancer.server.port: 80
|
||||
# traefik.http.routers.fdroid.rule: Host(`fdroid.marcpartensky.com`)
|
||||
# traefik.http.routers.fdroid.entrypoints: web
|
||||
|
||||
# fdroid-tasks:
|
||||
# image: registry.gitlab.com/fdroid/repomaker:latest
|
||||
# restart: unless-stopped
|
||||
# env_file:
|
||||
# - ../data/secrets/fdroid.env
|
||||
# command: bash -c './wait-for fdroid:80 -- su www-data -p -s /bin/bash -c "cd /repomaker && python3 manage.py process_tasks"'
|
||||
# volumes:
|
||||
# - /srv/fdroid:/repomaker/data
|
||||
# depends_on:
|
||||
# - fdroid
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
@@ -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,32 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
filebrowser:
|
||||
image: hurlenko/filebrowser
|
||||
container_name: filebrowser
|
||||
restart: unless-stopped
|
||||
# user: "${UID}:${GID}"
|
||||
user: "1000:100"
|
||||
# volumes:
|
||||
# - /root/Videos:/data
|
||||
volumes:
|
||||
- /home/marc:/data
|
||||
- ../data/filebrowser:/config
|
||||
# environment:
|
||||
# FB_BASEURL: /filebrowser
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.filebrowser.rule: Host(`file.marcpartensky.com`)
|
||||
traefik.http.routers.filebrowser.entrypoints: web
|
||||
# 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,41 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ffsync:
|
||||
image: mozilla/syncserver:latest
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/firefox.env
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
volumes:
|
||||
- /srv/firefox:/data
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ffsync.rule: Host(`firefox.marcpartensky.com`)
|
||||
traefik.http.routers.ffsync.entrypoints: web
|
||||
traefik.http.services.ffsync.loadbalancer.server.port: 80
|
||||
# labels:
|
||||
# - traefik.enable: true
|
||||
# - traefik.backend: ffsync
|
||||
# - traefik.frontend.rule: Host:firefoxsync.${DOMAINNAME}
|
||||
# - traefik.port: 5000
|
||||
# - traefik.docker.network: caddy
|
||||
|
||||
# ffsync_db:
|
||||
# image: postgres:alpine
|
||||
# container_name: ffsync_db
|
||||
# restart: unless-stopped
|
||||
# networks:
|
||||
# - ffsync_network
|
||||
# environment:
|
||||
# POSTGRES_DB: ${FFSYNC_DATABASE_DB}
|
||||
# POSTGRES_USER: ${FFSYNC_DATABASE_USER}
|
||||
# POSTGRES_PASSWORD: ${FFSYNC_DB_PASSWORD}
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,32 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
focalboard:
|
||||
image: docker.io/mattermost/focalboard
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- data:/opt/focalboard/data
|
||||
- pack:/opt/focalboard/pack
|
||||
- ../data/focalboard/config.json:/opt/focalboard/config.json
|
||||
environment:
|
||||
EXCLUDE_ENTERPRISE: "1"
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.focalboard.rule: >
|
||||
Host(`board.marcpartensky.com`)
|
||||
traefik.http.routers.focalboard.entrypoints: web
|
||||
# traefik.http.routers.focalboard.tls.certresolver: tls
|
||||
traefik.http.services.focalboard.loadbalancer.server.port: 8000
|
||||
traefik.http.middlewares.focalboard.redirectscheme.scheme: https
|
||||
# traefik.http.routers.focalboard.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
data:
|
||||
pack:
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,54 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:10.6
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
- --skip-character-set-client-handshake
|
||||
- --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6
|
||||
env_file:
|
||||
- ../data/secrets/frappelms.env
|
||||
volumes:
|
||||
- /srv/mariadb:/var/lib/mysql
|
||||
networks:
|
||||
- mariadb
|
||||
ports:
|
||||
- target: 3306
|
||||
published: 3306
|
||||
mode: host
|
||||
|
||||
frappelms:
|
||||
image: frappe/bench:latest
|
||||
command: bash /workspace/init.sh
|
||||
environment:
|
||||
SHELL: /bin/bash
|
||||
working_dir: /home/frappe
|
||||
volumes:
|
||||
- /srv/frappelms:/workspace
|
||||
# env_file:
|
||||
# - ../data/secrets/frappelms.env # useless
|
||||
networks:
|
||||
- caddy
|
||||
- mariadb
|
||||
- redis
|
||||
# ports:
|
||||
# - 8000:8000
|
||||
# - 9000:9000
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.frappelms.rule: >
|
||||
Host(`lms.marcpartensky.com`)
|
||||
traefik.http.routers.frappelms.entrypoints: web
|
||||
traefik.http.services.frappelms.loadbalancer.server.port: 8000
|
||||
|
||||
volumes:
|
||||
mariadb-data:
|
||||
|
||||
networks:
|
||||
mariadb:
|
||||
redis:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,31 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
fuseki:
|
||||
image: stain/jena-fuseki
|
||||
volumes:
|
||||
# - ./config:/fuseki/configuration
|
||||
- data:/fuseki/databases
|
||||
# environment:
|
||||
# - FUSEKI_HOME=/fuseki
|
||||
# - FUSEKI_BASE=/fuseki/databases
|
||||
env_file:
|
||||
- ../data/secrets/fuseki.env
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.fuseki.rule: Host(`fuseki.marcpartensky.com`)
|
||||
traefik.http.services.fuseki.loadbalancer.server.port: 3030
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
data:
|
||||
@@ -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,51 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.14.6
|
||||
container_name: gitea
|
||||
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.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,58 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitlab:
|
||||
container_name: gitlab
|
||||
image: gitlab/gitlab-ce: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
|
||||
container_name: gitlab-runner
|
||||
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,7 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
gpg:
|
||||
image: marcpartensky/gpg
|
||||
volumes:
|
||||
- /srv:/srv
|
||||
- ../data/gpg:/root/keys
|
||||
@@ -1,39 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
grafana:
|
||||
image: grafana/grafana
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/grafana.env
|
||||
# environment:
|
||||
# GF_INSTALL_PLUGINS: grafana-ldap-auth
|
||||
volumes:
|
||||
- ../data/grafana:/etc/grafana
|
||||
- grafana:/var/lib/grafana
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- ldap
|
||||
# deploy:
|
||||
# labels:
|
||||
# caddy: grafana.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.grafana.rule: >
|
||||
# Host(`grafana.marcpartensky.fr`) ||
|
||||
# Host(`grafana.marcpartensky.com`)
|
||||
# traefik.http.routers.grafana.entrypoints: websecure
|
||||
# traefik.http.routers.grafana.tls.certresolver: tls
|
||||
# traefik.http.services.grafana.loadbalancer.server.port: 3000
|
||||
|
||||
volumes:
|
||||
grafana:
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,44 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
heimdall:
|
||||
image: lscr.io/linuxserver/heimdall:latest
|
||||
container_name: heimdall
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/heimdall:/config
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
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: web
|
||||
# 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:
|
||||
redis:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
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,31 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
homer:
|
||||
image: b4bz/homer
|
||||
container_name: 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`) ||
|
||||
# Host(`homer.marcpartensky.fr`)
|
||||
# traefik.http.routers.homer.entrypoints: websecure
|
||||
# traefik.http.routers.homer.tls.certresolver: tls
|
||||
# traefik.http.services.homer.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
homer:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,6 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
honeygain:
|
||||
image: marcpartensky/honeygain
|
||||
env_file:
|
||||
- ../data/secrets/honeygain.env
|
||||
@@ -1,16 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
hydra:
|
||||
image: marcpartensky/hydra:latest
|
||||
network_mode: host
|
||||
env_file:
|
||||
- ../data/secrets/hydra.env
|
||||
# command: -P /rockyou.txt -L /usernames.txt ssh://192.168.252.18
|
||||
# workdir: /root
|
||||
volumes:
|
||||
- ../data/hydra/rockyou.txt:/rockyou.txt
|
||||
- ../data/hydra/usernames.txt:/usernames.txt
|
||||
- hydra:/root
|
||||
|
||||
volumes:
|
||||
hydra:
|
||||
@@ -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,65 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
ipfs:
|
||||
restart: unless-stopped
|
||||
image: lscr.io/linuxserver/ipfs
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: Europe/Paris
|
||||
volumes:
|
||||
- ipfs:/config
|
||||
- /srv/:/srv
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
# - 80:80 #dumb http client
|
||||
# - 443:443 #optional
|
||||
- 4001:4001
|
||||
- 5001:5001
|
||||
- 8080:8080
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.1'
|
||||
memory: 500M
|
||||
# reservations:
|
||||
# cpus: '0.1'
|
||||
# memory: 100M
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.com`)
|
||||
traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.fr`)
|
||||
# traefik.http.routers.ipfs.rule: >
|
||||
# Host(`ipfs.marcpartensky.com`) || Host(`ipfs.marcpartensky.fr`)
|
||||
# traefik.http.routers.ipfs.entrypoints: websecure
|
||||
# traefik.http.routers.ipfs.tls.certresolver: tls
|
||||
traefik.http.routers.ipfs.tls.certresolver: cloudflare
|
||||
traefik.http.services.ipfs.loadbalancer.server.port: 5001
|
||||
traefik.http.routers.ifps.middlewares: ldap_auth
|
||||
# traefik.frontend.redirect.regex: ^https://ipfs.marcpartensky.com$$
|
||||
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
|
||||
# traefik.http.routers.ifps.middlewares: add-context
|
||||
#
|
||||
# # here is the logic provided by gustavomtborges of this gist:
|
||||
# traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
|
||||
# traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
|
||||
#
|
||||
traefik.http.routers.ipfs.middlewares: custom_repath
|
||||
traefik.http.middlewares.custom_repath.replacepathregex.regex: ^/$$
|
||||
traefik.http.middlewares.custom_repath.replacepathregex.replacement: /webui
|
||||
|
||||
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
|
||||
traefik.http.routers.ipfs.middlewares: add-context
|
||||
|
||||
# here is the logic provided by gustavomtborges of this gist:
|
||||
traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
|
||||
traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
|
||||
|
||||
|
||||
volumes:
|
||||
ipfs:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -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,49 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
izitdone-back:
|
||||
image: docker.io/marcpartensky/izitdone-back:v23.ca2e91d09917d423458640113e852cfd60d6916e
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
env_file:
|
||||
- ../data/secrets/izitdone.env
|
||||
# volumes:
|
||||
# - ../data/secrets/izitdone.env:/root/.env
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.izitdone-back.rule: >
|
||||
Host(`izitdone.marcpartensky.com`) && PathPrefix(`/api`)
|
||||
traefik.http.routers.izitdone-back.entrypoints: web
|
||||
traefik.http.services.izitdone-back.loadbalancer.server.port: 8000
|
||||
traefik.http.middlewares.izitdone-back.redirectscheme.scheme: https
|
||||
traefik.http.middlewares.izitdone-back-strip.stripprefix.prefixes: /api
|
||||
# traefik.http.middlewares.izitdone-back-strip.stripprefix.forceslash: false
|
||||
traefik.http.routers.izitdone-back.middlewares: izitdone-back-strip
|
||||
# traefik.http.routers.izitdone-back.tls.certresolver: tls
|
||||
# traefik.http.routers.izitdone-back.middlewares: ldap_auth
|
||||
|
||||
izitdone-front:
|
||||
image: docker.io/marcpartensky/izitdone-front:latest
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
# volumes:
|
||||
# - ../data/secrets/izitdone.env:/root/.env
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.izitdone-front.rule: >
|
||||
Host(`izitdone.marcpartensky.com`) && !PathPrefix(`/api`)
|
||||
traefik.http.routers.izitdone-front.entrypoints: web
|
||||
# traefik.http.routers.izitdone-front.tls.certresolver: tls
|
||||
traefik.http.services.izitdone-front.loadbalancer.server.port: 3000
|
||||
traefik.http.middlewares.izitdone-front.redirectscheme.scheme: https
|
||||
# traefik.http.routers.izitdone-front.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,47 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
jellyfin:
|
||||
image: docker.io/jellyfin/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
environment:
|
||||
# PUID: 1000
|
||||
# PGID: 1000
|
||||
# TZ: Europe/Paris
|
||||
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.com
|
||||
devices:
|
||||
- /dev/dri
|
||||
volumes:
|
||||
- config:/config
|
||||
- cache:/cache
|
||||
- /srv/jellyfin/media:/media
|
||||
- /srv/jellyfin/movies:/movies
|
||||
- /srv/jellyfin/musics:/musics
|
||||
- /srv/jellyfin/photos:/photos
|
||||
- ~/Videos/Youtube:/videos
|
||||
# ports:
|
||||
# - 8096:8096 #http
|
||||
# - 8920:8920 #optional https self signed
|
||||
# - 7359:7359/udp #optional lan discovery
|
||||
# - 1900:1900/udp #optional dnla
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.jellyfin.rule: Host(`jellyfin.marcpartensky.com`)
|
||||
traefik.http.routers.jellyfin.entrypoints: web
|
||||
# traefik.http.routers.jellyfin.tls.certresolver: cloudflare
|
||||
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
|
||||
|
||||
|
||||
volumes:
|
||||
config:
|
||||
cache:
|
||||
media:
|
||||
movies:
|
||||
musics:
|
||||
photos:
|
||||
videos:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,29 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jenkins:
|
||||
image: jenkins/jenkins:lts-jdk11
|
||||
container_name: jenkins
|
||||
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,46 +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:
|
||||
- ldap
|
||||
- caddy
|
||||
- jupyterhub
|
||||
environment:
|
||||
# DOCKER_IMAGE: marcpartensky/jupyterlab
|
||||
DOCKER_IMAGE: jupyterhub/singleuser
|
||||
DOCKER_NETWORK_NAME: caddy
|
||||
HUB_IP: jupyterhub
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
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
|
||||
# traefik.docker.network: jupyterhub_default
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
|
||||
traefik.http.routers.jupyterhub.rule: Host(`hub.marcpartensky.fr`)
|
||||
traefik.http.routers.jupyterhub.entrypoints: websecure
|
||||
traefik.http.routers.jupyterhub.tls.certresolver: tls
|
||||
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
|
||||
|
||||
networks:
|
||||
jupyterhub:
|
||||
name: jupyterhub
|
||||
driver: overlay
|
||||
caddy:
|
||||
external: true
|
||||
ldap:
|
||||
external: true
|
||||
@@ -1,54 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jupyterlab:
|
||||
# image: jupyter/datascience-notebook:latest
|
||||
image: marcpartensky/jupyterlab
|
||||
container_name: jupyterlab
|
||||
# restart: unless-stopped
|
||||
environment:
|
||||
# - GEN_CERT=yes
|
||||
JUPYTER_ENABLE_LAB: "yes"
|
||||
GRANT_SUDO: "yes"
|
||||
JUPYTER_CONFIG_DIR: /home/jupyter/.jupyter
|
||||
# entrypoint: python -m jupyter lab
|
||||
# entrypoint: start.sh jupyter lab --user root
|
||||
networks:
|
||||
- caddy
|
||||
# labels:
|
||||
# caddy: lab.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 8888}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.com`)
|
||||
# traefik.http.routers.jupyterlab.entrypoints: websecure
|
||||
# traefik.http.routers.jupyterlab.tls.certresolver: tls
|
||||
# traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
|
||||
# volumes:
|
||||
# - jupyterlab:/home/jupyter
|
||||
# - ../data/jupyterlab/:/home/jupyter/.jupyter/
|
||||
# deploy:
|
||||
# placement:
|
||||
# constraints:
|
||||
# - node.role == manager
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# # traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.fr`)
|
||||
# traefik.http.routers.jupyterlab.rule: >
|
||||
# Host(`lab.marcpartensky.fr`) && Host(`lab.marcpartensky.com`)
|
||||
# traefik.http.routers.jupyterlab.entrypoints: websecure
|
||||
# traefik.http.routers.jupyterlab.tls.certresolver: cloudflare
|
||||
# traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
|
||||
# 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,64 +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
|
||||
GRPC_PORT: 9090
|
||||
|
||||
LDAP_HOST: "ldap"
|
||||
LDAP_PORT: 389
|
||||
# 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
|
||||
LDAP_DOMAIN: marcpartensky.com
|
||||
LDAP_BASE_DN: dc=marcpartensky,dc=com
|
||||
|
||||
# DEFAULT_ADMIN_USERNAME: ldap-manager-php
|
||||
# DEFAULT_ADMIN_PASSWORD: "@Rd2^28Yo9er*rZ52p!JkxQPq!!VvQ"
|
||||
DEFAULT_ADMIN_USERNAME: marc
|
||||
DEFAULT_ADMIN_PASSWORD: "D2%4&$ascXxxbJX%BY^tN6BRF@bY!F"
|
||||
LDAP_ADMIN_USERNAME: marc
|
||||
LDAP_ADMIN_PASSWORD: "D2%4&$ascXxxbJX%BY^tN6BRF@bY!F"
|
||||
# FORCE_CREATE_ADMIN: "true"
|
||||
|
||||
LDAP_TLS: "false"
|
||||
LDAP_USE_RFC2307BIS: "true"
|
||||
|
||||
ISSUER: ldap@marcpartensky.com
|
||||
AUDIENCE: marcpartensky.com
|
||||
GENERATE: "true" # ports:
|
||||
# - 9090:9090
|
||||
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`)
|
||||
traefik.http.routers.ldap_manager_go.entrypoints: web
|
||||
# traefik.http.routers.ldap_manager_go.tls.certresolver: tls
|
||||
traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
|
||||
# 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,48 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ldap_manager:
|
||||
image: wheelybird/ldap-user-manager:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
SERVER_HOSTNAME: auth.marcpartensky.com
|
||||
LDAP_URI: ldap://ldap:389
|
||||
# LDAP_BASE_DN: dc=admin,dc=org
|
||||
LDAP_BASE_DN: dc=marcpartensky,dc=com
|
||||
LDAP_ADMINS_GROUP: admins
|
||||
LDAP_ADMIN_BIND_DN: uid=5a5049f38c347a028dc67c975ef66cdc1e953ae57e89154fb074bcc18b1f4581,dc=marcpartensky,dc=com
|
||||
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: web
|
||||
# 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.rule: >
|
||||
# Host(`auth.marcpartensky.com`)
|
||||
# traefik.http.routers.ldap_manager.entrypoints: web
|
||||
# # 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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user