From 47b798050249d046f29376d05e9b6e873057a3e7 Mon Sep 17 00:00:00 2001 From: erdnaxe Date: Sun, 2 Feb 2020 23:55:37 +0100 Subject: [PATCH] Use a unified docker-compose file --- .gitignore | 2 +- README.md | 5 +- codimd/docker-compose.yml | 44 ------ codimd/example.env | 6 - django-cas/Dockerfile | 27 ---- django-cas/code/cas/__init__.py | 0 django-cas/code/cas/settings.py | 176 --------------------- django-cas/code/cas/urls.py | 23 --- django-cas/code/cas/wsgi.py | 16 -- django-cas/code/docker-entrypoint.sh | 14 -- django-cas/code/manage.py | 22 --- django-cas/code/static/cas_server/logo.png | Bin 129079 -> 0 bytes django-cas/docker-compose.yml | 35 ---- docker-compose.yml | 55 +++++++ env.example | 4 + etherpad/Dockerfile | 6 + etherpad/docker-compose.yml | 15 -- etherpad/example.env | 1 - etherpad/settings.json | 163 +++++++++---------- grafana/Dockerfile | 14 ++ grafana/docker-compose.yml | 29 ---- grafana/ldap.toml | 4 +- privatebin/docker-compose.yml | 11 -- prometheus-alertmanager-discord/Dockerfile | 43 +++++ prometheus-alertmanager-discord/main.go | 82 ++++++++++ prometheus-alertmanager/Dockerfile | 3 + prometheus-alertmanager/alertmanager.yml | 61 +++++++ riot/Dockerfile | 5 + riot/docker-compose.yml | 13 -- 29 files changed, 354 insertions(+), 525 deletions(-) delete mode 100644 codimd/docker-compose.yml delete mode 100644 codimd/example.env delete mode 100644 django-cas/Dockerfile delete mode 100644 django-cas/code/cas/__init__.py delete mode 100644 django-cas/code/cas/settings.py delete mode 100644 django-cas/code/cas/urls.py delete mode 100644 django-cas/code/cas/wsgi.py delete mode 100755 django-cas/code/docker-entrypoint.sh delete mode 100755 django-cas/code/manage.py delete mode 100644 django-cas/code/static/cas_server/logo.png delete mode 100644 django-cas/docker-compose.yml create mode 100644 docker-compose.yml create mode 100644 env.example create mode 100644 etherpad/Dockerfile delete mode 100644 etherpad/docker-compose.yml delete mode 100644 etherpad/example.env create mode 100644 grafana/Dockerfile delete mode 100644 grafana/docker-compose.yml delete mode 100644 privatebin/docker-compose.yml create mode 100644 prometheus-alertmanager-discord/Dockerfile create mode 100644 prometheus-alertmanager-discord/main.go create mode 100644 prometheus-alertmanager/Dockerfile create mode 100644 prometheus-alertmanager/alertmanager.yml create mode 100644 riot/Dockerfile delete mode 100644 riot/docker-compose.yml diff --git a/.gitignore b/.gitignore index ea6ab22..0f0535e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -data_* +*_data .env diff --git a/README.md b/README.md index db5edb0..3aa319b 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,14 @@ Ensemble des recettes Docker d'Aurore. L'idée est de pouvoir redonder les services « légers » entre les résidences. -Pour lancer un service, aller dans le dossier puis +Pour lancer un service, cloner le repo, aller dans le dossier puis `sudo docker-compose up --build -d`. ## Fichiers à protéger Les fichiers suivant ne doivent être lisibles que par root : - * les fichiers `.env` (s'inspirer des `example.env`) - * grafana/ldap.toml + * le fichier `.env` (s'inspirer de `example.env`) * django-cas/docker-compose.yml Mettez dedans les mots de passe de base de données ou du LDAP. diff --git a/codimd/docker-compose.yml b/codimd/docker-compose.yml deleted file mode 100644 index aa4a570..0000000 --- a/codimd/docker-compose.yml +++ /dev/null @@ -1,44 +0,0 @@ -# From https://github.com/codimd/container/ -version: '3' -services: - database: - # Don't upgrade PostgreSQL by simply changing the version number - # You need to migrate the Database to the new PostgreSQL version - image: postgres:9.6-alpine - environment: - POSTGRES_USER: codimd - POSTGRES_PASSWORD: codimdpass - POSTGRES_DB: codimd - volumes: - - ./data_db:/var/lib/postgresql/data - restart: always - - app: - image: quay.io/codimd/server:1.4.0 - environment: - DEBUG: "false" - CMD_DB_URL: "postgres://codimd:codimdpass@database:5432/codimd" - CMD_URL_ADDPORT: "false" - CMD_EMAIL: "false" - CMD_DOMAIN: "${DOMAIN}" - CMD_PROTOCOL_USESSL: "true" - CMD_USECDN: "false" - CMD_ALLOW_FREEURL: "true" - CMD_IMAGE_UPLOAD_TYPE: "filesystem" - CMD_LDAP_URL: "${LDAP_URL}" - CMD_LDAP_BINDDN: "${LDAP_BINDDN}" - CMD_LDAP_BINDCREDENTIALS: "${LDAP_BINDCREDENTIALS}" - CMD_LDAP_SEARCHBASE: "${LDAP_SEARCHBASE}" - CMD_LDAP_SEARCHFILTER: "(uid={{username}})" - CMD_LDAP_SEARCHATTRIBUTES: "uid, givenName, mail" - CMD_LDAP_USERIDFIELD: "uid" - CMD_LDAP_USERNAMEFIELD: "uid" - CMD_LDAP_PROVIDERNAME: "${LDAP_PROVIDERNAME}" - ports: - - "8081:3000" - volumes: - - ./data_uploads:/codimd/public/uploads - restart: always - depends_on: - - database - diff --git a/codimd/example.env b/codimd/example.env deleted file mode 100644 index f6c8eee..0000000 --- a/codimd/example.env +++ /dev/null @@ -1,6 +0,0 @@ -DOMAIN=codimd.auro.re -LDAP_URL=ldap://10.128.0.11 -LDAP_BINDDN=cn=codimd,ou=service-users,dc=auro,dc=re -LDAP_BINDCREDENTIALS=Change me -LDAP_SEARCHBASE=cn=Utilisateurs,dc=auro,dc=re -LDAP_PROVIDERNAME=Aurore diff --git a/django-cas/Dockerfile b/django-cas/Dockerfile deleted file mode 100644 index be9df11..0000000 --- a/django-cas/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -# Django CAS server Dockerfile -# -# https://github.com/nitmir/django-cas-server -# -# Author: erdnaxe - -FROM debian:buster-slim - -RUN apt-get update && apt-get install -y \ - python3-pip \ - python3-django \ - python3-lxml \ - python3-requests \ - python3-requests-futures \ - python3-six \ - python3-psycopg2 \ - python3-whitenoise \ - python3-ldap3 \ - gunicorn3 - -RUN pip3 install django-cas-server - -COPY ./code /code/ -WORKDIR /code/ -EXPOSE 8000 -ENTRYPOINT ["./docker-entrypoint.sh"] - diff --git a/django-cas/code/cas/__init__.py b/django-cas/code/cas/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/django-cas/code/cas/settings.py b/django-cas/code/cas/settings.py deleted file mode 100644 index 313ada1..0000000 --- a/django-cas/code/cas/settings.py +++ /dev/null @@ -1,176 +0,0 @@ -""" -Django settings for cas project. - -Generated by 'django-admin startproject' using Django 1.11. - -For more information on this file, see -https://docs.djangoproject.com/en/1.11/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/1.11/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = os.getenv('DJANGO_SECRET_KEY') - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = os.getenv('DJANGO_DEBUG', False) - -ALLOWED_HOSTS = [os.getenv('DJANGO_HOST')] - -# Suivi des erreurs sur root@ -EMAIL_SUBJECT_PREFIX = "[CAS] " -ADMINS = ( - ('Intranet', 'root@crans.org'), -) - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'cas_server', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'whitenoise.middleware.WhiteNoiseMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'django.middleware.locale.LocaleMiddleware', -] - -ROOT_URLCONF = 'cas.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'cas.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.11/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': os.getenv('DJANGO_DB_NAME'), - 'HOST': os.getenv('DJANGO_DB_HOST'), - 'USER': os.getenv('DJANGO_DB_USER'), - 'PASSWORD': os.getenv('DJANGO_DB_PASSWORD'), - } -} - - -# Password validation -# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/1.11/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.11/howto/static-files/ - -STATIC_URL = '/static/' - - -# Below are custom parameters - -STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' -STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] -STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") - -CAS_AUTH_CLASS = "cas_server.auth.LdapAuthUser" -CAS_LDAP_SERVER = os.getenv('DJANGO_CAS_LDAP_SERVER') -CAS_LDAP_USER = os.getenv('DJANGO_CAS_LDAP_USER') -CAS_LDAP_PASSWORD = os.getenv('DJANGO_CAS_LDAP_PASSWORD') -CAS_LDAP_BASE_DN = os.getenv('DJANGO_CAS_LDAP_BASE_DN') - -CAS_INFO_MESSAGES_ORDER = ["cas_explained"] - -SESSION_COOKIE_AGE = 86400 -SESSION_EXPIRE_AT_BROWSER_CLOSE = True -SESSION_COOKIE_HTTPONLY = True - -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'formatters': { - 'cas_syslog': { - 'format': 'cas: %(levelname)s %(message)s' - }, - }, - 'handlers': { - 'cas_syslog': { - 'level': 'INFO', - 'class': 'logging.handlers.SysLogHandler', - 'address': '/dev/log', - 'formatter': 'cas_syslog', - }, - }, - 'loggers': { - 'cas_server': { - 'handlers': ['cas_syslog'], - 'level': 'INFO', - 'propagate': True, - }, - }, -} - diff --git a/django-cas/code/cas/urls.py b/django-cas/code/cas/urls.py deleted file mode 100644 index f182d34..0000000 --- a/django-cas/code/cas/urls.py +++ /dev/null @@ -1,23 +0,0 @@ -"""cas URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.11/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.conf.urls import url, include - 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) -""" -from django.conf.urls import include, url -from django.contrib import admin - -urlpatterns = [ - url(r'^admin/', admin.site.urls), - url(r'^', include('cas_server.urls', namespace="cas_server")), -] - diff --git a/django-cas/code/cas/wsgi.py b/django-cas/code/cas/wsgi.py deleted file mode 100644 index 804320f..0000000 --- a/django-cas/code/cas/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for cas project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cas.settings") - -application = get_wsgi_application() diff --git a/django-cas/code/docker-entrypoint.sh b/django-cas/code/docker-entrypoint.sh deleted file mode 100755 index 375830a..0000000 --- a/django-cas/code/docker-entrypoint.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# Collect static files -echo "Collect static files" -python3 manage.py collectstatic --noinput - -# Apply database migrations -echo "Apply database migrations" -sleep 5 # wait for db -python3 manage.py migrate - -# Start server -echo "Starting server" -gunicorn3 cas.wsgi:application --bind 0.0.0.0:8000 --workers 2 --log-level debug diff --git a/django-cas/code/manage.py b/django-cas/code/manage.py deleted file mode 100755 index aff64b6..0000000 --- a/django-cas/code/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cas.settings") - try: - from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise - execute_from_command_line(sys.argv) diff --git a/django-cas/code/static/cas_server/logo.png b/django-cas/code/static/cas_server/logo.png deleted file mode 100644 index 7b12fbad0ba81131b8a8e775dbdb7474568c9650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129079 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%0DYCby5K>fx60V^krKDw~ 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

DrY za8|OFGLHg8e^6HY2kXqyR~MRFc7&VHx;c{Qz6b0!EFBK{i)Cs;%3jf~$x1i-K%6Kj z%M|MRG42CQhl5`4IBXQ=W1VgWYnd?a>5Q~GrL}tJ3_SJ2T!$L5taM|;J?U{g1FF>v z$UO5+*llbayxD4EE9P?KDiLfM2!cVh%P&uqW+B9Q0>E8&@JVpjDzr)?34 zAR1#}EWMNM{$cmdubKn!-*~~mYShJAt&3y>JkU}oxlbWqTe?0ATwX{BGHGzcZH^Og zsFR*`3qb|}J#kFtodo&30pUuy;mGeVkIPDD^>kQ`#lxi<>AGO`oGrm~_e6X~^bO%I zldB4{^a^@R-s7cB1V}VES}!mCPDDd^9%@-xuOlZ3tHL7{{dAD~+mEdF)tr*OtqAse zc6xQ4kJJpytlxsvMI#|kjId_f#owNsbG1Zn#$YU|sp;nFq7e=37oM3Y&7Zi}L$$2) zKB(W(ebBKEqI2qhbS<9ei{X1XBZ)b=(c5~vOIWTkxXtFSBrekqjs2^suVxk&eUeH) zWSskJc&yJ|2V)nK7WijAjP_UFAZ}j@8;;>R!D&^6FVAoRsH4Z*AC+SSzQem4dsyAz*qDdlJ5^6+qgyz~MXP zW+eYH?WdXy;M^3Wiz`qzg+x$DN1G?*cAyX`a-$So2S&KNeS`St)6btSDT)@K730JN zOrwK0r&_qkg(Q0IQO=cTL}}zsDqfWMw%A(yQ;fqGtTmp*364)DhgD`O2^7vXqFQFf zs4;@lcSRQ0MonHqz}*7$*P67m1oW3=KAN?;f6`y)qExw6kbWqbpQjfS-+%Fohdztb z%TJI2X2uTi655oCVC6;pvV3UoTO{Q^GhjK&FrtAB=NIk&uucsO)`P&1{E99d0SnsP zz9cyCcp<;*%2ea(Se)l|fQ61)iiuE&!gnY&;D|p6JK{%2qvr=&42_*a6MBmT7pwV& z3r2l(viMP69o3wM)W`KLKh!>*2b-KrnTgI2d|3K$!joUJ#eazW?C1;um?fb35zG?o zuS41U96qLpW2+;&46b9KVI1Vn`jse3O9=RkTtM6sKX@(j_#kQypGxRSxCvPUf>(ph7Tf#B_qs$X)Ruq72QlTrb zWaK0ZOP&60?VMS6kdiM2_JjM9FTmMt|mieztt@0aiVyIb;a@ds}Q zT-n0aP_+}?CRE~H+mD6Q|tE$|LiHack~=e*d|rpK*N1=5m8Am~}V+foZF`2yhC>IOpgVmkghA;gOO> zGuSXyUpFGy(p}2LuUK%H(Bx4|VH(Y3ch)ty=G<(#)uVWSX3`{xtT#43*wOx`du?|| zZNtDb9?b+6h*aj<*{>2mz}RjqSQ&nH-?j{el`_!sY+5PulGSe^QcwWgMDvEJtuaRR z<;>@2qK?^UCi0Jef02UD!P$NjOkL;V{WY!e=l&FTwX}<3_KksxO_U$R$noT$Gp;Il zlB9j(q}U%sH_Kht5kO^@841(eHXAMa4P9Y_Ju+dlf8nbYDUaRCkgGrx7>zp&l*qv) z*Zq&actJ%^^$??G${TY$;;P7-$mm36436EY-9roT7WFwVx90zm>yMSmx4KFWRl{-k z+s>*I6g8SARDh;j2nCbV^s2k#&}f;Y5iE@iE+JQ^+4Gv;I{4;+g*Z)Mi}0bO3p8@y(BYK~D-st1S_>gs-rC8+!s?}lsa(sp^SAgjzr+woA|5M?mWVf<=@raSpi4i{^U^`rL#sBV z^7##}ngn3nyC7apnjhxW8F>1DS9i2=f|53)kyy(aMwsEv!Z;M_{lrwgAGHvW+wGSZ zoj!2jjVo;izw{^8=uZeZajXAozy>FC14E5=RG`cTkoPB1H{N_{GVY5>zJV|@*FDon z$x3^~Zq3xe3Y8IEs1MsiJ|Nu;Knbsh%SZ7*@TJrDVXrljx^TP1F=Uygw9xchxk{~rE zx8upBDzcq0&@I;euY8RYKTch053rbF3N(RH7BM)<>nk4;nJ=RE>JL(HPn)LV23TxB za5yO{m~8xF&9c7>R_$|`hkM(h&>x4s_fqUZ&=OJ?W%(GsIQpk;%xtrn7chKVawc*Q zGuS4LZT9hX#9=J>ur4$oR_Y5L!e#D7yur?fkOe zdK4zm%P;}_&v88h{zr^a>ER)x@VrxJEU)6L`1(s$#3~&|^eA`62;8*k^=s^XNQo(V zuACA>El4Wk!0J`6%QNl}fmq2(SVQi7NwbpfP#Pd~p*Ne?{9Yqq#21)8n|HC0Uolj? zC!TbrGm&6K4=2E&7urz6L#b`7p{i@*B?bq8!UPKvaT9JkaxhWfqdTM5wwuZl9!c)$ zZy*Dp5pEzHhi`;TQQ&X7wdle!sRN6vjaUZAs1VXKDu~fg>roFoK#lG5FkIPbXek#l zDSagTTEZ*XW*vZsta*ZR@R6Q%>?62R=>x4KQ%QtLR9Gbu4R1vReMee2F;G=hnC=un zZhWHIP<*XFzV^JbA47Cz#_{BpYF&FsQs;Y^yXmu~csxvn{GnKM#Z;Kfpe6<8aX+`p zQNb!uH9EL@e3InR`o_j>igpq)AczsVG(}a<*4go@+?STG1#WdMg%U=+O%vI8HKy~u z78#3Vs6r;+gjzG@ZzAAa-si%V5^G!wLJVw7R#cR@*CTF&n!JS2gH%|tAHcVAxruIh z0SRChl}4*G`G1w5gMQFh+Pz{L1ck$KL16 z;rQRXeWlxrnHCyB&~^!|_&7j?Qq>~aH1V)W<4DHPU2{=nDTU$V%w?*In4LBt}_a5$f z%{%4p9CD6a?pjS^PAYnWoT-oKwG+f|`(dfyD}eXNe-GD~v&6m1X)NexU`_eG z&9m-(Us0uY{u_&_?&^Q|>gDHqIsMi8!N1v`>e$;oHAY$rWC?2h2MpHhd*~xVA1Cxl zL7x=#NkN|!^hrUV6!b|!pA_^-L7x=#NkN|!^hv@0OA17zG#cwyoKJq=3?)|m`nfvs K=M*{$HvI?J?PEaz diff --git a/django-cas/docker-compose.yml b/django-cas/docker-compose.yml deleted file mode 100644 index db57fa0..0000000 --- a/django-cas/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '3.7' - -services: - database: - # Don't upgrade PostgreSQL by simply changing the version number - # You need to migrate the Database to the new PostgreSQL version - image: postgres:9.6-alpine - environment: - POSTGRES_USER: cas - POSTGRES_PASSWORD: caspass - POSTGRES_DB: cas - volumes: - - ./data_db:/var/lib/postgresql/data - restart: always - - cas: - build: - context: . - environment: - DJANGO_DB_NAME: cas - DJANGO_DB_HOST: database - DJANGO_DB_USER: cas - DJANGO_DB_PASSWORD: caspass - DJANGO_SECRET_KEY: "Please change me in production !" - DJANGO_HOST: localhost - DJANGO_CAS_LDAP_SERVER: "re2o-ldap.adm.auro.re" - DJANGO_CAS_LDAP_USER: "cn=cas,ou=service-users,dc=auro,dc=re" - DJANGO_CAS_LDAP_PASSWORD: "Change me in prod !" - DJANGO_CAS_LDAP_BASE_DN: "cn=Utilisateurs,dc=auro,dc=re" - ports: - - "8085:8000" - restart: always - depends_on: - - database - diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dd77702 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,55 @@ +version: "3" + +services: + riot: + build: riot + restart: always + ports: + - 8080:80 + + privatebin: + image: privatebin/nginx-fpm-alpine + restart: always + volumes: + - ./privatebin_data:/srv/data + ports: + - 8083:80 + + etherpad: + build: etherpad + restart: always + environment: + - "POSTGRES_PASSWORD=${ETHERPAD_POSTGRES_PASSWD}" + ports: + - 8084:9001 + + grafana: + build: grafana + restart: always + environment: + - "ENV_PASSWORD=${GRAFANA_LDAP_BIND_PASSWD}" + volumes: + - ./grafana_data:/var/lib/grafana + ports: + - 8082:3000 + + matrix-appservice-discord: + image: halfshot/matrix-appservice-discord + restart: always + volumes: + - ./matrix-appservice-discord_data:/data + - ./matrix-appservice-discord_data/discord.db:/discord.db + ports: + - 9005:9005 + + prometheus-alertmanager: + build: prometheus-alertmanager + restart: always + ports: + - 9093:9093 + + prometheus-alertmanager-discord: + build: prometheus-alertmanager-discord + restart: always + environment: + - "DISCORD_WEBHOOK=${PROMETHEUS_DISCORD_WEBHOOK}" diff --git a/env.example b/env.example new file mode 100644 index 0000000..17a189c --- /dev/null +++ b/env.example @@ -0,0 +1,4 @@ +# Copy this as .env and make it only readable by root +ETHERPAD_POSTGRES_PASSWD=CHANGE ME +GRAFANA_LDAP_BIND_PASSWD=CHANGE ME +PROMETHEUS_DISCORD_WEBHOOK=CHANGE ME diff --git a/etherpad/Dockerfile b/etherpad/Dockerfile new file mode 100644 index 0000000..cba6fe7 --- /dev/null +++ b/etherpad/Dockerfile @@ -0,0 +1,6 @@ +FROM etherpad/etherpad + +# Change instance settings +ENV NODE_ENV=production +ENV TRUST_PROXY=true +COPY settings.json /opt/etherpad-lite/settings.json diff --git a/etherpad/docker-compose.yml b/etherpad/docker-compose.yml deleted file mode 100644 index 636546a..0000000 --- a/etherpad/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: "3" - -services: - etherpad: - image: etherpad/etherpad - environment: - - NODE_ENV=production - - POSTGRES_USER=etherpad - - "POSTGRES_PASSWORD=${POSTGRES_PASSWD}" - - POSTGRES_DB=etherpad - ports: - - 8084:9001 - volumes: - - ./settings.json:/opt/etherpad-lite/settings.json:ro - restart: always diff --git a/etherpad/example.env b/etherpad/example.env deleted file mode 100644 index 3982410..0000000 --- a/etherpad/example.env +++ /dev/null @@ -1 +0,0 @@ -POSTGRES_PASSWD=asupersecurepassword diff --git a/etherpad/settings.json b/etherpad/settings.json index cd493f5..aee2f1e 100644 --- a/etherpad/settings.json +++ b/etherpad/settings.json @@ -22,6 +22,7 @@ * * Would read the configuration values for those items from the environment * variables PORT, MINIFY and SKIN_NAME. + * * If PORT and SKIN_NAME variables were not defined, the default values 9001 and * "colibris" would be used. The configuration value "minify", on the other * hand, does not have a default indicated. Thus, if the environment variable @@ -50,13 +51,13 @@ /* * Name your instance! */ - "title": "Etherpad", + "title": "${TITLE:Etherpad}", /* * favicon default name * alternatively, set up a fully specified Url to your own favicon */ - "favicon": "favicon.ico", + "favicon": "${FAVICON:favicon.ico}", /* * Skin name. @@ -69,20 +70,20 @@ * - "colibris": the new experimental skin (since Etherpad 1.8), candidate to * become the default in Etherpad 2.0 */ - "skinName": "no-skin", + "skinName": "${SKIN_NAME:colibris}", /* * IP and port which etherpad should bind at */ - "ip": "0.0.0.0", - "port" : 9001, + "ip": "${IP:0.0.0.0}", + "port": "${PORT:9001}", /* * Option to hide/show the settings.json in admin page. * * Default option is set to true */ - "showSettingsInAdminPage" : true, + "showSettingsInAdminPage": "${SHOW_SETTINGS_IN_ADMIN_PAGE:true}", /* * Node native SSL support @@ -118,32 +119,14 @@ * https://www.npmjs.com/package/ueberdb2 */ - "dbType" : "postgres", - "dbSettings" : { - "user" : "${POSTGRES_USER}", - "host" : "10.128.0.31", - "port" : 5432, - "password": "${POSTGRES_PASSWORD}", - "database": "${POSTGRES_DB}" - }, - - /* - * An Example of MySQL Configuration (commented out). - * - * See: https://github.com/ether/etherpad-lite/wiki/How-to-use-Etherpad-Lite-with-MySQL - */ - - /* - "dbType" : "mysql", - "dbSettings" : { - "user" : "etherpaduser", - "host" : "localhost", - "port" : 3306, - "password": "PASSWORD", - "database": "etherpad_lite_db", - "charset" : "utf8mb4" - }, - */ + "dbType": "postgres", + "dbSettings": { + "host": "10.128.0.31", + "port": 5432, + "database": "etherpad", + "user": "etherpad", + "password": "${POSTGRES_PASSWORD}" + }, /* * The default text of a pad @@ -156,57 +139,57 @@ * Change them if you want to override. */ "padOptions": { - "noColors": false, - "showControls": true, - "showChat": true, - "showLineNumbers": true, + "noColors": false, + "showControls": true, + "showChat": true, + "showLineNumbers": true, "useMonospaceFont": false, - "userName": false, - "userColor": false, - "rtl": false, - "alwaysShowChat": false, - "chatAndUsers": false, - "lang": "en-gb" + "userName": false, + "userColor": false, + "rtl": false, + "alwaysShowChat": false, + "chatAndUsers": false, + "lang": "en-gb" }, /* * Pad Shortcut Keys */ "padShortcutEnabled" : { - "altF9" : true, /* focus on the File Menu and/or editbar */ - "altC" : true, /* focus on the Chat window */ - "cmdShift2" : true, /* shows a gritter popup showing a line author */ - "delete" : true, - "return" : true, - "esc" : true, /* in mozilla versions 14-19 avoid reconnecting pad */ - "cmdS" : true, /* save a revision */ - "tab" : true, /* indent */ - "cmdZ" : true, /* undo/redo */ - "cmdY" : true, /* redo */ - "cmdI" : true, /* italic */ - "cmdB" : true, /* bold */ - "cmdU" : true, /* underline */ - "cmd5" : true, /* strike through */ - "cmdShiftL" : true, /* unordered list */ - "cmdShiftN" : true, /* ordered list */ - "cmdShift1" : true, /* ordered list */ - "cmdShiftC" : true, /* clear authorship */ - "cmdH" : true, /* backspace */ - "ctrlHome" : true, /* scroll to top of pad */ - "pageUp" : true, - "pageDown" : true + "altF9": true, /* focus on the File Menu and/or editbar */ + "altC": true, /* focus on the Chat window */ + "cmdShift2": true, /* shows a gritter popup showing a line author */ + "delete": true, + "return": true, + "esc": true, /* in mozilla versions 14-19 avoid reconnecting pad */ + "cmdS": true, /* save a revision */ + "tab": true, /* indent */ + "cmdZ": true, /* undo/redo */ + "cmdY": true, /* redo */ + "cmdI": true, /* italic */ + "cmdB": true, /* bold */ + "cmdU": true, /* underline */ + "cmd5": true, /* strike through */ + "cmdShiftL": true, /* unordered list */ + "cmdShiftN": true, /* ordered list */ + "cmdShift1": true, /* ordered list */ + "cmdShiftC": true, /* clear authorship */ + "cmdH": true, /* backspace */ + "ctrlHome": true, /* scroll to top of pad */ + "pageUp": true, + "pageDown": true }, /* * Should we suppress errors from being visible in the default Pad Text? */ - "suppressErrorsInPadText" : false, + "suppressErrorsInPadText": false, /* * If this option is enabled, a user must have a session to access pads. * This effectively allows only group pads to be accessed. */ - "requireSession" : false, + "requireSession": false, /* * Users may edit pads but not create new ones. @@ -214,13 +197,13 @@ * Pad creation is only via the API. * This applies both to group pads and regular pads. */ - "editOnly" : false, + "editOnly": false, /* * If set to true, those users who have a valid session will automatically be * granted access to password protected pads. */ - "sessionNoPassword" : false, + "sessionNoPassword": false, /* * If true, all css & js will be minified before sending to the client. @@ -228,7 +211,7 @@ * This will improve the loading performance massively, but makes it difficult * to debug the javascript/css */ - "minify" : true, + "minify": true, /* * How long may clients use served javascript code (in seconds)? @@ -236,7 +219,7 @@ * Not setting this may cause problems during deployment. * Set to 0 to disable caching. */ - "maxAge" : 21600, // 60 * 60 * 6 = 6 hours + "maxAge": 21600, // 60 * 60 * 6 = 6 hours /* * Absolute path to the Abiword executable. @@ -245,7 +228,7 @@ * it to null disables Abiword and will only allow plain text and HTML * import/exports. */ - "abiword" : null, + "abiword": null, /* * This is the absolute path to the soffice executable. @@ -253,7 +236,7 @@ * LibreOffice can be used in lieu of Abiword to export pads. * Setting it to null disables LibreOffice exporting. */ - "soffice" : null, + "soffice": null, /* * Path to the Tidy executable. @@ -261,35 +244,41 @@ * Tidy is used to improve the quality of exported pads. * Setting it to null disables Tidy. */ - "tidyHtml" : null, + "tidyHtml": null, /* * Allow import of file types other than the supported ones: * txt, doc, docx, rtf, odt, html & htm */ - "allowUnknownFileEnds" : true, + "allowUnknownFileEnds": true, /* * This setting is used if you require authentication of all users. * * Note: "/admin" always requires authentication. */ - "requireAuthentication" : false, + "requireAuthentication": false, /* * Require authorization by a module, or a user with is_admin set, see below. */ - "requireAuthorization" : false, + "requireAuthorization": false, /* * When you use NGINX or another proxy/load-balancer set this to true. + * + * This is especially necessary when the reverse proxy performs SSL + * termination, otherwise the cookies will not have the "secure" flag. + * + * The other effect will be that the logs will contain the real client's IP, + * instead of the reverse proxy's IP. */ - "trustProxy" : false, + "trustProxy": "${TRUST_PROXY:false}", /* * Privacy: disable IP logging */ - "disableIPlogging" : false, + "disableIPlogging": false, /* * Time (in seconds) to automatically reconnect pad when a "Force reconnect" @@ -297,7 +286,7 @@ * * Set to 0 to disable automatic reconnection. */ - "automaticReconnectionTimeout" : 0, + "automaticReconnectionTimeout": 0, /* * By default, when caret is moved out of viewport, it scrolls the minimum @@ -351,20 +340,20 @@ * follow the section "secure your installation" in README.md */ - /* "users": { "admin": { - // "password" can be replaced with "hash" if you install ep_hash_auth - "password": "changeme1", + // 1) "password" can be replaced with "hash" if you install ep_hash_auth + // 2) please note that if password is null, the user will not be created + "password": "${ADMIN_PASSWORD}", "is_admin": true }, "user": { - // "password" can be replaced with "hash" if you install ep_hash_auth - "password": "changeme1", + // 1) "password" can be replaced with "hash" if you install ep_hash_auth + // 2) please note that if password is null, the user will not be created + "password": "${USER_PASSWORD}", "is_admin": false } }, - */ /* * Restrict socket.io transport methods @@ -419,12 +408,12 @@ */ "exposeVersion": false, - /* + /* * The log level we are using. * * Valid values: DEBUG, INFO, WARN, ERROR */ - "loglevel": "INFO", + "loglevel": "${LOGLEVEL:INFO}", /* * Logging configuration. See log4js documentation for further information: diff --git a/grafana/Dockerfile b/grafana/Dockerfile new file mode 100644 index 0000000..d83025b --- /dev/null +++ b/grafana/Dockerfile @@ -0,0 +1,14 @@ +FROM grafana/grafana + +ENV GF_SERVER_ROOT_URL=https://grafana.auro.re +ENV GF_SESSION_COOKIE_SECURE=true +ENV GF_ANALYTICS_REPORTING_ENABLED=false +ENV GF_SNAPSHOTS_EXTERNAL_ENABLED=false +ENV GF_USERS_ALLOW_SIGN_UP=false +ENV GF_USERS_ALLOW_ORG_CREATE=false +ENV GF_AUTH_BASIC_ENABLED=false +ENV GF_AUTH_LDAP_ENABLED=true +ENV GF_AUTH_LDAP_CONFIG_FILE=/etc/grafana/ldap.toml + +COPY ldap.toml /etc/grafana/ldap.toml + diff --git a/grafana/docker-compose.yml b/grafana/docker-compose.yml deleted file mode 100644 index ef2e785..0000000 --- a/grafana/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -# For the moment, the LDAP password need to be in ldap.toml -# In the future, we will be able to make a secret -# See https://github.com/grafana/grafana/pull/17526 - -version: "3.7" - -services: - grafana: - image: grafana/grafana - environment: - - GF_SERVER_ROOT_URL=https://grafana.auro.re - - GF_SESSION_COOKIE_SECURE=true - - GF_ANALYTICS_REPORTING_ENABLED=false - - GF_SNAPSHOTS_EXTERNAL_ENABLED=false - - GF_USERS_ALLOW_SIGN_UP=false - - GF_USERS_ALLOW_ORG_CREATE=false - - GF_AUTH_BASIC_ENABLED=false - - GF_AUTH_LDAP_ENABLED=true - - GF_AUTH_LDAP_CONFIG_FILE=/etc/grafana/ldap.toml - - # Install Grafana plugins at startup - - GF_INSTALL_PLUGINS=grafana-worldmap-panel - volumes: - - ./data_grafana:/var/lib/grafana - - ./ldap.toml:/etc/grafana/ldap.toml:ro - ports: - - 8082:3000 - restart: always - diff --git a/grafana/ldap.toml b/grafana/ldap.toml index 6f60911..2bd64e9 100644 --- a/grafana/ldap.toml +++ b/grafana/ldap.toml @@ -23,7 +23,7 @@ ssl_skip_verify = false bind_dn = "cn=grafana,ou=service-users,dc=auro,dc=re" # Search user bind password # If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;""" -bind_password = 'CHANGE ME IN PRODUCTION, I WILL DIFFER !' +bind_password = '${ENV_PASSWORD}' # User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)" search_filter = "(cn=%s)" @@ -50,7 +50,7 @@ email = "mail" group_dn = "cn=sudoldap,ou=posix,ou=groups,dc=auro,dc=re" org_role = "Admin" # To make user an instance admin (Grafana Admin) uncomment line below -grafana_admin = true +# grafana_admin = true # The Grafana organization database id, optional, if left out the default org (id 1) will be used # org_id = 1 diff --git a/privatebin/docker-compose.yml b/privatebin/docker-compose.yml deleted file mode 100644 index 328c8b4..0000000 --- a/privatebin/docker-compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: "3.7" - -services: - privatebin: - image: privatebin/nginx-fpm-alpine - volumes: - - ./data_privatebin:/srv/data - ports: - - 8083:80 - restart: always - diff --git a/prometheus-alertmanager-discord/Dockerfile b/prometheus-alertmanager-discord/Dockerfile new file mode 100644 index 0000000..5489508 --- /dev/null +++ b/prometheus-alertmanager-discord/Dockerfile @@ -0,0 +1,43 @@ +# Built following https://medium.com/@chemidy/create-the-smallest-and-secured-golang-docker-image-based-on-scratch-4752223b7324 + +# STEP 1 build executable binary +FROM golang:alpine as builder + +# BUILD_DATE and VCS_REF are immaterial, since this is a 2-stage build, but our build +# hook won't work unless we specify the args +ARG BUILD_DATE +ARG VCS_REF + +# Install SSL ca certificates +RUN apk update && apk add git && apk add ca-certificates +# Create appuser +RUN adduser -D -g '' appuser +COPY . $GOPATH/src/mypackage/myapp/ +WORKDIR $GOPATH/src/mypackage/myapp/ +#get dependancies +RUN go get -d -v +#build the binary +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-w -s" -o /go/bin/alertmanager-discord + + +# STEP 2 build a small image +# start from scratch +FROM scratch +# Now we DO need these, for the auto-labeling of the image +ARG BUILD_DATE +ARG VCS_REF + +# Good docker practice, plus we get microbadger badges +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.vcs-url="https://github.com/funkypenguin/alertmanager-discord.git" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.schema-version="2.2-r1" + +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=builder /etc/passwd /etc/passwd +# Copy our static executable +COPY --from=builder /go/bin/alertmanager-discord /go/bin/alertmanager-discord + +EXPOSE 9094 +USER appuser +ENTRYPOINT ["/go/bin/alertmanager-discord"] diff --git a/prometheus-alertmanager-discord/main.go b/prometheus-alertmanager-discord/main.go new file mode 100644 index 0000000..944dc73 --- /dev/null +++ b/prometheus-alertmanager-discord/main.go @@ -0,0 +1,82 @@ +package main + +import ( + "bytes" + "encoding/json" + "flag" + "fmt" + "os" + "io/ioutil" + "net/http" +) + +type alertManOut struct { + Alerts []struct { + Annotations struct { + Description string `json:"description"` + Summary string `json:"summary"` + } `json:"annotations"` + EndsAt string `json:"endsAt"` + GeneratorURL string `json:"generatorURL"` + Labels map[string]string `json:"labels"` + StartsAt string `json:"startsAt"` + Status string `json:"status"` + } `json:"alerts"` + CommonAnnotations struct { + Summary string `json:"summary"` + } `json:"commonAnnotations"` + CommonLabels struct { + Alertname string `json:"alertname"` + } `json:"commonLabels"` + ExternalURL string `json:"externalURL"` + GroupKey string `json:"groupKey"` + GroupLabels struct { + Alertname string `json:"alertname"` + } `json:"groupLabels"` + Receiver string `json:"receiver"` + Status string `json:"status"` + Version string `json:"version"` +} + +type discordOut struct { + Content string `json:"content"` + Name string `json:"username"` +} + +func main() { + webhookUrl := os.Getenv("DISCORD_WEBHOOK") + if webhookUrl == "" { + fmt.Fprintf(os.Stderr, "error: environment variable DISCORD_WEBHOOK not found\n") + os.Exit(1) + } + whURL := flag.String("webhook.url", webhookUrl, "") + flag.Parse() + fmt.Fprintf(os.Stdout, "info: Listening on 0.0.0.0:9094\n") + http.ListenAndServe(":9094", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, err := ioutil.ReadAll(r.Body) + if err != nil { + panic(err) + } + + amo := alertManOut{} + err = json.Unmarshal(b, &amo) + if err != nil { + panic(err) + } + + // Format alerts + Content := "\n" + for _, alert := range amo.Alerts { + Content += fmt.Sprintf("*%s* **%s** %s\n", alert.Labels["alertname"], alert.Labels["severity"], alert.Annotations.Summary) + } + + // Send to Discord + DO := discordOut{ + Name: "Prometheus 🦋️", + Content: Content, + } + DOD, _ := json.Marshal(DO) + http.Post(*whURL, "application/json", bytes.NewReader(DOD)) + })) +} + diff --git a/prometheus-alertmanager/Dockerfile b/prometheus-alertmanager/Dockerfile new file mode 100644 index 0000000..03dcac5 --- /dev/null +++ b/prometheus-alertmanager/Dockerfile @@ -0,0 +1,3 @@ +FROM prom/alertmanager + +COPY alertmanager.yml /etc/alertmanager/alertmanager.yml diff --git a/prometheus-alertmanager/alertmanager.yml b/prometheus-alertmanager/alertmanager.yml new file mode 100644 index 0000000..a8186d4 --- /dev/null +++ b/prometheus-alertmanager/alertmanager.yml @@ -0,0 +1,61 @@ +# See https://prometheus.io/docs/alerting/configuration/ for documentation. + +global: + # The smarthost and SMTP sender used for mail notifications. + smtp_smarthost: 'localhost:25' + smtp_from: 'alertmanager@example.org' + #smtp_auth_username: 'alertmanager' + #smtp_auth_password: 'password' + # The auth token for Hipchat. + hipchat_auth_token: '1234556789' + # Alternative host for Hipchat. + hipchat_api_url: 'https://hipchat.foobar.org/' + +# The directory from which notification templates are read. +templates: +- '/etc/prometheus/alertmanager_templates/*.tmpl' + +# The root route on which each incoming alert enters. +route: + # The labels by which incoming alerts are grouped together. For example, + # multiple alerts coming in for cluster=A and alertname=LatencyHigh would + # be batched into a single group. + group_by: ['instance'] # group per instance + + # When a new group of alerts is created by an incoming alert, wait at + # least 'group_wait' to send the initial notification. + # This way ensures that you get multiple alerts for the same group that start + # firing shortly after another are batched together on the first + # notification. + group_wait: 30s + + # When the first notification was sent, wait 'group_interval' to send a batch + # of new alerts that started firing for that group. + group_interval: 5m + + # If an alert has successfully been sent, wait 'repeat_interval' to + # resend them. + repeat_interval: 12h + + # A default receiver + receiver: webhook + + +# Inhibition rules allow to mute a set of alerts given that another alert is +# firing. +# We use this to mute any warning-level notifications if the same alert is +# already critical. +inhibit_rules: +- source_match: + severity: 'critical' + target_match: + severity: 'warning' + # Apply inhibition if the alertname is the same. + equal: ['alertname', 'cluster', 'service'] + + +receivers: +- name: 'webhook' + webhook_configs: + - url: 'http://prometheus-alertmanager-discord:9094' + send_resolved: true diff --git a/riot/Dockerfile b/riot/Dockerfile new file mode 100644 index 0000000..bdbf29b --- /dev/null +++ b/riot/Dockerfile @@ -0,0 +1,5 @@ +FROM vectorim/riot-web + +# Customize instance settings and background +COPY config.json /app/config.json +COPY bg.jpg /app/bg.jpg diff --git a/riot/docker-compose.yml b/riot/docker-compose.yml deleted file mode 100644 index 2eea68d..0000000 --- a/riot/docker-compose.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: "3" - -services: - riot: - image: vectorim/riot-web - volumes: - - ./config.json:/app/config.json:ro - - ./bg.jpg:/app/bg.jpg:ro - # - ./welcome.html:/app/welcome.html:ro - ports: - - 8080:80 - restart: always -