21 Commits
Author SHA1 Message Date
marc 0a12f64a21 nextcloud 2025-02-17 05:12:22 +01:00
marc 32da5788e1 Makefile 2024-07-31 17:10:20 +02:00
marc 03383da087 resume 2024-03-08 15:56:26 +01:00
marc 24d6c375d6 serge 2024-03-08 15:52:54 +01:00
marc f8ad0fa89c syncthing 2024-03-08 15:52:27 +01:00
marc 6ff53e80f3 rancher 2024-03-08 15:51:44 +01:00
marc d0e41c90fc host 2023-11-12 10:39:24 +01:00
marc 31b3d9d499 network_mode: none 2023-11-12 10:38:52 +01:00
marc f1613fa3af local 2023-11-12 10:36:58 +01:00
marc 86d140593d Merge branch 'master' into local 2023-09-14 19:11:18 +02:00
marc b938f12631 changed serge image name 2023-07-06 14:50:42 +02:00
marc bae14e2fcf serge local 2023-07-06 14:49:06 +02:00
marc 9aed791981 webui 2023-06-13 23:26:24 +02:00
marc 3bc6ddd26d fix 2023-06-13 22:41:01 +02:00
marc 81dd25e1d1 resume local 2023-06-13 22:40:31 +02:00
marc dc4157583b Merge branch 'master' into local 2023-06-13 22:39:02 +02:00
marc b955925c5a postgres user 2023-06-13 22:18:51 +02:00
marc 8b314788e8 vaultwarden.yml 2023-06-13 22:14:59 +02:00
marc ce75f1204a localboard 2023-06-13 00:32:55 +02:00
marc 3fb91f986f fix postgres 2023-06-12 22:55:53 +02:00
marc 4be284c210 postgres 2023-06-12 22:04:51 +02:00
93 changed files with 874 additions and 3606 deletions
-10
View File
@@ -25,16 +25,6 @@ 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 -8
View File
@@ -18,14 +18,14 @@ sign:
gpg --encrypt --sign --recipient 'marc@marcpartensky.com' data.7z
# rm data.tgz
networks:
docker network create --attachable caddy || true
docker network create --attachable ldap || true
docker network create --attachable postgres || true
docker network create --attachable mongo || true
docker network create --attachable vpn || true
docker network create --attachable redis || true
docker network create --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
docker network create --subnet 10.22.69.0/24 --gateway 10.22.69.1 --attachable pritunl || true
docker network create --driver overlay --attachable caddy || true
docker network create --driver overlay --attachable ldap || true
docker network create --driver overlay --attachable postgres || true
docker network create --driver overlay --attachable mongo || true
docker network create --driver overlay --attachable vpn || true
docker network create --driver overlay --attachable redis || true
docker network create --driver overlay --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
docker network create --driver overlay --subnet 10.22.69.0/24 --gateway 10.22.69.1 --attachable pritunl || true
node:
docker node update --label-add net=web contabo
docker node update --label-add net=none tower
+18 -44
View File
@@ -1,56 +1,30 @@
<!-- [![Docker Swarm Deployed](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml/badge.svg)](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml) -->
[![Docker Swarm Deployed](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml/badge.svg)](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml)
# Docker
<!-- [![Docker Swarm Services](https://cdn.discordapp.com/attachments/809914059981586462/1042966875514077227/unknown.png)](https://swarm.marcpartensky.com) -->
[![Heimdall Portal](https://i.imgur.com/RiHrnck.jpeg)](https://heimdall.marcpartensky.com)
Visit my [cloud](https://heimdall.marcpartensky.com)!
Over 150 docker compose files are in the `services` folder.
[![Docker Swarm Services](https://cdn.discordapp.com/attachments/809914059981586462/1042966875514077227/unknown.png)](https://swarm.marcpartensky.com)
## Domains
- https://adguard.marcpartensky.com
- https://arch.marcpartensky.com
- https://authentik.marcpartensky.com
- https://cron.marcpartensky.com
- https://dbdesigner.marcpartensky.com
- https://dockge.marcpartensky.com
- https://docuseal.marcpartensky.com
- https://pad.marcpartensky.com
- https://firefox.marcpartensky.com
- https://file.marcpartensky.com
- https://board.marcpartensky.com
- https://marcpartensky.com
- https://pandoc.marcpartensky.com
- https://ialab.marcpartensky.com
- https://notebook.marcpartensky.com
- https://searx.marcpartensky.com
- https://wordpress.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://heimdall.marcpartensky.com
- https://homer.marcpartensky.com
- https://jellyfin.marcpartensky.com
- https://jenkins.marcpartensky.com
- https://jupyterlab.marcpartensky.com
- https://prometheus.marcpartensky.com
- https://swarm.marcpartensky.com
- https://auth.marcpartensky.com
- https://seafile.marcpartensky.com
- https://cloud.marcpartensky.com
- https://mail.marcpartensky.com
- https://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://arch.marcpartensky.com
- https://matrix.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 -->
+8 -11
View File
@@ -5,13 +5,10 @@ export COMPOSE_PATH_SEPARATOR=":"
export COMPOSE_FILE=$(find $PROJECT_PATH/services/*.yml | xargs -I @ echo -n @:)
export COMPOSE_FILE=${COMPOSE_FILE::-1}
# tool=podman-compose
tool=docker-compose
if [ "$1" = "-f" ]
then
$tool --file $@
docker-compose --file $@
exit
fi
@@ -19,10 +16,10 @@ if [ -f $PWD/docker-compose.yml ]
then
if [ "$#" = 0 ]
then
$tool ps
docker-compose ps
exit
fi
$tool --file $PWD/docker-compose.yml $@
docker-compose --file $PWD/docker-compose.yml $@
exit
fi
@@ -32,19 +29,19 @@ then
exit
fi
$tool $@
docker-compose $@
if [ "$1" = "up" ]
then
if [ "$2" = "-d" ]
then
$tool logs -f ${@: 3}
docker-compose logs -f ${@: 3}
else
$tool logs -f ${@: 2}
docker-compose logs -f ${@: 2}
fi
elif [ "$1" = "start" ]
then
$tool logs -f ${@: 2}
docker-compose logs -f ${@: 2}
elif [ "$1" = "restart" ]
then
$tool logs -f ${@: 2}
docker-compose logs -f ${@: 2}
fi
+1 -4
View File
@@ -1,8 +1,5 @@
#!/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
@@ -29,7 +26,7 @@ config_files() {
if [ -z $STACK ]
then
cmd="$tool $(config_files) up -d --force-recreate"
cmd="docker compose $(config_files) up -d"
else
cmd="docker stack deploy $(config_files) $STACK"
fi
+44 -57
View File
@@ -1,9 +1,5 @@
http:
pprof:
port: 6060
enabled: false
address: 0.0.0.0:3000
session_ttl: 720h
bind_host: 0.0.0.0
bind_port: 3000
users:
- name: marc
password: $2a$10$E9cknJr/bTLtSUJ9EaW8r.Gw30FX8Plm8jgq.LaYxMwiX4DEuDK7O
@@ -12,14 +8,22 @@ block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
debug_pprof: false
web_session_ttl: 720
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
protection_enabled: true
blocking_mode: default
blocking_ipv4: ""
blocking_ipv6: ""
blocked_response_ttl: 10
protection_disabled_until: null
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
ratelimit: 20
ratelimit_subnet_len_ipv4: 24
ratelimit_subnet_len_ipv6: 56
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
@@ -30,8 +34,8 @@ dns:
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
fallback_dns: []
upstream_mode: load_balance
all_servers: false
fastest_addr: false
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
@@ -58,6 +62,28 @@ dns:
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
filtering_enabled: true
filters_update_interval: 24
parental_enabled: false
safebrowsing_enabled: false
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
safe_search:
enabled: false
bing: true
duckduckgo: true
google: true
pixabay: true
yandex: true
youtube: true
rewrites:
- domain: medium.com
answer: 0.0.0.0
- domain: marc
answer: marcpartensky.com
blocked_services: []
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: true
@@ -66,8 +92,6 @@ dns:
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
serve_plain_dns: true
hostsfile_enabled: true
tls:
enabled: false
server_name: ""
@@ -84,14 +108,12 @@ tls:
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
@@ -139,40 +161,6 @@ 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
@@ -181,16 +169,15 @@ clients:
dhcp: true
hosts: true
persistent: []
log:
file: ""
max_backups: 0
max_size: 100
max_age: 3
compress: false
local_time: false
verbose: false
log_file: ""
log_max_backups: 0
log_max_size: 100
log_max_age: 3
log_compress: false
log_localtime: false
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 28
schema_version: 20
-156
View File
@@ -1,156 +0,0 @@
# Minimal nginx configuration for AppFlowy-Cloud
# Self Hosted AppFlowy Cloud user should alter this file to suit their needs
events {
worker_connections 1024;
}
http {
# docker dns resolver
resolver 127.0.0.11 valid=10s;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8080;
# https://github.com/nginxinc/nginx-prometheus-exporter
location = /stub_status {
stub_status;
}
}
server {
# ssl_certificate /etc/nginx/ssl/certificate.crt;
#ssl_certificate_key /etc/nginx/ssl/private_key.key;
listen 80;
listen 443 ssl;
client_max_body_size 10M;
underscores_in_headers on;
# GoTrue
location /gotrue/ {
set $gotrue gotrue;
proxy_pass http://$gotrue:9999;
rewrite ^/gotrue(/.*)$ $1 break;
# Allow headers like redirect_to to be handed over to the gotrue
# for correct redirecting
proxy_set_header Host $http_host;
proxy_pass_request_headers on;
}
# WebSocket
location /ws {
set $appflowy_cloud appflowy_cloud;
proxy_pass http://$appflowy_cloud:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
# AppFlowy-Cloud
# created a separate location block for handling CORS preflight (OPTIONS) requests specifically for the /api endpoint.
location = /api/options {
if ($http_origin ~* (http://127.0.0.1:8000)) {
add_header 'Access-Control-Allow-Origin' $http_origin;
}
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, Accept, Client-Version';
add_header 'Access-Control-Max-Age' 3600;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
location /api {
set $appflowy_cloud appflowy_cloud;
proxy_pass http://$appflowy_cloud:8000;
proxy_set_header X-Request-Id $request_id;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Set CORS headers for other requests
if ($http_origin ~* (http://127.0.0.1:8000)) {
add_header 'Access-Control-Allow-Origin' $http_origin always;
}
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, Accept, Client-Version' always;
add_header 'Access-Control-Max-Age' 3600 always;
}
# Minio Web UI
# Derive from: https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
# Optional Module, comment this section if you are did not deploy minio in docker-compose.yml
location /minio/ {
set $minio minio;
proxy_pass http://$minio:9001;
rewrite ^/minio/(.*) /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
## This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
## To support websockets in MinIO versions released after January 2023
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
# Uncomment the following line to set the Origin request to an empty string
# proxy_set_header Origin '';
chunked_transfer_encoding off;
}
# PgAdmin
# Optional Module, comment this section if you are did not deploy pgadmin in docker-compose.yml
location /pgadmin/ {
set $pgadmin pgadmin;
proxy_pass http://$pgadmin:80;
proxy_set_header X-Script-Name /pgadmin;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $host;
proxy_redirect off;
}
# Portainer
# Optional Module, comment this section if you are did not deploy portainer in docker-compose.yml
location /portainer/ {
set $portainer portainer;
proxy_pass http://$portainer:9000;
rewrite ^/portainer/(.*) /$1 break;
}
# Admin Frontend
# Optional Module, comment this section if you are did not deploy admin_frontend in docker-compose.yml
location / {
set $admin_frontend admin_frontend;
proxy_pass http://$admin_frontend:3000;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $host;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
[database]
type = postgres
host = postgres:5432
name = grafana
user = grafana
password = ZTliY2MwOWQ5ZjNiMzUyMTc5YWMwNmJi
ssl_mode = disable
[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
+5 -626
View File
@@ -1,628 +1,7 @@
http:
# middlewares:
# basic:
# basicAuth:
# users:
# - test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
# # usersFile: etc/traefik/.htpasswd
services:
pgadmin:
loadBalancer:
servers:
- url: http://pgadmin:80
jellyfin:
loadBalancer:
servers:
- url: http://jellyfin:8096
portainer:
loadBalancer:
servers:
- url: http://portainer:9000
dbdesigner:
loadBalancer:
servers:
- url: http://dbdesigner:3000
etherpad:
loadBalancer:
servers:
- url: http://etherpad:9001
mongo:
loadBalancer:
servers:
- url: http://mongo:8081
resume:
loadBalancer:
servers:
- url: http://resume:3000
printer:
loadBalancer:
servers:
- url: http://resume:3000
mailu:
loadBalancer:
servers:
- url: http://mailu:80
yt-dlp-webui:
loadBalancer:
servers:
- url: http://yt-dlp-webui:80
wger-nginx:
loadBalancer:
servers:
- url: http://wger:80
web-terminal:
loadBalancer:
servers:
- url: http://web-terminal:7681
homer:
loadBalancer:
servers:
- url: http://homer:8080
pandoc:
loadBalancer:
servers:
- url: http://pandoc:80
jupyterlab:
loadBalancer:
servers:
- url: http://jupyterlab:8888
gitlab:
loadBalancer:
servers:
- url: http://gitlab:80
serge:
loadBalancer:
servers:
- url: http://serge:8008
arch:
loadBalancer:
servers:
- url: http://arch:8080
gitea:
loadBalancer:
servers:
- url: http://gitea:3000
# heimdall:
# loadBalancer:
# servers:
# - url: http://heimdall:80
pgweb:
loadBalancer:
servers:
- url: http://pgweb:8081
paperless:
loadBalancer:
servers:
- url: http://paperless:8000
jenkins:
loadBalancer:
servers:
- url: http://jenkins:8080
rancher:
loadBalancer:
servers:
- url: http://rancher:80
docuseal:
loadBalancer:
servers:
- url: http://docuseal:3000
grafana:
loadBalancer:
servers:
- url: http://grafana:3000
peertube:
loadBalancer:
servers:
- url: http://peertube:9000
mcmyadmin:
loadBalancer:
servers:
- url: http://mcmyadmin:8080
qbittorrent:
loadBalancer:
servers:
- url: http://qbittorrent:8080
dockge:
loadBalancer:
servers:
- url: http://dockge:5001
webshot:
loadBalancer:
servers:
- url: http://webshot:3000
routers:
pgadmin:
rule: "Host(`pgadmin.marcpartensky.com`)"
service: pgadmin
entryPoints: ["web"]
middlewares: ["sablier-pgadmin@file"]
jellyfin:
rule: "Host(`jellyfin.marcpartensky.com`)"
service: jellyfin
entryPoints: ["web"]
middlewares: ["sablier-jellyfin@file"]
portainer:
rule: "Host(`docker.marcpartensky.com`)"
service: portainer
entryPoints: ["web"]
middlewares: ["sablier-portainer@file"]
dbdesigner:
rule: "Host(`dbdesigner.marcpartensky.com`)"
service: dbdesigner
entryPoints: ["web"]
middlewares: ["sablier-dbdesigner@file"]
etherpad:
rule: "Host(`pad.marcpartensky.com`)"
service: etherpad
entryPoints: ["web"]
middlewares: ["sablier-etherpad@file"]
mongo:
rule: "Host(`mongo.marcpartensky.com`)"
service: mongo-express
entryPoints: ["web"]
middlewares: ["sablier-mongo@file"]
resume:
rule: "Host(`cv.marcpartensky.com`)"
service: resume
entryPoints: ["web"]
middlewares: ["sablier-resume@file"]
printer:
rule: "Host(`printer.marcpartensky.com`)"
service: resume
entryPoints: ["web"]
middlewares: ["sablier-resume@file"]
mailu:
rule: "Host(`mail.marcpartensky.com`)"
service: mailu
entryPoints: ["web"]
middlewares: ["sablier-mailu@file"]
yt-dlp-webui:
rule: "Host(`yt.marcpartensky.com`)"
service: yt-dlp-webui
entryPoints: ["web"]
middlewares: ["sablier-yt-dlp-webui@file"]
wger:
rule: "Host(`wger.marcpartensky.com`)"
service: wger-nginx
entryPoints: ["web"]
middlewares: ["sablier-wger@file"]
web-terminal:
rule: "Host(`terminal.marcpartensky.com`)"
service: web-terminal
entryPoints: ["web"]
middlewares: ["sablier-web-terminal@file", "ldap_auth@docker"]
homer:
rule: "Host(`homer.marcpartensky.com`)"
service: homer
entryPoints: ["web"]
middlewares: ["sablier-homer@file"]
pandoc:
rule: "Host(`pandoc.marcpartensky.com`)"
service: pandoc
entryPoints: ["web"]
middlewares: ["sablier-pandoc@file"]
jupyterlab:
rule: "Host(`jupyterlab.marcpartensky.com`)"
service: jupyterlab
entryPoints: ["web"]
middlewares: ["sablier-jupyterlab@file"]
gitlab:
rule: "Host(`gitlab.marcpartensky.com`)"
service: gitlab
entryPoints: ["web"]
middlewares: ["sablier-gitlab@file"]
serge:
rule: "Host(`serge.marcpartensky.com`)"
service: serge
entryPoints: ["web"]
middlewares: ["sablier-serge@file"]
arch:
rule: "Host(`arch.marcpartensky.com`)"
service: arch
entryPoints: ["web"]
middlewares: ["sablier-arch@file"]
gitea:
rule: "Host(`git.marcpartensky.com`)"
service: gitea
entryPoints: ["web"]
middlewares: ["sablier-gitea@file"]
# heimdall:
# rule: "Host(`heimdall.marcpartensky.com`)"
# service: heimdall
# entryPoints: ["web"]
# middlewares: ["sablier-heimdall@file"]
pgweb:
rule: "Host(`pgweb.marcpartensky.com`)"
service: pgweb
entryPoints: ["web"]
middlewares: ["sablier-pgweb@file", "ldap_auth@docker"]
paperless:
rule: "Host(`paperless.marcpartensky.com`)"
service: paperless
entryPoints: ["web"]
middlewares: ["sablier-paperless@file"]
jenkins:
rule: "Host(`jenkins.marcpartensky.com`)"
service: jenkins
entryPoints: ["web"]
middlewares: ["sablier-jenkins@file"]
rancher:
rule: "Host(`rancher.marcpartensky.com`)"
service: rancher
entryPoints: ["web"]
middlewares: ["sablier-rancher@file"]
docuseal:
rule: "Host(`docuseal.marcpartensky.com`)"
service: docuseal
entryPoints: ["web"]
middlewares: ["sablier-docuseal@file"]
grafana:
rule: "Host(`grafana.marcpartensky.com`)"
service: grafana
entryPoints: ["web"]
middlewares: ["sablier-grafana@file"]
peertube:
rule: "Host(`peertube.marcpartensky.com`)"
service: peertube
entryPoints: ["web"]
middlewares: ["sablier-peertube@file"]
mcmyadmin:
rule: "Host(`mcmyadmin.marcpartensky.com`)"
service: mcmyadmin
entryPoints: ["web"]
middlewares: ["sablier-mcmyadmin@file"]
qbittorrent:
rule: "Host(`torrent.marcpartensky.com`)"
service: qbittorrent
entryPoints: ["web"]
middlewares: ["sablier-qbittorrent@file", "ldap_auth@docker"]
dockge:
rule: "Host(`dockge.marcpartensky.com`)"
service: dockge
entryPoints: ["web"]
middlewares: ["sablier-dockge@file", "ldap_auth@docker"]
webshot:
rule: "Host(`webshot.marcpartensky.com`)"
service: webshot
entryPoints: ["web"]
middlewares: ["sablier-webshot@file", "ldap_auth@docker"]
middlewares:
cloudflarewarp:
plugin:
cloudflarewarp:
disableDefault: false
trustip: # Trust IPS not required if disableDefault is false - we will allocate Cloud Flare IPs automatically
- "2400:cb00::/32"
sablier-pgadmin:
plugin:
sablier:
sablierUrl: http://sablier:10000
sessionDuration: 5m
names: pgadmin
dynamic:
displayName: pgAdmin
refreshFrequency: 5s
showDetails: true
theme: ghost
sablier-jellyfin:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: jellyfin
sessionDuration: 5m
dynamic:
# showDetails: true
displayName: Jellyfin
refreshFrequency: 5s
theme: shuffle
sablier-portainer:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: portainer,portainer-agent
sessionDuration: 1m
dynamic:
displayName: Portainer
showDetails: true
theme: shuffle
sablier-dbdesigner:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: dbdesigner
sessionDuration: 5m
dynamic:
displayName: dbDesigner
showDetails: true
theme: ghost
refreshFrequency: 1s
sablier-etherpad:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: etherpad
sessionDuration: 5m
dynamic:
displayName: Etherpad
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-mongo:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: mongo-express
sessionDuration: 5m
dynamic:
displayName: Mongo Express
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-resume:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: resume,printer
sessionDuration: 5m
dynamic:
displayName: Reactive Resume
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-mailu:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: mailu,mailu-resolver,mailu-admin,mailu-imap,mailu-smtp,mailu-oletools,mailu-antispam,mailu-webdav,mailu-fetchmail
sessionDuration: 5m
dynamic:
displayName: Mailu
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-yt-dlp-webui:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: yt-dlp-webui
sessionDuration: 5m
dynamic:
displayName: yt-dlp WebUI
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-wger:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: wger,wger-nginx,wger-celery,wger-celery-beat
sessionDuration: 5m
dynamic:
displayName: yt-dlp WebUI
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-web-terminal:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: web-terminal
sessionDuration: 5m
dynamic:
displayName: Web Terminal
showDetails: true
theme: matrix
refreshFrequency: 1s
sablier-homer:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: homer
sessionDuration: 5m
dynamic:
displayName: Homer
showDetails: true
theme: shuffle
refreshFrequency: 1s
sablier-pandoc:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: pandoc
sessionDuration: 5m
dynamic:
displayName: Pandoc
showDetails: true
# theme: hacker-terminal
refreshFrequency: 1s
sablier-jupyterlab:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: jupyterlab
sessionDuration: 5m
dynamic:
displayName: Jupyter Lab
showDetails: true
theme: matrix
refreshFrequency: 1s
sablier-gitlab:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: gitlab,gitlab-runner
sessionDuration: 5m
dynamic:
displayName: Gitlab
showDetails: true
theme: matrix
refreshFrequency: 5s
sablier-serge:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: serge
sessionDuration: 5m
dynamic:
displayName: Serge
showDetails: true
theme: matrix
refreshFrequency: 5s
sablier-arch:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: arch
sessionDuration: 5m
dynamic:
displayName: Arch Linux VNC
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-gitea:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: gitea
sessionDuration: 5m
dynamic:
displayName: Gitea
showDetails: true
theme: ghost
refreshFrequency: 5s
# sablier-heimdall:
# plugin:
# sablier:
# sablierUrl: http://sablier:10000
# names: heimdall
# sessionDuration: 5m
# dynamic:
# displayName: Heimdall
# showDetails: true
# theme: ghost
# refreshFrequency: 5s
sablier-pgweb:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: pgweb
sessionDuration: 5m
dynamic:
displayName: PG Web
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-paperless:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: paperless
sessionDuration: 2m
dynamic:
displayName: Paperless
showDetails: true
theme: hacker-matrix
refreshFrequency: 5s
sablier-jenkins:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: jenkins
sessionDuration: 2m
dynamic:
displayName: Jenkins
showDetails: true
theme: matrix
refreshFrequency: 5s
sablier-rancher:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: rancher
sessionDuration: 2m
dynamic:
displayName: Rancher
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-docuseal:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: docuseal
sessionDuration: 2m
dynamic:
displayName: Docuseal
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-grafana:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: grafana
sessionDuration: 2m
dynamic:
displayName: Grafana
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-peertube:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: peertube
sessionDuration: 2m
dynamic:
displayName: Peertube
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-mcmyadmin:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: mcmyadmin
sessionDuration: 2m
dynamic:
displayName: McMyAdmin
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-qbittorrent:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: qbittorrent
sessionDuration: 2m
dynamic:
displayName: Qbittorrent
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-dockge:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: dockge
sessionDuration: 2m
dynamic:
displayName: Dockge
showDetails: true
theme: ghost
refreshFrequency: 5s
sablier-webshot:
plugin:
sablier:
sablierUrl: http://sablier:10000
names: webshot
sessionDuration: 2m
dynamic:
displayName: Webshot
showDetails: true
theme: ghost
refreshFrequency: 5s
basic:
basicAuth:
users:
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
# usersFile: etc/traefik/.htpasswd
+10 -17
View File
@@ -10,13 +10,12 @@ api:
debug: false
providers:
docker:
# swarmMode: false
swarmMode: true
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # traefik enabled containers only
network: caddy
file:
filename: /etc/traefik/dynamic.yml
watch: true
filename: dynamic.yml
serversTransport: # enable ssl backend
insecureSkipVerify: true
certificatesResolvers:
@@ -64,7 +63,7 @@ entryPoints:
http:
redirections:
entryPoint:
# to: websecure
to: websecure
scheme: https
permanent: true
priority: 10
@@ -72,29 +71,23 @@ experimental:
# http3: true
plugins:
ldapAuth:
moduleName: github.com/wiltonsr/ldapAuth
# version: v0.0.19
version: v0.1.10
moduleName: "github.com/wiltonsr/ldapAuth"
version: "v0.0.19"
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
cloudflarewarp:
modulename: github.com/BetterCorp/cloudflarewarp
version: v1.3.0
moduleName: "github.com/acouvreur/sablier"
version: "v1.0.0"
# ldap entreprise https://doc.traefik.io/traefik-enterprise/operations/static-configuration/
# authSources:
# ldapSource:
# ldap:
# url: ldaps://marcpartensky.com:636
# # url: ldap://ldap:389
# startTLS: true
# insecureSkipVerify: true
# bindDn: ""
# # bindDN: cn=marc,dc=marcpartensky,dc=com
# bindDN: cn=admin,dc=admin,dc=org
# - --providers.docker.network=web # <== Operate on the docker network named web
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
-27
View File
@@ -1,27 +0,0 @@
upstream wger {
server wger:8000;
}
server {
listen 80;
location / {
proxy_pass http://wger;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_redirect off;
}
location /static/ {
alias /wger/static/;
}
location /media/ {
alias /wger/media/;
}
# Increase max body size to allow for video uploads
client_max_body_size 100M;
}
Vendored
+16 -10
View File
@@ -1,17 +1,23 @@
cloudflare
traefik
postgres
mongo
website
valentin
open-web-calendar
adguard
servant
discord
docker-api
ialab
portainer
authentik
nextcloud
jenkins
seafile
matrix
etherpad
pritunl
pritunl-mongo
fail2ban
ldap
ldap-manager
vaultwarden
authentik
sablier
minio
resume
syncthing
wger
redis
terminal
+18 -27
View File
@@ -7,42 +7,33 @@ 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:
traefik.enable: "true"
traefik.http.routers.adguard.rule: >
Host(`adguard.marcpartensky.com`)
traefik.http.routers.adguard.entrypoints: web
# traefik.http.routers.adguard.tls.certresolver: cloudflare
traefik.http.services.adguard.loadbalancer.server.port: 3000
traefik.http.routers.adguard.middlewares: ldap_auth
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.adguard.rule: >
# Host(`adguard.marcpartensky.com`) ||
# Host(`adguard.marcpartensky.fr`)
# traefik.http.routers.adguard.entrypoints: websecure
# traefik.http.routers.adguard.tls.certresolver: cloudflare
# traefik.http.services.adguard.loadbalancer.server.port: 3000
# traefik.http.routers.adguard.middlewares: ldap_auth
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:
-24
View File
@@ -1,24 +0,0 @@
services:
alpine:
image: docker.io/marcpartensky/alpine:vnc
restart: unless-stopped
volumes:
- /srv/alpine:/home/marc/data
env_file:
- ../data/secrets/alpine.env
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.alpine.rule: >
Host(`alpine.marcpartensky.com`)
traefik.http.routers.alpine.entrypoints: web
# traefik.http.routers.alpine.tls.certresolver: tls
traefik.http.services.alpine.loadbalancer.server.port: 6080
volumes:
data:
networks:
caddy:
external: true
-54
View File
@@ -1,54 +0,0 @@
# Essential services for AppFlowy Cloud
version: "3.9"
services:
appflowy-nginx:
restart: on-failure
image: nginx
# ports:
# - 80:80 # Disable this if you are using TLS
volumes:
- ../data/appflowy/nginx.conf:/etc/nginx/nginx.conf
# - ./nginx/ssl/certificate.crt:/etc/nginx/ssl/certificate.crt
# - ./nginx/ssl/private_key.key:/etc/nginx/ssl/private_key.key
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.services.appflowy.loadbalancer.server.port: 80
traefik.http.routers.appflowy.rule: >
Host(`appflowy.marcpartensky.com`)
traefik.http.routers.appflowy.entrypoints: web
# traefik.http.routers.appflowy.tls.certresolver: tls
traefik.http.routers.appflowy.middlewares: ldap_auth
gotrue:
image: appflowyinc/gotrue:${GOTRUE_VERSION:-latest}
restart: on-failure
networks:
- caddy
- postgres
env_file:
- ../data/secrets/appflowy.env
appflowy-cloud:
image: appflowyinc/appflowy_cloud:${BACKEND_VERSION:-latest}
restart: on-failure
env_file:
- ../data/secrets/appflowy.env
appflowy-admin:
restart: on-failure
image: appflowyinc/admin_frontend:${BACKEND_VERSION:-latest}
depends_on:
- gotrue
env_file:
- ../data/secrets/appflowy.env
networks:
caddy:
external: true
postgres:
external: true
redis:
external: true
+9 -16
View File
@@ -2,7 +2,6 @@ version: "3.9"
services:
arch:
image: marcpartensky/arch:vnc
container_name: arch
restart: unless-stopped
ports: # vnc is shared
- "5900:5900"
@@ -11,21 +10,15 @@ services:
- ldap
volumes:
- arch:/home/marc
healthcheck:
test: curl --fail http://localhost:8080/ || exit 1
interval: 5m
timeout: 30s
retries: 3
start_period: 60s
# deploy:
# labels:
# caddy: arch.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 8080}}"
# traefik.enable: "true"
# traefik.http.routers.arch.rule: Host(`arch.marcpartensky.com`)
# traefik.http.routers.arch.entrypoints: websecure
# traefik.http.routers.arch.tls.certresolver: tls
# traefik.http.services.arch.loadbalancer.server.port: 8080
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
-38
View File
@@ -1,38 +0,0 @@
services:
audiobookshelf:
image: advplyr/audiobookshelf:latest
restart: unless-stopped
volumes:
- /srv/audiobookshelf/config:/config
- /srv/audiobookshelf/audiobooks:/audiobooks
- /srv/audiobookshelf/podcasts:/podcasts
- /srv/audiobookshelf/metadata:/metadata
# env_file:
# - ../data/secrets/audiobookshelf.env # Fichier d'environnement optionnel
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.audiobookshelf.rule: >
Host(`audiobookshelf.marcpartensky.com`)
traefik.http.routers.audiobookshelf.entrypoints: web
# traefik.http.services.audiobookshelf.loadbalancer.server.port: 13378
traefik.http.services.audiobookshelf.loadbalancer.server.port: 80
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
environment:
- TZ=Europe/Paris # Remplace par ton fuseau horaire
- AUDIOBOOKSHELF_UID=1000 # UID pour l'utilisateur
- AUDIOBOOKSHELF_GID=1000 # GID pour le groupe
# volumes:
# config:
# audiobooks:
# podcasts:
networks:
caddy:
external: true
+21 -28
View File
@@ -3,50 +3,43 @@ services:
authelia:
image: authelia/authelia
restart: unless-stopped
# expose:
# - 9091
env_file:
- ../data/secrets/authelia.env
expose:
- 9091
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: web
# traefik.http.routers.authelia.tls: true
# traefik.http.routers.authelia.tls.certresolver: tls
traefik.http.routers.authelia.entrypoints: websecure
traefik.http.routers.authelia.tls: true
traefik.http.routers.authelia.tls.certresolver: tls
traefik.http.middlewares.authelia.forwardauth.address: http://authelia:9091/api/verify?rd=https://authelia.marcpartensky.com # yamllint disable-line rule:line-length
traefik.http.middlewares.authelia.forwardauth.trustForwardHeader: true
traefik.http.middlewares.authelia.forwardauth.authResponseHeaders: Remote-User,Remote-Groups,Remote-Name,Remote-Email # yamllint disable-line rule:line-length
# redis:
# image: redis:alpine
# restart: unless-stopped
# expose:
# - 6379
# environment:
# TZ: France/Paris
# volumes:
# - authelia_redis:/data
# networks:
# - authelia
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
+25 -26
View File
@@ -2,8 +2,7 @@ version: "3.9"
services:
authentik:
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
image: ghcr.io/goauthentik/server:2024.4.2
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
restart: unless-stopped
command: server
environment:
@@ -17,7 +16,7 @@ services:
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
volumes:
- authentik_media:/media
- media:/media
- templates:/templates
- geoip:/geoip
# depends_on:
@@ -34,24 +33,18 @@ services:
caddy: authentik.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9000}}"
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
traefik.enable: "true"
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
traefik.http.routers.authentik.entrypoints: web
# traefik.http.routers.authentik.tls.certresolver: cloudflare
traefik.http.services.authentik.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.fr`)
# traefik.http.routers.authentik.entrypoints: websecure
# traefik.http.routers.authentik.tls.certresolver: cloudflare
# traefik.http.services.authentik.loadbalancer.server.port: 9000
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.fr`)
traefik.http.routers.authentik.entrypoints: websecure
traefik.http.routers.authentik.tls.certresolver: cloudflare
traefik.http.services.authentik.loadbalancer.server.port: 9000
worker:
# image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.4.2}
image: ghcr.io/goauthentik/server:2024.4.2
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: redis
@@ -63,7 +56,7 @@ services:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/authentik:/backups
- authentik_media:/media
- media:/media
- certs:/certs
- templates:/templates
- geoip:/geoip
@@ -90,20 +83,26 @@ services:
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
- 3389:389
- 6636:636
# Optionally specify which networks the container should be
# might be needed to reach the core authentik server
networks:
- authentik # connect to authentik server
- ldap # connect to other services
- authentik
environment:
AUTHENTIK_DEBUG: "true"
AUTHENTIK_HOST: http://authentik:9000
# AUTHENTIK_HOST: https://authentik:9443
# AUTHENTIK_HOST: https://authentik.marcpartensky.fr
AUTHENTIK_INSECURE: "false"
env_file:
- ../data/secrets/authentik.env
- ../data/secrets/authentik_ldap.env
volumes:
# backups:
postgres:
authentik_media:
media:
certs:
templates:
geoip:
-7
View File
@@ -1,7 +0,0 @@
services:
autodownloader:
image: marcpartensky/autodownloader
volumes:
- /srv/jellyfin/movies:/movies
env_file:
- ../data/secrets/autodownloader.env
+1 -20
View File
@@ -1,30 +1,11 @@
version: "3.9"
services:
cloudflare:
image: docker.io/cloudflare/cloudflared:latest
restart: unless-stopped
image: cloudflare/cloudflared:latest
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
-50
View File
@@ -1,50 +0,0 @@
# Conduit - Behind Traefik Reverse Proxy
version: '3'
services:
homeserver:
image: matrixconduit/matrix-conduit:latest
restart: unless-stopped
# labels:
# - "traefik.enable=true"
# - "traefik.docker.network=proxy" # Change this to the name of your Traefik docker proxy network
# - "traefik.http.routers.to-conduit.rule=Host(`sub_domain.domain.com`)" # Change to the address on which Conduit is hosted
# - "traefik.http.routers.to-conduit.tls=true"
# - "traefik.http.routers.to-conduit.tls.certresolver=letsencrypt"
# - "traefik.http.routers.to-conduit.middlewares=cors-headers@docker"
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*"
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
# - "traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
ports:
- 8448:6167
volumes:
- db:/srv/conduit/.local/share/conduit
### Uncomment if you want to use conduit.toml to configure Conduit
### Note: Set env vars will override conduit.toml values
- ./conduit.toml:/srv/conduit/conduit.toml
networks:
- proxy
environment:
CONDUIT_SERVER_NAME: sub_domain.domain.com # replace with your own name
CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
CONDUIT_ALLOW_REGISTRATION : 'true'
### Uncomment and change values as desired
# CONDUIT_ADDRESS: 0.0.0.0
# CONDUIT_PORT: 6167
# CONDUIT_CONFIG: '/srv/conduit/conduit.toml' # if you want to configure purely by env vars, set this to an empty string ''
# Available levels are: error, warn, info, debug, trace - more info at: https://docs.rs/env_logger/*/env_logger/#enabling-logging
# CONDUIT_LOG: info # default is: "warn,_=off,sled=off"
CONDUIT_LOG: debug
# CONDUIT_ALLOW_JAEGER: 'false'
# CONDUIT_ALLOW_ENCRYPTION: 'false'
# CONDUIT_ALLOW_FEDERATION: 'false'
# CONDUIT_DATABASE_PATH: /srv/conduit/.local/share/conduit
# CONDUIT_WORKERS: 10
# CONDUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB
networks:
proxy:
+13 -12
View File
@@ -1,24 +1,25 @@
version: "3.9"
services:
crontab:
ui:
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
- crontabs:/crontab-ui/crontabs
deploy:
labels:
traefik.enable: "true"
traefik.http.services.ui.loadbalancer.server.port: 8000
traefik.http.routers.ui.rule: >
Host(`cron.marcpartensky.com`) ||
Host(`cron.marcpartensky.fr`)
traefik.http.routers.ui.entrypoints: websecure
# traefik.http.routers.ui.tls.certresolver: tls
traefik.http.routers.ui.tls.certresolver: cloudflare
traefik.http.routers.ui.middlewares: ldap_auth
volumes:
crontabs:
-21
View File
@@ -1,21 +0,0 @@
version: "3.9"
services:
dbdesigner:
image: marcpartensky/dbdesigner
container_name: dbdesigner
networks:
- caddy
environment:
PORT: 3000
labels:
# traefik.enable: "true"
# traefik.http.services.dbdesigner.loadbalancer.server.port: 3000
# traefik.http.routers.dbdesigner.rule: >
# Host(`dbdesigner.marcpartensky.com`)
# traefik.http.routers.dbdesigner.entrypoints: web
# traefik.http.routers.dbdesigner.tls.certresolver: tls
traefik.http.routers.dbdesigner.middlewares: ldap_auth
networks:
caddy:
external: true
+18 -23
View File
@@ -1,39 +1,34 @@
# version: "3.9"
version: "3.9"
services:
bot:
# image: docker.io/marcpartensky/discord-bot:v141.138ee20.2024-09-08
image: docker.io/marcpartensky/discord-bot:latest
# image: docker.io/marcpartensky/discord-bot:v152.04b7e7a.2024-09-15
image: marcpartensky/discord-bot:v107.be20e90.2022-05-21
restart: unless-stopped
ports:
- "7011:8000"
- "7010:8000"
networks:
- discord
- postgres
env_file:
- ../data/secrets/discord-bot.env
deploy:
replicas: 1
# ia:
# image: marcpartensky/discord-bot
# restart: unless-stkopped
# ports:
# - "7011:8000"
# networks:
# - discord
# env_file:
# - ../data/secrets/ia.env
# deploy:
# replicas: 1
ia:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7011:8000"
networks:
- discord
env_file:
- ../data/secrets/ia.env
deploy:
replicas: 1
# chatgpt:
# image: xxxbrian/discord_chatgpt_bot:latest
# env_file:
# - ../data/secrets/discord_chatgpt.env
chatgpt:
image: xxxbrian/discord_chatgpt_bot:latest
env_file:
- ../data/secrets/discord_chatgpt.env
networks:
discord:
postgres:
external: true
-31
View File
@@ -1,31 +0,0 @@
version: "3.8"
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: unless-stopped
# ports:
# - 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ../data/dockge:/app/data
# Stacks Directory
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
# ⚠️ 1. FULL path only. No relative path (MUST)
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
- ./:/opt/stacks
environment:
# Tell Dockge where to find the stacks
- DOCKGE_STACKS_DIR=/opt/stacks
networks:
- caddy
# labels:
# traefik.enable: "true"
# traefik.http.services.dockge.loadbalancer.server.port: 5001
# traefik.http.routers.dockge.rule: >
# Host(`dockge.marcpartensky.com`)
# traefik.http.routers.dockge.entrypoints: web
# traefik.http.routers.dockge.middlewares: ldap_auth
networks:
caddy:
external: true
-27
View File
@@ -1,27 +0,0 @@
version: "3.9"
services:
docuseal:
container_name: docuseal
image: docuseal/docuseal:latest
ports:
- 3000:3000
volumes:
- /srv/docuseal:/data
env_file:
- ../data/secrets/docuseal.env
networks:
- caddy
- postgres
# labels:
# traefik.enable: "true"
# traefik.http.routers.docuseal.rule: >
# Host(`docuseal.marcpartensky.com`)
# traefik.http.routers.docuseal.entrypoints: web
# traefik.http.services.docuseal.loadbalancer.server.port: 3000
networks:
caddy:
external: true
postgres:
external: true
-32
View File
@@ -1,32 +0,0 @@
services:
ebook2audiobook:
image: athomasson2/ebook2audiobookxtts:huggingface
platform: linux/amd64
restart: unless-stopped
volumes:
- /srv/ebook2audiobookxtts:/app/data
# ports:
# - "7860:7860" # Exposition du port 7860 pour accéder à l'application
networks:
- caddy
command: python app.py
labels:
traefik.enable: "true"
traefik.http.routers.ebook2audiobook.rule: >
Host(`ebook2audiobook.marcpartensky.com`)
traefik.http.routers.ebook2audiobook.entrypoints: web
traefik.http.services.ebook2audiobook.loadbalancer.server.port: 7860
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7860"]
interval: 30s
timeout: 10s
retries: 3
environment:
TZ: Europe/Paris # Définir le fuseau horaire
UID: 1000 # UID pour l'utilisateur
GID: 1000 # GID pour le groupe
PYTHONUNBUFFERED: 1 # Désactiver le tampon de sortie Python pour une meilleure visibilité des logs
networks:
caddy:
external: true
+13 -12
View File
@@ -3,7 +3,6 @@ version: "3.9"
services:
etherpad:
image: etherpad/etherpad
container_name: etherpad
restart: unless-stopped
env_file:
- ../data/secrets/etherpad.env
@@ -16,17 +15,19 @@ services:
# - data:/opt/etherpad-lite/var
# volumes:
# - ../data/etherpad/settings.json:/opt/etherpad-lite/settings.json
labels:
traefik.enable: "true"
# traefik.http.routers.etherpad.rule: >
# Host(`pad.marcpartensky.com`)
# traefik.http.routers.etherpad.entrypoints: web
# # traefik.http.routers.etherpad.tls.certresolver: cloudflare
# traefik.http.services.etherpad.loadbalancer.server.port: 9001
traefik.http.middlewares.redirect-pad-com.redirectregex.regex: "^https://etherpad.marcpartensky.com/(.*)"
traefik.http.middlewares.redirect-pad-com.redirectregex.replacement: "https://pad.marcpartensky.com/$${1}"
traefik.http.middlewares.redirect-pad-fr.redirectregex.regex: "^https://etherpad.marcpartensky.fr/(.*)"
traefik.http.middlewares.redirect-pad-fr.redirectregex.replacement: "https://pad.marcpartensky.fr/$${1}"
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.etherpad.rule: >
Host(`pad.marcpartensky.com`) ||
Host(`pad.marcpartensky.fr`)
traefik.http.routers.etherpad.entrypoints: websecure
traefik.http.routers.etherpad.tls.certresolver: cloudflare
traefik.http.services.etherpad.loadbalancer.server.port: 9001
traefik.http.middlewares.redirect-pad-com.redirectregex.regex: "^https://etherpad.marcpartensky.com/(.*)"
traefik.http.middlewares.redirect-pad-com.redirectregex.replacement: "https://pad.marcpartensky.com/$${1}"
traefik.http.middlewares.redirect-pad-fr.redirectregex.regex: "^https://etherpad.marcpartensky.fr/(.*)"
traefik.http.middlewares.redirect-pad-fr.redirectregex.replacement: "https://pad.marcpartensky.fr/$${1}"
# volumes:
# data:
-60
View File
@@ -1,60 +0,0 @@
version: "3.9"
services:
fdroid:
image: nginx
# image: registry.gitlab.com/fdroid/docker-executable-fdroidserver:master
restart: unless-stopped
env_file:
- ../data/secrets/fdroid.env
# command: bash -c './wait-for postgres:5432 -- python3 manage.py migrate && ./httpd-foreground'
volumes:
- /srv/fdroid:/usr/share/nginx/html:ro
- ../data/fdroid/config.py:/apk/config.py
- ../data/fdroid/fdroid.keystore:/tmp/my.keystore
# - /srv/fdroid/apk:/repo
# - /srv/fdroid:/repomaker/data
networks:
- caddy
- postgres
labels:
traefik.enable: "true"
traefik.http.services.fdroid.loadbalancer.server.port: 80
traefik.http.routers.fdroid.rule: Host(`fdroid.marcpartensky.com`)
traefik.http.routers.fdroid.entrypoints: web
# fdroid:
# image: registry.gitlab.com/fdroid/repomaker:latest
# restart: unless-stopped
# env_file:
# - ../data/secrets/fdroid.env
# command: bash -c './wait-for postgres:5432 -- python3 manage.py migrate && ./httpd-foreground'
# volumes:
# - /srv/fdroid:/repomaker/data
# - ../data/fdroid/settings_docker.py:/repomaker/repomaker/settings_docker.py
# networks:
# - caddy
# - postgres
# labels:
# traefik.enable: "true"
# traefik.http.services.fdroid.loadbalancer.server.port: 80
# traefik.http.routers.fdroid.rule: Host(`fdroid.marcpartensky.com`)
# traefik.http.routers.fdroid.entrypoints: web
# fdroid-tasks:
# image: registry.gitlab.com/fdroid/repomaker:latest
# restart: unless-stopped
# env_file:
# - ../data/secrets/fdroid.env
# command: bash -c './wait-for fdroid:80 -- su www-data -p -s /bin/bash -c "cd /repomaker && python3 manage.py process_tasks"'
# volumes:
# - /srv/fdroid:/repomaker/data
# depends_on:
# - fdroid
networks:
caddy:
external: true
postgres:
external: true
+11 -12
View File
@@ -3,26 +3,25 @@ version: "3.9"
services:
filebrowser:
image: hurlenko/filebrowser
container_name: filebrowser
restart: unless-stopped
# user: "${UID}:${GID}"
user: "1000:100"
# volumes:
# - /root/Videos:/data
volumes:
- /home/marc:/data
- /root/Videos:/data
- ../data/filebrowser:/config
# environment:
# FB_BASEURL: /filebrowser
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.filebrowser.rule: Host(`file.marcpartensky.com`)
traefik.http.routers.filebrowser.entrypoints: web
# traefik.http.routers.filebrowser.tls.certresolver: tls
traefik.http.services.filebrowser.loadbalancer.server.port: 8080
traefik.http.routers.filebrowser.middlewares: ldap_auth
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.filebrowser.rule: >
Host(`file.marcpartensky.fr`) ||
Host(`file.marcpartensky.com`)
traefik.http.routers.filebrowser.entrypoints: websecure
traefik.http.routers.filebrowser.tls.certresolver: tls
traefik.http.services.filebrowser.loadbalancer.server.port: 8080
traefik.http.routers.filebrowser.middlewares: ldap_auth
networks:
caddy:
-41
View File
@@ -1,41 +0,0 @@
version: "3.9"
services:
ffsync:
image: mozilla/syncserver:latest
restart: unless-stopped
env_file:
- ../data/secrets/firefox.env
networks:
- caddy
- postgres
volumes:
- /srv/firefox:/data
labels:
traefik.enable: "true"
traefik.http.routers.ffsync.rule: Host(`firefox.marcpartensky.com`)
traefik.http.routers.ffsync.entrypoints: web
traefik.http.services.ffsync.loadbalancer.server.port: 80
# labels:
# - traefik.enable: true
# - traefik.backend: ffsync
# - traefik.frontend.rule: Host:firefoxsync.${DOMAINNAME}
# - traefik.port: 5000
# - traefik.docker.network: caddy
# ffsync_db:
# image: postgres:alpine
# container_name: ffsync_db
# restart: unless-stopped
# networks:
# - ffsync_network
# environment:
# POSTGRES_DB: ${FFSYNC_DATABASE_DB}
# POSTGRES_USER: ${FFSYNC_DATABASE_USER}
# POSTGRES_PASSWORD: ${FFSYNC_DB_PASSWORD}
networks:
postgres:
external: true
caddy:
external: true
+3 -14
View File
@@ -1,8 +1,7 @@
version: "3.9"
services:
focalboard:
image: docker.io/mattermost/focalboard
restart: unless-stopped
image: mattermost/focalboard
volumes:
- data:/opt/focalboard/data
- pack:/opt/focalboard/pack
@@ -10,17 +9,9 @@ services:
environment:
EXCLUDE_ENTERPRISE: "1"
networks:
- caddy
- postgres
labels:
traefik.enable: "true"
traefik.http.routers.focalboard.rule: >
Host(`board.marcpartensky.com`)
traefik.http.routers.focalboard.entrypoints: web
# traefik.http.routers.focalboard.tls.certresolver: tls
traefik.http.services.focalboard.loadbalancer.server.port: 8000
traefik.http.middlewares.focalboard.redirectscheme.scheme: https
# traefik.http.routers.focalboard.middlewares: ldap_auth
ports:
- "8000:8000"
volumes:
data:
@@ -28,5 +19,3 @@ volumes:
networks:
postgres:
external: true
caddy:
external: true
-54
View File
@@ -1,54 +0,0 @@
version: "3.9"
services:
mariadb:
image: mariadb:10.6
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --skip-character-set-client-handshake
- --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6
env_file:
- ../data/secrets/frappelms.env
volumes:
- /srv/mariadb:/var/lib/mysql
networks:
- mariadb
ports:
- target: 3306
published: 3306
mode: host
frappelms:
image: frappe/bench:latest
command: bash /workspace/init.sh
environment:
SHELL: /bin/bash
working_dir: /home/frappe
volumes:
- /srv/frappelms:/workspace
# env_file:
# - ../data/secrets/frappelms.env # useless
networks:
- caddy
- mariadb
- redis
# ports:
# - 8000:8000
# - 9000:9000
labels:
traefik.enable: "true"
traefik.http.routers.frappelms.rule: >
Host(`lms.marcpartensky.com`)
traefik.http.routers.frappelms.entrypoints: web
traefik.http.services.frappelms.loadbalancer.server.port: 8000
volumes:
mariadb-data:
networks:
mariadb:
redis:
external: true
caddy:
external: true
+10 -11
View File
@@ -3,7 +3,6 @@ version: "3.9"
services:
gitea:
image: gitea/gitea:1.14.6
container_name: gitea
restart: unless-stopped
# user: git
# environment:
@@ -29,16 +28,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.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:
+23 -25
View File
@@ -2,8 +2,7 @@ version: "3.9"
services:
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:latest
image: gitlab/gitlab-ee:latest
restart: unless-stopped
hostname: gitlab.marcpartensky.com
environment:
@@ -19,34 +18,33 @@ 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:
+11 -12
View File
@@ -2,7 +2,6 @@ version: "3.9"
services:
grafana:
image: grafana/grafana
container_name: grafana
restart: unless-stopped
env_file:
- ../data/secrets/grafana.env
@@ -15,17 +14,17 @@ services:
- 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
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:
+12 -19
View File
@@ -3,7 +3,6 @@ version: "3.9"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
restart: unless-stopped
environment:
PUID: 1000
@@ -13,32 +12,26 @@ 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: web
# traefik.http.routers.heimdall.tls: "true"
traefik.http.routers.heimdall.entrypoints: websecure
traefik.http.routers.heimdall.tls: "true"
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.source: marcpartensky.com
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.baseDN: dc=marcpartensky,dc=com
# traefik.http.services.heimdall.loadbalancer.server.port: 80
# traefik.http.routers.heimdall.middlewares: authelia-basic@docker
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
# traefik.http.routers.heimdall.entrypoints: websecure
# traefik.http.routers.heimdall.tls.certresolver: tls
# traefik.http.services.heimdall.loadbalancer.server.port: 80
# traefik.http.routers.duplicati.middlewares: ldap_auth
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
+12 -13
View File
@@ -2,7 +2,6 @@ version: "3.9"
services:
homer:
image: b4bz/homer
container_name: homer
restart: unless-stopped
volumes:
- homer:/www/assets
@@ -10,18 +9,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`) ||
# 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
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:
-49
View File
@@ -1,49 +0,0 @@
version: "3.9"
services:
izitdone-back:
image: docker.io/marcpartensky/izitdone-back:v23.ca2e91d09917d423458640113e852cfd60d6916e
restart: unless-stopped
networks:
- caddy
- postgres
env_file:
- ../data/secrets/izitdone.env
# volumes:
# - ../data/secrets/izitdone.env:/root/.env
labels:
traefik.enable: "true"
traefik.http.routers.izitdone-back.rule: >
Host(`izitdone.marcpartensky.com`) && PathPrefix(`/api`)
traefik.http.routers.izitdone-back.entrypoints: web
traefik.http.services.izitdone-back.loadbalancer.server.port: 8000
traefik.http.middlewares.izitdone-back.redirectscheme.scheme: https
traefik.http.middlewares.izitdone-back-strip.stripprefix.prefixes: /api
# traefik.http.middlewares.izitdone-back-strip.stripprefix.forceslash: false
traefik.http.routers.izitdone-back.middlewares: izitdone-back-strip
# traefik.http.routers.izitdone-back.tls.certresolver: tls
# traefik.http.routers.izitdone-back.middlewares: ldap_auth
izitdone-front:
image: docker.io/marcpartensky/izitdone-front:latest
restart: unless-stopped
networks:
- caddy
- postgres
# volumes:
# - ../data/secrets/izitdone.env:/root/.env
labels:
traefik.enable: "true"
traefik.http.routers.izitdone-front.rule: >
Host(`izitdone.marcpartensky.com`) && !PathPrefix(`/api`)
traefik.http.routers.izitdone-front.entrypoints: web
# traefik.http.routers.izitdone-front.tls.certresolver: tls
traefik.http.services.izitdone-front.loadbalancer.server.port: 3000
traefik.http.middlewares.izitdone-front.redirectscheme.scheme: https
# traefik.http.routers.izitdone-front.middlewares: ldap_auth
networks:
postgres:
external: true
caddy:
external: true
+15 -15
View File
@@ -1,37 +1,37 @@
version: "3.9"
services:
jellyfin:
image: docker.io/jellyfin/jellyfin:latest
container_name: jellyfin
image: jellyfin/jellyfin:latest
environment:
# PUID: 1000
# PGID: 1000
# TZ: Europe/Paris
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.com
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.fr
devices:
- /dev/dri
volumes:
- config:/config
- cache:/cache
- /srv/jellyfin/media:/media
- /srv/jellyfin/movies:/movies
- /srv/jellyfin/musics:/musics
- /srv/jellyfin/photos:/photos
- media:/media
- movies:/movies
- musics:/musics
- photos:/photos
- ~/Videos/Youtube:/videos
# ports:
# - 8096:8096 #http
# - 8920:8920 #optional https self signed
# - 7359:7359/udp #optional lan discovery
# - 1900:1900/udp #optional dnla
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.jellyfin.rule: Host(`jellyfin.marcpartensky.com`)
traefik.http.routers.jellyfin.entrypoints: web
# traefik.http.routers.jellyfin.tls.certresolver: cloudflare
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.jellyfin.rule: >
Host(`jellyfin.marcpartensky.fr`) ||
Host(`jellyfin.marcpartensky.com`)
traefik.http.routers.jellyfin.entrypoints: websecure
traefik.http.routers.jellyfin.tls.certresolver: tls
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
volumes:
config:
+8 -9
View File
@@ -3,7 +3,6 @@ version: "3.9"
services:
jenkins:
image: jenkins/jenkins:lts-jdk11
container_name: jenkins
user: root
volumes:
- jenkins:/var/jenkins_home
@@ -12,14 +11,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 -13
View File
@@ -4,7 +4,6 @@ services:
jupyterlab:
# image: jupyter/datascience-notebook:latest
image: marcpartensky/jupyterlab
container_name: jupyterlab
# restart: unless-stopped
environment:
# - GEN_CERT=yes
@@ -26,18 +25,18 @@ services:
# 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
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
+14 -30
View File
@@ -10,26 +10,18 @@ services:
- caddy
environment:
HTTP_PORT: 80
GRPC_PORT: 9090
LDAP_HOST: "ldap"
LDAP_PORT: 389
LDAP_PORT: 636
# LDAP_ADMIN_PASSWORD: admin
# LDAP_CONFIG_PASSWORD: config
LDAP_ORGANIZATION: Marc Partensky
# LDAP_DOMAIN: marcpartensky.com
# LDAP_DOMAIN: marcpartensky.fr
# DAP_BASE_DN: dc=admin,dc=org
LDAP_DOMAIN: marcpartensky.com
LDAP_BASE_DN: dc=marcpartensky,dc=com
LDAP_DOMAIN: marcpartensky.fr
DAP_BASE_DN: dc=admin,dc=org
# 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"
# DEFAULT_ADMIN_USERNAME: ldapadmin
# DEFAULT_ADMIN_PASSWORD: changeme
# FORCE_CREATE_ADMIN: "true"
LDAP_TLS: "false"
@@ -39,23 +31,15 @@ services:
AUDIENCE: marcpartensky.com
GENERATE: "true" # ports:
# - 9090:9090
labels:
traefik.enable: "true"
traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
# traefik.http.routers.ldap_manager_go.rule: >
# Host(`ldapgo.marcpartensky.com`)
traefik.http.routers.ldap_manager_go.entrypoints: web
# traefik.http.routers.ldap_manager_go.tls.certresolver: tls
traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# # traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
# traefik.http.routers.ldap_manager_go.rule: >
# Host(`ldapgo.marcpartensky.com`) || Host(`ldapgo.marcpartensky.fr`)
# traefik.http.routers.ldap_manager_go.entrypoints: websecure
# traefik.http.routers.ldap_manager_go.tls.certresolver: tls
# traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
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:
+23 -26
View File
@@ -5,41 +5,38 @@ services:
image: wheelybird/ldap-user-manager:latest
restart: unless-stopped
environment:
SERVER_HOSTNAME: auth.marcpartensky.com
LDAP_URI: ldap://ldap:389
# LDAP_BASE_DN: dc=admin,dc=org
LDAP_BASE_DN: dc=marcpartensky,dc=com
SERVER_HOSTNAME: auth.marcpartensy.com
LDAP_URI: ldap://ldap
LDAP_BASE_DN: dc=admin,dc=org
LDAP_ADMINS_GROUP: admins
LDAP_ADMIN_BIND_DN: uid=5a5049f38c347a028dc67c975ef66cdc1e953ae57e89154fb074bcc18b1f4581,dc=marcpartensky,dc=com
LDAP_ADMIN_BIND_DN: cn=admin,dc=admin,dc=org
LDAP_IGNORE_CERT_ERRORS: "true"
LDAP_REQUIRE_STARTTLS: "FALSE"
NO_HTTPS: "TRUE"
env_file:
- ../data/secrets/ldap.env
# depends_on:
# - ldap
depends_on:
- ldap
networks:
- ldap
- caddy
labels:
# caddy: auth.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.ldap_manager.rule: Host(`auth.marcpartensky.com`)
traefik.http.routers.ldap_manager.entrypoints: web
# traefik.http.routers.ldap_manager.tls.certresolver: tls
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# # traefik.http.routers.ldap_manager.rule: >
# # Host(`auth.marcpartensky.com`) || Host(`auth.marcpartensky.fr`)
# traefik.http.routers.ldap_manager.rule: >
# Host(`auth.marcpartensky.com`)
# traefik.http.routers.ldap_manager.entrypoints: web
# # traefik.http.routers.ldap_manager.tls.certresolver: tls
# # traefik.http.routers.ldap_manager.tls.certresolver: cloudflare
# traefik.http.services.ldap_manager.loadbalancer.server.port: 80
# labels:
# caddy: auth.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams}}"
# traefik.enable: "true"
# traefik.http.routers.ldap_manager.rule: Host(`auth.marcpartensky.com`)
# traefik.http.routers.ldap_manager.entrypoints: websecure
# traefik.http.routers.ldap_manager.tls.certresolver: tls
# traefik.http.services.ldap_manager.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.ldap_manager.rule: >
Host(`auth.marcpartensky.com`) || Host(`auth.marcpartensky.fr`)
traefik.http.routers.ldap_manager.entrypoints: websecure
# traefik.http.routers.ldap_manager.tls.certresolver: tls
traefik.http.routers.ldap_manager.tls.certresolver: cloudflare
traefik.http.services.ldap_manager.loadbalancer.server.port: 80
networks:
ldap:
+3 -3
View File
@@ -2,13 +2,13 @@ version: "3.9"
services:
ldap:
image: docker.io/osixia/openldap:1.3.0
image: osixia/openldap
restart: unless-stopped
environment:
LDAP_ORGANISATION: admin
LDAP_DOMAIN: admin.org
LDAP_RFC2307BIS_SCHEMA: "true"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "false"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
LDAP_TLS_VERIFY_CLIENT: never
env_file:
- ../data/secrets/ldap.env
@@ -22,7 +22,7 @@ services:
backup:
image: docker.io/osixia/openldap-backup:1.5.0
image: osixia/openldap-backup:1.5.0
environment:
LDAP_BACKUP_CONFIG_CRON_EXP: "0 5 * * *"
LDAP_BACKUP_DATA_CRON_EXP: "0 5 * * *"
-226
View File
@@ -1,226 +0,0 @@
# 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
+15 -102
View File
@@ -4,7 +4,6 @@ services:
matrix:
image: matrixdotorg/synapse
restart: unless-stopped
user: "1337:1337"
# environment:
# SYNAPSE_REPORT_STATS: "no"
# SYNAPSE_SERVER_NAME: matrix.marcpartensky.com
@@ -24,110 +23,24 @@ 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: 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
traefik.http.routers.matrix.entrypoints: websecure
traefik.http.routers.matrix.tls.certresolver: tls
traefik.http.services.matrix.loadbalancer.server.port: 8008
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.matrix.rule: >
Host(`matrix.marcpartensky.com`) || Host(`matrix.marcpartensky.fr`)
traefik.http.routers.matrix.entrypoints: websecure
traefik.http.routers.matrix.tls.certresolver: tls
traefik.http.services.matrix.loadbalancer.server.port: 8008
networks:
caddy:
external: true
postgres:
external: true
caddy:
external: true
+17 -18
View File
@@ -3,7 +3,6 @@ version: "3.9"
services:
mcmyadmin:
image: tekgator/docker-mcmyadmin:latest
container_name: mcmyadmin
restart: unless-stopped
# environment:
# PUID: 1001
@@ -16,23 +15,23 @@ services:
networks:
- minecraft
- caddy
# 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
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:
-17
View File
@@ -1,17 +0,0 @@
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
-28
View File
@@ -1,28 +0,0 @@
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
-29
View File
@@ -1,29 +0,0 @@
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
+15 -17
View File
@@ -7,7 +7,7 @@ services:
volumes:
- ../data/mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- ../data/mongo/config:/etc/mongo
- /srv/mongo:/data/db
- mongo:/data/db
networks:
- mongo
ports:
@@ -19,7 +19,6 @@ services:
express:
image: mongo-express
container_name: mongo-express
restart: unless-stopped
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
@@ -35,22 +34,21 @@ 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.entrypoints: web
# traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.routers.mongo.entrypoints: websecure
traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.services.mongo.loadbalancer.server.port: 8081
# traefik.http.routers.duplicati.middlewares: ldap_auth
# deploy:
# labels:
# traefik.enable: "true"
# # traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
# traefik.http.routers.mongo.rule: >
# Host(`mongo.marcpartensky.fr`) ||
# Host(`mongo.marcpartensky.com`)
# traefik.http.routers.mongo.entrypoints: websecure
# traefik.http.routers.mongo.tls.certresolver: tls
# traefik.http.services.mongo.loadbalancer.server.port: 8081
# traefik.http.routers.mongo.middlewares: ldap_auth
traefik.http.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:
-20
View File
@@ -1,20 +0,0 @@
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
+17 -22
View File
@@ -2,41 +2,38 @@ version: "3.9"
services:
nextcloud:
# image: docker.io/nextcloud:latest
image: docker.io/nextcloud:stable
image: nextcloud
restart: unless-stopped
# user: "1001:1001"
volumes:
- /srv/nextcloud:/var/www/html
- /home/marc/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
#
ports:
- 8006:80
env_file:
- ../data/secrets/nextcloud.env
networks:
- caddy
# - caddy
- postgres
- redis
- ldap
# - redis
# - ldap
# depends_on:
# - nextcloud_mariadb
labels:
# caddy: cloud.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams http 80}}"
traefik.enable: "true"
traefik.http.routers.nextcloud.rule: >
Host(`cloud.marcpartensky.com`)
traefik.http.routers.nextcloud.entrypoints: web
# 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"]
# labels:
# # caddy: cloud.marcpartensky.com
# # caddy.reverse_proxy: "{{upstreams http 80}}"
# traefik.enable: "true"
# traefik.http.routers.nextcloud.rule: >
# Host(`cloud.marcpartensky.com`)
# traefik.http.routers.nextcloud.entrypoints: web
# # traefik.http.routers.nextcloud.tls.certresolver: tls
# traefik.http.services.nextcloud.loadbalancer.server.port: 80
volumes:
data:
@@ -51,5 +48,3 @@ networks:
external: true
postgres:
external: true
redis:
external: true
-40
View File
@@ -1,40 +0,0 @@
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
-194
View File
@@ -1,194 +0,0 @@
# 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:
+10 -11
View File
@@ -3,23 +3,22 @@ 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
# 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
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
-80
View File
@@ -1,80 +0,0 @@
# 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
+2 -5
View File
@@ -1,9 +1,6 @@
version: "3.9"
services:
peer2profit:
image: enwaiax/peer2profit
# command: ./entrypoint.sh --email marc@marcpartensky.com
image: peer2profit/peer2profit_x86_64:latest
environment:
- email=marc@marcpartensky.com
# environment:
# P2P_EMAIL: marc@marcpartensky.com
P2P_EMAIL: marc@marcpartensky.com
+15 -16
View File
@@ -4,7 +4,6 @@ services:
peertube:
image: chocobozzz/peertube:production-bullseye
container_name: peertube
restart: unless-stopped
env_file:
- ../data/secrets/peertube.env
@@ -24,21 +23,21 @@ services:
# - 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
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
+22 -25
View File
@@ -2,7 +2,6 @@ version: "3.9"
services:
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
restart: unless-stopped
env_file:
- ../data/secrets/pgadmin.env
@@ -15,30 +14,28 @@ 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: 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
#
labels:
caddy: pgadmin.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
# caddy.reverse_proxy.header_up.Host: "{upstream_hostport}" # redundant
# caddy.reverse_proxy.header_up.X-Real-IP: "{host}"
# caddy.reverse_proxy.header_up.X-Forwarded-For: "{host}" # redundant
# caddy.basicauth: /* bcrypt
# caddy.basicauth.admin: JDJhJDEyJDVRUXdqQllCR2dCSEZ0ZUlaVUZTRE95WXpROFdUcFdXSm4wVGE2TmE4cEkxNHc5Si4venJxCg==
traefik.enable: "true"
traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
traefik.http.routers.pgadmin.entrypoints: websecure
traefik.http.routers.pgadmin.tls.certresolver: tls
traefik.http.services.pgadmin.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.com`)
traefik.http.routers.pgadmin.rule: Host(`pgadmin.marcpartensky.fr`)
traefik.http.routers.pgadmin.entrypoints: websecure
traefik.http.routers.pgadmin.tls.certresolver: tls
traefik.http.services.pgadmin.loadbalancer.server.port: 80
volumes:
postgres:
+22 -23
View File
@@ -2,7 +2,6 @@ version: "3.9"
services:
pgweb:
image: marcpartensky/pgweb
container_name: pgweb
restart: unless-stopped
env_file:
- ../data/secrets/pgweb.env
@@ -11,28 +10,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
View File
@@ -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:
-35
View File
@@ -1,35 +0,0 @@
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
+64 -90
View File
@@ -1,30 +1,8 @@
version: "3.9"
services:
portainer:
restart: unless-stopped
container_name: portainer
image: docker.io/portainer/portainer-ce:latest
# ports:
# - 9443:9443
volumes:
- data:/data
- /var/run/docker.sock:/var/run/docker.sock
networks:
- caddy
- 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
agent:
image: portainer/agent:2.18.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
@@ -35,77 +13,73 @@ services:
# 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
# #
portainer:
image: portainer/portainer-ce:2.18.2
command: -H tcp://agent:9001 --tlsskipverify
# 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:
data:
networks:
portainer:
ldap:
external: true
caddy:
external: true
+21 -18
View File
@@ -1,27 +1,33 @@
version: "3.9"
services:
postgres:
image: docker.io/postgres:14
image: postgres:14
restart: unless-stopped
# user: postgres:postgres
# user: "974:974"
# user: "966:966"
# user: 1000:1000
ports:
- target: 5432
published: 5432
mode: host
networks:
- postgres
volumes:
- postgres:/var/lib/postgresql/data
- ../data/postgres/initdb.d:/initdb.d
- /home/marc/backup:/backup
- ../data/postgres/certs:/var/lib/postgresql/certs
- ../data/postgres:/docker-entrypoint-initdb.d
- /home/marc/srv/postgres:/var/lib/postgresql/data
# - ../data/postgres/server.crt:/var/lib/postgresql/server.crt
# - ../data/postgres/server.key:/var/lib/postgresql/server.key
env_file:
- ../data/secrets/postgres.env
command: |
postgres
-c log_statement=all
-c log_destination=stderr
networks:
- postgres
# -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
@@ -29,7 +35,7 @@ services:
retries: 3
pgagent:
image: docker.io/chiavegatto/postgres-pgagent
image: 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;' &&
@@ -42,19 +48,16 @@ services:
- postgres
backup:
image: docker.io/kartoza/pg-backup:14-3.1
image: kartoza/pg-backup:14-3.1
env_file:
- ../data/secrets/pg_backup.env
networks:
- postgres
# 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: docker.io/prodrigestivill/postgres-backup-local
image: prodrigestivill/postgres-backup-local
restart: unless-stopped
# user: postgres:postgres
volumes:
@@ -63,8 +66,8 @@ services:
# - postgres
# depends_on:
# - postgres
networks:
- postgres
# networks:
# - postgres
env_file:
- ../data/secrets/pgbackups.env
-32
View File
@@ -1,32 +0,0 @@
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
+17 -19
View File
@@ -2,32 +2,30 @@ version: "3.9"
services:
rancher:
image: rancher/rancher:stable
container_name: rancher
image: rancher/server
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /srv/rancher:/var/lib/rancher
- /var/run/docker.sock:/var/run/docker.sock
networks:
- caddy
privileged: true
user: root
# user: root
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
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
user: root
deploy:
resources:
limits:
cpus: '4'
memory: 5000M
networks:
caddy:
+1 -2
View File
@@ -1,8 +1,7 @@
version: "3.9"
services:
redis:
image: docker.io/redis:alpine
restart: unless-stopped
image: redis:alpine
command: redis-server --save 60 1 --loglevel warning
ports:
- "6379:6379"
+6 -66
View File
@@ -2,90 +2,30 @@ version: "3.9"
services:
resume:
image: docker.io/amruthpillai/reactive-resume:latest
container_name: resume
image: amruthpillai/reactive-resume:latest
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
ports:
- 8002:3000
printer:
image: docker.io/browserless/chrome:1.61.0-puppeteer-21.4.1
container_name: printer
image: browserless/chrome:1.61.0-puppeteer-21.4.1
restart: unless-stopped
env_file:
- ../data/secrets/resume.env
networks:
- caddy
ports:
- 8003:3000
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
+7 -33
View File
@@ -1,41 +1,15 @@
# 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: docker.io/acouvreur/sablier:1.6.1
restart: unless-stopped
image: ghcr.io/acouvreur/sablier:local
command:
- start
- --provider.name=docker
volumes:
# - /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
- '/var/run/docker.sock:/var/run/docker.sock'
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.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
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
+7 -7
View File
@@ -70,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: web
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: websecure
# traefik.http.services.seafile.loadbalancer.server.port: 80
deploy:
placement:
constraints:
+11 -11
View File
@@ -4,20 +4,20 @@ services:
serge:
# image: ghcr.io/nsarrazin/serge:latest
image: ghcr.io/serge-chat/serge:latest
container_name: serge
restart: unless-stopped
networks:
- caddy
# network_mode: host
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
ports:
- "8004:8008"
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.serge.rule: >
# Host(`serge.marcpartensky.fr`) ||
# Host(`serge.marcpartensky.com`)
# traefik.http.routers.serge.entrypoints: websecure
# traefik.http.services.serge.loadbalancer.server.port: 8008
networks:
caddy:
-38
View File
@@ -1,38 +0,0 @@
version: "3.9"
services:
shelp-front:
image: marcpartensky/shelp-front
restart: unless-stopped
env_file:
- ../data/secrets/shelp.env
networks:
- caddy
- mongo
labels:
traefik.enable: "true"
traefik.http.routers.shelp-front.rule: Host(`shelp.marcpartensky.com`)
traefik.http.routers.shelp-front.entrypoints: web
traefik.http.services.shelp-front.loadbalancer.server.port: 3000
shelp-back:
image: marcpartensky/shelp-back
restart: unless-stopped
env_file:
- ../data/secrets/shelp.env
networks:
- caddy
- mongo
labels:
traefik.enable: "true"
traefik.http.routers.shelp-back.rule: Host(`api.shelp.marcpartensky.com`)
traefik.http.routers.shelp-back.entrypoints: web
traefik.http.services.shelp-back.loadbalancer.server.port: 8080
volumes:
data:
pack:
networks:
mongo:
external: true
caddy:
external: true
-38
View File
@@ -1,38 +0,0 @@
version: "3.9"
services:
# mariadb:
# image: docker.io/bitnami/mariadb:11.2
# environment:
# # ALLOW_EMPTY_PASSWORD is recommended only for development.
# - ALLOW_EMPTY_PASSWORD=yes
# - MARIADB_USER=bn_suitecrm
# - MARIADB_DATABASE=bitnami_suitecrm
# - MARIADB_PASSWORD=bitnami123
# volumes:
# - 'mariadb_data:/bitnami/mariadb'
suitecrm:
image: docker.io/bitnami/suitecrm:8
env_file:
- ../data/secrets/suitecrm.env
volumes:
- /srv/suitecrm:/bitnami/suitecrm
networks:
- postgres
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.suitecrm.rule: >
Host(`crm.marcpartensky.com`)
traefik.http.routers.suitecrm.entrypoints: web
traefik.http.services.suitecrm.loadbalancer.server.port: 8080
# volumes:
# mariadb_data:
# driver: local
# suitecrm_data:
# driver: local
networks:
postgres:
external: true
caddy:
external: true
+14 -15
View File
@@ -4,23 +4,22 @@ services:
image: dockersamples/visualizer
restart: unless-stopped
volumes:
# - "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
# logging:
# options:
# max-size: 1g
- "/var/run/docker.sock:/var/run/docker.sock:ro"
logging:
options:
max-size: 1g
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.visualizer.rule: Host(`services.marcpartensky.com`)
# traefik.http.routers.visualizer.rule: >
# Host(`swarm.marcpartensky.fr`) && Host(`swarm.marcpartensky.com`)
traefik.http.routers.visualizer.entrypoints: web
# traefik.http.routers.swarm_visualizer.tls.certresolver: tls
# traefik.http.routers.visualizer.tls.certresolver: cloudflare
# traefik.http.routers.visualizer.tls.certresolver: cloudflare
traefik.http.services.visualizer.loadbalancer.server.port: 8080
deploy:
labels:
traefik.enable: "true"
# traefik.http.routers.swarm_visualizer.rule: Host(`swarm.marcpartensky.com`)
traefik.http.routers.swarm_visualizer.rule: >
Host(`swarm.marcpartensky.fr`) && Host(`swarm.marcpartensky.com`)
traefik.http.routers.swarm_visualizer.entrypoints: websecure
# traefik.http.routers.swarm_visualizer.tls.certresolver: tls
traefik.http.routers.swarm_visualizer.tls.certresolver: cloudflare
traefik.http.services.swarm_visualizer.loadbalancer.server.port: 8080
networks:
caddy:
+7 -18
View File
@@ -8,21 +8,10 @@ services:
PGID: 1000
TZ: Etc/UTC
volumes:
- /srv:/srv
# ports:
# - 8384:8384
# - 22000:22000/tcp
# - 21027:21027/udp
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.routers.syncthing.rule: >
Host(`syncthing.marcpartensky.com`)
traefik.http.routers.syncthing.entrypoints: web
# traefik.http.routers.syncthing.tls.certresolver: tls
traefik.http.services.syncthing.loadbalancer.server.port: 8384
traefik.http.routers.syncthing.middlewares: ldap_auth
networks:
caddy:
external: true
- /path/to/appdata/config:/config
- /path/to/data1:/data1
- /path/to/data2:/data2
ports:
- 8384:8384
- 22000:22000
- 21027:21027/udp
-39
View File
@@ -1,39 +0,0 @@
version: "3.3"
services:
traefik:
image: "traefik:v2.6"
container_name: "traefik"
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
whoami:
image: "traefik/whoami"
container_name: "simple-service"
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.marcpartensky.com`)"
- "traefik.http.routers.whoami.entrypoints=web"
cloudflared:
image: cloudflare/cloudflared:2022.5.1
container_name: cloudflared
env_file:
- ../data/secrets/cloudflare.env
command:
- tunnel
- --no-autoupdate
- run
traefik-cloudflare-tunnel:
image: "justmiles/traefik-cloudflare-tunnel:latest"
env_file:
- ../data/secrets/cloudflare.env
-39
View File
@@ -1,39 +0,0 @@
version: "3.3"
services:
traefik:
image: "traefik:v2.6"
container_name: "traefik"
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
whoami:
image: "traefik/whoami"
container_name: "simple-service"
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.marcpartensky.com`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
cloudflared:
image: cloudflare/cloudflared:2022.5.1
container_name: cloudflared
env_file:
- ../data/secrets/cloudflare.env
command:
- tunnel
- --no-autoupdate
- run
traefik-cloudflare-tunnel:
image: "justmiles/traefik-cloudflare-tunnel:latest"
env_file:
- ../data/secrets/cloudflare.env
-18
View File
@@ -1,18 +0,0 @@
version: "3.9"
services:
thaiwara:
image: marcpartensky/thaiwara:2023-05-28
restart: unless-stopped
networks:
- caddy
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.thaiwara.rule: Host(`thaiwara.marcpartensky.com`)
traefik.http.routers.thaiwara.entrypoints: web
# traefik.http.routers.thaiwara.tls.certresolver: tls
traefik.http.services.thaiwara.loadbalancer.server.port: 80
networks:
caddy:
external: true
+46 -70
View File
@@ -2,10 +2,8 @@ version: "3.9"
services:
traefik:
# image: docker.io/traefik:2.9.1 # https://github.com/wiltonsr/ldapauth/issues/25
image: docker.io/traefik:latest
image: traefik:2.9.1 # https://github.com/wiltonsr/ldapauth/issues/25
# image: traefik:latest # https://github.com/wiltonsr/ldapauth/issues/25
restart: unless-stopped
env_file:
- ../data/secrets/traefik.env
# restart: unless-stopped
@@ -21,7 +19,7 @@ services:
# - --api.debug=true # <== Enabling additional endpoints for debugging and profiling
# ## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
# - --entrypoints.web.address=:80
# - --entrypoints.websecure.address=:443
# - --entrypoints.websecure.address=:443
# - --certificatesresolvers.tls.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
# - --certificatesresolvers.tls.acme.email=marc.partensky@gmail.com
# - --certificatesresolvers.tls.acme.storage=/letsencrypt/acme.json # Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) - https://docs.traefik.io/observability/logs/ ##
@@ -29,91 +27,69 @@ services:
# - --entrypoints.web.http.redirections.entryPoint.to=websecure
# - --entrypoints.web.http.redirections.entryPoint.scheme=https
# - --entrypoints.web.http.redirections.entrypoint.permanent=true
# ports:
# - target: 80
# published: 80
# mode: host
# - target: 443
# published: 443
# mode: host
ports:
- target: 80
published: 80
mode: host
- target: 443
published: 443
mode: host
networks:
- caddy
- ldap
volumes:
- ../data/traefik:/etc/traefik
# - traefik_letsencrypt:/letsencrypt
# - traefik:/config
- /srv/traefik:/config
- traefik:/config
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
traefik.enable: "true"
traefik.http.routers.traefik.rule: Host(`traefik.marcpartensky.com`)
traefik.http.routers.traefik.service: api@internal
traefik.http.routers.traefik.entrypoints: web
traefik.http.services.traefik.loadbalancer.server.port: 8080
# traefik.http.routers.traefik.tls.certresolver: tls
traefik.http.routers.traefik.entrypoints: websecure
traefik.http.routers.traefik.tls.certresolver: tls
traefik.docker.network: caddy
# ldapAuth Options=================================================================
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.enabled: "true"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.logLevel: "DEBUG"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.url: ldaps://ldap
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.port: 636
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.useTLS: "true"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.insecureSkipVerify: "true"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.url: ldap://ldap
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.port: 389
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.bindDN: "cn=traefik,dc=marcpartensky,dc=com"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.bindPassword: "2tG2eXDaeZVabhX*Ci7S#8sHRi2oc&"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.bindDN: "cn=ldapservice,dc=ldap,dc=goauthentik,dc=io"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.bindPassword: "v4EuxSYvjt%a9Ma8q6T65GceC#LFv@"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.baseDN: "dc=ldap,dc=goauthentik,dc=io"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.attribute: uid
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.attribute: cn
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.searchFilter: "({{.Attribute}}={{.Username}})" # anonymous didnt work
healthcheck:
test: traefik healthcheck --ping
# deploy:
# placement:
# constraints:
# - node.role == manager
# # mode: global
# update_config:
# parallelism: 1
# delay: 5s
# order: start-first
# failure_action: rollback
# rollback_config:
# order: start-first
# labels:
# traefik.enable: "true"
# traefik.port: 8080
# # traefik.docker.network: caddy
# traefik.http.services.traefik.loadbalancer.server.port: 8080
# # traefik.http.routers.traefik.service: api@internal
# # traefik.http.routers.traefik.entrypoints: websecure
# traefik.http.routers.traefik.entrypoints: web
# traefik.http.routers.traefik.rule: >
# Host(`traefik.marcpartensky.com`)
# traefik.http.routers.traefik.tls.certresolver: tls
deploy:
placement:
constraints:
- node.role == manager
# mode: global
update_config:
parallelism: 1
delay: 5s
order: start-first
failure_action: rollback
rollback_config:
order: start-first
labels:
traefik.enable: "true"
traefik.port: 8080
# traefik.docker.network: caddy
traefik.http.services.traefik.loadbalancer.server.port: 8080
# traefik.http.routers.traefik.service: api@internal
traefik.http.routers.traefik.entrypoints: websecure
traefik.http.routers.traefik.rule: >
Host(`traefik.marcpartensky.com`) || Host(`traefik.marcpartensky.fr`)
traefik.http.routers.traefik.tls.certresolver: tls
# ldapAuth Options=================================================================
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.enabled: "true"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.logLevel: "DEBUG"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.url: ldaps://ldap
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.port: 636
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.useTLS: "true"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.insecureSkipVerify: "true"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.baseDN: "ou=users,dc=marcpartensky,dc=com"
# traefik.http.middlewares.ldap_auth.plugin.ldapAuth.attribute: uid
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.enabled: "true"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.logLevel: "DEBUG"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.url: ldaps://ldap
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.port: 636
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.useTLS: "true"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.insecureSkipVerify: "true"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.baseDN: "ou=people,dc=admin,dc=org"
traefik.http.middlewares.ldap_auth.plugin.ldapAuth.attribute: uid
# volumes:
volumes:
# traefik_letsencrypt:
# traefik_certs:
# traefik:
traefik:
# name: "vps_traefik_letsencrypt"
# name: traefik
# external: true
name: traefik
external: true
networks:
ldap:
+1 -1
View File
@@ -3,6 +3,6 @@ services:
ssh-tunnel:
image: kroniak/ssh-client
network_mode: host
entrypoint: ssh -NR 42072:localhost:42069 marc@fourche.org -p42069
entrypoint: ssh -NR 42069:localhost:22 debian@etienne-faviere.tech
volumes:
- ~/.ssh:/root/.ssh
-21
View File
@@ -1,21 +0,0 @@
services:
udemy:
image: docker.io/marcpartensky/udemy
env_file:
- ../data/secrets/udemy.env
networks:
- postgres
labels:
traefik.enable: "true"
traefik.http.routers.udemy.rule: >
Host(`course.marcpartensky.com`)
traefik.http.routers.udemy.entrypoints: web
# traefik.http.routers.udemy.tls.certresolver: tls
traefik.http.services.udemy.loadbalancer.server.port: 8000
traefik.http.middlewares.udemy.redirectscheme.scheme: https
# traefik.http.routers.udemy.middlewares: ldap_auth
networks:
postgres:
external: true
+22 -20
View File
@@ -1,7 +1,7 @@
version: "3.9"
services:
ldap_sync:
image: docker.io/marcpartensky/vaultwarden-ldap
image: marcpartensky/vaultwarden-ldap
environment:
CONFIG_PATH: /config.toml
RUST_BACKTRACE: 1
@@ -18,8 +18,7 @@ services:
# - ldap
vaultwarden:
image: docker.io/vaultwarden/server
restart: unless-stopped
image: vaultwarden/server
env_file:
- ../data/secrets/vaultwarden.env
# environment:
@@ -32,23 +31,26 @@ services:
- caddy
- vaultwarden
- postgres
labels:
# caddy: vault.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.vaultwarden.rule: Host(`vault.marcpartensky.com`)
traefik.http.routers.vaultwarden.entrypoints: web
# traefik.http.routers.vaultwarden.tls.certresolver: tls
traefik.http.services.vaultwarden.loadbalancer.server.port: 80
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.vaultwarden.rule: >
# Host(`vault.marcpartensky.com`)
# traefik.http.routers.vaultwarden.entrypoints: websecure
# traefik.http.routers.vaultwarden.tls.certresolver: cloudflare
# traefik.http.services.vaultwarden.loadbalancer.server.port: 80
#
ports:
- "8001:80"
# labels:
# caddy: vault.marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 80}}"
# traefik.enable: "true"
# traefik.http.routers.vaultwarden.rule: Host(`vault.marcpartensky.com`)
# traefik.http.routers.vaultwarden.entrypoints: websecure
# traefik.http.routers.vaultwarden.tls.certresolver: tls
# traefik.http.services.vaultwarden.loadbalancer.server.port: 80
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.vaultwarden.rule: >
Host(`vault.marcpartensky.fr`) ||
Host(`vault.marcpartensky.com`)
traefik.http.routers.vaultwarden.entrypoints: websecure
traefik.http.routers.vaultwarden.tls.certresolver: cloudflare
traefik.http.services.vaultwarden.loadbalancer.server.port: 80
# ldap_admin:
# image: osixia/phpldapadmin
# ports:
+21 -31
View File
@@ -1,20 +1,12 @@
# https://github.com/wallabag/wallabag/issues/1878
# https://github.com/wallabag/docker/issues/412
# mandatory for fresh install
# php bin/console wallabag:install --env=prod -n
version: "3.9"
services:
wallabag:
image: wallabag/wallabag
volumes:
# Volumes for data-related folders
- /srv/wallabag/data/entrypoint.sh:/entrypoint.sh
- /srv/wallabag/data:/var/www/wallabag/data
- /srv/wallabag/assets:/var/www/wallabag/web/assets
- wallabag_cache:/var/www/wallabag/var/
- assets:/var/www/html/web/assets
- data:/var/www/html/data
- cache:/var/www/.cache
# Uncomment the following volume if you run rootless Docker
# A limitation blocks permissions on root docker, see
# https://github.com/moby/moby/issues/40881
@@ -39,29 +31,25 @@ services:
# - 8000:8000
# Uncomment to permit Xdebug remote session
# - 9000:9000
# depends_on:
# - mariadb
# - postgres
# - redis
networks:
- caddy
- postgres
- redis
healthcheck:
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost/api/info"]
interval: 1m
timeout: 3s
# entrypoint: >
# sh -c "su -c 'php bin/console wallabag:install --env=prod -n' &&
# ./entrypoint.sh"
command: wallabag
labels:
traefik.enable: "true"
traefik.http.services.wallabag.loadbalancer.server.port: 80
traefik.http.routers.wallabag.rule: Host(`wallabag.marcpartensky.com`)
# traefik.http.routers.wallabag.rule: >
# Host(`wallabag.marcpartensky.com`) ||
# Host(`wallabag.marcpartensky.fr`)
traefik.http.routers.wallabag.entrypoints: web
# traefik.http.routers.wallabag.tls.certresolver: tls
# traefik.http.routers.wallabag.tls.certresolver: cloudflare
# traefik.http.routers.wallabag.middlewares: ldap_auth
deploy:
labels:
traefik.enable: "true"
traefik.http.services.wallabag.loadbalancer.server.port: 80
traefik.http.routers.wallabag.rule: >
Host(`wallabag.marcpartensky.com`) ||
Host(`wallabag.marcpartensky.fr`)
traefik.http.routers.wallabag.entrypoints: websecure
# traefik.http.routers.wallabag.tls.certresolver: tls
traefik.http.routers.wallabag.tls.certresolver: cloudflare
# traefik.http.routers.wallabag.middlewares: ldap_auth
# postgres:
# image: postgres:11-alpine
@@ -98,7 +86,9 @@ services:
# retries: 3
volumes:
wallabag_cache:
assets:
data:
cache:
networks:
wallabag:
caddy:
+9 -13
View File
@@ -2,23 +2,19 @@ version: "3.9"
services:
terminal:
image: raonigabriel/web-terminal:latest
container_name: web-terminal
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/marc:/root
# user: "1000:100" # cant apk install
networks:
- caddy
labels:
traefik.enable: "true"
traefik.http.services.terminal.loadbalancer.server.port: 7681
# traefik.http.routers.terminal.rule: >
# Host(`terminal.marcpartensky.com`) || Host(`terminal.marcpartensky.fr`)
traefik.http.routers.terminal.rule: >
Host(`terminal.marcpartensky.com`)
traefik.http.routers.terminal.entrypoints: web
# traefik.http.routers.terminal.tls.certresolver: tls
traefik.http.routers.terminal.middlewares: ldap_auth
deploy:
labels:
traefik.enable: "true"
traefik.http.services.terminal.loadbalancer.server.port: 7681
traefik.http.routers.terminal.rule: >
Host(`terminal.marcpartensky.com`) || Host(`terminal.marcpartensky.fr`)
traefik.http.routers.terminal.entrypoints: websecure
# traefik.http.routers.terminal.tls.certresolver: tls
traefik.http.routers.terminal.middlewares: ldap_auth
networks:
caddy:
-26
View File
@@ -1,26 +0,0 @@
version: "3.9"
services:
webdav:
image: ray1ex/asgi-webdav
container_name: webdav
restart: unless-stopped
environment:
UID: 1000
GID: 1000
networks:
- caddy
volumes:
- ../data/webdav:/data
- /home/marc:/webdav/marc
labels:
traefik.enable: "true"
traefik.http.services.webdav.loadbalancer.server.port: 8000
traefik.http.routers.webdav.rule: >
Host(`webdav.marcpartensky.com`)
traefik.http.routers.webdav.entrypoints: web
# traefik.http.routers.dbdesigner.tls.certresolver: tls
# traefik.http.routers.dbdesigner.middlewares: ldap_auth
networks:
caddy:
external: true
+9 -8
View File
@@ -3,7 +3,6 @@ version: "3.9"
services:
webshot:
image: flowko1/website-shot
container_name: webshot
volumes:
- webshot:/usr/src/website-shot/screenshots
# environment:
@@ -11,13 +10,15 @@ services:
# PASSWORD: yourpassword
networks:
- caddy
# labels:
# traefik.enable: "true"
# traefik.http.routers.webshot.rule: Host(`webshot.marcpartensky.com`)
# traefik.http.routers.webshot.entrypoints: web
# # traefik.http.routers.webshot.tls.certresolver: tls
# traefik.http.services.webshot.loadbalancer.server.port: 3000
# # traefik.http.routers.duplicati.middlewares: ldap_auth
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.webshot.rule: Host(`webshot.marcpartensky.com`)
traefik.http.routers.webshot.entrypoints: websecure
traefik.http.routers.webshot.tls.certresolver: tls
traefik.http.services.webshot.loadbalancer.server.port: 3000
# traefik.http.routers.duplicati.middlewares: ldap_auth
networks:
caddy:
+35 -36
View File
@@ -2,7 +2,7 @@ version: "3.9"
services:
website:
image: docker.io/marcpartensky/website:v140.f211658.2023-11-01
image: marcpartensky/website:v140.f211658.2023-11-01
restart: unless-stopped
env_file:
- ../data/secrets/website.env
@@ -26,41 +26,40 @@ services:
- caddy
- postgres
- redis
labels:
# caddy: marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 80}}"
# caddy.tls: "internal"
traefik.enable: "true"
traefik.http.routers.website.rule: Host(`marcpartensky.com`) && !PathPrefix(`/.well-known`)
traefik.http.routers.website.entrypoints: web
# traefik.http.routers.website.tls.certresolver: tls
traefik.http.services.website.loadbalancer.server.port: 8000
# deploy:
# placement:
# constraints:
# - node.role == manager
# restart_policy:
# condition: on-failure
# # mode: global
# update_config:
# parallelism: 1
# delay: 5s
# order: start-first
# failure_action: rollback
# rollback_config:
# order: start-first
# resources:
# reservations:
# cpus: "1"
# memory: "500M"
# labels:
# traefik.enable: "true"
# traefik.http.routers.website.rule: >
# Host(`marcpartensky.com`)
# # traefik.http.routers.website.rule: >
# # Host(`marcpartensky.com`) || Host(`marcpartensky.fr`)
# traefik.http.routers.website.entrypoints: web
# traefik.http.services.website.loadbalancer.server.port: 80
# labels:
# caddy: marcpartensky.com
# caddy.reverse_proxy: "{{upstreams 80}}"
# # caddy.tls: "internal"
# traefik.enable: "true"
# traefik.http.routers.website.rule: Host(`marcpartensky.com, marcpartensky.fr`)
# traefik.http.routers.website.entrypoints: websecure
# traefik.http.routers.website.tls.certresolver: tls
# traefik.http.services.website.loadbalancer.server.port: 80
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: on-failure
# mode: global
update_config:
parallelism: 1
delay: 5s
order: start-first
failure_action: rollback
rollback_config:
order: start-first
resources:
reservations:
cpus: "1"
memory: "500M"
labels:
traefik.enable: "true"
traefik.http.routers.website.rule: >
Host(`marcpartensky.com`) || Host(`marcpartensky.fr`)
traefik.http.routers.website.entrypoints: websecure
traefik.http.routers.website.tls.certresolver: tls
traefik.http.services.website.loadbalancer.server.port: 80
# redis:
# image: redis:alpine
+15 -50
View File
@@ -7,9 +7,7 @@
services:
wger:
image: docker.io/wger/server:latest
container_name: wger
restart: unless-stopped
image: wger/server:latest
# depends_on:
# db:
# condition: service_healthy
@@ -20,45 +18,25 @@ services:
volumes:
- static:/home/wger/static
- media:/home/wger/media
networks:
- caddy
- postgres
- redis
# ports:
# - 8000
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8000
interval: 10s
timeout: 5s
retries: 5
wger_nginx:
image: docker.io/nginx:stable
container_name: wger-nginx
restart: unless-stopped
nginx:
image: nginx:stable
volumes:
- ../data/wger/nginx.conf:/etc/nginx/conf.d/default.conf
- static:/wger/static
- media:/wger/media
# ports:
# - "80:80"
networks:
- postgres
- caddy
- static:/wger/static:ro
- media:/wger/media:ro
ports:
- "80:80"
healthcheck:
test: service nginx status
interval: 10s
timeout: 5s
retries: 5
labels:
traefik.enable: "true"
traefik.http.routers.wger_nginx.entrypoints: web
traefik.http.services.wger_nginx.loadbalancer.server.port: 80
traefik.http.routers.wger_nginx.rule: >
Host(`wger.marcpartensky.com`)
# traefik.http.routers.ui.tls.certresolver: tls
# traefik.http.routers.ui.tls.certresolver: cloudflare
#traefik.http.routers.nginx.middlewares: ldap_auth
# cache:
# image: redis
@@ -71,16 +49,12 @@ services:
# retries: 5
# restart: unless-stopped
wger_celery_worker:
image: docker.io/wger/server:latest
container_name: wger-celery
restart: unless-stopped
celery_worker:
image: wger/server:latest
container_name: wger_celery_worker
command: /start-worker
env_file:
- ../data/secrets/wger.env
networks:
- postgres
- redis
- ./data/secrets/wger.env
# depends_on:
# cache:
# condition: service_healthy
@@ -92,21 +66,14 @@ services:
timeout: 5s
retries: 5
wger_celery_beat:
image: docker.io/wger/server:latest
container_name: wger-celery-beat
restart: unless-stopped
celery_beat:
image: wger/server:latest
command: /start-beat
volumes:
- celery-beat:/home/wger/beat/
networks:
- postgres
- redis
healthcheck:
test: ["CMD", "celery", "status"]
env_file:
# - ./config/.env
- ../data/secrets/wger.env
- ./config/.env
- ./data/secrets/wger.env
# depends_on:
# cache:
# condition: service_healthy
@@ -117,8 +84,6 @@ volumes:
media:
networks:
redis:
external: true
caddy:
external: true
postgres:
-85
View File
@@ -1,85 +0,0 @@
version: "3.9"
services:
# wstunnel:
# image: node:alpine
# container_name: wstunnel
# entrypoint: sh -c "
# npm i -g wstunnel &&
# wstunnel -s 0.0.0.0:8000
# "
# networks:
# - postgres
# - caddy
# - vpn
# # network_mode: host
# labels:
# traefik.enable: "true"
# traefik.http.services.wstunnel.loadbalancer.server.port: 8000
# traefik.http.routers.wstunnel.rule: >
# Host(`wss.marcpartensky.com`)
# traefik.http.routers.wstunnel.entrypoints: web
# docker run --rm -d -p 2244:2244 mhzed/wstunnel -t 0.0.0.0:2244:target.ip:22 wss://server.com
wstunnel:
image: ghcr.io/erebe/wstunnel:latest
# image: ghcr.io/erebe/wstunnel:latest
container_name: wstunnel
# entrypoint: sh -c "
# npm i -g wstunnel &&
# wstunnel -s 0.0.0.0:8000
# "
# entrypoint: ["./wstunnel", "server", "wss://[::]:8000"]
entrypoint: ["./wstunnel", "server", "ws://[::]:8000"]
networks:
- postgres
- caddy
- vpn
# network_mode: host
labels:
traefik.enable: "true"
traefik.http.services.wstunnel.loadbalancer.server.port: 8000
traefik.http.routers.wstunnel.rule: Host(`wss.marcpartensky.com`)
traefik.http.routers.wstunnel.entrypoints: web
# wg-easy:
# image: ghcr.io/wg-easy/wg-easy
# restart: unless-stopped
# container_name: wg-easy
# environment:
# LANG: fr
# WG_HOST: wireguard.marcpartensky.com
# # PASSWORD: ZTQ5MjAyZTM2Y2JlYjMxY2FmMWYzZTE2
# PORT: 80
# WG_PORT: 51820
# WG_ALLOWED_IPS: "0.0.0.0/0, ::/0"
# UI_TRAFFIC_STATS: true
# volumes:
# - ../data/wg-easy:/etc/wireguard
# ports:
# - 51820:51820/udp
# - 51080:80/tcp
# cap_add:
# - NET_ADMIN
# - SYS_MODULE
# sysctls:
# - net.ipv4.conf.all.src_valid_mark=1
# - net.ipv4.ip_forward=1
# networks:
# vpn:
# ipv4_address: 172.42.42.42
# labels:
# traefik.enable: "true"
# traefik.http.services.wg-easy.loadbalancer.server.port: 80
# traefik.http.routers.wg-easy.rule: Host(`wg.marcpartensky.com`)
# traefik.http.routers.wg-easy.entrypoints: web
# traefik.http.routers.wg-easy.middlewares: ldap_auth
networks:
vpn:
ipam:
config:
- subnet: 172.42.42.0/24
gateway: 172.42.42.1
postgres:
external: true
caddy:
external: true
+22 -22
View File
@@ -1,34 +1,34 @@
version: "3.9"
services:
# yt-dlp:
# # container_name: ytdlp
# image: marcpartensky/yt-dlp
# restart: unless-stopped
# volumes:
# - ../data/yt-dlp:/root/downloads
# - ~/Videos/Youtube:/srv
# env_file:
# - ../data/secrets/yt-dlp.env
# network_mode: none
yt-dlp:
# container_name: ytdlp
image: marcpartensky/yt-dlp
restart: unless-stopped
volumes:
- ../data/yt-dlp:/root/downloads
- ~/Videos/Youtube:/srv
env_file:
- ../data/secrets/yt-dlp.env
network_mode: none
webui:
image: ghcr.io/marcopeocchi/yt-dlp-web-ui:latest
container_name: yt-dlp-webui
restart: unless-stopped
ports:
- "8004:3033"
volumes:
# - ~/Videos/Youtube:/downloads
- /srv/jellyfin/Videos:/downloads
- ~/Videos/Youtube:/downloads
networks:
- caddy
# deploy:
# labels:
# traefik.enable: "true"
# traefik.http.routers.ytdlp.rule: >
# Host(`yt.marcpartensky.fr`) ||
# Host(`yt.marcpartensky.com`)
# traefik.http.routers.ytdlp.entrypoints: websecure
# traefik.http.routers.ytdlp.tls.certresolver: cloudflare
# traefik.http.services.ytdlp.loadbalancer.server.port: 3033
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.ytdlp.rule: >
Host(`yt.marcpartensky.fr`) ||
Host(`yt.marcpartensky.com`)
traefik.http.routers.ytdlp.entrypoints: websecure
traefik.http.routers.ytdlp.tls.certresolver: cloudflare
traefik.http.services.ytdlp.loadbalancer.server.port: 3033
volumes:
ytdlp: