Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
465f4dc20c | ||
|
|
2b4a5eb039 | ||
|
|
7face30f0b | ||
|
|
d72912481e | ||
|
|
0d42eb1e33 | ||
|
|
cf2fc1156c | ||
|
|
3709c4b8de | ||
|
|
2e34a68d89 | ||
|
|
31d60f6f3b | ||
|
|
8eead75ef9 | ||
|
|
9b2dbfa6e0 | ||
|
|
b10768fcb5 | ||
|
|
b53a6a9a4d | ||
|
|
15c2e6c62b | ||
|
|
768bced602 | ||
|
|
4394df2555 | ||
|
|
03089ea092 | ||
|
|
88852be213 | ||
|
|
1013c6a62b | ||
|
|
10f8b4bbd7 | ||
|
|
bbe8e2fd3d | ||
|
|
c692f9b548 | ||
|
|
96e3683cda | ||
|
|
018377f66f | ||
|
|
d70e0a93bf | ||
|
|
cc21806b3c | ||
|
|
f60f92ae9b | ||
|
|
140c355e9d | ||
|
|
607abc3f41 | ||
|
|
7a25b78fd9 | ||
|
|
8fdf857e6b | ||
|
|
48e0230263 | ||
|
|
6c987f0c29 | ||
|
|
5b6a4ec2a3 | ||
|
|
535391775b | ||
|
|
3a50c0002d | ||
|
|
80f6c66dc0 | ||
|
|
6c8e984dcf | ||
|
|
36cca0973e | ||
|
|
9d674da903 | ||
|
|
8734f5a299 | ||
|
|
818d78e1c6 | ||
|
|
ea1ab77107 | ||
|
|
f21e08684c | ||
|
|
2a2b778984 | ||
|
|
f555fbc60e | ||
|
|
56286c7460 | ||
|
|
f866c4e473 | ||
|
|
8445d6cb45 | ||
|
|
5ce592dd7b | ||
|
|
d552c1d4c9 | ||
|
|
bbeed12ed6 | ||
|
|
82188f7c01 | ||
|
|
4eea2090b6 | ||
|
|
5d8c6f90f0 | ||
|
|
79e125e51f | ||
|
|
8842d41d17 | ||
|
|
0d6835bf52 | ||
|
|
89b4ffbfaa | ||
|
|
c6061d56e8 | ||
|
|
df610f4bbd | ||
|
|
d06f447c3c | ||
|
|
5e9da76301 | ||
|
|
c29422b723 | ||
|
|
ba589d9335 | ||
|
|
27bfba09d7 | ||
|
|
1d95c894ae | ||
|
|
77c3db1c9b | ||
|
|
10b0b49188 | ||
|
|
d138a59ffa | ||
|
|
3f82715281 | ||
|
|
1e84c3a252 | ||
|
|
8c596a3c88 | ||
|
|
1f92b3668b | ||
|
|
451d8e8c56 | ||
|
|
200e2ebbd4 | ||
|
|
39b45c338c | ||
|
|
f8d7acf41a | ||
|
|
d777185831 | ||
|
|
0a9a612c86 | ||
|
|
cc694305ca | ||
|
|
817325bda0 | ||
|
|
dc22fb93ae | ||
|
|
fd99f73720 | ||
|
|
e23ce953aa | ||
|
|
418ac9cb58 | ||
|
|
3603af2e6b | ||
|
|
0b56ff74b0 | ||
|
|
e1e31df740 | ||
|
|
118ff72432 | ||
|
|
ab3cd77337 | ||
|
|
7ad0563f63 | ||
|
|
67a793771f | ||
|
|
27349f9ee9 | ||
|
|
65f2e0f6ad | ||
|
|
0e8a568c30 | ||
|
|
31865372f8 | ||
|
|
8c6c110e3a | ||
|
|
6c26498aa2 | ||
|
|
4b9b63eb00 | ||
|
|
222b8cb7ae | ||
|
|
df2d72a34e | ||
|
|
e34826a2ff | ||
|
|
d76a5f87b6 | ||
|
|
7722668c7e | ||
|
|
8a85df83ac | ||
|
|
13297f7bb2 | ||
|
|
9c172ce972 | ||
|
|
9c4b78343d | ||
|
|
a192af5514 | ||
|
|
5a2afddc82 | ||
|
|
8a45f2973d | ||
|
|
d9e052330d | ||
|
|
288d2fb836 | ||
|
|
fc793d7c4d | ||
|
|
257398fb3f | ||
|
|
6db89ec924 | ||
|
|
cbdb0760c5 | ||
|
|
501efbde23 | ||
|
|
83931cf42a | ||
|
|
1bbc9f93a9 | ||
|
|
e0a10d8a39 | ||
|
|
e4ecce30be | ||
|
|
0a8c70ccc1 | ||
|
|
ef2d13b0e2 | ||
|
|
12ffe77f19 | ||
|
|
d685b50f17 | ||
|
|
42d62047cb | ||
|
|
38a19b35ed | ||
|
|
37171ecaa6 | ||
|
|
c4dbe8ef5a | ||
|
|
e60178869a | ||
|
|
3686b4169f | ||
|
|
cc39fd8094 | ||
|
|
71076aaa9c | ||
|
|
263871a6b8 | ||
|
|
ab3b80fd42 | ||
|
|
a6045cf24e | ||
|
|
8083b24b9c | ||
|
|
773057ee11 | ||
|
|
7c495468e7 | ||
|
|
0a5c34cdb3 | ||
|
|
c7a789f5f5 | ||
|
|
9cec81310b | ||
|
|
7fcee1c500 | ||
|
|
df96242c7e | ||
|
|
1e6a20e9e0 | ||
|
|
5437824ad2 | ||
|
|
4b49454956 | ||
|
|
23d3acde55 | ||
|
|
f4cf1f151d | ||
|
|
3c12ab138c | ||
|
|
233d83750b | ||
|
|
dc9e507df5 | ||
|
|
fecd479db2 | ||
|
|
d35ae463b5 | ||
|
|
302126b5f4 | ||
|
|
b0115be27d | ||
|
|
7e66305e16 | ||
|
|
c0dfd22ddb | ||
|
|
a73471643e | ||
|
|
bfd1681932 | ||
|
|
7d545b56f5 | ||
|
|
f0e5f9c782 | ||
|
|
35afebac37 | ||
|
|
9bc22acb3f | ||
|
|
6dcb54bfc7 | ||
|
|
2bdfc80c58 | ||
|
|
09b4a8f870 | ||
|
|
ace267cf7b | ||
|
|
b4a2bb9e7f | ||
|
|
ea736d4707 | ||
|
|
6a78e8cf84 | ||
|
|
1b5fc9f49b | ||
|
|
d37ca2d3d8 | ||
|
|
8a320392f4 | ||
|
|
e3263eabcd | ||
|
|
0246b885ad | ||
|
|
3ef9fa1210 | ||
|
|
7d07b88395 | ||
|
|
08f4da8343 | ||
|
|
a2ce89e46a | ||
|
|
6ceec09f0d | ||
|
|
47dc66ac79 | ||
|
|
4afed447e8 | ||
|
|
a999ddd582 | ||
|
|
38005bc214 | ||
|
|
bb221d3a07 | ||
|
|
ef7d44d4d0 | ||
|
|
16984d5906 | ||
|
|
49c4451d7d | ||
|
|
68a712c9d6 | ||
|
|
220618bc4f | ||
|
|
1c6b9eab4d | ||
|
|
07a78d3ad2 | ||
|
|
dc7ca5f2cc | ||
|
|
6351444ffc | ||
|
|
843bb0d72b | ||
|
|
b2c79dff79 | ||
|
|
e6f24c67dd | ||
|
|
459ba34789 | ||
|
|
1d80b5d0ef | ||
|
|
2519c6f961 | ||
|
|
60315f2849 | ||
|
|
280ca04a44 | ||
|
|
74f5ae0fb3 | ||
|
|
ef3944a4a6 | ||
|
|
c300da8b25 | ||
|
|
957b5d8a06 | ||
|
|
74b77919e7 | ||
|
|
be44c96847 | ||
|
|
c7c40c83a9 | ||
|
|
1f2228a991 | ||
|
|
96f5d04839 | ||
|
|
ebb88e255b | ||
|
|
2b4d85d1da | ||
|
|
dc999354ca | ||
|
|
cdc7c587a8 | ||
|
|
fe08144bf5 | ||
|
|
054a7b3926 | ||
|
|
765ceddcb9 | ||
|
|
0700c0b613 | ||
|
|
68b2c59c1f | ||
|
|
a5871d6390 | ||
|
|
f0c7b3725e | ||
|
|
ea9d7c72aa | ||
|
|
cff59eb342 | ||
|
|
a5ef302fa4 | ||
|
|
1515e9e1f3 | ||
|
|
924668c1fd | ||
|
|
971d025910 | ||
|
|
7e29add93e | ||
|
|
91cd6bb716 | ||
|
|
b46ae1db0f | ||
|
|
6e3033086f | ||
|
|
b44546d755 | ||
|
|
b6ace61817 | ||
|
|
e140ed9514 | ||
|
|
516da45523 | ||
|
|
f1462d92b7 | ||
|
|
b90a00c28c | ||
|
|
5bff5b7d12 | ||
|
|
4a2fc9e0d3 | ||
|
|
37f5929511 | ||
|
|
7fca82784e | ||
|
|
dfb057bfbf | ||
|
|
ff83788463 | ||
|
|
c223983f28 | ||
|
|
71bf5e5ab8 | ||
|
|
40d85b3873 | ||
|
|
f5b2b29376 | ||
|
|
8c10378fa5 | ||
|
|
c416945abb | ||
|
|
0279ecae84 | ||
|
|
0d29cfffac | ||
|
|
0d56b5bf03 | ||
|
|
77a0c55176 | ||
|
|
a527c3f507 | ||
|
|
3f4b2eb9eb | ||
|
|
883632adb9 | ||
|
|
48964a4b25 | ||
|
|
5cdfd79fe5 | ||
|
|
80f5a499b7 | ||
|
|
4fd5dadb0f | ||
|
|
ba7deb6725 | ||
|
|
3341323db3 | ||
|
|
e1ec21332c | ||
|
|
d52ca0dd0c | ||
|
|
bc23dde9fe | ||
|
|
bb0f2913b5 | ||
|
|
9e068b1bbc | ||
|
|
6cf118a3b1 | ||
|
|
963092a1cf | ||
|
|
92f48895e2 | ||
|
|
72a827ab6d | ||
|
|
ae86a49fd6 | ||
|
|
68d0bc9bc5 | ||
|
|
cf98bc8d95 | ||
|
|
85fad15233 | ||
|
|
2cc6edda2e | ||
|
|
fa8d52a1a9 | ||
|
|
17cb3e5acf | ||
|
|
beda918d52 | ||
|
|
a7607ab939 | ||
|
|
ec55c189c4 | ||
|
|
809e15214b | ||
|
|
3e1fae8e5d | ||
|
|
8da2c9ad92 | ||
|
|
7025c87394 | ||
|
|
977283136a | ||
|
|
f376065a54 | ||
|
|
30fbdf3c9b | ||
|
|
d4de7df987 | ||
|
|
6beb13e21d | ||
|
|
42611ca3b7 | ||
|
|
627a6ee08b | ||
|
|
cf8f1ea43b |
+15
-1
@@ -12,7 +12,7 @@ data/matrix
|
||||
data/heimdall
|
||||
data/pihole/etc-pihole
|
||||
data/pxe
|
||||
data/postgres
|
||||
data/postgres/certs
|
||||
data/wireguard
|
||||
data/vaultwarden
|
||||
data/filebrowser
|
||||
@@ -21,6 +21,20 @@ 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.tar.gz
|
||||
data.7z
|
||||
data.7z.gpg
|
||||
|
||||
@@ -8,17 +8,24 @@ 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
|
||||
# rm data.tgz
|
||||
networks:
|
||||
docker network create --driver overlay --attachable caddy || true
|
||||
docker network create --driver overlay --attachable ldap || true
|
||||
docker network create --driver overlay --attachable postgres || true
|
||||
docker network create --driver overlay --attachable mongo || true
|
||||
docker network create --driver overlay --attachable vpn || true
|
||||
docker network create --driver overlay --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
|
||||
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
|
||||
|
||||
@@ -1,30 +1,56 @@
|
||||
[](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml)
|
||||
<!-- [](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml) -->
|
||||
|
||||
# Docker
|
||||
[](https://swarm.marcpartensky.com)
|
||||
<!-- [](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://marcpartensky.com
|
||||
- https://pandoc.marcpartensky.com
|
||||
- https://ialab.marcpartensky.com
|
||||
- https://notebook.marcpartensky.com
|
||||
- https://searx.marcpartensky.com
|
||||
- https://wordpress.marcpartensky.com
|
||||
- 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://todolist.marcpartensky.com
|
||||
- https://api.todolist.marcpartensky.com
|
||||
- https://uml.marcpartensky.com
|
||||
- https://grafana.marcpartensky.com
|
||||
- https://prometheus.marcpartensky.com
|
||||
- https://swarm.marcpartensky.com
|
||||
- https://auth.marcpartensky.com
|
||||
- https://seafile.marcpartensky.com
|
||||
- https://cloud.marcpartensky.com
|
||||
- https://heimdall.marcpartensky.com
|
||||
- https://homer.marcpartensky.com
|
||||
- https://jellyfin.marcpartensky.com
|
||||
- https://jenkins.marcpartensky.com
|
||||
- https://jupyterlab.marcpartensky.com
|
||||
- https://mail.marcpartensky.com
|
||||
- https://arch.marcpartensky.com
|
||||
- https://matrix.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://glou.marcpartensky.com -->
|
||||
<!-- - https://minecraft.marcpartensky.com -->
|
||||
|
||||
+11
-8
@@ -5,10 +5,13 @@ 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
|
||||
docker-compose --file $@
|
||||
$tool --file $@
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -16,10 +19,10 @@ if [ -f $PWD/docker-compose.yml ]
|
||||
then
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
docker-compose ps
|
||||
$tool ps
|
||||
exit
|
||||
fi
|
||||
docker-compose --file $PWD/docker-compose.yml $@
|
||||
$tool --file $PWD/docker-compose.yml $@
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -29,19 +32,19 @@ then
|
||||
exit
|
||||
fi
|
||||
|
||||
docker-compose $@
|
||||
$tool $@
|
||||
if [ "$1" = "up" ]
|
||||
then
|
||||
if [ "$2" = "-d" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 3}
|
||||
$tool logs -f ${@: 3}
|
||||
else
|
||||
docker-compose logs -f ${@: 2}
|
||||
$tool logs -f ${@: 2}
|
||||
fi
|
||||
elif [ "$1" = "start" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 2}
|
||||
$tool logs -f ${@: 2}
|
||||
elif [ "$1" = "restart" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 2}
|
||||
$tool logs -f ${@: 2}
|
||||
fi
|
||||
|
||||
+4
-1
@@ -1,5 +1,8 @@
|
||||
#!/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
|
||||
@@ -26,7 +29,7 @@ config_files() {
|
||||
|
||||
if [ -z $STACK ]
|
||||
then
|
||||
cmd="docker compose $(config_files) up -d"
|
||||
cmd="$tool $(config_files) up -d --force-recreate"
|
||||
else
|
||||
cmd="docker stack deploy $(config_files) $STACK"
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
bind_host: 0.0.0.0
|
||||
bind_port: 3000
|
||||
beta_bind_port: 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
|
||||
@@ -8,26 +11,15 @@ auth_attempts: 5
|
||||
block_auth_min: 15
|
||||
http_proxy: ""
|
||||
language: ""
|
||||
debug_pprof: false
|
||||
web_session_ttl: 720
|
||||
theme: auto
|
||||
dns:
|
||||
bind_hosts:
|
||||
- 0.0.0.0
|
||||
port: 53
|
||||
statistics_interval: 1
|
||||
querylog_enabled: true
|
||||
querylog_file_enabled: true
|
||||
querylog_interval: 2160h
|
||||
querylog_size_memory: 1000
|
||||
anonymize_client_ip: false
|
||||
protection_enabled: true
|
||||
blocking_mode: default
|
||||
blocking_ipv4: ""
|
||||
blocking_ipv6: ""
|
||||
blocked_response_ttl: 10
|
||||
parental_block_host: family-block.dns.adguard.com
|
||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
||||
ratelimit: 20
|
||||
ratelimit_subnet_len_ipv4: 24
|
||||
ratelimit_subnet_len_ipv6: 56
|
||||
ratelimit_whitelist: []
|
||||
refuse_any: true
|
||||
upstream_dns:
|
||||
@@ -38,8 +30,8 @@ dns:
|
||||
- 149.112.112.10
|
||||
- 2620:fe::10
|
||||
- 2620:fe::fe:10
|
||||
all_servers: false
|
||||
fastest_addr: false
|
||||
fallback_dns: []
|
||||
upstream_mode: load_balance
|
||||
fastest_timeout: 1s
|
||||
allowed_clients: []
|
||||
disallowed_clients: []
|
||||
@@ -57,32 +49,25 @@ dns:
|
||||
bogus_nxdomain: []
|
||||
aaaa_disabled: false
|
||||
enable_dnssec: false
|
||||
edns_client_subnet: false
|
||||
edns_client_subnet:
|
||||
custom_ip: ""
|
||||
enabled: false
|
||||
use_custom: false
|
||||
max_goroutines: 300
|
||||
handle_ddr: true
|
||||
ipset: []
|
||||
ipset_file: ""
|
||||
filtering_enabled: true
|
||||
filters_update_interval: 24
|
||||
parental_enabled: false
|
||||
safesearch_enabled: false
|
||||
safebrowsing_enabled: false
|
||||
safebrowsing_cache_size: 1048576
|
||||
safesearch_cache_size: 1048576
|
||||
parental_cache_size: 1048576
|
||||
cache_time: 30
|
||||
rewrites:
|
||||
- domain: medium.com
|
||||
answer: 0.0.0.0
|
||||
- domain: marc
|
||||
answer: marcpartensky.com
|
||||
blocked_services: []
|
||||
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: ""
|
||||
@@ -98,6 +83,18 @@ tls:
|
||||
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
|
||||
@@ -142,6 +139,40 @@ dhcp:
|
||||
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
|
||||
@@ -150,15 +181,16 @@ clients:
|
||||
dhcp: true
|
||||
hosts: true
|
||||
persistent: []
|
||||
log_file: ""
|
||||
log_max_backups: 0
|
||||
log_max_size: 100
|
||||
log_max_age: 3
|
||||
log_compress: false
|
||||
log_localtime: false
|
||||
verbose: false
|
||||
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: 14
|
||||
schema_version: 28
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
# 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,18 +14,37 @@ network_name = os.environ['DOCKER_NETWORK_NAME']
|
||||
c.SwarmSpawner.network_name = network_name
|
||||
c.SwarmSpawner.remove_containers = True
|
||||
c.SwarmSpawner.debug = True
|
||||
c.SwarmSpawner.image = "jupyterhub/singleuser:latest"
|
||||
# c.SwarmSpawner.image = "jupyterhub/singleuser:latest"
|
||||
# c.SwarmSpawner.image = "marcpartensky/jupyterhub-singleuser"
|
||||
# c.SwarmSpawner.image = os.environ["DOCKER_IMAGE"]
|
||||
# c.SwarmSpawner.host_ip = "juypterhub"
|
||||
# c.SwarmSpawner.container_spec = {
|
||||
# # The command to run inside the service
|
||||
# 'args' : ['/usr/local/bin/start-singleuser.sh'], # (list)
|
||||
# 'Image' : 'juypterhub/singleuser',
|
||||
# # 'mounts' : mounts
|
||||
# }
|
||||
c.SwarmSpawner.host_ip = "0.0.0.0"
|
||||
|
||||
# kill old kernels
|
||||
# https://opendreamkit.org/2018/10/17/jupyterhub-docker/
|
||||
# c.JupyterHub.services = [
|
||||
# {
|
||||
# 'name': 'cull_idle',
|
||||
# 'admin': True,
|
||||
# 'command': 'python3 /srv/jupyterhub/cull_idle_servers.py --timeout=3600'.split(),
|
||||
# },
|
||||
# ]
|
||||
|
||||
# Persistence
|
||||
notebook_dir = os.environ.get('DOCKER_NOTEBOOK_DIR') or '/home/jovyan/work'
|
||||
c.DockerSpawner.notebook_dir = notebook_dir
|
||||
c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir }
|
||||
# notebook_dir = os.environ.get('DOCKER_NOTEBOOK_DIR') or '/home/jovyan/work'
|
||||
# c.DockerSpawner.notebook_dir = notebook_dir
|
||||
# c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir }
|
||||
|
||||
# Authentication
|
||||
# c.JupyterHub.authenticator_class = 'dummyauthenticator.DummyAuthenticator'
|
||||
c.JupyterHub.authenticator_class = 'ldapauthenticator.LDAPAuthenticator'
|
||||
c.LDAPAuthenticator.server_address = "marcpartensky.com"
|
||||
c.LDAPAuthenticator.server_address = "ldap"
|
||||
c.LDAPAuthenticator.use_ssl = True
|
||||
c.LDAPAuthenticator.bind_dn_template = [
|
||||
"uid={username},ou=people,dc=admin,dc=org",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
[ 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
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/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
|
||||
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
#!/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,9 +11,13 @@ 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: ['localhost:9090']
|
||||
- targets: ['node-exporter:9100']
|
||||
|
||||
- job_name: cadvisor
|
||||
scrape_interval: 5s
|
||||
static_configs:
|
||||
- targets:
|
||||
- cadvisor:8080
|
||||
|
||||
+626
-5
@@ -1,7 +1,628 @@
|
||||
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:
|
||||
basic:
|
||||
basicAuth:
|
||||
users:
|
||||
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
|
||||
# usersFile: etc/traefik/.htpasswd
|
||||
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
|
||||
|
||||
+19
-11
@@ -6,15 +6,17 @@ api:
|
||||
# insecure: false # = secure
|
||||
insecure: true
|
||||
dashboard: true
|
||||
debug: true
|
||||
# debug: true
|
||||
debug: false
|
||||
providers:
|
||||
docker:
|
||||
swarmMode: true
|
||||
# swarmMode: false
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false # traefik enabled containers only
|
||||
network: caddy
|
||||
file:
|
||||
filename: dynamic.yml
|
||||
filename: /etc/traefik/dynamic.yml
|
||||
watch: true
|
||||
serversTransport: # enable ssl backend
|
||||
insecureSkipVerify: true
|
||||
certificatesResolvers:
|
||||
@@ -62,7 +64,7 @@ entryPoints:
|
||||
http:
|
||||
redirections:
|
||||
entryPoint:
|
||||
to: websecure
|
||||
# to: websecure
|
||||
scheme: https
|
||||
permanent: true
|
||||
priority: 10
|
||||
@@ -70,23 +72,29 @@ experimental:
|
||||
# http3: true
|
||||
plugins:
|
||||
ldapAuth:
|
||||
moduleName: "github.com/wiltonsr/ldapAuth"
|
||||
version: "v0.0.19"
|
||||
moduleName: github.com/wiltonsr/ldapAuth
|
||||
# version: v0.0.19
|
||||
version: v0.1.10
|
||||
souin:
|
||||
moduleName: "github.com/darkweak/souin"
|
||||
version: "v1.6.22"
|
||||
moduleName: github.com/darkweak/souin
|
||||
version: v1.6.22
|
||||
sablier:
|
||||
moduleName: "github.com/acouvreur/sablier"
|
||||
version: "v1.0.0"
|
||||
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: cn=admin,dc=admin,dc=org
|
||||
# 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 ##
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
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;
|
||||
}
|
||||
Vendored
+13
-18
@@ -1,22 +1,17 @@
|
||||
cloudflare
|
||||
traefik
|
||||
postgres
|
||||
mongo
|
||||
website
|
||||
valentin
|
||||
open-web-calendar
|
||||
adguard
|
||||
servant
|
||||
discord-bot
|
||||
ia
|
||||
docker-api
|
||||
ialab
|
||||
portainer
|
||||
discord
|
||||
authentik
|
||||
nextcloud
|
||||
jenkins
|
||||
seafile
|
||||
matrix
|
||||
etherpad
|
||||
pritunl
|
||||
pritunl-mongo
|
||||
fail2ban
|
||||
ldap
|
||||
ldap-manager
|
||||
vaultwarden
|
||||
authentik
|
||||
sablier
|
||||
minio
|
||||
resume
|
||||
syncthing
|
||||
wger
|
||||
redis
|
||||
terminal
|
||||
|
||||
+24
-21
@@ -7,39 +7,42 @@ services:
|
||||
ports:
|
||||
- 53:53/tcp
|
||||
- 53:53/udp
|
||||
- 67:67/udp
|
||||
- 68:68/udp # adguard home as dhcp
|
||||
# - 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
|
||||
# - 853:853/tcp # dns-over-tls
|
||||
# - 784:784/udp # dns-over-quic
|
||||
# - 853:853/udp
|
||||
# - 8853:8853/udp
|
||||
# - 5443:5443/tcp # dnscrypt server
|
||||
# - 5443:5443/udp
|
||||
volumes:
|
||||
- adguard:/opt/adguardhome/work
|
||||
- ../data/adguard:/opt/adguardhome/conf
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: adguard.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: Host(`adguard.marcpartensky.com`)
|
||||
traefik.http.routers.adguard.entrypoints: websecure
|
||||
traefik.http.routers.adguard.tls.certresolver: tls
|
||||
traefik.http.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
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: Host(`adguard.marcpartensky.com`)
|
||||
traefik.http.routers.adguard.entrypoints: websecure
|
||||
traefik.http.routers.adguard.tls.certresolver: tls
|
||||
traefik.http.services.adguard.loadbalancer.server.port: 3000
|
||||
traefik.http.routers.adguard.middlewares: ldap_auth
|
||||
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:
|
||||
|
||||
@@ -5,16 +5,10 @@ services:
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: agenda.militant.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.agenda_militant.rule: Host(`agenda.militant.marcpartensky.com`)
|
||||
traefik.http.routers.agenda_militant.entrypoints: websecure
|
||||
traefik.http.routers.agenda_militant.tls.certresolver: tls
|
||||
traefik.http.services.agenda_militant.loadbalancer.server.port: 8080
|
||||
deploy:
|
||||
labels:
|
||||
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
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
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
|
||||
@@ -0,0 +1,54 @@
|
||||
# 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
|
||||
+16
-9
@@ -2,6 +2,7 @@ version: "3.9"
|
||||
services:
|
||||
arch:
|
||||
image: marcpartensky/arch:vnc
|
||||
container_name: arch
|
||||
restart: unless-stopped
|
||||
ports: # vnc is shared
|
||||
- "5900:5900"
|
||||
@@ -10,15 +11,21 @@ services:
|
||||
- ldap
|
||||
volumes:
|
||||
- arch:/home/marc
|
||||
deploy:
|
||||
labels:
|
||||
caddy: arch.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.arch.rule: Host(`arch.marcpartensky.com`)
|
||||
traefik.http.routers.arch.entrypoints: websecure
|
||||
traefik.http.routers.arch.tls.certresolver: tls
|
||||
traefik.http.services.arch.loadbalancer.server.port: 8080
|
||||
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
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
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
|
||||
+28
-21
@@ -3,43 +3,50 @@ services:
|
||||
authelia:
|
||||
image: authelia/authelia
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 9091
|
||||
# expose:
|
||||
# - 9091
|
||||
env_file:
|
||||
- ../data/secrets/authelia.env
|
||||
environment:
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/authelia:/config
|
||||
networks:
|
||||
- authelia
|
||||
- caddy
|
||||
- redis
|
||||
- ldap
|
||||
labels:
|
||||
caddy: authelia.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9091}}"
|
||||
# caddy: authelia.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 9091}}"
|
||||
traefik.enable: true
|
||||
traefik.http.routers.authelia.rule: Host(`authelia.marcpartensky.com`)
|
||||
traefik.http.routers.authelia.entrypoints: websecure
|
||||
traefik.http.routers.authelia.tls: true
|
||||
traefik.http.routers.authelia.tls.certresolver: tls
|
||||
traefik.http.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
|
||||
# redis:
|
||||
# image: redis:alpine
|
||||
# restart: unless-stopped
|
||||
# expose:
|
||||
# - 6379
|
||||
# environment:
|
||||
# TZ: France/Paris
|
||||
# volumes:
|
||||
# - authelia_redis:/data
|
||||
# networks:
|
||||
# - authelia
|
||||
|
||||
volumes:
|
||||
authelia_redis:
|
||||
# volumes:
|
||||
# authelia_redis:
|
||||
|
||||
networks:
|
||||
authelia:
|
||||
caddy:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
ldap:
|
||||
external: true
|
||||
|
||||
+61
-44
@@ -2,79 +2,77 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
authentik:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
|
||||
# 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_REDIS__HOST: authentik_redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
|
||||
AUTHENTIK_DEBUG: "true"
|
||||
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
|
||||
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: admin
|
||||
# WORKERS: 2
|
||||
volumes:
|
||||
- authentik_media:/media
|
||||
- authentik_templates:/templates
|
||||
- authentik_geoip:/geoip
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
# ports:
|
||||
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
|
||||
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
|
||||
depends_on:
|
||||
- authentik_postgres
|
||||
- authentik_redis
|
||||
- authentik_worker
|
||||
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: websecure
|
||||
traefik.http.routers.authentik.tls.certresolver: tls
|
||||
traefik.http.services.authentik.loadbalancer.server.port: 9000
|
||||
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
|
||||
|
||||
authentik_postgres:
|
||||
image: postgres:alpine
|
||||
worker:
|
||||
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
|
||||
image: ghcr.io/goauthentik/server:2024.4.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- authentik_postgres:/var/lib/postgresql/data
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
networks:
|
||||
- authentik
|
||||
|
||||
authentik_redis:
|
||||
image: redis:alpine
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- authentik
|
||||
|
||||
authentik_worker:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
# user: root
|
||||
command: worker
|
||||
environment:
|
||||
AUTHENTIK_REDIS__HOST: authentik_redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
|
||||
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
|
||||
- authentik_backups:/backups
|
||||
- /srv/authentik:/backups
|
||||
- authentik_media:/media
|
||||
- authentik_certs:/certs
|
||||
- authentik_templates:/templates
|
||||
- authentik_geoip:/geoip
|
||||
- certs:/certs
|
||||
- templates:/templates
|
||||
- geoip:/geoip
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
networks:
|
||||
- authentik
|
||||
- postgres
|
||||
- redis
|
||||
|
||||
# authentik_geoipupdate:
|
||||
# image: maxmindinc/geoipupdate:latest
|
||||
@@ -88,16 +86,35 @@ services:
|
||||
# # - ../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:
|
||||
authentik_postgres:
|
||||
authentik_backups:
|
||||
# backups:
|
||||
postgres:
|
||||
authentik_media:
|
||||
authentik_certs:
|
||||
authentik_templates:
|
||||
authentik_geoip:
|
||||
certs:
|
||||
templates:
|
||||
geoip:
|
||||
|
||||
networks:
|
||||
authentik:
|
||||
ldap:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
services:
|
||||
autodownloader:
|
||||
image: marcpartensky/autodownloader
|
||||
volumes:
|
||||
- /srv/jellyfin/movies:/movies
|
||||
env_file:
|
||||
- ../data/secrets/autodownloader.env
|
||||
+2
-1
@@ -21,7 +21,8 @@ services:
|
||||
caddy.@ws.1_header: "Upgrade websocket"
|
||||
caddy.0_reverse_proxy: "@ws {{upstreams 61985}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.beef.rule: Host(`beef.marcpartensky.com`)
|
||||
# traefik.http.routers.beef.rule: Host(`beef.marcpartensky.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
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
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
|
||||
@@ -0,0 +1,30 @@
|
||||
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
|
||||
@@ -0,0 +1,50 @@
|
||||
# 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:
|
||||
@@ -0,0 +1,21 @@
|
||||
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
|
||||
@@ -0,0 +1,28 @@
|
||||
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
|
||||
@@ -0,0 +1,21 @@
|
||||
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
|
||||
+24
-19
@@ -1,34 +1,39 @@
|
||||
version: "3.9"
|
||||
# version: "3.9"
|
||||
|
||||
services:
|
||||
bot:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7010:8000"
|
||||
networks:
|
||||
- discord
|
||||
env_file:
|
||||
- ../data/secrets/discord-bot.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
ia:
|
||||
image: marcpartensky/discord-bot
|
||||
# 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/ia.env
|
||||
- ../data/secrets/discord-bot.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
chatgpt:
|
||||
image: xxxbrian/discord_chatgpt_bot:latest
|
||||
env_file:
|
||||
- ../data/secrets/discord_chatgpt.env
|
||||
# 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
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
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
|
||||
@@ -0,0 +1,27 @@
|
||||
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
|
||||
+4
-14
@@ -15,26 +15,16 @@ services:
|
||||
- duplicati_source:/source
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: duplicati.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8200}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: 8200
|
||||
traefik.http.routers.duplicati.rule: >
|
||||
Host(`duplicati.marcpartensky.com`) || Host(`dupliati.marcpartensky.fr`)
|
||||
traefik.http.routers.duplicati.entrypoints: websecure
|
||||
# traefik.http.routers.duplicati.tls.certresolver: tls
|
||||
traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: 8200
|
||||
# traefik.http.routers.duplicati.rule: Host(`duplicati.marcpartensky.com`)
|
||||
traefik.http.routers.duplicati.rule: >
|
||||
Host(`duplicati.marcpartensky.com`) || Host(`duplicati.marcpartensky.fr`)
|
||||
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.tls.certresolver: tls
|
||||
# traefik.http.routers.duplicati.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
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
|
||||
@@ -0,0 +1,34 @@
|
||||
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:
|
||||
+25
-17
@@ -3,28 +3,36 @@ version: "3.9"
|
||||
services:
|
||||
etherpad:
|
||||
image: etherpad/etherpad
|
||||
container_name: etherpad
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ADMIN_PASSWORD: supersecret
|
||||
env_file:
|
||||
- ../data/secrets/etherpad.env
|
||||
# environment:
|
||||
# SETTINGS_PATH: /etc/etherpad/settings.json
|
||||
networks:
|
||||
- caddy
|
||||
- caddy
|
||||
- postgres
|
||||
# volumes:
|
||||
# - data:/opt/etherpad-lite/var
|
||||
# volumes:
|
||||
# - ../data/etherpad/settings.json:/opt/etherpad-lite/settings.json
|
||||
labels:
|
||||
caddy: etherpad.marcpartensky.com, pad.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9001}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.etherpad.rule: Host(`pad.marcpartensky.com`)
|
||||
traefik.http.routers.etherpad.entrypoints: websecure
|
||||
traefik.http.routers.etherpad.tls.certresolver: tls
|
||||
traefik.http.services.etherpad.loadbalancer.server.port: 9001
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.etherpad.rule: >
|
||||
Host(`pad.marcpartensky.com`) && Host(`pad.marcpartensky.fr`)
|
||||
traefik.http.routers.etherpad.entrypoints: websecure
|
||||
traefik.http.routers.etherpad.tls.certresolver: tls
|
||||
traefik.http.services.etherpad.loadbalancer.server.port: 9001
|
||||
# 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
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
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
|
||||
@@ -3,23 +3,26 @@ 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:
|
||||
- data:/data
|
||||
- /home/marc:/data
|
||||
- ../data/filebrowser:/config
|
||||
# environment:
|
||||
# FB_BASEURL: /filebrowser
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.filebrowser.rule: Host(`file.marcpartensky.com`)
|
||||
traefik.http.routers.filebrowser.entrypoints: websecure
|
||||
traefik.http.routers.filebrowser.tls.certresolver: tls
|
||||
traefik.http.services.filebrowser.loadbalancer.server.port: 8080
|
||||
traefik.http.routers.filebrowser.middlewares: ldap_auth
|
||||
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:
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
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
|
||||
+11
-10
@@ -1,7 +1,8 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
focalboard:
|
||||
image: mattermost/focalboard
|
||||
image: docker.io/mattermost/focalboard
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- data:/opt/focalboard/data
|
||||
- pack:/opt/focalboard/pack
|
||||
@@ -11,15 +12,15 @@ services:
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.focalboard.rule: >
|
||||
Host(`board.marcpartensky.com`) || Host(`board.marcpartensky.fr`)
|
||||
traefik.http.routers.focalboard.entrypoints: websecure
|
||||
# traefik.http.routers.focalboard.tls.certresolver: tls
|
||||
traefik.http.services.focalboard.loadbalancer.server.port: 8000
|
||||
# traefik.http.routers.focalboard.middlewares: ldap_auth
|
||||
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:
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
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
|
||||
@@ -0,0 +1,31 @@
|
||||
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,19 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitea_postgres:
|
||||
image: postgres
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/gitea.env
|
||||
networks:
|
||||
- caddy
|
||||
- gitea
|
||||
volumes:
|
||||
- gitea_postgres:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
gitea_postgres:
|
||||
|
||||
networks:
|
||||
gitea:
|
||||
+11
-10
@@ -3,6 +3,7 @@ version: "3.9"
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.14.6
|
||||
container_name: gitea
|
||||
restart: unless-stopped
|
||||
# user: git
|
||||
# environment:
|
||||
@@ -28,16 +29,16 @@ services:
|
||||
# traefik.http.routers.gitea.entrypoints: websecure
|
||||
# traefik.http.routers.gitea.tls.certresolver: tls
|
||||
# traefik.http.services.gitea.loadbalancer.server.port: 3000
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.gitea.rule: >
|
||||
# Host(`git.marcpartensky.com`) || Host(`git.marcpartensky.fr`)
|
||||
traefik.http.routers.gitea.rule: Host(`git.marcpartensky.fr`)
|
||||
traefik.http.routers.gitea.entrypoints: websecure
|
||||
# traefik.http.routers.gitea.tls.certresolver: tls
|
||||
traefik.http.routers.gitea.tls.certresolver: cloudflare
|
||||
traefik.http.services.gitea.loadbalancer.server.port: 3000
|
||||
# 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:
|
||||
|
||||
+25
-23
@@ -2,7 +2,8 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
gitlab:
|
||||
image: gitlab/gitlab-ee:latest
|
||||
container_name: gitlab
|
||||
image: gitlab/gitlab-ce:latest
|
||||
restart: unless-stopped
|
||||
hostname: gitlab.marcpartensky.com
|
||||
environment:
|
||||
@@ -18,33 +19,34 @@ services:
|
||||
- gitlab_log:/var/log/gitlab
|
||||
- gitlab_data:/var/opt/gitlab
|
||||
labels:
|
||||
caddy: gitlab.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams http 80}}"
|
||||
# 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"
|
||||
# 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
|
||||
# deploy:
|
||||
# mode: replicated
|
||||
# replicas: 2
|
||||
|
||||
volumes:
|
||||
gitlab_config:
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
gpg:
|
||||
image: marcpartensky/gpg
|
||||
volumes:
|
||||
- /srv:/srv
|
||||
- ../data/gpg:/root/keys
|
||||
@@ -0,0 +1,39 @@
|
||||
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
|
||||
+19
-12
@@ -3,6 +3,7 @@ version: "3.9"
|
||||
services:
|
||||
heimdall:
|
||||
image: lscr.io/linuxserver/heimdall:latest
|
||||
container_name: heimdall
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PUID: 1000
|
||||
@@ -12,26 +13,32 @@ services:
|
||||
- ../data/heimdall:/config
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
labels:
|
||||
caddy: heimdall.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams}}"
|
||||
# caddy: heimdall.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
|
||||
traefik.http.routers.heimdall.entrypoints: websecure
|
||||
traefik.http.routers.heimdall.tls: "true"
|
||||
traefik.http.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
|
||||
# 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
|
||||
|
||||
+13
-10
@@ -2,6 +2,7 @@ version: "3.9"
|
||||
services:
|
||||
homer:
|
||||
image: b4bz/homer
|
||||
container_name: homer
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- homer:/www/assets
|
||||
@@ -9,16 +10,18 @@ services:
|
||||
INIT_ASSETS: 1 # default
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: homer.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.homer.rule: Host(`homer.marcpartensky.com`)
|
||||
traefik.http.routers.homer.entrypoints: websecure
|
||||
traefik.http.routers.homer.tls.certresolver: tls
|
||||
traefik.http.services.homer.loadbalancer.server.port: 8080
|
||||
# labels:
|
||||
# caddy: homer.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.homer.rule: >
|
||||
# Host(`homer.marcpartensky.com`) ||
|
||||
# Host(`homer.marcpartensky.fr`)
|
||||
# traefik.http.routers.homer.entrypoints: websecure
|
||||
# traefik.http.routers.homer.tls.certresolver: tls
|
||||
# traefik.http.services.homer.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
homer:
|
||||
|
||||
+6
-4
@@ -1,10 +1,12 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
hydra:
|
||||
image: marcpartensky/hydra
|
||||
network: host
|
||||
command: -P /rockyou.txt -L /usernames.txt ssh://192.168.252.84
|
||||
workdir: /root
|
||||
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
|
||||
|
||||
+5
-3
@@ -9,6 +9,7 @@ services:
|
||||
TZ: Europe/Paris
|
||||
volumes:
|
||||
- ipfs:/config
|
||||
- /srv/:/srv
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
@@ -28,8 +29,9 @@ services:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.com`)
|
||||
traefik.http.routers.ipfs.rule: >
|
||||
Host(`ipfs.marcpartensky.com`) || Host(`ipfs.marcpartensky.fr`)
|
||||
traefik.http.routers.ipfs.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
|
||||
@@ -43,7 +45,7 @@ services:
|
||||
# traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
|
||||
# traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
|
||||
#
|
||||
traefik.http.routers.service_nextcloud.middlewares: custom_repath
|
||||
traefik.http.routers.ipfs.middlewares: custom_repath
|
||||
traefik.http.middlewares.custom_repath.replacepathregex.regex: ^/$$
|
||||
traefik.http.middlewares.custom_repath.replacepathregex.replacement: /webui
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
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
|
||||
+15
-14
@@ -1,36 +1,37 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
jellyfin:
|
||||
image: jellyfin/jellyfin:latest
|
||||
image: docker.io/jellyfin/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
environment:
|
||||
# PUID: 1000
|
||||
# PGID: 1000
|
||||
# TZ: Europe/Paris
|
||||
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.fr
|
||||
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.com
|
||||
devices:
|
||||
- /dev/dri
|
||||
volumes:
|
||||
- config:/config
|
||||
- cache:/cache
|
||||
- media:/media
|
||||
- movies:/movies
|
||||
- musics:/musics
|
||||
- photos:/photos
|
||||
- /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
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.jellyfin.rule: Host(`jellyfin.marcpartensky.com`)
|
||||
traefik.http.routers.jellyfin.rule: Host(`jellyfin.marcpartensky.fr`)
|
||||
traefik.http.routers.jellyfin.entrypoints: websecure
|
||||
traefik.http.routers.jellyfin.tls.certresolver: tls
|
||||
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
|
||||
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:
|
||||
|
||||
@@ -3,6 +3,7 @@ version: "3.9"
|
||||
services:
|
||||
jenkins:
|
||||
image: jenkins/jenkins:lts-jdk11
|
||||
container_name: jenkins
|
||||
user: root
|
||||
volumes:
|
||||
- jenkins:/var/jenkins_home
|
||||
@@ -11,14 +12,14 @@ services:
|
||||
- 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
|
||||
# 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:
|
||||
|
||||
+12
-5
@@ -9,12 +9,15 @@ services:
|
||||
- ../data/jupyterhub/jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py
|
||||
# - jupyterhub:/srv/jupyterhub
|
||||
networks:
|
||||
- caddy
|
||||
- jupyterhub
|
||||
- ldap
|
||||
- caddy
|
||||
- jupyterhub
|
||||
environment:
|
||||
DOCKER_JUPYTER_IMAGE: marcpartensky/jupyterlab
|
||||
DOCKER_NETWORK_NAME: jupyterhub
|
||||
# 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}}"
|
||||
@@ -23,10 +26,12 @@ services:
|
||||
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(`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
|
||||
@@ -37,3 +42,5 @@ networks:
|
||||
driver: overlay
|
||||
caddy:
|
||||
external: true
|
||||
ldap:
|
||||
external: true
|
||||
|
||||
+29
-12
@@ -2,25 +2,42 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
jupyterlab:
|
||||
image: jupyter/datascience-notebook:latest
|
||||
restart: unless-stopped
|
||||
# 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/jovyan
|
||||
# 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
|
||||
|
||||
@@ -10,18 +10,26 @@ services:
|
||||
- caddy
|
||||
environment:
|
||||
HTTP_PORT: 80
|
||||
GRPC_PORT: 9090
|
||||
|
||||
LDAP_HOST: "ldap"
|
||||
LDAP_PORT: 636
|
||||
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.fr
|
||||
# DAP_BASE_DN: dc=admin,dc=org
|
||||
LDAP_DOMAIN: marcpartensky.com
|
||||
LDAP_BASE_DN: dc=marcpartensky,dc=com
|
||||
|
||||
# DEFAULT_ADMIN_USERNAME: ldapadmin
|
||||
# DEFAULT_ADMIN_PASSWORD: changeme
|
||||
# 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"
|
||||
@@ -31,15 +39,23 @@ services:
|
||||
AUDIENCE: marcpartensky.com
|
||||
GENERATE: "true" # ports:
|
||||
# - 9090:9090
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
|
||||
traefik.http.routers.ldap_manager_go.rule: >
|
||||
Host(`ldapgo.marcpartensky.com`) || Host(`ldapgo.marcpartensky.fr`)
|
||||
traefik.http.routers.ldap_manager_go.entrypoints: websecure
|
||||
traefik.http.routers.ldap_manager_go.tls.certresolver: tls
|
||||
traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
|
||||
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:
|
||||
|
||||
+26
-23
@@ -5,38 +5,41 @@ services:
|
||||
image: wheelybird/ldap-user-manager:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
SERVER_HOSTNAME: auth.marcpartensy.com
|
||||
LDAP_URI: ldap://ldap
|
||||
LDAP_BASE_DN: dc=admin,dc=org
|
||||
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: cn=admin,dc=admin,dc=org
|
||||
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
|
||||
# depends_on:
|
||||
# - ldap
|
||||
networks:
|
||||
- ldap
|
||||
- caddy
|
||||
# labels:
|
||||
# caddy: auth.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.ldap_manager.rule: Host(`auth.marcpartensky.com`)
|
||||
# traefik.http.routers.ldap_manager.entrypoints: websecure
|
||||
# traefik.http.routers.ldap_manager.tls.certresolver: tls
|
||||
# traefik.http.services.ldap_manager.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ldap_manager.rule: >
|
||||
Host(`auth.marcpartensky.com`) || Host(`auth.marcpartensky.fr`)
|
||||
traefik.http.routers.ldap_manager.entrypoints: websecure
|
||||
# traefik.http.routers.ldap_manager.tls.certresolver: tls
|
||||
traefik.http.routers.ldap_manager.tls.certresolver: cloudflare
|
||||
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
|
||||
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:
|
||||
|
||||
+9
-2
@@ -2,13 +2,13 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
ldap:
|
||||
image: osixia/openldap
|
||||
image: docker.io/osixia/openldap:1.3.0
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
LDAP_ORGANISATION: admin
|
||||
LDAP_DOMAIN: admin.org
|
||||
LDAP_RFC2307BIS_SCHEMA: "true"
|
||||
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
|
||||
LDAP_REMOVE_CONFIG_AFTER_SETUP: "false"
|
||||
LDAP_TLS_VERIFY_CLIENT: never
|
||||
env_file:
|
||||
- ../data/secrets/ldap.env
|
||||
@@ -20,6 +20,13 @@ services:
|
||||
- ldap:/var/lib/ldap
|
||||
- ldap_slapd:/etc/ldap/slapd.d
|
||||
|
||||
|
||||
backup:
|
||||
image: docker.io/osixia/openldap-backup:1.5.0
|
||||
environment:
|
||||
LDAP_BACKUP_CONFIG_CRON_EXP: "0 5 * * *"
|
||||
LDAP_BACKUP_DATA_CRON_EXP: "0 5 * * *"
|
||||
|
||||
volumes:
|
||||
ldap:
|
||||
ldap_slapd:
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
logseq:
|
||||
image: ghcr.io/logseq/logseq-webapp:latest
|
||||
# volumes:
|
||||
networks:
|
||||
- traefik
|
||||
- postgres
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.focalboard.rule: >
|
||||
# Host(`board.marcpartensky.com`) || Host(`board.marcpartensky.fr`)
|
||||
traefik.http.routers.logseq.service: logseq
|
||||
traefik.http.routers.logseq.rule: >
|
||||
Host(`logseq.marcpartensky.com`)
|
||||
traefik.http.routers.logseq.tls: true
|
||||
traefik.http.routers.logseq.entrypoints: web-secure
|
||||
traefik.http.routers.logseq.tls.certresolver: default
|
||||
traefik.http.services.logseq.loadbalancer.server.port: 80
|
||||
# traefik.http.routers.focalboard.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
data:
|
||||
pack:
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
traefik:
|
||||
external: true
|
||||
@@ -0,0 +1,226 @@
|
||||
# This file is auto-generated by the Mailu configuration wizard.
|
||||
# Please read the documentation before attempting any change.
|
||||
# Generated for compose flavor
|
||||
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
|
||||
# External dependencies
|
||||
# redis:
|
||||
# image: redis:alpine
|
||||
# restart: always
|
||||
# volumes:
|
||||
# - "/srv/mailu/redis:/data"
|
||||
# depends_on:
|
||||
# - resolver
|
||||
# dns:
|
||||
# - 192.168.203.254
|
||||
|
||||
# Core services
|
||||
mailu:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/mailu.env
|
||||
logging:
|
||||
driver: journald
|
||||
options:
|
||||
tag: mailu-front
|
||||
ports:
|
||||
- "25:25"
|
||||
- "465:465"
|
||||
- "587:587"
|
||||
- "110:110"
|
||||
- "995:995"
|
||||
- "143:143"
|
||||
- "993:993"
|
||||
# - "127.0.0.1:80:80"
|
||||
# - "127.0.0.1:443:443"
|
||||
# ports:
|
||||
# - "127.0.0.1:25:25"
|
||||
# - "127.0.0.1:465:465"
|
||||
# - "127.0.0.1:587:587"
|
||||
# - "127.0.0.1:110:110"
|
||||
# - "127.0.0.1:995:995"
|
||||
# - "127.0.0.1:143:143"
|
||||
# - "127.0.0.1:993:993"
|
||||
# - "127.0.0.1:80:80"
|
||||
# - "127.0.0.1:443:443"
|
||||
networks:
|
||||
- mailu
|
||||
- radicale
|
||||
- caddy
|
||||
volumes:
|
||||
- /srv/mailu/certs:/certs
|
||||
- /srv/mailu/overrides/nginx:/overrides:ro
|
||||
depends_on:
|
||||
- resolver
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.mailu.rule: >
|
||||
# Host(`mail.marcpartensky.com`)
|
||||
# traefik.http.routers.mailu.entrypoints: web
|
||||
# traefik.http.services.mailu.loadbalancer.server.port: 80
|
||||
|
||||
resolver:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-resolver
|
||||
env_file: ../data/secrets/mailu.env
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
mailu:
|
||||
ipv4_address: 192.168.203.254
|
||||
|
||||
admin:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-admin
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/mailu.env
|
||||
logging:
|
||||
driver: journald
|
||||
options:
|
||||
tag: mailu-admin
|
||||
volumes:
|
||||
- /srv/mailu/data:/data
|
||||
- /srv/mailu/dkim:/dkim
|
||||
depends_on:
|
||||
- resolver
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
networks:
|
||||
- redis
|
||||
- mailu
|
||||
- postgres
|
||||
|
||||
imap:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-imap
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/mailu.env
|
||||
logging:
|
||||
driver: journald
|
||||
options:
|
||||
tag: mailu-imap
|
||||
volumes:
|
||||
- /srv/mailu/mail:/mail
|
||||
- /srv/mailu/overrides/dovecot:/overrides:ro
|
||||
depends_on:
|
||||
- mailu
|
||||
- resolver
|
||||
networks:
|
||||
- mailu
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
|
||||
smtp:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-smtp
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/mailu.env
|
||||
logging:
|
||||
driver: journald
|
||||
options:
|
||||
tag: mailu-smtp
|
||||
volumes:
|
||||
- /srv/mailu/mailqueue:/queue
|
||||
- /srv/mailu/overrides/postfix:/overrides:ro
|
||||
depends_on:
|
||||
- mailu
|
||||
- resolver
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
networks:
|
||||
- mailu
|
||||
|
||||
oletools:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-oletools
|
||||
hostname: oletools
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- noinet
|
||||
- mailu
|
||||
- postgres
|
||||
depends_on:
|
||||
- resolver
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
|
||||
antispam:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-antispam
|
||||
hostname: antispam
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/mailu.env
|
||||
logging:
|
||||
driver: journald
|
||||
options:
|
||||
tag: mailu-antispam
|
||||
networks:
|
||||
- mailu
|
||||
- noinet
|
||||
- redis
|
||||
- postgres
|
||||
volumes:
|
||||
- /srv/mailu/filter:/var/lib/rspamd
|
||||
- /srv/mailu/overrides/rspamd:/overrides:ro
|
||||
depends_on:
|
||||
- mailu
|
||||
- oletools
|
||||
- resolver
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
|
||||
# Optional services
|
||||
|
||||
webdav:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-webdav
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/mailu/dav:/data
|
||||
networks:
|
||||
- radicale
|
||||
- postgres
|
||||
|
||||
fetchmail:
|
||||
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2.0}
|
||||
container_name: mailu-fetchmail
|
||||
restart: unless-stopped
|
||||
env_file: ../data/secrets/mailu.env
|
||||
volumes:
|
||||
- /srv/mailu/data/fetchmail:/data
|
||||
depends_on:
|
||||
- admin
|
||||
- smtp
|
||||
- imap
|
||||
- resolver
|
||||
dns:
|
||||
- 192.168.203.254
|
||||
networks:
|
||||
- mailu
|
||||
|
||||
# Webmail
|
||||
|
||||
networks:
|
||||
mailu:
|
||||
driver: bridge
|
||||
ipam:
|
||||
# driver: default
|
||||
config:
|
||||
- subnet: 192.168.203.0/24
|
||||
|
||||
caddy:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
radicale:
|
||||
driver: bridge
|
||||
noinet:
|
||||
driver: bridge
|
||||
internal: true
|
||||
+104
-14
@@ -4,6 +4,7 @@ services:
|
||||
matrix:
|
||||
image: matrixdotorg/synapse
|
||||
restart: unless-stopped
|
||||
user: "1337:1337"
|
||||
# environment:
|
||||
# SYNAPSE_REPORT_STATS: "no"
|
||||
# SYNAPSE_SERVER_NAME: matrix.marcpartensky.com
|
||||
@@ -14,7 +15,8 @@ services:
|
||||
- ../data/matrix:/data
|
||||
# - matrix:/data
|
||||
networks:
|
||||
- caddy
|
||||
- caddy
|
||||
- postgres
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"]
|
||||
interval: 15s
|
||||
@@ -22,22 +24,110 @@ services:
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
labels:
|
||||
caddy: matrix.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8008}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.matrix.rule: Host(`matrix.marcpartensky.com`)
|
||||
traefik.http.routers.matrix.entrypoints: websecure
|
||||
traefik.http.routers.matrix.tls.certresolver: tls
|
||||
traefik.http.services.matrix.loadbalancer.server.port: 8008
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.matrix.rule: >
|
||||
Host(`matrix.marcpartensky.com`) || Host(`matrix.marcpartensky.fr`)
|
||||
traefik.http.routers.matrix.entrypoints: websecure
|
||||
traefik.http.routers.matrix.tls.certresolver: tls
|
||||
traefik.http.services.matrix.loadbalancer.server.port: 8008
|
||||
traefik.http.routers.matrix.entrypoints: web
|
||||
# traefik.http.routers.matrix.tls.certresolver: tls
|
||||
# traefik.http.services.matrix.loadbalancer.server.port: 8008
|
||||
# traefik.http.routers.to-matrix-wellknown.rule: Host(`marcpartensky.com`) && PathPrefix(`/.well-known/matrix`)"
|
||||
# traefik.http.routers.to-matrix-wellknown.tls: true"
|
||||
# traefik.http.routers.to-matrix-wellknown.tls.certresolver: letsencrypt"
|
||||
# traefik.http.routers.to-matrix-wellknown.middlewares: cors-headers@docker"
|
||||
|
||||
# https://community.traefik.io/t/setting-up-conduit-matrix-server-with-traefik/19394
|
||||
well-known:
|
||||
image: nginx:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ../data/dendrite/well-known/conf:/etc/nginx/conf.d # the config to serve the .well-known/matrix files
|
||||
- ../data/dendrite/well-known/www:/var/www/ # location of the client and server .well-known-files
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.well-known.loadbalancer.server.port: 80
|
||||
traefik.http.routers.well-known.rule: (Host(`marcpartensky.com`) && PathPrefix(`/.well-known`)) || (Host(`marcpartensky.com`) && PathPrefix(`/.well-known`))
|
||||
traefik.http.routers.well-known.entrypoints: web
|
||||
# traefik.http.routers.well-known.rule: Host(`marcpartensky.com`) && PathPrefix(`/.well-known/matrix`)"
|
||||
# traefik.http.routers.to-matrix-wellknown.tls: true"
|
||||
# traefik.http.routers.to-matrix-wellknown.tls.certresolver: letsencrypt"
|
||||
|
||||
whatsapp:
|
||||
container_name: whatsapp
|
||||
image: dock.mau.dev/mautrix/whatsapp
|
||||
restart: unless-stopped
|
||||
# user: "1337:1337"
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/whatsapp:/data
|
||||
meta: # instagram
|
||||
container_name: meta
|
||||
image: dock.mau.dev/mautrix/meta
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/meta:/data
|
||||
# facebook: # messenger
|
||||
# container_name: facebook
|
||||
# image: dock.mau.dev/mautrix/facebook
|
||||
# restart: unless-stopped
|
||||
# networks:
|
||||
# - postgres
|
||||
# volumes:
|
||||
# - ../data/matrix/facebook:/data
|
||||
signal:
|
||||
container_name: signal
|
||||
image: dock.mau.dev/mautrix/signal
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/signal:/data
|
||||
discord:
|
||||
container_name: discord
|
||||
image: dock.mau.dev/mautrix/discord
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/discord:/data
|
||||
slack:
|
||||
container_name: slack
|
||||
image: dock.mau.dev/mautrix/slack
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/slack:/data
|
||||
twitter:
|
||||
container_name: twitter
|
||||
image: dock.mau.dev/mautrix/twitter
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/twitter:/data
|
||||
gmessages:
|
||||
container_name: gmessages
|
||||
image: dock.mau.dev/mautrix/gmessages
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/gmessages:/data
|
||||
messenger:
|
||||
container_name: messenger
|
||||
image: dock.mau.dev/mautrix/meta
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- ../data/matrix/messenger:/data
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
backups:
|
||||
backup:
|
||||
image: itzg/mc-backup
|
||||
environment:
|
||||
BACKUP_INTERVAL: "1d"
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
SERVE_PORT: 25565
|
||||
RCON_HOST: minecraft
|
||||
RCON_PORT: 25575
|
||||
PAUSE_IF_NO_PLAYER: true
|
||||
PAUSE_IF_NO_PLAYER: "true"
|
||||
PLAYERS_ONLINE_CHECK_INTERVAL: 1h
|
||||
TZ: Europe/Paris
|
||||
DEST_DIR: /backups
|
||||
@@ -18,6 +18,6 @@ services:
|
||||
- /srv/minecraft/champi:/data:ro
|
||||
# use a host attached directory so that it in turn can be backed up
|
||||
# to external/cloud storage
|
||||
- ./mc-backups:/backups
|
||||
- /srv/mcbackups:/backups
|
||||
# share network namespace with server to simplify rcon access
|
||||
# network_mode: "service:mc"
|
||||
|
||||
+18
-16
@@ -3,6 +3,7 @@ version: "3.9"
|
||||
services:
|
||||
mcmyadmin:
|
||||
image: tekgator/docker-mcmyadmin:latest
|
||||
container_name: mcmyadmin
|
||||
restart: unless-stopped
|
||||
# environment:
|
||||
# PUID: 1001
|
||||
@@ -15,22 +16,23 @@ services:
|
||||
networks:
|
||||
- minecraft
|
||||
- caddy
|
||||
labels:
|
||||
caddy: mcadmin.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
authorize.with: marc
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.minecraft.rule: Host(`mcadmin.marcpartensky.com`)
|
||||
traefik.http.routers.minecraft.entrypoints: websecure
|
||||
traefik.http.routers.minecraft.tls.certresolver: tls
|
||||
traefik.http.services.minecraft.loadbalancer.server.port: 8080
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.minecraft.rule: Host(`mcadmin.marcpartensky.com`)
|
||||
traefik.http.routers.minecraft.entrypoints: websecure
|
||||
traefik.http.routers.minecraft.tls.certresolver: tls
|
||||
traefik.http.services.minecraft.loadbalancer.server.port: 8080
|
||||
# labels:
|
||||
# caddy: mcadmin.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
# authorize.with: marc
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.com`)
|
||||
# traefik.http.routers.mcmyadmin.entrypoints: websecure
|
||||
# traefik.http.routers.mcmyadmin.tls.certresolver: tls
|
||||
# traefik.http.services.mcmyadmin.loadbalancer.server.port: 8080
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# # traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.com`)
|
||||
# traefik.http.routers.mcmyadmin.rule: Host(`mcmyadmin.marcpartensky.fr`)
|
||||
# traefik.http.routers.mcmyadmin.entrypoints: websecure
|
||||
# traefik.http.routers.mcmyadmin.tls.certresolver: tls
|
||||
# traefik.http.services.mcmyadmin.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
mcmyadmin:
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
mermaid:
|
||||
image: supinf/mermaid-editor
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.mermaid.rule: >
|
||||
Host(`mermaid.marcpartensky.com`)
|
||||
traefik.http.routers.mermaid.entrypoints: web
|
||||
traefik.http.services.mermaid.loadbalancer.server.port: 80
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,7 +1,7 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
minecraft_champi:
|
||||
server:
|
||||
image: itzg/minecraft-server
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
@@ -29,6 +29,29 @@ services:
|
||||
networks:
|
||||
- minecraft
|
||||
|
||||
backup:
|
||||
image: itzg/mc-backup
|
||||
environment:
|
||||
BACKUP_INTERVAL: "1d"
|
||||
# instead of network_mode below, could declare RCON_HOST
|
||||
SERVE_PORT: 25565
|
||||
RCON_HOST: server
|
||||
RCON_PORT: 25575
|
||||
PAUSE_IF_NO_PLAYER: "true"
|
||||
PLAYERS_ONLINE_CHECK_INTERVAL: 1h
|
||||
TZ: Europe/Paris
|
||||
DEST_DIR: /backups
|
||||
networks:
|
||||
- minecraft
|
||||
volumes:
|
||||
# mount the same volume used by server, but read-only
|
||||
- /srv/minecraft/champi:/data:ro
|
||||
# use a host attached directory so that it in turn can be backed up
|
||||
# to external/cloud storage
|
||||
- /srv/mcbackups:/backups
|
||||
# share network namespace with server to simplify rcon access
|
||||
# network_mode: "service:mc"
|
||||
|
||||
# volumes:
|
||||
# minecraft:
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
minidlna:
|
||||
image: geekduck/minidlna
|
||||
volumes:
|
||||
- music:/opt/Music
|
||||
- videos:/opt/Videos
|
||||
- pictures:/opt/Pictures
|
||||
- db:/var/cache/minidlna
|
||||
# - ../data/minidlna/minidlna.conf:/etc/minidlna.conf
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.minidlna.loadbalancer.server.port: 8200
|
||||
traefik.http.routers.minidlna.rule: Host(`minidlna.marcpartensky.fr`)
|
||||
# traefik.http.routers.minidlna.rule: >
|
||||
# Host(`minidlna.marcpartensky.com`) || Host(`minidlna.marcpartensky.fr`)
|
||||
traefik.http.routers.minidlna.entrypoints: websecure
|
||||
# traefik.http.routers.minidlna.tls.certresolver: tls
|
||||
traefik.http.routers.minidlna.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.minidlna.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
music:
|
||||
videos:
|
||||
pictures:
|
||||
db:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,28 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
minio:
|
||||
image: docker.io/minio/minio
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
- ldap
|
||||
volumes:
|
||||
- /srv/minio:/data
|
||||
env_file:
|
||||
- ../data/secrets/minio.env
|
||||
command: server /data --console-address ":9001"
|
||||
healthcheck:
|
||||
test: ["CMD", "mc", "ready", "local"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
labels:
|
||||
traefik.enable: true
|
||||
traefik.http.routers.minio.rule: Host(`storage.marcpartensky.com`)
|
||||
traefik.http.routers.minio.entrypoints: web
|
||||
traefik.http.services.minio.loadbalancer.server.port: 9001
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,29 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
mistral:
|
||||
image: ghcr.io/mistralai/mistral-src/vllm:latest
|
||||
networks:
|
||||
- caddy
|
||||
environment:
|
||||
HF_TOKEN: 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
|
||||
# runtime: rocm
|
||||
command: >
|
||||
--host 0.0.0.0
|
||||
--model mistralai/Mistral-7B-Instruct-v0.2
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.mistgral.rule: >
|
||||
Host(`mistral.marcpartensky.com`)
|
||||
traefik.http.routers.mistgral.entrypoints: web
|
||||
# traefik.http.routers.mistgral.tls.certresolver: tls
|
||||
traefik.http.services.mistgral.loadbalancer.server.port: 8000
|
||||
# traefik.http.routers.mistgral.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
data:
|
||||
pack:
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
+19
-12
@@ -5,7 +5,9 @@ services:
|
||||
image: mongo
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- mongo:/data/db
|
||||
- ../data/mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
|
||||
- ../data/mongo/config:/etc/mongo
|
||||
- /srv/mongo:/data/db
|
||||
networks:
|
||||
- mongo
|
||||
ports:
|
||||
@@ -17,6 +19,7 @@ services:
|
||||
|
||||
express:
|
||||
image: mongo-express
|
||||
container_name: mongo-express
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
|
||||
@@ -32,18 +35,22 @@ services:
|
||||
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.routers.mongo.entrypoints: websecure
|
||||
traefik.http.routers.mongo.entrypoints: web
|
||||
# traefik.http.routers.mongo.tls.certresolver: tls
|
||||
traefik.http.services.mongo.loadbalancer.server.port: 8081
|
||||
traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
|
||||
traefik.http.routers.mongo.entrypoints: websecure
|
||||
traefik.http.routers.mongo.tls.certresolver: tls
|
||||
traefik.http.services.mongo.loadbalancer.server.port: 8081
|
||||
traefik.http.routers.mongo.middlewares: ldap_auth
|
||||
# traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# # traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
|
||||
# traefik.http.routers.mongo.rule: >
|
||||
# Host(`mongo.marcpartensky.fr`) ||
|
||||
# Host(`mongo.marcpartensky.com`)
|
||||
# traefik.http.routers.mongo.entrypoints: websecure
|
||||
# traefik.http.routers.mongo.tls.certresolver: tls
|
||||
# traefik.http.services.mongo.loadbalancer.server.port: 8081
|
||||
# traefik.http.routers.mongo.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
mongo:
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
moodle:
|
||||
image: moodlehq/moodleapp
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
# - postgres
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.moodle.rule: >
|
||||
Host(`moodle.marcpartensky.com`)
|
||||
traefik.http.routers.moodle.entrypoints: web
|
||||
traefik.http.services.moodle.loadbalancer.server.port: 80
|
||||
|
||||
networks:
|
||||
# postgres:
|
||||
# external: true
|
||||
caddy:
|
||||
external: true
|
||||
+24
-21
@@ -2,39 +2,41 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
image: nextcloud
|
||||
# image: docker.io/nextcloud:latest
|
||||
image: docker.io/nextcloud:stable
|
||||
restart: unless-stopped
|
||||
# user: "1001:1001"
|
||||
volumes:
|
||||
# - nextcloud:/var/www/html
|
||||
- data:/var/www/html/data
|
||||
- config:/var/www/html/config
|
||||
- themes:/var/www/html/themes
|
||||
- apps:/var/www/html/custom_apps
|
||||
- /srv/nextcloud:/var/www/html
|
||||
# - ../data/nextcloud/config:/var/www/html/config
|
||||
# - ../data/nextcloud/version.php:/var/www/html/version.php
|
||||
# - /srv/nextcloud/config:/var/www/html/config
|
||||
# - /srv/nextcloud/data:/var/www/html/data
|
||||
# - /srv/nextcloud/themes:/var/www/html/themes
|
||||
# - /srv/nextcloud/apps:/var/www/html/custom_apps
|
||||
# - ../data/nextcloud/test:/test
|
||||
|
||||
env_file:
|
||||
- ../data/secrets/nextcloud.env
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
- ldap
|
||||
- nextcloud
|
||||
# depends_on:
|
||||
# - nextcloud_mariadb
|
||||
labels:
|
||||
caddy: cloud.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams http 80}}"
|
||||
# caddy: cloud.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams http 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nextcloud.rule: Host(`cloud.marcpartensky.com`)
|
||||
traefik.http.routers.nextcloud.entrypoints: websecure
|
||||
traefik.http.routers.nextcloud.tls.certresolver: tls
|
||||
traefik.http.routers.nextcloud.rule: >
|
||||
Host(`cloud.marcpartensky.com`)
|
||||
traefik.http.routers.nextcloud.entrypoints: web
|
||||
# traefik.http.routers.nextcloud.tls.certresolver: tls
|
||||
traefik.http.services.nextcloud.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nextcloud.rule: >
|
||||
Host(`cloud.marcpartensky.com`) && Host(`cloud.marcpartensky.fr`)
|
||||
traefik.http.routers.nextcloud.entrypoints: websecure
|
||||
traefik.http.routers.nextcloud.tls.certresolver: tls
|
||||
traefik.http.services.nextcloud.loadbalancer.server.port: 80
|
||||
|
||||
# healthcheck:
|
||||
# test: ["CMD", "curl", "-f", "localhost:80/ocs/v2.php/apps/serverinfo/api/v1/info"]
|
||||
|
||||
volumes:
|
||||
data:
|
||||
@@ -43,10 +45,11 @@ volumes:
|
||||
apps:
|
||||
|
||||
networks:
|
||||
nextcloud:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
|
||||
+38
-4
@@ -7,14 +7,14 @@ services:
|
||||
env_file:
|
||||
- ../data/secrets/numeris.env
|
||||
links:
|
||||
- numeris:db
|
||||
- mysql:db
|
||||
networks:
|
||||
- caddy
|
||||
- numeris
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.phpmyadmin.rule: Host(`phpmyadmin.numeris.marcpartensky.com`)
|
||||
traefik.http.routers.phpmyadmin.rule: Host(`phpmyadmin.numeris.marcpartensky.fr`)
|
||||
traefik.http.routers.phpmyadmin.entrypoints: websecure
|
||||
traefik.http.routers.phpmyadmin.tls.certresolver: tls
|
||||
traefik.http.services.phpmyadmin.loadbalancer.server.port: 80
|
||||
@@ -42,7 +42,8 @@ services:
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.com`)
|
||||
# traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.com`)
|
||||
traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.fr`)
|
||||
traefik.http.routers.back.entrypoints: websecure
|
||||
traefik.http.routers.back.tls.certresolver: tls
|
||||
traefik.http.services.back.loadbalancer.server.port: 80
|
||||
@@ -54,7 +55,40 @@ services:
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.front.rule: Host(`numeris.marcpartensky.com`)
|
||||
# traefik.http.routers.front.rule: Host(`numeris.marcpartensky.com`)
|
||||
traefik.http.routers.front.rule: Host(`numeris.marcpartensky.fr`)
|
||||
traefik.http.routers.front.entrypoints: websecure
|
||||
traefik.http.routers.front.tls.certresolver: tls
|
||||
traefik.http.services.front.loadbalancer.server.port: 80
|
||||
traefik.http.routers.front.middlewares: ldap_auth
|
||||
|
||||
back-staging:
|
||||
image: numerisisep/numeris-back:staging
|
||||
networks:
|
||||
- caddy
|
||||
- numeris
|
||||
env_file:
|
||||
- ../data/secrets/numeris.env
|
||||
# volumes:
|
||||
# - .env:/home/numeris/.env
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.back.rule: Host(`api.numeris.marcpartensky.com`)
|
||||
traefik.http.routers.back.rule: Host(`staging.api.numeris.marcpartensky.fr`)
|
||||
traefik.http.routers.back.entrypoints: websecure
|
||||
traefik.http.routers.back.tls.certresolver: tls
|
||||
traefik.http.services.back.loadbalancer.server.port: 80
|
||||
|
||||
front-staging:
|
||||
image: numerisisep/numeris-front:staging
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.front.rule: Host(`numeris.marcpartensky.com`)
|
||||
traefik.http.routers.front.rule: Host(`staging.numeris.marcpartensky.fr`)
|
||||
traefik.http.routers.front.entrypoints: websecure
|
||||
traefik.http.routers.front.tls.certresolver: tls
|
||||
traefik.http.services.front.loadbalancer.server.port: 80
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ocis:
|
||||
image: owncloud/ocis:latest
|
||||
environment:
|
||||
# INSECURE: needed if oCIS / Traefik is using self generated certificates
|
||||
OCIS_INSECURE: "true"
|
||||
|
||||
# OCIS_URL: the external domain / ip address of oCIS (with protocol, must always be https)
|
||||
# OCIS_URL: "https://0.0.0.0:9200"
|
||||
OCIS_URL: "https://ocis.marcpartensky.com"
|
||||
|
||||
# OCIS_LOG_LEVEL: error / info / ... / debug
|
||||
OCIS_LOG_LEVEL: info
|
||||
ports:
|
||||
- "9200:9200"
|
||||
- "9140:9140"
|
||||
networks:
|
||||
- caddy
|
||||
- ldap
|
||||
# volumes:
|
||||
# # mount the ocis config file inside the container
|
||||
# - "../data/ocis:/etc/ocis/"
|
||||
env_file:
|
||||
- "../data/secrets/ocis.env"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.ocis.loadbalancer.server.scheme: https
|
||||
traefik.http.services.ocis.loadbalancer.server.port: 9200
|
||||
traefik.http.routers.ocis.rule: >
|
||||
Host(`ocis.marcpartensky.com`)
|
||||
traefik.http.routers.ocis.entrypoints: web
|
||||
# traefik.http.routers.ocis.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,194 @@
|
||||
# OpenEdx docker-compose stack used for development/test purpose
|
||||
#
|
||||
#
|
||||
#
|
||||
# Nota bene: this docker-compose file requires that you have set the DOCKER_UID
|
||||
# and DOCKER_GID variables with relevant values (i.e. matching the current
|
||||
# system user ids). If you use the project's Makefile or the bin/compose
|
||||
# wrapper, those variable definitions have already been handled on your behalf.
|
||||
version: "3.5"
|
||||
|
||||
services:
|
||||
# mysql:
|
||||
# image: mysql:5.6
|
||||
# ports:
|
||||
# - "3316:3306"
|
||||
# env_file: env.d/development
|
||||
# command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
|
||||
|
||||
mongodb:
|
||||
image: mongo:3.2
|
||||
# We use WiredTiger in all environments. In development environments we use small files
|
||||
# to conserve disk space, and disable the journal for a minor performance gain.
|
||||
# See https://docs.mongodb.com/v3.0/reference/program/mongod/#options for complete details.
|
||||
command: mongod --smallfiles --nojournal --storageEngine wiredTiger
|
||||
|
||||
memcached:
|
||||
image: memcached:1.4
|
||||
|
||||
# redis:
|
||||
# image: redis:4.0.10-alpine
|
||||
|
||||
# redis-master:
|
||||
# image: redis:4.0.10-alpine
|
||||
#
|
||||
# redis-slave:
|
||||
# image: redis:4.0.10-alpine
|
||||
# command: redis-server --slaveof redis-master 6379
|
||||
# depends_on:
|
||||
# - redis-master
|
||||
|
||||
# redis-sentinel:
|
||||
# image: s7anley/redis-sentinel-docker
|
||||
# environment:
|
||||
# - MASTER_NAME=mymaster
|
||||
# - QUORUM=1
|
||||
# - MASTER=redis-master
|
||||
# depends_on:
|
||||
# - redis-master
|
||||
# - redis-slave
|
||||
|
||||
mailcatcher:
|
||||
image: sj26/mailcatcher:latest
|
||||
ports:
|
||||
- "1080:1080"
|
||||
|
||||
lms:
|
||||
build:
|
||||
context: ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}
|
||||
target: production
|
||||
args:
|
||||
EDX_RELEASE_REF: ${EDX_RELEASE_REF:-release-2018-08-29-14.14}
|
||||
EDX_ARCHIVE_URL: ${EDX_ARCHIVE_URL:-https://github.com/edx/edx-platform/archive/release-2018-08-29-14.14.tar.gz}
|
||||
image: "${EDXAPP_IMAGE_NAME:-edxapp}:${EDXAPP_IMAGE_TAG:-master-bare}"
|
||||
env_file:
|
||||
- env.d/development
|
||||
- env.d/${REDIS_SERVICE:-redis}
|
||||
environment:
|
||||
SERVICE_VARIANT: lms
|
||||
DJANGO_SETTINGS_MODULE: lms.envs.fun.docker_run
|
||||
volumes:
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/media:/edx/var/edxapp/media
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/store:/edx/app/edxapp/data
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/export:/edx/var/edxapp/export
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/config:/config
|
||||
- ./docker/files/usr/local/bin/auth_init:/usr/local/bin/auth_init
|
||||
# Add lines here to override source code in a Python module e.g.:
|
||||
#- ./src/edx-ora2/openassessment:/usr/local/lib/python2.7/dist-packages/openassessment
|
||||
user: ${DOCKER_UID}:${DOCKER_GID}
|
||||
stdin_open: true
|
||||
tty: true
|
||||
depends_on:
|
||||
- mailcatcher
|
||||
- mysql
|
||||
- mongodb
|
||||
- memcached
|
||||
- ${REDIS_SERVICE:-redis}
|
||||
|
||||
lms-dev:
|
||||
build:
|
||||
context: ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}
|
||||
target: development
|
||||
args:
|
||||
DOCKER_UID: ${DOCKER_UID}
|
||||
DOCKER_GID: ${DOCKER_GID}
|
||||
EDX_RELEASE_REF: ${EDX_RELEASE_REF:-release-2018-08-29-14.14}
|
||||
EDX_ARCHIVE_URL: ${EDX_ARCHIVE_URL:-https://github.com/edx/edx-platform/archive/release-2018-08-29-14.14.tar.gz}
|
||||
image: "${EDXAPP_IMAGE_NAME:-edxapp}:${EDXAPP_IMAGE_TAG:-master-bare}-dev"
|
||||
env_file:
|
||||
- env.d/development
|
||||
- env.d/${REDIS_SERVICE:-redis}
|
||||
environment:
|
||||
SERVICE_VARIANT: lms
|
||||
DJANGO_SETTINGS_MODULE: lms.envs.fun.docker_run
|
||||
ports:
|
||||
- "8072:8000"
|
||||
volumes:
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/src/edx-platform:/edx/app/edxapp/edx-platform
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/static/development:/edx/app/edxapp/staticfiles
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/media:/edx/var/edxapp/media
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/store:/edx/app/edxapp/data
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/export:/edx/var/edxapp/export
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/config:/config
|
||||
# Add lines here to override source code in a Python module e.g.:
|
||||
#- ./src/edx-ora2/openassessment:/usr/local/lib/python2.7/dist-packages/openassessment
|
||||
command: >
|
||||
python manage.py lms runserver 0.0.0.0:8000 --settings=fun.docker_run_development
|
||||
depends_on:
|
||||
- mailcatcher
|
||||
- mysql
|
||||
- mongodb
|
||||
- memcached
|
||||
- ${REDIS_SERVICE:-redis}
|
||||
|
||||
cms:
|
||||
image: "${EDXAPP_IMAGE_NAME:-edxapp}:${EDXAPP_IMAGE_TAG:-master-bare}"
|
||||
env_file:
|
||||
- env.d/development
|
||||
- env.d/${REDIS_SERVICE:-redis}
|
||||
environment:
|
||||
SERVICE_VARIANT: cms
|
||||
DJANGO_SETTINGS_MODULE: cms.envs.fun.docker_run
|
||||
volumes:
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/media:/edx/var/edxapp/media
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/data/store:/edx/app/edxapp/data
|
||||
- ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}/config:/config
|
||||
# Add lines here to override source code in a Python module e.g.:
|
||||
#- ./src/edx-ora2/openassessment:/usr/local/lib/python2.7/dist-packages/openassessment
|
||||
networks:
|
||||
- default
|
||||
- outside
|
||||
depends_on:
|
||||
- lms
|
||||
user: ${DOCKER_UID}:${DOCKER_GID}
|
||||
|
||||
cms-dev:
|
||||
image: "${EDXAPP_IMAGE_NAME:-edxapp}:${EDXAPP_IMAGE_TAG:-master-bare}-dev"
|
||||
env_file:
|
||||
- env.d/development
|
||||
- env.d/${REDIS_SERVICE:-redis}
|
||||
ports:
|
||||
- "8082:8000"
|
||||
volumes:
|
||||
- /srv/openedx/src/edx-platform:/edx/app/edxapp/edx-platform
|
||||
- /srv/openedx/data/static/development:/edx/app/edxapp/staticfiles
|
||||
- /srv/openedx/data/media:/edx/var/edxapp/media
|
||||
- /srv/openedx/data/store:/edx/app/edxapp/data
|
||||
- /srv/openedx/config:/config
|
||||
# Add lines here to override source code in a Python module e.g.:
|
||||
#- ./src/edx-ora2/openassessment:/usr/local/lib/python2.7/dist-packages/openassessment
|
||||
command: >
|
||||
python manage.py cms runserver 0.0.0.0:8000 --settings=fun.docker_run_development
|
||||
depends_on:
|
||||
- lms-dev
|
||||
|
||||
nginx:
|
||||
build:
|
||||
context: ./${FLAVORED_EDX_RELEASE_PATH:-releases/master/0/bare}
|
||||
target: nginx
|
||||
args:
|
||||
EDX_RELEASE_REF: ${EDX_RELEASE_REF:-release-2018-08-29-14.14}
|
||||
EDX_ARCHIVE_URL: ${EDX_ARCHIVE_URL:-https://github.com/edx/edx-platform/archive/release-2018-08-29-14.14.tar.gz}
|
||||
image: "${EDXAPP_NGINX_IMAGE_NAME:-edxapp-nginx}:${EDXAPP_IMAGE_TAG:-master-bare}"
|
||||
ports:
|
||||
- "8073:8073"
|
||||
- "8083:8083"
|
||||
networks:
|
||||
default:
|
||||
aliases:
|
||||
- nginx
|
||||
outside:
|
||||
aliases:
|
||||
- edx
|
||||
volumes:
|
||||
- ../data/openedx/nginx:/etc/nginx/conf.d:ro
|
||||
- /srv/openedx/data/media:/data/media:ro
|
||||
depends_on:
|
||||
- lms
|
||||
- cms
|
||||
|
||||
# dockerize:
|
||||
# image: jwilder/dockerize
|
||||
|
||||
networks:
|
||||
outside:
|
||||
+11
-15
@@ -3,27 +3,23 @@ version: "3.9"
|
||||
services:
|
||||
pandoc:
|
||||
image: marcpartensky/pandoc-api
|
||||
container_name: pandoc
|
||||
restart: unless-stopped
|
||||
working_dir: /app
|
||||
env_file:
|
||||
- ../data/secrets/pandoc.env
|
||||
volumes:
|
||||
- pandoc:/app/files
|
||||
labels:
|
||||
caddy: pandoc.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
|
||||
traefik.http.routers.pandoc.entrypoints: websecure
|
||||
traefik.http.routers.pandoc.tls.certresolver: tls
|
||||
traefik.http.services.pandoc.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
|
||||
traefik.http.routers.pandoc.entrypoints: websecure
|
||||
traefik.http.routers.pandoc.tls.certresolver: tls
|
||||
traefik.http.services.pandoc.loadbalancer.server.port: 80
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# # traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
|
||||
# traefik.http.routers.pandoc.rule: >
|
||||
# Host(`pandoc.marcpartensky.com`) ||
|
||||
# Host(`pandoc.marcpartensky.fr`)
|
||||
# traefik.http.routers.pandoc.entrypoints: websecure
|
||||
# traefik.http.routers.pandoc.tls.certresolver: tls
|
||||
# traefik.http.services.pandoc.loadbalancer.server.port: 80
|
||||
networks:
|
||||
- caddy
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# Docker Compose file for running paperless from the Docker Hub.
|
||||
# This file contains everything paperless needs to run.
|
||||
# Paperless supports amd64, arm and arm64 hardware.
|
||||
#
|
||||
# All compose files of paperless configure paperless in the following way:
|
||||
#
|
||||
# - Paperless is (re)started on system boot, if it was running before shutdown.
|
||||
# - Docker volumes for storing data are managed by Docker.
|
||||
# - Folders for importing and exporting files are created in the same directory
|
||||
# as this file and mounted to the correct folders inside the container.
|
||||
# - Paperless listens on port 8000.
|
||||
#
|
||||
# In addition to that, this Docker Compose file adds the following optional
|
||||
# configurations:
|
||||
#
|
||||
# - Instead of SQLite (default), PostgreSQL is used as the database server.
|
||||
#
|
||||
# To install and update paperless with this file, do the following:
|
||||
#
|
||||
# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env'
|
||||
# and '.env' into a folder.
|
||||
# - Run 'docker compose pull'.
|
||||
# - Run 'docker compose run --rm webserver createsuperuser' to create a user.
|
||||
# - Run 'docker compose up -d'.
|
||||
#
|
||||
# For more extensive installation and update instructions, refer to the
|
||||
# documentation.
|
||||
|
||||
version: "3.9"
|
||||
services:
|
||||
# broker:
|
||||
# image: docker.io/library/redis:7
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - redisdata:/data
|
||||
|
||||
# db:
|
||||
# image: docker.io/library/postgres:15
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - pgdata:/var/lib/postgresql/data
|
||||
# environment:
|
||||
# POSTGRES_DB: paperless
|
||||
# POSTGRES_USER: paperless
|
||||
# POSTGRES_PASSWORD: paperless
|
||||
|
||||
paperless:
|
||||
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
||||
container_name: paperless
|
||||
restart: unless-stopped
|
||||
# depends_on:
|
||||
# - db
|
||||
# - broker
|
||||
volumes:
|
||||
- data:/usr/src/paperless/data
|
||||
- media:/usr/src/paperless/media
|
||||
- /srv/paperless/export:/usr/src/paperless/export
|
||||
- /srv/paperless/consume:/usr/src/paperless/consume
|
||||
env_file:
|
||||
- ../data/secrets/paperless.env
|
||||
networks:
|
||||
- redis
|
||||
- caddy
|
||||
- postgres
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.paperless.rule: Host(`paperless.marcpartensky.com`)
|
||||
# traefik.http.routers.paperless.entrypoints: web
|
||||
# traefik.http.services.paperless.loadbalancer.server.port: 8000
|
||||
|
||||
volumes:
|
||||
data:
|
||||
media:
|
||||
networks:
|
||||
redis:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -1,6 +1,9 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
peer2profit:
|
||||
image: peer2profit/peer2profit_x86_64:latest
|
||||
image: enwaiax/peer2profit
|
||||
# command: ./entrypoint.sh --email marc@marcpartensky.com
|
||||
environment:
|
||||
P2P_EMAIL: marc@marcpartensky.com
|
||||
- email=marc@marcpartensky.com
|
||||
# environment:
|
||||
# P2P_EMAIL: marc@marcpartensky.com
|
||||
|
||||
+58
-41
@@ -1,63 +1,80 @@
|
||||
version: "3.3"
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
|
||||
peertube:
|
||||
image: chocobozzz/peertube:production-bullseye
|
||||
container_name: peertube
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
env_file:
|
||||
- ../data/secrets/peertube.env
|
||||
ports:
|
||||
- "1935:1935" # If you don't want to use the live feature, you can comment this line
|
||||
# - "9000:9000" # If you provide your own webserver and reverse-proxy, otherwise not suitable for production
|
||||
volumes:
|
||||
- peertube_assets:/app/client/dist
|
||||
- peertube:/data
|
||||
- assets:/app/client/dist
|
||||
- data:/data
|
||||
- ../data/peertube:/config
|
||||
depends_on:
|
||||
- peertube_postgres
|
||||
- peertube_redis
|
||||
- peertube_postfix
|
||||
labels:
|
||||
caddy: peertube.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.peertube.rule: Host(`peertube.marcpartensky.com`)
|
||||
traefik.http.routers.peertube.entrypoints: websecure
|
||||
traefik.http.routers.peertube.tls.certresolver: tls
|
||||
traefik.http.services.peertube.loadbalancer.server.port: 80
|
||||
networks:
|
||||
- peertube
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
# depends_on:
|
||||
# - peertube_postgres
|
||||
# - peertube_redis
|
||||
# - peertube_postfix
|
||||
# labels:
|
||||
# caddy: peertube.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.peertube.rule: Host(`peertube.marcpartensky.com`)
|
||||
# traefik.http.routers.peertube.entrypoints: websecure
|
||||
# traefik.http.routers.peertube.tls.certresolver: tls
|
||||
# traefik.http.services.peertube.loadbalancer.server.port: 80
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.peertube.rule: Host(`peertube.marcpartensky.fr`)
|
||||
# traefik.http.routers.peertube.entrypoints: websecure
|
||||
# traefik.http.routers.peertube.tls.certresolver: tls
|
||||
# traefik.http.services.peertube.loadbalancer.server.port: 80
|
||||
|
||||
peertube_postgres:
|
||||
image: postgres:13-alpine
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/peertube.env
|
||||
volumes:
|
||||
- peertube_postgres:/var/lib/postgresql/data
|
||||
# peertube_postgres:
|
||||
# image: postgres:13-alpine
|
||||
# restart: unless-stopped
|
||||
# env_file:
|
||||
# - ../data/secrets/peertube.env
|
||||
# volumes:
|
||||
# - peertube_postgres:/var/lib/postgresql/data
|
||||
|
||||
peertube_redis:
|
||||
image: redis:6-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- peertube_redis:/data
|
||||
# peertube_redis:
|
||||
# image: redis:6-alpine
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - peertube_redis:/data
|
||||
|
||||
peertube_postfix:
|
||||
image: mwader/postfix-relay
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- peertube_postfix:/etc/opendkim/keys
|
||||
# postfix:
|
||||
# image: mwader/postfix-relay
|
||||
# restart: unless-stopped
|
||||
# networks:
|
||||
# - peertube
|
||||
# env_file:
|
||||
# - .env
|
||||
# volumes:
|
||||
# - postfix:/etc/opendkim/keys
|
||||
|
||||
networks:
|
||||
peertube:
|
||||
postgres:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
peertube:
|
||||
peertube_assets:
|
||||
peertube_postgres:
|
||||
peertube_redis:
|
||||
peertube_postfix:
|
||||
data:
|
||||
assets:
|
||||
postgres:
|
||||
postfix:
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
pg_backup:
|
||||
image: kartoza/pg-backup:14-3.1
|
||||
env_file:
|
||||
- ../data/secrets/pg_backup.env
|
||||
# environment:
|
||||
# POSTGRES_MAJOR_VERSION: 14
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- /srv/pg-backup:/backups
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
+25
-21
@@ -2,6 +2,7 @@ version: "3.9"
|
||||
services:
|
||||
pgadmin:
|
||||
image: dpage/pgadmin4
|
||||
container_name: pgadmin
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/pgadmin.env
|
||||
@@ -14,27 +15,30 @@ services:
|
||||
- caddy
|
||||
volumes:
|
||||
- /srv/pgadmin:/usr/local/
|
||||
labels:
|
||||
caddy: pgadmin.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
# caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
|
||||
# caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
|
||||
# caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
|
||||
# caddy.basicauth: /* bcrypt
|
||||
# caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
|
||||
traefik.http.routers.pgadmin.entrypoints: websecure
|
||||
traefik.http.routers.pgadmin.tls.certresolver: tls
|
||||
traefik.http.services.pgadmin.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
|
||||
traefik.http.routers.pgadmin.entrypoints: websecure
|
||||
traefik.http.routers.pgadmin.tls.certresolver: tls
|
||||
traefik.http.services.pgadmin.loadbalancer.server.port: 80
|
||||
|
||||
# labels:
|
||||
# caddy: pgadmin.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
# # caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
|
||||
# # caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
|
||||
# # caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
|
||||
# # caddy.basicauth: /* bcrypt
|
||||
# # caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
|
||||
# traefik.http.routers.pgadmin.entrypoints: web
|
||||
# # traefik.http.routers.pgadmin.tls.certresolver: tls
|
||||
# traefik.http.services.pgadmin.loadbalancer.server.port: 80
|
||||
# sablier.enable: true
|
||||
# sablier.group: sabliergroup
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# # traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
|
||||
# traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.fr`)
|
||||
# traefik.http.routers.pgadmin.entrypoints: websecure
|
||||
# traefik.http.routers.pgadmin.tls.certresolver: tls
|
||||
# traefik.http.services.pgadmin.loadbalancer.server.port: 80
|
||||
#
|
||||
|
||||
volumes:
|
||||
postgres:
|
||||
|
||||
+23
-22
@@ -2,6 +2,7 @@ version: "3.9"
|
||||
services:
|
||||
pgweb:
|
||||
image: marcpartensky/pgweb
|
||||
container_name: pgweb
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/pgweb.env
|
||||
@@ -10,28 +11,28 @@ services:
|
||||
- caddy
|
||||
# depends_on:
|
||||
# - postgres
|
||||
labels:
|
||||
caddy: pgweb.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8081}}"
|
||||
# caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
|
||||
# caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
|
||||
# caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
|
||||
caddy.basicauth: /* bcrypt
|
||||
caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pgweb.rule: Host(`pgweb.marcpartensky.com`)
|
||||
traefik.http.routers.pgweb.entrypoints: websecure
|
||||
traefik.http.routers.pgweb.tls.certresolver: tls
|
||||
traefik.http.services.pgweb.loadbalancer.server.port: 8081
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pgweb.rule: Host(`pgweb.marcpartensky.com`)
|
||||
traefik.http.routers.pgweb.entrypoints: websecure
|
||||
traefik.http.routers.pgweb.tls.certresolver: tls
|
||||
traefik.http.services.pgweb.loadbalancer.server.port: 8081
|
||||
# ldapAuth Register Middleware ====================================================
|
||||
traefik.http.routers.pgweb.middlewares: ldap_auth
|
||||
# labels:
|
||||
# caddy: pgweb.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 8081}}"
|
||||
# # caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
|
||||
# # caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
|
||||
# # caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
|
||||
# caddy.basicauth: /* bcrypt
|
||||
# caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.pgweb.rule: Host(`pgweb.marcpartensky.com`)
|
||||
# traefik.http.routers.pgweb.entrypoints: websecure
|
||||
# traefik.http.routers.pgweb.tls.certresolver: tls
|
||||
# traefik.http.services.pgweb.loadbalancer.server.port: 8081
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.pgweb.rule: Host(`pgweb.marcpartensky.com`)
|
||||
# traefik.http.routers.pgweb.entrypoints: websecure
|
||||
# traefik.http.routers.pgweb.tls.certresolver: tls
|
||||
# traefik.http.services.pgweb.loadbalancer.server.port: 8081
|
||||
# # ldapAuth Register Middleware ====================================================
|
||||
# traefik.http.routers.pgweb.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
|
||||
+8
-8
@@ -23,14 +23,14 @@ services:
|
||||
- NET_ADMIN # Recommended but not required (DHCP needs NET_ADMIN)
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: pihole.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pihole.rule: Host(`pihole.marcpartensky.com`)
|
||||
traefik.http.routers.pihole.entrypoints: websecure
|
||||
traefik.http.routers.pihole.tls.certresolver: tls
|
||||
traefik.http.services.pihole.loadbalancer.server.port: 80
|
||||
# labels:
|
||||
# caddy: pihole.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.pihole.rule: Host(`pihole.marcpartensky.com`)
|
||||
# traefik.http.routers.pihole.entrypoints: websecure
|
||||
# traefik.http.routers.pihole.tls.certresolver: tls
|
||||
# traefik.http.services.pihole.loadbalancer.server.port: 80
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
plex:
|
||||
# image: lscr.io/linuxserver/plex:latest
|
||||
image: plexinc/pms-docker
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
# - PUID=1000
|
||||
# - PGID=1000
|
||||
# - TZ=Etc/UTC
|
||||
VERSION: docker
|
||||
# - PLEX_CLAIM= #optional
|
||||
# devices:
|
||||
# - /dev/dri:/dev/dri
|
||||
volumes:
|
||||
- /srv/plex/library:/config
|
||||
- /srv/plex/tvseries:/tv
|
||||
- /srv/plex/movies:/movies
|
||||
- /srv/plex/data:/data
|
||||
ports:
|
||||
- "32400:32400"
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.plex.loadbalancer.server.port: 32400
|
||||
traefik.http.routers.plex.rule: >
|
||||
Host(`plex.marcpartensky.com`)
|
||||
traefik.http.routers.plex.entrypoints: web
|
||||
# traefik.http.routers.plex.tls.certresolver: tls
|
||||
# traefik.http.routers.plex.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
+96
-29
@@ -2,43 +2,110 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
VIRTUAL_HOST: docker.marcpartensky.com
|
||||
VIRTUAL_PORT: 9000
|
||||
container_name: portainer
|
||||
image: docker.io/portainer/portainer-ce:latest
|
||||
# ports:
|
||||
# - 9443:9443
|
||||
volumes:
|
||||
- data:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer:/data
|
||||
networks:
|
||||
- caddy
|
||||
command:
|
||||
- --logo
|
||||
- https://marcpartensky.com/static/home/assets/img/white-orchid.svg
|
||||
# healthcheck:
|
||||
# test: ["CMD", "curl", "-f", "http://localhost:9000"]
|
||||
# test: ["CMD", "portainer", "--healthcheck"]
|
||||
depends_on:
|
||||
- caddy
|
||||
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
|
||||
deploy:
|
||||
labels:
|
||||
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
|
||||
- portainer
|
||||
- ldap
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.portainer.rule: Host(`docker.marcpartensky.com`)
|
||||
# traefik.http.routers.portainer.entrypoints: web
|
||||
# # traefik.http.routers.portainer.tls.certresolver: tls
|
||||
# traefik.http.services.portainer.loadbalancer.server.port: 9000
|
||||
|
||||
portainer-agent:
|
||||
image: docker.io/portainer/agent:2.18.2
|
||||
container_name: portainer-agent
|
||||
hostname: agent
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
||||
networks:
|
||||
- portainer
|
||||
# deploy:
|
||||
# mode: global
|
||||
# placement:
|
||||
# constraints: [node.platform.os == linux]
|
||||
|
||||
# portainer:
|
||||
# image: portainer/portainer-ce:2.18.2
|
||||
# command: -H tcp://agent:9001 --tlsskipverify
|
||||
# depends_on:
|
||||
# - agent
|
||||
# # ports:
|
||||
# # - "9443:9443"
|
||||
# # - "9000:9000"
|
||||
# # - "8000:8000"
|
||||
# networks:
|
||||
# - caddy
|
||||
# - portainer
|
||||
# volumes:
|
||||
# - data:/data
|
||||
# deploy:
|
||||
# mode: replicated
|
||||
# replicas: 1
|
||||
# placement:
|
||||
# constraints: [node.role == manager]
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.portainer.rule: >
|
||||
# Host(`docker.marcpartensky.fr`) && Host(`docker.marcpartensky.com`)
|
||||
# traefik.http.routers.portainer.entrypoints: websecure
|
||||
# # traefik.http.routers.portainer.tls.certresolver: tls
|
||||
# traefik.http.routers.portainer.tls.certresolver: cloudflare
|
||||
# traefik.http.services.portainer.loadbalancer.server.port: 9000
|
||||
#
|
||||
# # 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
|
||||
# # - portainer:/data
|
||||
# # networks:
|
||||
# # - caddy
|
||||
# # command:
|
||||
# # - --logo
|
||||
# # - https://marcpartensky.com/static/home/assets/img/white-orchid.svg
|
||||
# # # healthcheck:
|
||||
# # # test: ["CMD", "curl", "-f", "http://localhost:9000"]
|
||||
# # # test: ["CMD", "portainer", "--healthcheck"]
|
||||
# # depends_on:
|
||||
# # - caddy
|
||||
# # 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
|
||||
# # deploy:
|
||||
# # labels:
|
||||
# # traefik.enable: "true"
|
||||
# # traefik.http.routers.portainer.rule: >
|
||||
# # Host(`docker.marcpartensky.fr`) && 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
|
||||
# #
|
||||
volumes:
|
||||
portainer:
|
||||
# portainer:
|
||||
data:
|
||||
|
||||
networks:
|
||||
portainer:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
+39
-12
@@ -1,7 +1,7 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:14
|
||||
image: docker.io/postgres:14
|
||||
restart: unless-stopped
|
||||
# user: postgres:postgres
|
||||
# user: "974:974"
|
||||
@@ -10,32 +10,59 @@ services:
|
||||
published: 5432
|
||||
mode: host
|
||||
volumes:
|
||||
- ../data/postgres:/docker-entrypoint-initdb.d
|
||||
- postgres:/var/lib/postgresql/data
|
||||
- ../data/postgres/server.crt:/var/lib/postgresql/server.crt
|
||||
- ../data/postgres/server.key:/var/lib/postgresql/server.key
|
||||
- ../data/postgres/initdb.d:/initdb.d
|
||||
- /home/marc/backup:/backup
|
||||
- ../data/postgres/certs:/var/lib/postgresql/certs
|
||||
env_file:
|
||||
- ../data/secrets/postgres.env
|
||||
command: |
|
||||
postgres
|
||||
-c log_statement=all
|
||||
-c log_destination=stderr
|
||||
-c ssl=on
|
||||
-c ssl_cert_file=/var/lib/postgresql/server.crt
|
||||
-c ssl_key_file=/var/lib/postgresql/server.key
|
||||
networks:
|
||||
- postgres
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -q || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
|
||||
pgagent:
|
||||
image: docker.io/chiavegatto/postgres-pgagent
|
||||
entrypoint: /bin/sh -c
|
||||
"/tmp/wait-for-it.sh postgres:5432 --timeout=30 &&
|
||||
psql -U postgres -h postgres -p 5432 -d postgres -c 'CREATE EXTENSION IF NOT EXISTS pgagent;' &&
|
||||
pgagent -f hostaddr=postgres dbname=postgres user=postgres port=5432"
|
||||
environment:
|
||||
TIMEZONE: Europe/Paris
|
||||
env_file:
|
||||
- ../data/secrets/postgres.env
|
||||
networks:
|
||||
- postgres
|
||||
|
||||
backup:
|
||||
image: docker.io/kartoza/pg-backup:14-3.1
|
||||
env_file:
|
||||
- ../data/secrets/pg_backup.env
|
||||
networks:
|
||||
- postgres
|
||||
volumes:
|
||||
- /srv/pg-backup:/backups
|
||||
|
||||
# https://github.com/prodrigestivill/docker-postgres-backup-local
|
||||
# restore:
|
||||
# docker exec --tty --interactive $CONTAINER /bin/sh -c "zcat $BACKUPFILE | psql --username=$USERNAME --dbname=$DBNAME -W"
|
||||
pgbackups:
|
||||
image: prodrigestivill/postgres-backup-local
|
||||
image: docker.io/prodrigestivill/postgres-backup-local
|
||||
restart: unless-stopped
|
||||
# user: postgres:postgres
|
||||
volumes:
|
||||
- /srv/pgbackups:/backups
|
||||
links:
|
||||
- postgres
|
||||
depends_on:
|
||||
- postgres
|
||||
# links:
|
||||
# - postgres
|
||||
# depends_on:
|
||||
# - postgres
|
||||
networks:
|
||||
- postgres
|
||||
env_file:
|
||||
|
||||
+16
-15
@@ -6,12 +6,12 @@ services:
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "1194-1195:1194-1195/udp"
|
||||
depends_on:
|
||||
- pritunl_mongo
|
||||
# depends_on:
|
||||
# - pritunl_mongo
|
||||
environment:
|
||||
REVERSE_PROXY: "true"
|
||||
TZ: Europe/Paris
|
||||
MONGODB_URI: mongodb://pritunl_mongo:27017/pritunl
|
||||
MONGODB_URI: mongodb://mongo:27017/pritunl
|
||||
PRITUNL_DEBUG: "true"
|
||||
# WIREGUARD: true
|
||||
privileged: true
|
||||
@@ -26,20 +26,17 @@ services:
|
||||
# volumes:
|
||||
# - /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- mongo
|
||||
- caddy
|
||||
- pritunl
|
||||
labels:
|
||||
caddy: vpn.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams http 9700}}"
|
||||
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
|
||||
deploy:
|
||||
labels:
|
||||
caddy: vpn.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams http 9700}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pritunl.rule: Host(`vpn.marcpartensky.com`)
|
||||
traefik.http.routers.pritunl.rule: >
|
||||
Host(`vpn.marcpartensky.fr`) ||
|
||||
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
|
||||
@@ -47,9 +44,13 @@ services:
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
mongo:
|
||||
external: true
|
||||
pritunl:
|
||||
external: true
|
||||
# internal: true
|
||||
# driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.177.0.0/16
|
||||
# ipam:
|
||||
# config:
|
||||
# - subnet: 172.177.0.0/16
|
||||
# - subnet: 10.177.0.0/16
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus
|
||||
volumes:
|
||||
- ../data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
command:
|
||||
- --config.file=/etc/prometheus/prometheus.yml
|
||||
networks:
|
||||
- prometheus
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.prometheus.rule: >
|
||||
Host(`prometheus.marcpartensky.com`) || Host(`prometheus.marcpartensky.fr`)
|
||||
traefik.http.routers.prometheus.entrypoints: websecure
|
||||
traefik.http.routers.prometheus.tls.certresolver: tls
|
||||
traefik.http.services.prometheus.loadbalancer.server.port: 9090
|
||||
|
||||
node-exporter:
|
||||
image: prom/node-exporter
|
||||
volumes:
|
||||
- /proc:/host/proc:ro
|
||||
- /sys:/host/sys:ro
|
||||
- /:/rootfs:ro
|
||||
command:
|
||||
- --path.procfs=/host/proc
|
||||
- --path.sysfs=/host/sys
|
||||
- --collector.filesystem.ignored-mount-points=\"^/(sys|proc|dev|host|etc)($$|/)\"
|
||||
networks:
|
||||
- prometheus
|
||||
|
||||
# cadvisor:
|
||||
# image: google/cadvisor
|
||||
# volumes:
|
||||
# - /:/rootfs:ro
|
||||
# - /var/run:/var/run:rw
|
||||
# - /sys:/sys:ro
|
||||
# - /var/lib/docker:/var/lib/docker:ro
|
||||
# ports:
|
||||
# - "8080:8080"
|
||||
# networks:
|
||||
# - prometheus
|
||||
#
|
||||
networks:
|
||||
prometheus:
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
puffer:
|
||||
image: pufferpanel/pufferpanel
|
||||
networks:
|
||||
- caddy
|
||||
volumes:
|
||||
- ../data/pufferpanel:/etc/pufferpanel
|
||||
- pufferpanel:/var/lib/pufferpanel
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.puffer.loadbalancer.server.port: 8080
|
||||
traefik.http.routers.puffer.rule: Host(`puffer.marcpartensky.fr`)
|
||||
# traefik.http.routers.puffer.rule: >
|
||||
# Host(`puffer.marcpartensky.com`) || Host(`puffer.marcpartensky.fr`)
|
||||
traefik.http.routers.puffer.entrypoints: websecure
|
||||
# traefik.http.routers.puffer.tls.certresolver: tls
|
||||
traefik.http.routers.puffer.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.puffer.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
pufferpanel:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,32 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Etc/UTC
|
||||
- WEBUI_PORT=8080
|
||||
- TORRENTING_PORT=6881
|
||||
volumes:
|
||||
- ../data/qbittorrent:/config
|
||||
- /srv/jellyfin/Videos:/downloads
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.qbittorrent.loadbalancer.server.port: 7681
|
||||
traefik.http.routers.qbittorrent.rule: >
|
||||
Host(`qbittorrent.marcpartensky.com`)
|
||||
traefik.http.routers.qbittorrent.entrypoints: web
|
||||
traefik.http.routers.qbittorrent.tls.certresolver: tls
|
||||
# traefik.http.routers.qbittorrent.middlewares: ldap_auth
|
||||
# ports:
|
||||
# - 8080:8080
|
||||
# - 6881:6881
|
||||
# - 6881:6881/udp
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
+22
-16
@@ -2,26 +2,32 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
rancher:
|
||||
image: rancher/server
|
||||
image: rancher/rancher:stable
|
||||
container_name: rancher
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /srv/rancher:/var/lib/rancher
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: rancher.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.rancher.rule: Host(`rancher.marcpartensky.com`)
|
||||
traefik.http.routers.rancher.entrypoints: websecure
|
||||
traefik.http.routers.rancher.tls.certresolver: tls
|
||||
traefik.http.services.rancher.loadbalancer.server.port: 8080
|
||||
- caddy
|
||||
privileged: true
|
||||
user: root
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '4'
|
||||
memory: 5000M
|
||||
environment:
|
||||
CATTLE_SYSTEM_CATALOG: bundled
|
||||
# labels:
|
||||
# caddy: rancher.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.rancher.rule: Host(`rancher.marcpartensky.com`)
|
||||
# traefik.http.routers.rancher.entrypoints: web
|
||||
# # traefik.http.routers.rancher.tls.certresolver: tls
|
||||
# traefik.http.services.rancher.loadbalancer.server.port: 80
|
||||
# user: root
|
||||
# deploy:
|
||||
# resources:
|
||||
# limits:
|
||||
# cpus: '4'
|
||||
# memory: 5000M
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
redis:
|
||||
image: docker.io/redis:alpine
|
||||
restart: unless-stopped
|
||||
command: redis-server --save 60 1 --loglevel warning
|
||||
ports:
|
||||
- "6379:6379"
|
||||
networks:
|
||||
- redis
|
||||
volumes:
|
||||
- ../data/redis:/usr/local/etc/redis
|
||||
- /srv/redis:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli","ping"]
|
||||
# deploy:
|
||||
# placement:
|
||||
# constraints:
|
||||
# - node.role == manager
|
||||
|
||||
networks:
|
||||
redis:
|
||||
external: true
|
||||
@@ -0,0 +1,95 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
resume:
|
||||
image: docker.io/amruthpillai/reactive-resume:latest
|
||||
container_name: resume
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/resume.env
|
||||
# environment:
|
||||
# PUBLIC_URL: https://cv.marcpartensky.com
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.resume.loadbalancer.server.port: 3000
|
||||
traefik.http.routers.resume.rule: Host(`cv.marcpartensky.com`)
|
||||
traefik.http.routers.resume.entrypoints: web
|
||||
|
||||
printer:
|
||||
image: docker.io/browserless/chrome:1.61.0-puppeteer-21.4.1
|
||||
container_name: printer
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/resume.env
|
||||
networks:
|
||||
- caddy
|
||||
environment:
|
||||
# TOKEN: chrome_token
|
||||
EXIT_ON_HEALTH_FAILURE: true
|
||||
PRE_REQUEST_HEALTH_CHECK: true
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.printer.loadbalancer.server.port: 3000
|
||||
traefik.http.routers.printer.rule: Host(`printer.marcpartensky.com`)
|
||||
traefik.http.routers.printer.entrypoints: web
|
||||
|
||||
|
||||
# resume-back:
|
||||
# image: amruthpillai/reactive-resume:server-latest
|
||||
# restart: unless-stopped
|
||||
# env_file:
|
||||
# - ../data/secrets/resume.env
|
||||
# environment:
|
||||
# PUBLIC_URL: https://cv.marcpartensky.com
|
||||
# PUBLIC_SERVER_URL: https://cv.marcpartensky.com/api
|
||||
# networks:
|
||||
# - caddy
|
||||
# - postgres
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.services.resume-back.loadbalancer.server.port: 3100
|
||||
# # traefik.http.routers.mail-server.rule: Host(`api.cv.marcpartensky.com`)
|
||||
# traefik.http.routers.resume-back.rule: "Host(`cv.marcpartensky.com`) && PathPrefix(`/api`)"
|
||||
# # traefik.http.routers.server.rule: >
|
||||
# # Host(`cv.marcpartensky.com`) &&
|
||||
# # PathPrefix(`/api`) ||
|
||||
# # Host(`cv.marcpartensky.fr`) &&
|
||||
# # PathPrefix(`/api`)
|
||||
# traefik.http.routers.resume-back.entrypoints: web
|
||||
# # traefik.http.routers.server.tls.certresolver: cloudflare
|
||||
# # traefik.http.routers.server.tls.certresolver: tls
|
||||
|
||||
# resume-front:
|
||||
# image: amruthpillai/reactive-resume:client-latest
|
||||
# restart: unless-stopped
|
||||
# env_file:
|
||||
# - ../data/secrets/resume.env
|
||||
# environment:
|
||||
# PUBLIC_URL: https://cv.marcpartensky.com
|
||||
# PUBLIC_SERVER_URL: https://cv.marcpartensky.com/api
|
||||
# networks:
|
||||
# - caddy
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.services.resume-front.loadbalancer.server.port: 3000
|
||||
# # traefik.http.routers.client.rule: Host(`cv.marcpartensky.fr`)
|
||||
# traefik.http.routers.resume-front.rule: Host(`cv.marcpartensky.com`)
|
||||
# # Host(`cv.marcpartensky.com`) &&
|
||||
# # Path(`/`) ||
|
||||
# # Host(`cv.marcpartensky.fr`) &&
|
||||
# # Path(`/`)
|
||||
# traefik.http.routers.resume-front.entrypoints: web
|
||||
# # traefik.http.routers.client.tls.certresolver: cloudflare
|
||||
# # traefik.http.routers.server.tls.certresolver: tls
|
||||
# # traefik.http.routers.client.middlewares: ldap_auth
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
+33
-7
@@ -1,15 +1,41 @@
|
||||
# https://acouvreur.github.io/sablier/#/plugins/traefik
|
||||
|
||||
# Traefik will evict containers from its pool if they are stopped.
|
||||
# Meaning LABELS ATTACHED TO CONTAINERS TO AUTODISCOVER THEM IS NOT POSSIBLE
|
||||
# with this plugin.
|
||||
# You have to use the dynamic config file provider instead.
|
||||
|
||||
version: "3.9"
|
||||
services:
|
||||
sablier:
|
||||
image: ghcr.io/acouvreur/sablier:local
|
||||
image: docker.io/acouvreur/sablier:1.6.1
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- start
|
||||
- --provider.name=docker
|
||||
volumes:
|
||||
- '/var/run/docker.sock:/var/run/docker.sock'
|
||||
labels:
|
||||
traefik.enable: true
|
||||
# - /run/user/1001/podman/podman.sock:/var/run/docker.sock
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- 10000:10000
|
||||
networks:
|
||||
- caddy
|
||||
# labels:
|
||||
# traefik.enable: true
|
||||
# Dynamic Middleware
|
||||
traefik.http.middlewares.dynamic.plugin.sablier.names: sablier-whoami-1
|
||||
traefik.http.middlewares.dynamic.plugin.sablier.sablierUrl: http://sablier:10000
|
||||
traefik.http.middlewares.dynamic.plugin.sablier.dynamic.sessionDuration: 1m
|
||||
# traefik.http.middlewares.dynamic.plugin.sablier.names: sablier-whoami-1
|
||||
# traefik.http.middlewares.dynamic.plugin.sablier.sablierUrl: http://sablier:10000
|
||||
# traefik.http.middlewares.dynamic.plugin.sablier.dynamic.sessionDuration: 1m
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.services.sablier.loadbalancer.server.port: 10000
|
||||
# # traefik.http.routers.sablier.rule: >
|
||||
# # Host(`sablier.marcpartensky.com`) || Host(`sablier.marcpartensky.fr`)
|
||||
# traefik.http.routers.sablier.rule: >
|
||||
# Host(`sablier.marcpartensky.com`)
|
||||
# traefik.http.routers.sablier.entrypoints: web
|
||||
# # traefik.http.routers.sablier.tls.certresolver: tls
|
||||
# traefik.http.routers.sablier.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
+7
-11
@@ -16,8 +16,6 @@ services:
|
||||
image: memcached:1.6
|
||||
restart: unless-stopped
|
||||
entrypoint: memcached -m 256
|
||||
networks:
|
||||
- seafile
|
||||
networks:
|
||||
seafile:
|
||||
aliases:
|
||||
@@ -37,8 +35,6 @@ services:
|
||||
# mem_limit: 2g
|
||||
volumes:
|
||||
- elasticsearch:/usr/share/elasticsearch/data # Requested, specifies the path to Elasticsearch data persistent store.
|
||||
networks:
|
||||
- seafile
|
||||
networks:
|
||||
seafile:
|
||||
aliases:
|
||||
@@ -74,13 +70,13 @@ services:
|
||||
- caddy
|
||||
healthcheck:
|
||||
test: curl localhost/api2/ping/
|
||||
# labels:
|
||||
# caddy: seafile.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.seafile.rule: Host(`seafile.marcpartensky.com`)
|
||||
# traefik.http.routers.seafile.entrypoints: websecure
|
||||
# traefik.http.services.seafile.loadbalancer.server.port: 80
|
||||
labels:
|
||||
# caddy: seafile.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.seafile.rule: Host(`seafile.marcpartensky.com`)
|
||||
traefik.http.routers.seafile.entrypoints: web
|
||||
traefik.http.services.seafile.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
serge:
|
||||
# image: ghcr.io/nsarrazin/serge:latest
|
||||
image: ghcr.io/serge-chat/serge:latest
|
||||
container_name: serge
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
volumes:
|
||||
- weights:/usr/src/app/weights
|
||||
- data:/data/db/
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.serge.rule: >
|
||||
# Host(`serge.marcpartensky.com`)
|
||||
# # Host(`serge.marcpartensky.fr`) ||
|
||||
# traefik.http.routers.serge.entrypoints: web
|
||||
# traefik.http.services.serge.loadbalancer.server.port: 8008
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
volumes:
|
||||
data:
|
||||
weights:
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user