9 Commits
Author SHA1 Message Date
marc 7d743f3f08 fix 2021-08-22 13:53:40 +00:00
marc cdf38224d1 wrong srv 2021-07-26 18:18:10 +02:00
marc ce26163993 .srv 2021-07-11 21:19:07 +02:00
marc 6c253f3d53 using relative links for everything 2021-07-07 13:40:52 +02:00
marc 859e081eb8 using .vol in home folder to store docker volumes 2021-06-14 09:51:35 +02:00
marc d1b8342ca8 vnc 2021-05-26 03:30:42 +02:00
marc 42611ca3b7 prebuilt open web calendar image 2021-05-22 17:08:24 +02:00
marc 627a6ee08b merging with master with no buld version 2021-05-21 15:28:53 +02:00
marc cf8f1ea43b no build 2021-05-05 20:07:53 +02:00
42 changed files with 488 additions and 5272 deletions
-5
View File
@@ -1,5 +0,0 @@
patreon: marcpartensky
github: marcpartensky
custom:
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
- https://paypal.me/marcpartensky
-20
View File
@@ -1,20 +0,0 @@
name: Docker Swarm Deployed
on:
push:
branches:
- master
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Update
run: apt-get update
- name: Install ssh
run: apt-get install openssh-client -y
- name: Setup ssh agent
run: eval $(ssh-agent -s) && ssh-add <(echo $SSH_PRIVATE_KEY)
- name: Deploy to Docker swarm
run: ssh -o StrictHostKeyChecking=no $SSH_REMOTE docker swarm deploy -c vps.yml vps
+1 -7
View File
@@ -1,12 +1,6 @@
docker-compose.yml
data/openvpn
data/secrets
data/certbot
data/traefik
data/searx
data/jenkins
data/beef
data/tmate/keys
data/mx-puppet-discord
data/matrix
data/caddy
data.tar.gz
-18
View File
@@ -1,18 +0,0 @@
image: docker:stable
stages:
- deploy
services:
- docker:dind
before_script:
- apk update
- apk add py-pip python3-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
deploy_app:
stage: deploy
script:
- docker-compose down
- docker-compose up -d
-11
View File
@@ -1,11 +0,0 @@
FROM docker:dood
# RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# RUN chmod +x /usr/local/bin/docker-compose
COPY docker-compose.yml docker-compose.yml
COPY vps.yml vps.yml
RUN docker stack deploy -c vps.yml vps
ENTRYPOINT ["docker"]
CMD ["service", "ls"]
+2 -10
View File
@@ -1,14 +1,6 @@
compose:
cat ./env/vps.txt | xargs ./bin/docker-setup.sh
swarm:
cat ./env/vps.txt | STACK=vps xargs ./bin/docker-setup.sh
merge:
./bin/setup.sh merge vps
down:
docker stack rm vps
export:
tar cvzf data.tgz data
gpg --encrypt --recipient 'marc.partensky@gmail.com' data.tgz
rm data.tgz
network:
docker network create --driver overlay --attachable caddy
clean:
rm data.tgz.gpg
+13 -9
View File
@@ -1,5 +1,3 @@
[![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
## Domains
@@ -11,15 +9,17 @@
- https://cloud.marcpartensky.com
- https://wordpress.marcpartensky.com
- https://git.marcpartensky.com
- https://gitlab.marcpartensky.com
- https://business.marcpartensky.com
- https://todolist.marcpartensky.com
- https://api.todolist.marcpartensky.com
- https://marc.wp.marcpartensky.com
- https://alex.wp.marcpartensky.com
- https://uml.marcpartensky.com
- https://grafana.marcpartensky.com
- https://prometheus.marcpartensky.com
- https://swarm.marcpartensky.com
- https://auth.marcpartensky.com
<!-- - https://dns.marcpartensky.com -->
- https://dns.marcpartensky.com
<!-- - https://dev.marcpartensky.com -->
<!-- - https://box.marcpartensky.com -->
<!-- - https://glou.marcpartensky.com -->
<!-- - https://minecraft.marcpartensky.com -->
@@ -29,10 +29,14 @@ The `docker-compose.yml` configuration is compatible with the following reverse-
- caddy
- nginx
## Deploy the stack
## Commands
```sh
certbot certonly -d newdomain.com -n --standalone
certbot -d domain name,subdomain.domain name,www.domain name --expand
```
docker stack deploy -c vps.yml vps
```sh
docker exec -i docker_minecraft_1 rcon-cli
```
### Links
-47
View File
@@ -1,47 +0,0 @@
#!/bin/sh
PROJECT_PATH="$PROGRAMS_PATH/docker"
export COMPOSE_PATH_SEPARATOR=":"
export COMPOSE_FILE=$(find $PROJECT_PATH/services/*.yml | xargs -I @ echo -n @:)
export COMPOSE_FILE=${COMPOSE_FILE::-1}
if [ "$1" = "-f" ]
then
docker-compose --file $@
exit
fi
if [ -f $PWD/docker-compose.yml ]
then
if [ "$#" = 0 ]
then
docker-compose ps
exit
fi
docker-compose --file $PWD/docker-compose.yml $@
exit
fi
if [ "$#" = 0 ]
then
docker-compose ps
exit
fi
docker-compose $@
if [ "$1" = "up" ]
then
if [ "$2" = "-d" ]
then
docker-compose logs -f ${@: 3}
else
docker-compose logs -f ${@: 2}
fi
elif [ "$1" = "start" ]
then
docker-compose logs -f ${@: 2}
elif [ "$1" = "restart" ]
then
docker-compose logs -f ${@: 2}
fi
-23
View File
@@ -1,23 +0,0 @@
#!/usr/bin/env python
import sys
import yaml
import collections.abc
def update(d, u):
for k, v in u.items():
if isinstance(v, collections.abc.Mapping):
d[k] = update(d.get(k, {}), v)
else:
d[k] = v
return d
d = {}
for file in sys.argv[1:]:
with open(file, "r") as stream:
di = yaml.safe_load(stream)
d = update(d, di)
print(yaml.safe_dump(d))
-35
View File
@@ -1,35 +0,0 @@
#!/bin/sh
if [ $1 = merge ]
then
cat ./env/$2.txt | xargs -I @ echo ./services/@.yml | xargs ./bin/merge.py > ./stacks/docker-compose.yml
# export COMPOSE_FILE="$PWD/../docker-compose.yml"
exit
fi
if [ -z $STACK ]
then
sep="-f"
else
sep="-c"
fi
services=$@
config_files() {
for service in $services
do
echo -n "$sep services/$service.yml "
done
}
if [ -z $STACK ]
then
cmd="docker compose $(config_files) up -d"
else
cmd="docker stack deploy $(config_files) $STACK"
fi
echo $cmd
eval $cmd
+18
View File
@@ -0,0 +1,18 @@
FROM ubuntu:latest
# Escape from here if you can
RUN apt-get update
RUN apt-get install -y openssh-server neovim
RUN service ssh start
# RUN useradd $NAME -p $PASSWORD
# need to:
# nvim /etc/ssh/sshd_config
# service ssh restart
# docker run -it -p 7022:7022 --name box marcpartensky/box
# maybe change guest passwd
EXPOSE 22
+47
View File
@@ -0,0 +1,47 @@
version: "3.9"
services:
marc:
image: marcpartensky/dotfiles
build:
context: /root/git/dotfiles
networks:
- box
stdin_open: true
tty: true
samy:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
etienne:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
stdin_open: true
tty: true
valentin:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
alexandre:
# image: marcpartensky/box
build:
context: .
dockerfile: Dockerfile
networks:
- box
networks:
box:
-16
View File
@@ -1,16 +0,0 @@
# first caddyfile
test.marcpartensky.com {
redir https://caddyserver.com/docs/caddyfile/patterns
}
authent.marcpartensky.com {
reverse_proxy authentik:9443 {
tls internal
}
}
# healthcheck
# :8080 {
# status 200 /
# }
Binary file not shown.
-173
View File
@@ -1,173 +0,0 @@
# vim:ft=yaml
## TLS ##
# {% if not SYNAPSE_NO_TLS %}
# tls_certificate_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.crt"
# tls_private_key_path: "/data/{{ SYNAPSE_SERVER_NAME }}.tls.key"
# {% endif %}
## Server ##
server_name: "matrix.marcpartensky.com"
pid_file: /homeserver.pid
web_client: False
soft_file_limit: 0
# log_config: "{{ SYNAPSE_LOG_CONFIG }}"
## Ports ##
listeners:
# Allow configuring in case we want to reverse proxy 8008
# using another process in the same container
- port: 8008
tls: false
bind_addresses: ['::']
type: http
x_forwarded: false
resources:
- names: [client]
compress: true
- names: [federation]
compress: false
## Database ##
# {% if POSTGRES_PASSWORD %}
# database:
# name: "psycopg2"
# args:
# user: "{{ POSTGRES_USER or "synapse" }}"
# password: "{{ POSTGRES_PASSWORD }}"
# database: "{{ POSTGRES_DB or "synapse" }}"
# host: "{{ POSTGRES_HOST or "db" }}"
# port: "{{ POSTGRES_PORT or "5432" }}"
# cp_min: 5
# cp_max: 10
# {% else %}
# database:
# name: "sqlite3"
# args:
# database: "/data/homeserver.db"
# {% endif %}
## Performance ##
event_cache_size: "10K"
## Ratelimiting ##
rc_messages_per_second: 0.2
rc_message_burst_count: 10.0
federation_rc_window_size: 1000
federation_rc_sleep_limit: 10
federation_rc_sleep_delay: 500
federation_rc_reject_limit: 50
federation_rc_concurrent: 3
## Files ##
media_store_path: "/data/media"
max_upload_size: "50M"
max_image_pixels: "32M"
dynamic_thumbnails: false
# List of thumbnail to precalculate when an image is uploaded.
thumbnail_sizes:
- width: 32
height: 32
method: crop
- width: 96
height: 96
method: crop
- width: 320
height: 240
method: scale
- width: 640
height: 480
method: scale
- width: 800
height: 600
method: scale
url_preview_enabled: False
max_spider_size: "10M"
## Captcha ##
# {% if SYNAPSE_RECAPTCHA_PUBLIC_KEY %}
# recaptcha_public_key: "{{ SYNAPSE_RECAPTCHA_PUBLIC_KEY }}"
# recaptcha_private_key: "{{ SYNAPSE_RECAPTCHA_PRIVATE_KEY }}"
# enable_registration_captcha: True
# recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
# {% else %}
# recaptcha_public_key: "YOUR_PUBLIC_KEY"
# recaptcha_private_key: "YOUR_PRIVATE_KEY"
enable_registration_captcha: False
recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
# {% endif %}
## Turn ##
# {% if SYNAPSE_TURN_URIS %}
# turn_uris:
# {% for uri in SYNAPSE_TURN_URIS.split(',') %} - "{{ uri }}"
# {% endfor %}
# turn_shared_secret: "{{ SYNAPSE_TURN_SECRET }}"
# turn_user_lifetime: "1h"
# turn_allow_guests: True
# {% else %}
turn_uris: []
turn_shared_secret: "marcsecret"
turn_user_lifetime: "1h"
turn_allow_guests: True
# {% endif %}
## Registration ##
enable_registration: "True"
registration_shared_secret: "marcregistrationsecret"
bcrypt_rounds: 12
allow_guest_access: "True"
enable_group_creation: true
## Metrics ###
# {% if SYNAPSE_REPORT_STATS.lower() == "yes" %}
# enable_metrics: True
# report_stats: True
# {% else %}
enable_metrics: False
report_stats: False
# {% endif %}
## API Configuration ##
# {% if SYNAPSE_APPSERVICES %}
app_service_config_files:
- "discord-registration.yaml"
# {% for appservice in SYNAPSE_APPSERVICES %} - "{{ appservice }}"
# {% endfor %}
# {% endif %}
macaroon_secret_key: "marcmacaronsecret"
expire_access_token: False
## Signing Keys ##
# signing_key_path: "/data/matrix.marcpartensky.com.signing.key"
old_signing_keys: {}
key_refresh_interval: "1d" # 1 Day.
# The trusted servers to download signing keys from.
trusted_key_servers:
- server_name: matrix.org
verify_keys:
"ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
password_config:
enabled: true
+1
View File
@@ -0,0 +1 @@
settings.yml
+47
View File
@@ -0,0 +1,47 @@
[uwsgi]
# Who will run the code
uid = searx
gid = searx
# Number of workers (usually CPU count)
workers = 4
# The right granted on the created socket
chmod-socket = 666
# Plugin to use and interpretor config
single-interpreter = true
master = true
plugin = python3
lazy-apps = true
enable-threads = true
# Module to import
module = searx.webapp
# Virtualenv and python path
pythonpath = /usr/local/searx/
chdir = /usr/local/searx/searx/
# Disable logging for privacy
disable-logging=True
# But keep errors for 2 days
touch-logrotate = /run/uwsgi-logrotate
unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate }
log-backupname = /var/log/uwsgi/uwsgi.log.1
logto = /var/log/uwsgi/uwsgi.log
# No keep alive
# See https://github.com/searx/searx-docker/issues/24
add-header = Connection: close
# uwsgi serves the static files
# expires set to one day as Flask does
static-map = /static=/usr/local/searx/searx/static
static-expires = /* 864000
static-gzip-all = True
offload-threads = %k
# Cache
cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
-29
View File
@@ -1,29 +0,0 @@
#!/usr/bin/env bash
KEYS_PATH="./data/tmate/keys"
set -eu
gen_key() {
keytype=$1
ks="${keytype}_"
key="$KEYS_PATH/ssh_host_${ks}key"
if [ ! -e "${key}" ] ; then
ssh-keygen -t "${keytype}" -f "${key}" -N ''
echo ""
fi
SIG=$(ssh-keygen -l -E SHA256 -f "$key.pub" | cut -d ' ' -f 2)
}
mkdir -p $KEYS_PATH
gen_key rsa
RSA_SIG=$SIG
gen_key ed25519
ED25519_SIG=$SIG
echo "You may use the following settings this in your .tmate.conf:"
echo ""
echo "set -g tmate-server-host localhost"
echo "set -g tmate-server-port 22"
echo "set -g tmate-server-rsa-fingerprint $RSA_SIG"
echo "set -g tmate-server-ed25519-fingerprint $ED25519_SIG"
+359 -338
View File
@@ -1,13 +1,203 @@
version: "3"
services:
traefik:
image: traefik
restart: unless-stopped
user: root
command:
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
# - --providers.docker.exposedbydefault=false # <== Don't expose every container to traefik, only expose enabled ones
- --providers.file.filename=/dynamic.yaml # <== Referring to a dynamic configuration file
# - --providers.docker.network=web # <== Operate on the docker network named web
- --providers.docker=true # <== Enabling docker as the provider for traefik
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
- --api.insecure=false # <== Enabling insecure api, NOT RECOMMENDED FOR PRODUCTION
- --api.dashboard=true
- --api.debug=true # <== Enabling additional endpoints for debugging and profiling
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.tls.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
- --certificatesresolvers.tls.acme.email=marc.partensky@gmail.com
- --certificatesresolvers.tls.acme.storage=/letsencrypt/acme.json # Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) - https://docs.traefik.io/observability/logs/ ##
- --log.level=DEBUG # <== Setting the level of the logs from traefik
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entrypoints.web.http.redirections.entrypoint.permanent=true
ports:
- "80:80"
- "443:443"
networks:
- caddy
- nginx
volumes:
- ./data/traefik/letsencrypt:/letsencrypt
# - ./data/traefik/dynamic.yaml:/dynamic.yaml
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.marcpartensky.com`)"
- "traefik.http.routers.traefik.service=api@internal" # <== Enabling the api to be a service to access
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=tls"
- "traefik.docker.network=nginx"
# - "traefik.http.routers.redirs.entrypoints=web"
# - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
# - "traefik.http.routers.redirs.middlewares=redirect-to-https"
# - "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
whoami:
image: traefik/whoami
restart: unless-stopped
environment:
- VIRTUAL_HOST=whoami.local
labels:
- "caddy=whoami.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams http 80}}"
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.marcpartensky.com`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls.certresolver=tls"
networks:
- nginx
- caddy
nginx:
image: nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "2222:2222"
volumes:
- ./data/nginx:/etc/nginx/conf.d
- /etc/letsencrypt:/etc/letsencrypt
- /var/log/nginx:/var/log/nginx
# - ./data/certbot/conf:/etc/letsencrypt
# - ./data/certbot/www:/var/www/certbot
# - type: bind
# source: /home/my-user/elk-stack/.htpasswd
# target: /etc/nginx/.htpasswd
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
networks:
- nginx
- box
nginx_proxy:
image: jwilder/nginx-proxy
restart: unless-stopped
environment:
- ENABLE_IPV6=true
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
# - ./data/nginx:/etc/nginx/conf.d
# - /etc/letsencrypt:/etc/letsencrypt
# - /var/log/nginx:/var/log/nginx
# - ./data/certbot/conf:/etc/letsencrypt
# - ./data/certbot/www:/var/www/certbot
# - type: bind
# source: /home/my-user/elk-stack/.htpasswd
# target: /etc/nginx/.htpasswd
# command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
networks:
- nginx
- box
caddy:
image: lucaslorentz/caddy-docker-proxy:ci-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
environment:
CADDY_INGRESS_NETWORKS: caddy
# CADDY_DOCKER_CADDYFILE_PATH: /etc/Caddyfile
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $BIND_MOUNTS/caddy:/data/caddy
# - ./data/caddy/Caddyfile:/etc/Caddyfile
networks:
- nginx
- box
- caddy
portainer:
image: portainer/portainer-ce
restart: unless-stopped
environment:
- VIRTUAL_HOST=docker.marcpartensky.com
- VIRTUAL_PORT=9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $BIND_MOUNTS/portainer:/data
networks:
- nginx
- caddy
command:
- --logo
- https://marcpartensky.com/static/home/assets/img/white-orchid.svg
labels:
- "caddy=docker.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams 9000}}"
- "traefik.enable=true"
- "traefik.http.routers.portainer.rule=Host(`docker.marcpartensky.com`)"
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls.certresolver=tls"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
registry:
restart: unless-stopped
image: registry:latest
# ports:
# - 5000:5000
environment:
REGISTRY_HTTP_ADDR: 0.0.0.0:80
REGISTRY_HTTP_SECRET: akdfjkalsdjfkljadklsfjkajsdfklj
# REGISTRY_HTTP_ADDR: 0.0.0.0:443
# REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
# REGISTRY_HTTP_TLS_KEY: /certs/domain.key
# REGISTRY_AUTH: htpasswd
# REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
# REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
- $BIND_MOUNTS/registry/data:/var/lib/registry
- $BIND_MOUNTS/registry/certs:/certs
- $BIND_MOUNTS/registry/auth:/auth
labels:
- "caddy=registry.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams 80}}"
- "traefik.enable=true"
- "traefik.http.routers.registry.rule=Host(`registry.marcpartensky.com`)"
- "traefik.http.routers.registry.entrypoints=websecure"
- "traefik.http.routers.registry.tls.certresolver=tls"
- "traefik.http.services.registry.loadbalancer.server.port=80"
# registry:
# image: registry:latest
# restart: unless-stopped
# volumes:
# - $BIND_MOUNTS/registry:/var/lib/registry
# - "$(pwd)"/certs:/certs
# ports:
# - "5000:7000"
# environment:
# - REGISTRY_HTTP_ADDR=0.0.0.0:443 \
# - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
# - REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
# -p 443:443
website_dev:
image: marcpartensky/website
restart: unless-stopped
env_file:
- ./data/secrets/website.env
environment:
- VIRTUAL_HOST=dev.marcpartensky.com
- VIRTUAL_HOST=marcpartensky.com
- VIRTUAL_PORT=80
- DEBUG=true
working_dir: /app
@@ -21,7 +211,7 @@ services:
- postgres
volumes:
- $BIND_MOUNTS/website/media:/app/media
- $HOME/git/website:/app
- ~/git/website:/app
networks:
- website
- nginx
@@ -44,6 +234,53 @@ services:
- "traefik.http.routers.website_dev.tls.certresolver=tls"
- "traefik.http.services.website_dev.loadbalancer.server.port=80"
website:
image: marcpartensky/website
restart: unless-stopped
env_file:
- ./data/secrets/website.env
environment:
- VIRTUAL_HOST=marcpartensky.com
- VIRTUAL_PORT=80
- DEBUG=true
# - SECURE_SSL_REDIRECT=false
# - KEY=/app/privkey.pem
# - CERT=/app/fullchain.pem
working_dir: /app
tty: true
entrypoint: >
sh -c "./manage.py migrate;
./manage.py createsuperuser --noinput;
daphne django_project.asgi:application --port 80 --bind 0.0.0.0 -v2"
# entrypoint: "daphne -e ssl:443:privateKey=$$KEY:certKey=$$CERT django_project.asgi:application"
# entrypoint: daphne -b website -e ssl:443:privateKey=/app/privkey.pem:certKey=/app/fullchain.pem django_project.asgi:application
links:
- redis
- postgres
volumes:
- $BIND_MOUNTS/website/media:/app/media
networks:
- website
- nginx
- caddy
depends_on:
- redis
- postgres
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/robots.txt"]
interval: 1m30s
timeout: 10s
retries: 3
# start_period: 40s
labels:
- "caddy=marcpartensky.com"
- "caddy.reverse_proxy={{upstreams 80}}"
- "traefik.enable=true"
- "traefik.http.routers.website.rule=Host(`marcpartensky.com`)"
- "traefik.http.routers.website.entrypoints=websecure"
- "traefik.http.routers.website.tls.certresolver=tls"
- "traefik.http.services.website.loadbalancer.server.port=80"
postgres:
image: postgres
restart: unless-stopped
@@ -60,37 +297,74 @@ services:
networks:
- website
discordbotix:
# certbot:
# image: certbot/certbot
# volumes:
# - ./data/certbot/conf:/etc/letsencrypt
# - ./data/certbot/www:/var/www/certbot
# entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
# certbot_nginx:
# restart: unless-stopped
# image: staticfloat/nginx-certbot
# ports:
# - "80:80/tcp"
# - "443:443/tcp"
# environment:
# CERTBOT_EMAIL: marc.partensky@gmail.com
# # variable names are space-separated
# ENVSUBST_VARS: FQDN
# FQDN: marcpartensky.com
# volumes:
# - ./conf.d:/etc/nginx/user.conf.d:ro
# - letsencrypt:/etc/letsencrypt
esclave:
image: marcpartensky/discord-bot
restart: unless-stopped
build:
context: $HOME/git/discord-bot
dockerfile: $HOME/git/discord-bot/Dockerfile
args:
env_file: $HOME/git/discordbotix/.env
context: ~/git/discord-bot
dockerfile: ~/git/discord-bot/Dockerfile
networks:
- discord
links:
- docker_api
env_file:
- ./data/secrets/esclave.env
esclave_dev:
image: marcpartensky/discord-bot
restart: unless-stopped
volumes:
- ~/git/discord-bot:/app
networks:
- discord
links:
- docker_api
env_file:
- ~/git/discord-bot/.env
ia:
image: marcpartensky/discord-bot
restart: unless-stopped
build: ~/git/discord-bot
networks:
- discord
env_file:
- ./data/secrets/discordbotix.env
- ./data/secrets/ia.env
discord_bot_mongo:
image: mongo
restart: unless-stopped
volumes:
- /srv/discord_bot_mongo:/data/db
networks:
- discord
ports:
- "27017:27017"
links:
- docker_api
env_file:
- ./data/secrets/discord_bot_mongo.env
docker_api:
image: marcpartensky/docker-api
restart: unless-stopped
build: $HOME/git/docker-api
build: ~/git/docker-api
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
@@ -110,10 +384,9 @@ services:
servant:
image: marcpartensky/servitor
restart: unless-stopped
build: $HOME/git/servitor
pandoc:
build: $HOME/git/pandoc-api
build: ../git/pandoc-api
image: marcpartensky/pandoc-api
restart: unless-stopped
working_dir: /app
@@ -135,7 +408,30 @@ services:
- nginx
- caddy
# https://$HOME.com/itzg/docker-minecraft-server/blob/master/README.md
# https://...com/itzg/docker-minecraft-server/blob/master/README.md
# minecraft_aventure:
# image: itzg/minecraft-server
# restart: always
# environment:
# - TZ=Europe/Paris
# - OPS=MazexRedstone
# - EULA=TRUE
# - ENABLE_AUTOPAUSE=TRUE
# - ENABLE_COMMAND_BLOCK=TRUE
# - MEMORY=2G
# - VERSION=1.13.2
# - ICON=https://cdn.discordapp.com/attachments/507519157387132940/816443237384454144/maxime.png
# - MOTD=Venez jouer sur le serveur de Marc Partensky. Venez! On est bien!
# - WORLD=https://download2342.mediafire.com/89adsak3r96g/xavlx2bmrypq2s0/Across+The+Time+II+-+Time+For+Regrets+%28release+1.0.4%29.zip
# # - MODS=https://www.example.com/mods/mod1.jar,https://www.example.com/mods/mod2.jar
# tty: true
# stdin_open: true
# volumes:
# - .srv/minecraft/data:/data
# ports:
# - "25565:25565"
=======
# https://~.com/itzg/docker-minecraft-server/blob/master/README.md
minecraft_aventure:
image: itzg/minecraft-server
restart: unless-stopped
@@ -227,7 +523,6 @@ services:
volumes:
- $BIND_MOUNTS/mcmyadmin/mcmyadmin:/data
ports:
- "8008:8080"
- "25568:25565"
networks:
- minecraft
@@ -242,7 +537,7 @@ services:
- "traefik.http.services.minecraft.loadbalancer.server.port=8080"
# pterodactyl:
# build: $HOME/fork/panel
# build: ../fork/panel
# restart: unless-stopped
# networks:
# - nginx
@@ -255,35 +550,16 @@ services:
- mcvnc_usr:/usr
ports:
- 8065:80
- 5901:5900
- 5900:5900
environment:
USER: marc
PASSWORD: test
networks:
- minecraft
# links:
# - minecraft
# - minecraft_1.17
# - minecraft_aventure
novnc:
image: dorowu/ubuntu-desktop-lxde-vnc
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/shm:/dev/shm
- novnc:/home/marc
- novnc_usr:/usr
- novnc_var:/var
ports:
- 8066:80
- 5910:5900
# user: "${UID}:${GID}"
environment:
USER: marc
PASSWORD: test
privileged: true
cap_add:
- CAP_SYS_ADMIN
links:
- minecraft
- minecraft_1.17
- minecraft_aventure
notebook:
image: jupyter/base-notebook
@@ -316,11 +592,6 @@ services:
# env:
# image: marcpartensky/env
# build:
# context: $HOME/git/dotfiles
# dockerfile: $HOME/git/dotfiles/Dockerfile
# args:
# env_file: $HOME/git/dotfiles/.env
# ports:
# - "22:7020"
# - "8022:7021"
@@ -365,13 +636,10 @@ services:
image: marcpartensky/ialab
user: nobody
restart: unless-stopped
build:
context: $HOME/git/ialab
dockerfile: $HOME/git/ialab/Dockerfile
environment:
FLASK_APP: server.py
# env_file:
# - $HOME/git/ialab/.flaskenv
# - ../git/ialab/.flaskenv
# working_dir: /app
entrypoint: flask run --host ialab --port 80
# entrypoint: "gunicorn server:app"
@@ -391,11 +659,9 @@ services:
- "traefik.http.services.ialab.loadbalancer.server.port=80"
open_web_calendar:
working_dir: /app
image: marcpartensky/open_web_calendar
restart: unless-stopped
build:
context: $HOME/fork/open-web-calendar
dockerfile: $HOME/fork/open-web-calendar/Dockerfile
working_dir: /app
environment:
- HOST=open_web_calendar
- PORT=80
@@ -456,13 +722,13 @@ services:
networks:
- caddy
- nginx
- wordpress
- business
env_file:
- data/secrets/business.env
volumes:
- $BIND_MOUNTS/business:/var/www/html
depends_on:
- wordpress_mysql
- business_mysql
labels:
- "caddy=business.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams}}"
@@ -472,16 +738,16 @@ services:
- "traefik.http.routers.business.tls.certresolver=tls"
- "traefik.http.services.business.loadbalancer.server.port=80"
# business_mysql:
# image: mysql
# restart: unless-stopped
# env_file:
# - data/secrets/business.env
# networks:
# - caddy
# - wordpress
# volumes:
# - $BIND_MOUNTS/business_mysql:/var/lib/mysql
business_mysql:
image: mysql
restart: unless-stopped
env_file:
- data/secrets/business.env
networks:
- caddy
- business
volumes:
- $BIND_MOUNTS/business_mysql:/var/lib/mysql
oxivia:
image: wordpress
@@ -552,60 +818,6 @@ services:
volumes:
- $BIND_MOUNTS/wordpress_mysql_arnaud:/var/lib/mysql
wordpress_anaelle:
image: wordpress
restart: unless-stopped
networks:
- caddy
- nginx
- wordpress_anaelle
env_file:
- data/secrets/wordpress_anaelle.env
volumes:
- $BIND_MOUNTS/wordpress_anaelle:/var/www/html
depends_on:
- wordpress_mysql_anaelle
labels:
- "caddy=anaelle.wp.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams}}"
- "traefik.enable=true"
- "traefik.http.routers.wordpress_anaelle.rule=Host(`anaelle.wp.marcpartensky.com`)"
- "traefik.http.routers.wordpress_anaelle.entrypoints=websecure"
- "traefik.http.routers.wordpress_anaelle.tls.certresolver=tls"
- "traefik.http.services.wordpress_anaelle.loadbalancer.server.port=80"
wordpress_mysql_anaelle:
image: mysql
restart: unless-stopped
env_file:
- data/secrets/wordpress_anaelle.env
networks:
- caddy
- wordpress_anaelle
ports:
- "7036:3306"
volumes:
- $BIND_MOUNTS/wordpress_mysql_anaelle:/var/lib/mysql
wordpress_anaelle_phpmyadmin:
image: phpmyadmin
restart: unless-stopped
networks:
- wordpress_anaelle
- caddy
depends_on:
- wordpress_mysql_anaelle
env_file:
- data/secrets/wordpress_anaelle.env
labels:
- "caddy=phpmyadmin.anaelle.wp.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams}}"
- "traefik.enable=true"
- "traefik.http.routers.wordpress_anaelle.rule=Host(`phpmyadmin.anaelle.wp.marcpartensky.com`)"
- "traefik.http.routers.wordpress_anaelle.entrypoints=websecure"
- "traefik.http.routers.wordpress_anaelle.tls.certresolver=tls"
- "traefik.http.services.wordpress_anaelle.loadbalancer.server.port=80"
wordpress_alex:
image: wordpress
restart: unless-stopped
@@ -636,30 +848,9 @@ services:
networks:
- caddy
- wordpress_alex
ports:
- "7306:3306"
volumes:
- $BIND_MOUNTS/wordpress_mysql_alex:/var/lib/mysql
wordpress_alex_phpmyadmin:
image: phpmyadmin
restart: unless-stopped
networks:
- wordpress_alex
- caddy
depends_on:
- wordpress_mysql_alex
env_file:
- data/secrets/wordpress_alex.env
labels:
- "caddy=phpmyadmin.alex.wp.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams}}"
- "traefik.enable=true"
- "traefik.http.routers.wordpress_alex.rule=Host(`phpmyadmin.alex.wp.marcpartensky.com`)"
- "traefik.http.routers.wordpress_alex.entrypoints=websecure"
- "traefik.http.routers.wordpress_alex.tls.certresolver=tls"
- "traefik.http.services.wordpress_alex.loadbalancer.server.port=80"
wordpress_marc:
image: wordpress
restart: unless-stopped
@@ -722,11 +913,7 @@ services:
image: nextcloud
restart: unless-stopped
volumes:
# - nextcloud:/var/www/html
- /mnt/dav/users/marcpartensky/bind_mounts/nextcloud:/var/www/html/data
# - nextcloud_theme:/var/www/html/themes/<YOUR_CUSTOM_THEME>
# - nextcloud_apps:/var/www/html/custom_apps
# - nextcloud_config:/var/www/html/config
- nextcloud:/var/www/html
env_file:
- ./data/secrets/nextcloud.env
networks:
@@ -748,11 +935,8 @@ services:
image: mariadb
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
ports:
- "7200:3306"
volumes:
# - nextcloud_mariadb:/var/lib/mysql
- /mnt/dav/users/marcpartensky/bind_mounts/nextcloud_mariadb:/var/www/html
- nextcloud_mariadb:/var/lib/mysql
env_file:
- ./data/secrets/nextcloud.env
networks:
@@ -783,8 +967,8 @@ services:
image: marcpartensky/je-todoapp-react
restart: unless-stopped
build:
context: $HOME/git/todoapp/react
dockerfile: $HOME/git/todoapp/react/Dockerfile
context: ~/git/todoapp/react
dockerfile: ~/git/todoapp/react/Dockerfile
environment:
- PORT=80
- SPRING_API_URL=https://api.todolist.marcpartensky.com
@@ -807,8 +991,8 @@ services:
image: marcpartensky/je-todoapp-spring-api
restart: unless-stopped
build:
context: $HOME/git/todoapp/spring-api
dockerfile: $HOME/git/todoapp/spring-api/Dockerfile
context: ~/git/todoapp/spring-api
dockerfile: ~/git/todoapp/spring-api/Dockerfile
env_file:
- ./data/secrets/todolist.env
environment:
@@ -843,6 +1027,7 @@ services:
openvpn:
image: kylemanna/openvpn
restart: unless-stopped
user: root
cap_add:
- NET_ADMIN
ports:
@@ -866,7 +1051,7 @@ services:
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $HOME/.docker/config.json:/config.json
- ../.docker/config.json:/config.json
networks:
- caddy
- nginx
@@ -917,7 +1102,7 @@ services:
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
gitea:
image: gitea/gitea:1.14.6
image: gitea/gitea:1.14.1
restart: unless-stopped
# user: git
environment:
@@ -937,7 +1122,6 @@ services:
- /etc/localtime:/etc/localtime:ro
ports:
- "7012:22"
- "3000:3000"
depends_on:
- gitea_postgres
labels:
@@ -974,7 +1158,7 @@ services:
image: poiret
restart: unless-stopped
build:
context: $HOME/git/poiret
context: ../git/poiret
networks:
- caddy
- nginx
@@ -993,14 +1177,12 @@ services:
stdin_open: true
tty: true
volumes:
- $BIND_MOUNTS/windows:$HOME
- $BIND_MOUNTS/windows:~
healingpath:
image: marcpartensky/brainperformer
restart: unless-stopped
# user: healingpath
build:
context: $HOME/git/brainperformer
env_file: ./data/secrets/healingpath.env
networks:
- caddy
@@ -1023,7 +1205,7 @@ services:
# user: healingpath
env_file: ./data/secrets/healingpath.env
ports:
- "7201:3306"
- "8006:3306"
volumes:
- $BIND_MOUNTS/healingpath/db:/var/lib/mysql
networks:
@@ -1072,14 +1254,11 @@ services:
ports:
- "7027:22"
volumes:
- $HOME/.ssh:/root/.ssh
- ../.ssh:~/.ssh:ro
environment:
SSH_KEYS_PATH: /root/.ssh/id_rsa
SSH_KEYS_PATH: ../.ssh
SSH_HOSTNAME: marcpartensky.com
HAS_WEBSOCKET: 1
USE_PROXY_PROTOCOL: 1
SSH_PORT_LISTEN: 22
SSH_PORT_ADVERTISE: 7023
vnc:
image: consol/centos-xfce-vnc
@@ -1090,7 +1269,7 @@ services:
env_file:
- "./data/secrets/vnc.env"
volumes:
- $HOME:/root
- ~:/root
# - /usr/bin:/usr/bin
# - /usr/local/bin:/usr/local/bin
networks:
@@ -1124,7 +1303,7 @@ services:
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add:
- NET_ADMIN
networks:
# networks:
- caddy
labels:
- "caddy=dns.marcpartensky.com"
@@ -1150,8 +1329,8 @@ services:
restart: unless-stopped
image: marcpartensky/schtroumpfix
build:
context: $HOME/git/schtroumpfix
# dockerfile: $HOME/git/schtroumpfix/Dockerfile
context: ~/git/schtroumpfix
# dockerfile: ~/git/schtroumpfix/Dockerfile
env_file:
- data/secrets/schtroumpfix.env
environment:
@@ -1267,31 +1446,14 @@ services:
- NET_ADMIN
- SYS_PTRACE
facebook:
image: sebp/lighttpd
restart: unless-stopped
volumes:
- $HOME/git/facebook:/var/www/localhost/htdocs
tty: true
networks:
- caddy
- nginx
labels:
- "caddy=facebook.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams http 80}}"
- "traefik.enable=true"
- "traefik.http.routers.facebook.rule=Host(`facebook.marcpartensky.com`)"
- "traefik.http.routers.facebook.entrypoints=websecure"
- "traefik.http.routers.facebook.tls.certresolver=tls"
- "traefik.http.services.facebook.loadbalancer.server.port=80"
thaiwara:
image: sebp/lighttpd
restart: unless-stopped
volumes:
- $HOME/git/thaiwara:/var/www/localhost/htdocs
- $HOME/git/thaiwara/etc/lighttpd:/etc/lighttpd
- ~/git/thaiwara:/var/www/localhost/htdocs
- ~/git/thaiwara/etc/lighttpd:/etc/lighttpd
tty: true
>>>>>>> main
networks:
- caddy
- nginx
@@ -1307,7 +1469,7 @@ services:
ssh_honeypot:
image: local/ssh-honeypot
restart: unless-stopped
build: $HOME/fork/ssh-honeypot/docker
build: ~/fork/ssh-honeypot/docker
ports:
- "22:2022"
volumes:
@@ -1318,7 +1480,7 @@ services:
image: sebp/lighttpd
restart: unless-stopped
volumes:
- $HOME/git/valentin:/var/www/localhost/htdocs
- ~/git/valentin:/var/www/localhost/htdocs
tty: true
networks:
- caddy
@@ -1332,164 +1494,23 @@ services:
- "traefik.http.routers.valentin.tls.certresolver=tls"
- "traefik.http.services.valentin.loadbalancer.server.port=80"
pritunl:
# image: jippi/pritunl
image: goofball222/pritunl
restart: unless-stopped
ports:
- "1194:1194/udp"
- "1194:1194/tcp"
# - "1080:80/tcp"
# - "1443:443/tcp"
depends_on:
- mongo
# depends_on:
# - mongo
environment:
REVERSE_PROXY: "true"
TZ: Europe/Paris
# volumes:
# - /etc/localtime:/etc/localtime:ro
networks:
- caddy
- nginx
- pritunl
labels:
- "caddy=vpn.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams http 9700}}"
# - "caddy.reverse_proxy={{upstreams http 80}}"
# - "caddy.reverse_proxy={{upstreams https 443}}"
- "traefik.enable=true"
- "traefik.http.routers.pritunl.rule=Host(`vpn.marcpartensky.com`)"
- "traefik.http.routers.pritunl.entrypoints=websecure"
- "traefik.http.routers.pritunl.tls.certresolver=tls"
- "traefik.http.services.pritunl.loadbalancer.server.port=9700"
# - "traefik.http.services.pritunl.loadbalancer.server.port=80"
# - "traefik.http.services.pritunl.loadbalancer.server.port=443"
mongo:
image: mongo:latest
# container_name: pritunldb
hostname: pritunldb
volumes:
- $BIND_MOUNTS/pritunl_mongo:/data/db
networks:
- pritunl
gitlab:
image: gitlab/gitlab-ee:latest
restart: unless-stopped
hostname: gitlab.marcpartensky.com
# environment:
# GITLAB_OMNIBUS_CONFIG: |
# external_url 'http://gitlab.marcpartensky.com:8929'
# gitlab_rails['gitlab_shell_ssh_port'] = 2224
# ports:
# - '8929:8929'
# - '2224:22'
volumes:
- $BIND_MOUNTS/gitlab/config:/etc/gitlab
- $BIND_MOUNTS/gitlab/logs:/var/log/gitlab
- $BIND_MOUNTS/gitlab/data:/var/opt/gitlab
minikube:
image: whindes/alpine-minikube
restart: unless-stopped
ports:
- "30000:30000"
- "31920:31920"
privileged: true
tty: true
rancher:
image: rancher/server
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- caddy
ports:
- "7080:8080"
labels:
- "caddy=rancher.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams 8080}}"
privileged: true
duplicati:
image: ghcr.io/linuxserver/duplicati
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- CLI_ARGS= #optional
volumes:
- $BIND_MOUNTS/duplicati/config:/config
- $BIND_MOUNTS/duplicati/backups:/backups
- $BIND_MOUNTS/duplicati/source:/source
ports:
- 8200:8200
novnc-arch:
image: ponsfrilus/arch-novnc:latest
ports:
- "8083:8083"
environment:
DISPLAY: ":0.0"
novnc-arch-i3:
image: fennerm/arch-i3-novnc
# entrypoint: supervisord
ports:
- "8084:8083"
- "5904:5900"
environment:
DISPLAY: ":0.0"
novnc-debian:
image: theasp/novnc
ports:
- "8082:8080"
environment:
DISPLAY_WIDTH: 1920
DISPLAY_HEIGHT: 1080
# RUN_XTERM={yes|no} (yes)
# RUN_FLUXBOX={yes|no} (yes)
#
#
novnc-fedora:
image: richxsl/fedora-vnc-desktop
ports:
- "8085:6080"
- "5906:5900"
volumes:
nextcloud:
nextcloud_mariadb:
mcvnc:
mcvnc_usr:
novnc:
novnc_usr:
novnc_var:
networks:
caddy:
external: true
pritunl:
healingpath:
nextcloud:
website:
nginx:
ldap:
wordpress:
# business:
business:
wordpress_alex:
wordpress_anaelle:
wordpress_marc:
wordpress_arnaud:
gitea:
Vendored
-10
View File
@@ -1,10 +0,0 @@
caddy
website
oxivia
servant
discord-bot
docker-api
ialab
registry
portainer
authentik
-99
View File
@@ -1,99 +0,0 @@
version: "3.9"
services:
authentik_postgres:
image: postgres:alpine
restart: unless-stopped
volumes:
- authentik_postgres:/var/lib/postgresql/data
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
authentik_redis:
image: redis:alpine
restart: unless-stopped
networks:
- authentik
authentik:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
restart: unless-stopped
command: server
environment:
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: admin
# WORKERS: 2
volumes:
- authentik_media:/media
- authentik_templates:/templates
- authentik_geoip:/geoip
env_file:
- ../data/secrets/authentik.env
# ports:
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
depends_on:
- authentik_postgres
- authentik_redis
- authentik_worker
- caddy
networks:
- authentik
- caddy
labels:
caddy: authentik.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 9000}}"
authentik_worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
restart: unless-stopped
user: root
command: worker
environment:
AUTHENTIK_REDIS__HOST: authentik_redis
AUTHENTIK_POSTGRESQL__HOST: authentik_postgres
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
# This is optional, and can be removed. If you remove this, the following will happen
# - The permissions for the /backups and /media folders aren't fixed, so make sure they are 1000:1000
# - The docker socket can't be accessed anymore
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- authentik_backups:/backups
- authentik_media:/media
- authentik_certs:/certs
- authentik_templates:/templates
- authentik_geoip:/geoip
env_file:
- ../data/secrets/authentik.env
networks:
- authentik
authentik_geoipupdate:
image: maxmindinc/geoipupdate:latest
restart: unless-stopped
volumes:
- authentik_geoip:/usr/share/GeoIP
environment:
GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
GEOIPUPDATE_FREQUENCY: "8"
# env_file:
# - ../data/secrets/authentik.env
networks:
- authentik
volumes:
authentik_postgres:
authentik_backups:
authentik_media:
authentik_certs:
authentik_templates:
authentik_geoip:
networks:
authentik:
caddy:
external: true
-54
View File
@@ -1,54 +0,0 @@
version: "3.9"
configs:
caddy-basic-content:
file: ../data/caddy/Caddyfile
labels:
caddy:
services:
caddy:
image: lucaslorentz/caddy-docker-proxy:ci-alpine
ports:
- "80:80"
- "443:443"
environment:
CADDY_INGRESS_NETWORKS: caddy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
# - ./data/caddy/Caddyfile:/etc/Caddyfile
networks:
- caddy
logging:
# syslog?
options:
max-size: 5m
max-file: "10"
healthcheck:
test: ["CMD", "curl", "-f", "localhost:80"]
deploy:
labels: # Global options
caddy.email: marc.partensky@gmail.com
update_config:
parallelism: 1
delay: 5s
order: start-first
failure_action: rollback
rollback_config:
order: start-first
placement:
constraints:
- node.role == manager
# restart_policy:
# condition: any
resources:
reservations:
cpus: '1'
memory: 500M
volumes:
caddy_data:
networks:
caddy:
external: true
-47
View File
@@ -1,47 +0,0 @@
version: "3.9"
services:
discord_bot_mongo:
image: mongo
restart: unless-stopped
volumes:
- discord_bot_mongo:/data/db
networks:
- discord
ports:
- "27017:27017"
env_file:
- ../data/secrets/discord_bot_mongo.env
# healthcheck:
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
mongo_express:
image: mongo-express
restart: unless-stopped
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
env_file:
- ../data/secrets/mongo_express.env
networks:
- discord
- caddy
depends_on:
- discord_bot_mongo
labels:
caddy: mongo.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8081}}"
traefik.enable: "true"
traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
traefik.http.routers.mongo.entrypoints: websecure
traefik.http.routers.mongo.tls.certresolver: tls
traefik.http.services.mongo.loadbalancer.server.port: 80
volumes:
discord_bot_mongo:
networks:
discord:
caddy:
external: true
attachable: true
driver: overlay
-17
View File
@@ -1,17 +0,0 @@
version: "3.9"
services:
discord-bot:
image: marcpartensky/discord-bot
restart: unless-stopped
ports:
- "7010:8000"
networks:
- discord
depends_on:
- docker_api
env_file:
- ../data/secrets/esclave.env
networks:
discord:
-13
View File
@@ -1,13 +0,0 @@
version: "3.9"
services:
docker_api:
image: marcpartensky/docker-api
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- discord
networks:
discord:
-36
View File
@@ -1,36 +0,0 @@
version: "3.9"
services:
ialab:
image: marcpartensky/ialab
user: nobody
restart: unless-stopped
environment:
FLASK_APP: server.py
# env_file:
# - $HOME/git/ialab/.flaskenv
# working_dir: /app
entrypoint: flask run --host ialab --port 80
# entrypoint: "gunicorn server:app"
# entrypoint: "gunicorn --chdir /app server:app"
volumes:
- ialab:/app
networks:
- caddy
depends_on:
- caddy
labels:
caddy: ialab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
traefik.http.routers.ialab.entrypoints: websecure
traefik.http.routers.ialab.tls.certresolver: tls
traefik.http.services.ialab.loadbalancer.server.port: 80
volumes:
ialab:
networks:
caddy:
external: true
-22
View File
@@ -1,22 +0,0 @@
version: "3.9"
services:
jupyterhub:
image: jupyterhub/jupyterhub
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# - jupyterhub:/srv/jupyterhub
networks:
- caddy
environment:
DOCKER_JUPYTER_IMAGE: marcpartensky/jupyterlab
DOCKER_NETWORK_NAME: jupyterhub
HUB_IP: jupyterhub
labels:
caddy: jupyterhub.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8000}}"
networks:
caddy:
external: true
-33
View File
@@ -1,33 +0,0 @@
version: "3.9"
services:
jupyterlab:
image: marcpartensky/jupyterlab
restart: unless-stopped
environment:
# - GEN_CERT=yes
JUPYTER_ENABLE_LAB: "yes"
GRANT_SUDO: "yes"
entrypoint: start.sh jupyter lab --user root
networks:
- caddy
labels:
caddy: lab.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 8888}}"
traefik.enable: "true"
traefik.http.routers.notebook.rule: Host(`lab.marcpartensky.com`)
traefik.http.routers.notebook.entrypoints: websecure
traefik.http.routers.notebook.tls.certresolver: tls
traefik.http.services.notebook.loadbalancer.server.port: 8888
# entrypoint: start-notebook.sh \
# --NotebookApp.keyfile=key/0000_key-certbot.pem
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
# volumes:
# - /etc/letsencrypt/keys:/home/jovyan/work/key
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
# - /etc/letsencrypt:/etc/letsencrypt
#
networks:
caddy:
external: true
-27
View File
@@ -1,27 +0,0 @@
version: "3.9"
services:
open_web_calendar:
image: marcpartensky/open-web-calendar
restart: unless-stopped
working_dir: /app
environment:
HOST: open_web_calendar
PORT: 80
networks:
- caddy
entrypoint: python app.py
depends_on:
- caddy
labels:
caddy: calendar.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.open_web_calendar.rule: Host(`calendar.marcpartensky.com`)
traefik.http.routers.open_web_calendar.entrypoints: websecure
traefik.http.routers.open_web_calendar.tls.certresolver: tls
traefik.http.services.open_web_calendar.loadbalancer.server.port: 80
networks:
caddy:
external: true
-18
View File
@@ -1,18 +0,0 @@
version: "3.9"
services:
oxivia_mysql:
image: mysql
restart: unless-stopped
env_file:
- ../data/secrets/oxivia.env
volumes:
- $BIND_MOUNTS/oxivia_mysql:/var/lib/mysql
networks:
- caddy
- oxivia
networks:
oxivia:
caddy:
external: true
-32
View File
@@ -1,32 +0,0 @@
version: "3.9"
services:
oxivia:
image: wordpress
restart: unless-stopped
env_file:
- ../data/secrets/oxivia.env
volumes:
- $BIND_MOUNTS/oxivia:/var/www/html
- ../data/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
networks:
- caddy
- oxivia
depends_on:
- oxivia_mysql
- caddy
healthcheck:
test: ["CMD", "curl", "-f", "localhost:80"]
labels:
caddy: oxivia.business.marcpartensky.com
caddy.reverse_proxy: "{{upstreams}}"
traefik.enable: "true"
traefik.http.routers.oxivia.rule: Host(`oxivia.business.marcpartensky.com`)
traefik.http.routers.oxivia.entrypoints: websecure
traefik.http.routers.oxivia.tls.certresolver: tls
traefik.http.services.oxivia.loadbalancer.server.port: 80
networks:
oxivia:
caddy:
external: true
-30
View File
@@ -1,30 +0,0 @@
version: "3.9"
services:
pandoc:
image: marcpartensky/pandoc-api
restart: unless-stopped
working_dir: /app
env_file:
- ../data/secrets/pandoc.env
volumes:
- pandoc:/app/files
labels:
caddy: pandoc.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.pandoc.rule: Host(`pandoc.marcpartensky.com`)
traefik.http.routers.pandoc.entrypoints: websecure
traefik.http.routers.pandoc.tls.certresolver: tls
traefik.http.services.pandoc.loadbalancer.server.port: 80
networks:
- caddy
depends_on:
- caddy
volumes:
pandoc:
networks:
caddy:
external: true
-37
View File
@@ -1,37 +0,0 @@
version: "3.9"
services:
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
volumes:
portainer:
networks:
caddy:
external: true
-39
View File
@@ -1,39 +0,0 @@
version: "3.9"
services:
registry:
restart: unless-stopped
image: registry:latest
environment:
REGISTRY_HTTP_ADDR: 0.0.0.0:80
# REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
# REGISTRY_HTTP_TLS_KEY: /certs/domain.key
# REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
# REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
env_file:
- ../data/secrets/registry.env
volumes:
- registry_data:/var/lib/registry
- registry_certs:/certs
- registry_auth:/auth
depends_on:
- caddy
networks:
- caddy
labels:
caddy: registry.marcpartensky.com
caddy.reverse_proxy: "{{upstreams 80}}"
traefik.enable: "true"
traefik.http.routers.registry.rule: Host(`registry.marcpartensky.com`)
traefik.http.routers.registry.entrypoints: websecure
traefik.http.routers.registry.tls.certresolver: "tls"
traefik.http.services.registry.loadbalancer.server.port: 80
volumes:
registry_data:
registry_certs:
registry_auth:
networks:
caddy:
external: true
-6
View File
@@ -1,6 +0,0 @@
version: "3.9"
services:
servant:
image: marcpartensky/servitor
restart: unless-stopped
-17
View File
@@ -1,17 +0,0 @@
version: "3.9"
services:
sslh:
image: marcpartensky/sslh
networks:
- caddy
# - bridge
ports:
- "443:443"
command: --tls=caddy:443 --ssh=localhost:7022
depends_on:
- caddy
networks:
caddy:
external: true
-111
View File
@@ -1,111 +0,0 @@
version: "3.9"
services:
website:
image: marcpartensky/website
restart: unless-stopped
env_file:
- ../data/secrets/website.env
environment:
VIRTUAL_HOST: marcpartensky.com
VIRTUAL_PORT: 80
# DEBUG: true
# SECURE_SSL_REDIRECT: false
# KEY: /app/privkey.pem
# CERT: /app/fullchain.pem
working_dir: /app
entrypoint: >
sh -c "./manage.py migrate;
./manage.py collectstatic --noinput;
daphne django_project.asgi:application --port 80 --bind 0.0.0.0 -v2"
# entrypoint: "daphne -e ssl:443:privateKey=$$KEY:certKey=$$CERT django_project.asgi:application"
# entrypoint: daphne -b website -e ssl:443:privateKey=/app/privkey.pem:certKey=/app/fullchain.pem django_project.asgi:application
# command:
# - "80"
# - "0.0.0.0"
depends_on:
- redis
- postgres
- caddy
volumes:
- website_media:/app/media
networks:
- website
- caddy
labels:
caddy: marcpartensky.com, marc.wf, marc.tf
caddy.reverse_proxy: "{{upstreams 80}}"
# caddy.tls: "internal"
traefik.enable: "true"
traefik.http.routers.website.rule: "Host(`marcpartensky.com`)"
traefik.http.routers.website.entrypoints: "websecure"
traefik.http.routers.website.tls.certresolver: "tls"
traefik.http.services.website.loadbalancer.server.port: "80"
deploy:
# 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"
postgres:
image: postgres
restart: unless-stopped
volumes:
- postgres:/var/lib/postgresql/data
env_file:
- ../data/secrets/postgres.env
networks:
- website
pgweb:
image: sosedoff/pgweb
restart: unless-stopped
env_file:
- ../data/secrets/postgres.env
networks:
- website
- caddy
depends_on:
- postgres
healthcheck:
test: ["CMD", "wget", "-q", "localhost:8081", "-O", "/dev/null"]
labels:
caddy: db.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==
# postgres_adminer:
# adminer:
# image: adminer
# restart: unless-stopped
# ports:
# - 8080:8080
redis:
image: redis:alpine
restart: unless-stopped
networks:
- website
healthcheck:
test: ["CMD", "redis-cli","ping"]
volumes:
website_media:
postgres:
networks:
website:
caddy:
external: true
-46
View File
@@ -1,46 +0,0 @@
version: "3.9"
services:
wordpress:
image: wordpress
restart: unless-stopped
networks:
- caddy
- wordpress
env_file:
- ../data/secrets/wordpress.env
volumes:
- wordpress:/var/www/html
depends_on:
- wordpress_mysql
labels:
- "caddy=wordpress.marcpartensky.com"
- "caddy.reverse_proxy={{upstreams}}"
- "traefik.enable=true"
- "traefik.http.routers.wordpress.rule=Host(`wordpress.marcpartensky.com`)"
- "traefik.http.routers.wordpress.entrypoints=websecure"
- "traefik.http.routers.wordpress.tls.certresolver=tls"
- "traefik.http.services.wordpress.loadbalancer.server.port=80"
wordpress_mysql:
image: mysql
restart: unless-stopped
env_file:
- ../data/secrets/wordpress.env
networks:
- caddy
- wordpress
volumes:
- wordpress_mysql:/var/lib/mysql
healthcheck:
test: CMD /bin/sh -c 'mysqladmin ping --user=$MYSQL_USER --password=$MYSQL_PASSWORD'
volumes:
wordpress:
wordpress_mysql:
networks:
wordpress:
caddy:
external: true
File diff suppressed because it is too large Load Diff
-2013
View File
File diff suppressed because it is too large Load Diff