735 lines
19 KiB
YAML
735 lines
19 KiB
YAML
version: "3.9"
|
|
services:
|
|
|
|
traefik:
|
|
image: traefik
|
|
restart: unless-stopped
|
|
user: root
|
|
command:
|
|
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
|
|
# - --providers.docker.exposedbydefault=false # <== Don't expose every container to traefik, only expose enabled ones
|
|
- --providers.file.filename=/dynamic.yaml # <== Referring to a dynamic configuration file
|
|
# - --providers.docker.network=web # <== Operate on the docker network named web
|
|
- --providers.docker=true # <== Enabling docker as the provider for traefik
|
|
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
|
|
- --api.insecure=true # <== Enabling insecure api, NOT RECOMMENDED FOR PRODUCTION
|
|
- --api.dashboard=true # <== Enabling the dashboard to view services, middlewares, routers, etc...
|
|
- --api.debug=true # <== Enabling additional endpoints for debugging and profiling
|
|
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
|
|
- --entrypoints.websecure.address=:443
|
|
## Certificate Settings (Let's Encrypt) - https://docs.traefik.io/https/acme/#configuration-examples ##
|
|
- --certificatesresolvers.tls.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
|
|
- --certificatesresolvers.tls.acme.email=marc.partensky@gmail.com # <== Setting email for certs
|
|
- --certificatesresolvers.tls.acme.storage=/letsencrypt/acme.json # <== Defining acme file to store cert information
|
|
## Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) - https://docs.traefik.io/observability/logs/ ##
|
|
- --log.level=DEBUG # <== Setting the level of the logs from traefik
|
|
ports:
|
|
- "8081:443"
|
|
- "8080:8080" # The Web UI (enabled by --api.insecure=true)
|
|
volumes:
|
|
- ./data/traefik/letsencrypt:/letsencrypt
|
|
- ./data/traefik/dynamic.yaml:/dynamic.yaml
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.api.rule=Host(`traefik.marcpartensky.com`)"
|
|
- "traefik.http.routers.api.service=api@internal" # <== Enabling the api to be a service to access
|
|
- "traefik.http.routers.traefik.entrypoints=websecure"
|
|
- "traefik.http.routers.traefik.tls.certresolver=tls"
|
|
|
|
whoami:
|
|
image: traefik/whoami
|
|
restart: unless-stopped
|
|
user: nobody
|
|
labels:
|
|
- "traefik.http.routers.whoami.rule=Host(`whoami.marcpartensky.com`)"
|
|
- "traefik.http.routers.whoami.entrypoints=websecure"
|
|
- "traefik.http.routers.whoami.tls.certresolver=tls"
|
|
|
|
nginx:
|
|
image: nginx
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
# - "2222:2222"
|
|
volumes:
|
|
- ./data/nginx:/etc/nginx/conf.d
|
|
- /etc/letsencrypt:/etc/letsencrypt
|
|
- /var/log/nginx:/var/log/nginx
|
|
# - ./data/certbot/conf:/etc/letsencrypt
|
|
# - ./data/certbot/www:/var/www/certbot
|
|
# - type: bind
|
|
# source: /home/my-user/elk-stack/.htpasswd
|
|
# target: /etc/nginx/.htpasswd
|
|
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
|
|
networks:
|
|
- nginx
|
|
- box
|
|
|
|
portainer:
|
|
image: portainer/portainer-ce
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /srv/portainer:/data
|
|
networks:
|
|
- nginx
|
|
command:
|
|
- --logo
|
|
- https://marcpartensky.com/static/home/assets/img/white-orchid.svg
|
|
labels:
|
|
- "traefik.http.routers.portainer.rule=Host(`docker.marcpartensky.com`)"
|
|
- "traefik.http.routers.portainer.entrypoints=websecure"
|
|
- "traefik.http.routers.portainer.tls.certresolver=tls"
|
|
|
|
# registry:
|
|
# restart: unless-stopped
|
|
# image: registry:latest
|
|
# ports:
|
|
# - 5000:5000
|
|
# environment:
|
|
# REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
|
|
# REGISTRY_HTTP_TLS_KEY: /certs/domain.key
|
|
# REGISTRY_AUTH: htpasswd
|
|
# REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
|
|
# REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
|
|
# volumes:
|
|
# - /path/data:/var/lib/registry
|
|
# - /path/certs:/certs
|
|
# - /path/auth:/auth
|
|
|
|
# registry:
|
|
# image: registry:latest
|
|
# restart: unless-stopped
|
|
# volumes:
|
|
# - /srv/registry:/var/lib/registry
|
|
# - "$(pwd)"/certs:/certs
|
|
# ports:
|
|
# - "5000:7000"
|
|
# environment:
|
|
# - REGISTRY_HTTP_ADDR=0.0.0.0:443 \
|
|
# - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
|
|
# - REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
|
|
# -p 443:443
|
|
|
|
website:
|
|
image: marcpartensky/website
|
|
restart: unless-stopped
|
|
env_file:
|
|
- ./data/secrets/website.env
|
|
environment:
|
|
- DEBUG=false
|
|
# - KEY=/app/privkey.pem
|
|
# - CERT=/app/fullchain.pem
|
|
working_dir: /app
|
|
tty: true
|
|
# - ./manage.py collectstatic --noinput
|
|
entrypoint: >
|
|
sh -c "./manage.py migrate;
|
|
./manage.py createsuperuser --noinput;
|
|
daphne django_project.asgi:application --port 80 --bind 0.0.0.0 -v2"
|
|
# entrypoint: "daphne -e ssl:7000:privateKey=$$KEY:certKey=$$CERT django_project.asgi:application"
|
|
# entrypoint: daphne -b website -e ssl:443:privateKey=/app/privkey.pem:certKey=/app/fullchain.pem django_project.asgi:application
|
|
links:
|
|
- redis
|
|
- postgres
|
|
volumes:
|
|
- /srv/website/media:/app/media
|
|
networks:
|
|
- website
|
|
- nginx
|
|
depends_on:
|
|
- redis
|
|
- postgres
|
|
|
|
postgres:
|
|
image: postgres
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /srv/postgres/dump:/srv/postgresql/dump
|
|
env_file:
|
|
- data/secrets/postgres.env
|
|
networks:
|
|
- website
|
|
|
|
redis:
|
|
image: redis:alpine
|
|
restart: unless-stopped
|
|
networks:
|
|
- website
|
|
|
|
# certbot:
|
|
# image: certbot/certbot
|
|
# volumes:
|
|
# - ./data/certbot/conf:/etc/letsencrypt
|
|
# - ./data/certbot/www:/var/www/certbot
|
|
# entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
|
|
|
|
# certbot_nginx:
|
|
# restart: unless-stopped
|
|
# image: staticfloat/nginx-certbot
|
|
# ports:
|
|
# - "80:80/tcp"
|
|
# - "443:443/tcp"
|
|
# environment:
|
|
# CERTBOT_EMAIL: marc.partensky@gmail.com
|
|
# # variable names are space-separated
|
|
# ENVSUBST_VARS: FQDN
|
|
# FQDN: marcpartensky.com
|
|
# volumes:
|
|
# - ./conf.d:/etc/nginx/user.conf.d:ro
|
|
# - letsencrypt:/etc/letsencrypt
|
|
|
|
esclave:
|
|
image: marcpartensky/discord-bot
|
|
restart: unless-stopped
|
|
networks:
|
|
- discord
|
|
env_file:
|
|
- ./data/secrets/esclave.env
|
|
|
|
ia:
|
|
image: marcpartensky/discord-bot
|
|
restart: unless-stopped
|
|
networks:
|
|
- discord
|
|
env_file:
|
|
- ./data/secrets/ia.env
|
|
|
|
esclave2:
|
|
image: marcpartensky/discord-bot
|
|
restart: unless-stopped
|
|
env_file:
|
|
- ./data/secrets/esclave2.env
|
|
networks:
|
|
- discord
|
|
depends_on:
|
|
- discord_bot_mongo
|
|
|
|
discord_bot_mongo:
|
|
image: mongo
|
|
restart: unless-stopped
|
|
networks:
|
|
- discord
|
|
env_file:
|
|
- ./data/secrets/discord_bot_mongo.env
|
|
|
|
docker_api:
|
|
image: marcpartensky/docker-api
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
networks:
|
|
- discord
|
|
|
|
servant:
|
|
image: marcpartensky/servitor
|
|
restart: unless-stopped
|
|
|
|
pandoc:
|
|
image: marcpartensky/pandoc-api
|
|
restart: unless-stopped
|
|
working_dir: /app
|
|
env_file:
|
|
- ./data/secrets/pandoc.env
|
|
entrypoint: "flask run --host pandoc --port 80"
|
|
volumes:
|
|
- /srv/pandoc:/app
|
|
- /var/log/nginx:/var/log/nginx
|
|
networks:
|
|
- nginx
|
|
|
|
# https://github.com/itzg/docker-minecraft-server/blob/master/README.md
|
|
# minecraft_aventure:
|
|
# image: itzg/minecraft-server
|
|
# restart: always
|
|
# environment:
|
|
# - TZ=Europe/Paris
|
|
# - OPS=MazexRedstone
|
|
# - EULA=TRUE
|
|
# - ENABLE_AUTOPAUSE=TRUE
|
|
# - ENABLE_COMMAND_BLOCK=TRUE
|
|
# - MEMORY=2G
|
|
# - VERSION=1.13.2
|
|
# - ICON=https://cdn.discordapp.com/attachments/507519157387132940/816443237384454144/maxime.png
|
|
# - MOTD=Venez jouer sur le serveur de Marc Partensky. Venez! On est bien!
|
|
# - WORLD=https://download2342.mediafire.com/89adsak3r96g/xavlx2bmrypq2s0/Across+The+Time+II+-+Time+For+Regrets+%28release+1.0.4%29.zip
|
|
# # - MODS=https://www.example.com/mods/mod1.jar,https://www.example.com/mods/mod2.jar
|
|
# tty: true
|
|
# stdin_open: true
|
|
# volumes:
|
|
# - /srv/minecraft/data:/data
|
|
# ports:
|
|
# - "25565:25565"
|
|
|
|
minecraft:
|
|
image: itzg/minecraft-server
|
|
restart: unless-stopped
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- EULA=TRUE
|
|
- OPS=MazexRedstone
|
|
- ENABLE_COMMAND_BLOCK=TRUE
|
|
- MEMORY=2G
|
|
- VERSION=1.16.5
|
|
- ICON=https://cdn.discordapp.com/attachments/611251401514811392/818288635199225886/server.png
|
|
- MOTD=Venez jouer sur le serveur de Marc Partensky. Venez! On est bien!
|
|
- ANNOUNCE_PLAYER_ACHIEVEMENTS=TRUE
|
|
- LEVEL=Server
|
|
- ONLINE_MODE=FALSE # no need for an account
|
|
- DIFFICULTY=hard
|
|
- VIEW_DISTANCE=32
|
|
- GID=1002
|
|
- UID=1002
|
|
# - WORLD=/srv/minecraft/zip/Server.zip
|
|
# - SNOOPER_ENABLED=false
|
|
tty: true
|
|
stdin_open: true
|
|
volumes:
|
|
- ~/.minecraft/minecraft/data/:/data:Z
|
|
ports:
|
|
- "25565:25565"
|
|
|
|
# pterodactyl:
|
|
# restart: unless-stopped
|
|
# networks:
|
|
# - nginx
|
|
|
|
notebook:
|
|
image: jupyter/base-notebook
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8888:8888"
|
|
environment:
|
|
# - GEN_CERT=yes
|
|
- JUPYTER_ENABLE_LAB=yes
|
|
- GRANT_SUDO=yes
|
|
entrypoint: start.sh jupyter lab --user root
|
|
# entrypoint: start-notebook.sh \
|
|
# --NotebookApp.keyfile=key/0000_key-certbot.pem
|
|
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
|
|
# volumes:
|
|
# - /etc/letsencrypt/keys:/home/jovyan/work/key
|
|
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
|
|
# - /etc/letsencrypt:/etc/letsencrypt
|
|
|
|
# env:
|
|
# image: marcpartensky/env
|
|
# ports:
|
|
# - "22:7020"
|
|
# - "8022:7021"
|
|
# volumes:
|
|
|
|
# elasticsearch:
|
|
# image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
|
|
# image: docker.elastic.co/elasticsearch/elasticsearch:latest
|
|
# image: elasticsearch:latest
|
|
# environment:
|
|
# - discovery.type=single-node
|
|
# - ES_ENABLE_SECURITY=true
|
|
# env_file:
|
|
# - ./data/secrets/elasticsearch.env
|
|
# volumes:
|
|
# - /srv/elasticsearch/data:/srv/elasticsearch/data
|
|
# # - elasticsearch:/usr/share/elasticsearch/data
|
|
# networks:
|
|
# - nginx
|
|
# - elk
|
|
# ports:
|
|
# - "9200:9200"
|
|
# - "9300:9300"
|
|
# ulimits:
|
|
# memlock:
|
|
# soft: -1
|
|
# hard: -1
|
|
|
|
# kibana:
|
|
# image: docker.elastic.co/kibana/kibana:latest
|
|
# image: kibana:latest
|
|
# ports:
|
|
# - "5601:5601"
|
|
# env_file:
|
|
# - ./data/secrets/kibana.env
|
|
# depends_on:
|
|
# - elasticsearch
|
|
# networks:
|
|
# - nginx
|
|
|
|
ialab:
|
|
image: marcpartensky/ialab
|
|
user: nobody
|
|
restart: unless-stopped
|
|
environment:
|
|
- FLASK_APP=server.py
|
|
# - FLASK_APP=/app/server.py
|
|
# - FLASK_APP=/app/wsgi.py
|
|
# env_file:
|
|
# - /root/git/ialab/.flaskenv
|
|
# working_dir: /app
|
|
entrypoint: flask run --host ialab --port 80
|
|
# entrypoint: "gunicorn server:app"
|
|
# entrypoint: "gunicorn --chdir /app server:app"
|
|
volumes:
|
|
- /srv/ialab:/app
|
|
networks:
|
|
- nginx
|
|
|
|
open_web_calendar:
|
|
image: marcpartensky/open_web_calendar
|
|
restart: unless-stopped
|
|
working_dir: /app
|
|
environment:
|
|
- HOST=open_web_calendar
|
|
- PORT=80
|
|
networks:
|
|
- nginx
|
|
entrypoint: python app.py
|
|
|
|
# discord_voice_recorder:
|
|
# image: drv
|
|
# volumes:
|
|
# - /srv/discord-voice-recorder/recordings:/usr/src/bot/recordings
|
|
|
|
wordpress:
|
|
image: wordpress
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx
|
|
- wordpress
|
|
env_file:
|
|
- data/secrets/wordpress.env
|
|
volumes:
|
|
- /srv/wordpress:/var/www/html
|
|
depends_on:
|
|
- wordpress_mysql
|
|
|
|
wordpress_mysql:
|
|
image: mysql
|
|
restart: unless-stopped
|
|
env_file:
|
|
- data/secrets/wordpress.env
|
|
networks:
|
|
- wordpress
|
|
volumes:
|
|
- /srv/wordpress_mysql:/var/lib/mysql
|
|
|
|
business:
|
|
image: wordpress
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx
|
|
- business
|
|
env_file:
|
|
- data/secrets/business.env
|
|
volumes:
|
|
- /srv/business:/var/www/html
|
|
depends_on:
|
|
- business_mysql
|
|
|
|
business_mysql:
|
|
image: mysql
|
|
restart: unless-stopped
|
|
env_file:
|
|
- data/secrets/business.env
|
|
networks:
|
|
- business
|
|
volumes:
|
|
- /srv/business_mysql:/var/lib/mysql
|
|
|
|
oxivia:
|
|
image: wordpress
|
|
restart: unless-stopped
|
|
env_file:
|
|
- data/secrets/oxivia.env
|
|
volumes:
|
|
- /srv/oxivia:/var/www/html
|
|
- ./data/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
|
|
networks:
|
|
- nginx
|
|
- oxivia
|
|
depends_on:
|
|
- oxivia_mysql
|
|
|
|
oxivia_mysql:
|
|
image: mysql
|
|
restart: unless-stopped
|
|
env_file:
|
|
- data/secrets/oxivia.env
|
|
ports:
|
|
- "3307:3306"
|
|
volumes:
|
|
- /srv/oxivia_mysql:/var/lib/mysql
|
|
networks:
|
|
- oxivia
|
|
|
|
samba:
|
|
image: dperson/samba
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /:/mount
|
|
ports:
|
|
- "139:139"
|
|
- "445:445"
|
|
|
|
plantuml:
|
|
image: plantuml/plantuml-server:tomcat
|
|
restart: unless-stopped
|
|
networks:
|
|
- nginx
|
|
|
|
nextcloud:
|
|
image: nextcloud
|
|
restart: unless-stopped
|
|
volumes:
|
|
- nextcloud:/var/www/html
|
|
env_file:
|
|
- ./data/secrets/nextcloud.env
|
|
networks:
|
|
- nextcloud
|
|
- nginx
|
|
depends_on:
|
|
- nextcloud_mariadb
|
|
|
|
nextcloud_mariadb:
|
|
image: mariadb
|
|
restart: unless-stopped
|
|
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
|
volumes:
|
|
- nextcloud_mariadb:/var/lib/mysql
|
|
env_file:
|
|
- ./data/secrets/nextcloud.env
|
|
networks:
|
|
- nextcloud
|
|
|
|
searx:
|
|
image: searx/searx
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./data/searx:/etc/searx
|
|
# environment:
|
|
# - PORT=80
|
|
# - BASE_URL=http://localhost:$PORT
|
|
networks:
|
|
- nginx
|
|
|
|
todolist:
|
|
image: marcpartensky/je-todoapp-react
|
|
restart: unless-stopped
|
|
environment:
|
|
- PORT=80
|
|
- SPRING_API_URL=https://api.todolist.marcpartensky.com
|
|
depends_on:
|
|
- todolist_api
|
|
networks:
|
|
- nginx
|
|
# entrypoint: ["/bin/sh", "-c", "'SPRING_API_URL=https://api.todolist.marcpartensky.com serve -s build'"]
|
|
|
|
todolist_api:
|
|
image: marcpartensky/je-todoapp-spring-api
|
|
restart: unless-stopped
|
|
env_file:
|
|
- ./data/secrets/todolist.env
|
|
environment:
|
|
- PORT=80
|
|
- POSTGRES_HOST=todolist_db
|
|
depends_on:
|
|
- todolist_db
|
|
networks:
|
|
- todolist_api
|
|
- nginx
|
|
|
|
todolist_db:
|
|
image: postgres
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /srv/todolist/db:/var/lib/postgresql/data
|
|
env_file:
|
|
- ./data/secrets/todolist.env
|
|
networks:
|
|
- todolist_api
|
|
|
|
openvpn:
|
|
image: kylemanna/openvpn
|
|
restart: unless-stopped
|
|
cap_add:
|
|
- NET_ADMIN
|
|
ports:
|
|
- "1194:1194/udp"
|
|
volumes:
|
|
- /srv/openvpn:/etc/openvpn
|
|
networks:
|
|
- nginx
|
|
- nextcloud
|
|
- website
|
|
- wordpress
|
|
- gitea
|
|
- elk
|
|
- box
|
|
- todolist_api
|
|
- discord
|
|
|
|
watchtower:
|
|
image: containrrr/watchtower
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ~/.docker/config.json:/config.json
|
|
networks:
|
|
- nginx
|
|
command: --interval 10 --http-api-metrics --http-api-token demotoken --debug docker_prometheus_1 docker_grafana_1
|
|
|
|
prometheus:
|
|
image: prom/prometheus
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./data/prometheus:/etc/prometheus
|
|
- /srv/prometheus:/prometheus
|
|
# ports:
|
|
# - "9090:9090"
|
|
user: root
|
|
networks:
|
|
- nginx
|
|
|
|
grafana:
|
|
image: grafana/grafana
|
|
restart: unless-stopped
|
|
# ports:
|
|
# - "3000:3000"
|
|
environment:
|
|
GF_INSTALL_PLUGINS: grafana-clock-panel,grafana-simple-json-datasource
|
|
user: root
|
|
volumes:
|
|
- ./data/grafana:/etc/grafana/provisioning
|
|
- /srv/grafana:/var/lib/grafana
|
|
networks:
|
|
- nginx
|
|
|
|
gitea:
|
|
image: gitea/gitea:1.14.1
|
|
restart: unless-stopped
|
|
# user: git
|
|
environment:
|
|
- USER=git
|
|
- USER_UID=1004
|
|
- USER_GID=1004
|
|
env_file:
|
|
- ./data/secrets/gitea.env
|
|
networks:
|
|
- gitea
|
|
- nginx
|
|
volumes:
|
|
- /home/git/.ssh/:/data/git/.ssh
|
|
# - /srv/gitea:/data
|
|
- /etc/timezone:/etc/timezone:ro
|
|
- /etc/localtime:/etc/localtime:ro
|
|
ports:
|
|
- "7012:22"
|
|
depends_on:
|
|
- gitea_postgres
|
|
|
|
gitea_postgres:
|
|
image: postgres
|
|
restart: unless-stopped
|
|
env_file:
|
|
- ./data/secrets/gitea.env
|
|
networks:
|
|
- gitea
|
|
volumes:
|
|
- /srv/gitea_postgres:/var/lib/postgresql/data
|
|
|
|
archlinux:
|
|
image: archlinux
|
|
restart: unless-stopped
|
|
stdin_open: true
|
|
tty: true
|
|
volumes:
|
|
- /srv/archlinux:/root
|
|
|
|
windows:
|
|
image: mcr.microsoft.com/windows:1903
|
|
restart: unless-stopped
|
|
stdin_open: true
|
|
tty: true
|
|
volumes:
|
|
- /srv/windows:/root
|
|
|
|
healingpath:
|
|
image: marcpartensky/brainperformer
|
|
restart: unless-stopped
|
|
# user: healingpath
|
|
env_file: ./data/secrets/healingpath.env
|
|
networks:
|
|
- healingpath
|
|
- nginx
|
|
depends_on:
|
|
- healingpath_db
|
|
|
|
healingpath_db:
|
|
image: mysql
|
|
restart: unless-stopped
|
|
# user: healingpath
|
|
env_file: ./data/secrets/healingpath.env
|
|
volumes:
|
|
- /srv/healingpath/db:/var/lib/mysql
|
|
networks:
|
|
- healingpath
|
|
|
|
# jenkins_docker:
|
|
# image: docker:dind
|
|
# privileged: true
|
|
# networks:
|
|
# - jenkins
|
|
# environment:
|
|
# DOCKER_TLS_CERTDIR: certs
|
|
# volumes:
|
|
# - /srv/jenkins_docker/certs:/certs/client
|
|
# - /srv/jenkins_docker/data:/var/jenkins_home
|
|
# ports:
|
|
# - "2376:2376"
|
|
|
|
jenkins:
|
|
image: jenkins/jenkins:lts
|
|
privileged: true
|
|
user: root
|
|
ports:
|
|
# - "8080:8080"
|
|
- "50000:50000"
|
|
volumes:
|
|
- /srv/jenkins:/var/jenkins_home
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /usr/bin/docker:/usr/bin/docker
|
|
networks:
|
|
- nginx
|
|
|
|
tmate:
|
|
image: tmate/tmate-ssh-server
|
|
ports:
|
|
- "7027:22"
|
|
volumes:
|
|
- ~/.ssh:/root/.ssh:ro
|
|
environment:
|
|
SSH_KEYS_PATH: ~/.ssh
|
|
SSH_HOSTNAME: marcpartensky.com
|
|
SSH_PORT_LISTEN: 22
|
|
|
|
volumes:
|
|
letsencrypt:
|
|
nextcloud:
|
|
nextcloud_mariadb:
|
|
|
|
networks:
|
|
healingpath:
|
|
nextcloud:
|
|
website:
|
|
nginx:
|
|
wordpress:
|
|
business:
|
|
gitea:
|
|
elk:
|
|
box:
|
|
todolist_api:
|
|
discord:
|
|
oxivia:
|
|
# traefik:
|