initial commit

This commit is contained in:
Basti SK 2025-03-27 18:59:31 +01:00
commit 879d596740
17 changed files with 508 additions and 0 deletions

3
Readme.md Normal file
View File

@ -0,0 +1,3 @@
# Docker-Compose Library
A collection of docker-compose files for different open-source projects.

View File

@ -0,0 +1,196 @@
## custom configuration file based on https://github.com/just-containers/mariadb/blob/master/rootfs/etc/mysql/my.cnf
## please be aware that changing options here may break things
#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# especially if they contain "#" chars...
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8mb4
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
user = abc
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc_messages_dir = /usr/share/mariadb
lc_messages = en_US
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 128M
max_connections = 100
connect_timeout = 5
wait_timeout = 600
max_allowed_packet = 16M
thread_cache_size = 128
thread_stack = 192K
sort_buffer_size = 4M
bulk_insert_buffer_size = 16M
tmp_table_size = 32M
max_heap_table_size = 32M
#performance_schema = on
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = MIXED
#
# * MyISAM
#
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched. On error, make copy and try a repair.
myisam-recover-options = BACKUP
#open-files-limit = 2000
table_open_cache = 400
#table_cache = 64
#thread_concurrency = 10
myisam_sort_buffer_size = 512M
concurrent_insert = 2
read_buffer_size = 2M
read_rnd_buffer_size = 1M
#
# * Query Cache Configuration
#
# Cache only tiny result sets, so we can fit more in the query cache.
query_cache_limit = 128K
query_cache_size = 64M
# for more write intensive setups, set to DEMAND or OFF
query_cache_type = DEMAND
#
# * Logging and Replication
#
console = 1
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log = 1
#general_log_file = /config/log/mysql/mysql.log
#
# Error log - should be very few entries.
#
log_warnings = 2
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf
#log_error = /config/log/mysql/mysql.log
#
# Enable the slow query log to see queries with especially long duration
slow_query_log = 1
slow_query_log_file = /config/log/mysql/mariadb-slow.log
long_query_time = 5
#log_slow_rate_limit = 1000
#log-queries-not-using-indexes
#log_slow_admin_statements
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see
# https://mariadb.com/kb/en/setting-up-replication/
# about other settings you may need to change.
#server-id = 1
#report_host = master1
#auto_increment_increment = 2
#auto_increment_offset = 1
log_bin = /config/log/mysql/mariadb-bin
log_bin_index = /config/log/mysql/mariadb-bin.index
# not fab for performance, but safer
#sync_binlog = 1
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
expire_logs_days = 10
max_binlog_size = 100M
# slaves
#relay_log = /config/log/mysql/relay-bin
#relay_log_index = /config/log/mysql/relay-bin.index
#relay_log_info_file = /config/log/mysql/relay-bin.info
#log_slave_updates
#read_only
#
# If applications support it, this stricter sql_mode prevents some
# mistakes like inserting invalid dates etc.
#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
default_storage_engine = InnoDB
# you can't just change log file size, requires special procedure
#innodb_log_file_size = 50M
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 8M
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completion
[isamchk]
key_buffer = 16M
#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=MIXED
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

View File

@ -0,0 +1,36 @@
---
version: "2"
services:
bookstack:
image: lscr.io/linuxserver/bookstack
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- APP_URL=https://your.domain
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USER=bookstackuser
- DB_PASS=yourpassword
- DB_DATABASE=bookstackapp
volumes:
- ./bookstack_app_data:/config
ports:
- 6875:80
restart: unless-stopped
depends_on:
- bookstack_db
bookstack_db:
image: lscr.io/linuxserver/mariadb
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=yourpassword
- TZ=Europe/Berlin
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstackuser
- MYSQL_PASSWORD=yourpassword
volumes:
- ./bookstack_db_data:/config
restart: unless-stopped

25
dashy/config.yml Normal file
View File

@ -0,0 +1,25 @@
appConfig:
theme: matrix
layout: auto
iconSize: medium
language: de
pageInfo:
title: Your Dashy
description: ''
navLinks: []
footerText: ''
sections:
- name: your.domain
items:
- title: YourDomain
icon: https://your.domain/img/logo.png
url: https://your.domain
items:
- title: Minecraft Dynmap
url: https://meinspaces.org
- name: personal links
items:
- title: Github
url: https://github.com/youruser
- title: Youtube
url: https://www.youtube.com/channel/yourchannel

22
dashy/docker-compose.yml Normal file
View File

@ -0,0 +1,22 @@
---
version: "3.8"
services:
dashy:
image: lissy93/dashy
container_name: Dashy
# Pass in your config file below, by specifying the path on your host machine
volumes:
- ./config.yml:/app/public/conf.yml
ports:
- 80:80
environment:
- NODE_ENV=production
- UID=1000
- GID=1000
restart: unless-stopped
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s

24
gitea/docker-compose.yml Normal file
View File

@ -0,0 +1,24 @@
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- DISABLE_REGISTRATION=true
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "22:22"

View File

@ -0,0 +1,18 @@
version: "3.3"
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: always
user: "1000"
ports:
- "3000:3000" # expose for localhost
volumes:
- ./data:/var/lib/grafana # data path
- ./grafana/grafana.ini:/etc/grafana/grafana.ini
- ./grafana/provisioning:/etc/grafana/provisioning
environment:
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
- GF_SECURITY_ADMIN_USER=your-username
- GF_SECURITY_ADMIN_PASSWORD=your-super-secret-password

View File

@ -0,0 +1,2 @@
[plugin.marcusolsson-csv-datasource]
allow_local_mode = true

47
gramps/docker-compose.yml Normal file
View File

@ -0,0 +1,47 @@
version: "3.7"
services:
grampsweb: &grampsweb
image: ghcr.io/gramps-project/grampsweb:latest
restart: always
ports:
- "5000:5000" # host:docker
environment:
GRAMPSWEB_TREE: "<YourTreeName>" # will create a new tree if not exists
GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0"
GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0"
GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1
depends_on:
- grampsweb_redis
volumes:
- ./data/users:/app/users # persist user database
- ./data/index:/app/indexdir # persist search index
- ./data/thumbnail_cache:/app/thumbnail_cache # persist thumbnails
- ./data/cache:/app/cache # persist export and report caches
- ./data/secret:/app/secret # persist flask secret
- ./data/db:/root/.gramps/grampsdb # persist Gramps database
- ./data/media:/app/media # persist media files
- ./data/tmp:/tmp
grampsweb_celery:
<<: *grampsweb # YAML merge key copying the entire grampsweb service config
ports: []
container_name: grampsweb_celery
depends_on:
- grampsweb_redis
command: celery -A gramps_webapi.celery worker --loglevel=INFO
grampsweb_redis:
image: redis:alpine
container_name: grampsweb_redis
restart: always
volumes:
gramps_users:
gramps_index:
gramps_thumb_cache:
gramps_cache:
gramps_secret:
gramps_db:
gramps_media:
gramps_tmp:

View File

@ -0,0 +1,15 @@
version: '3.7'
services:
jenkins:
image: jenkins/jenkins:lts
privileged: true
restart: always
user: root
ports:
- 8080:8080
- 50000:50000
container_name: jenkins
volumes:
- ./jenkins:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker

View File

@ -0,0 +1,10 @@
version: '2'
services:
kanboard:
restart: always
image: kanboard/kanboard:latest
ports:
- "80:80"
volumes:
- ./data:/var/www/app/data
- ./plugins:/var/www/app/plugins

View File

@ -0,0 +1,49 @@
volumes:
mariadb_data:
driver: local
networks:
local:
ipam:
config:
- subnet: 172.16.0.0/29
services:
mariadb:
image: mariadb:latest
environment:
MARIADB_ROOT_PASSWORD: mariadbpassword
MARIADB_DATABASE: keycloak
MARIADB_USER: keycloakuser
MARIADB_PASSWORD: mariadbpassword
mem_limit: 300m
container_name: mariadb
volumes:
- mariadb_data:/var/lib/mysql
restart: always
networks:
- local
keycloak:
image: quay.io/keycloak/keycloak:${KEYCLOAK_VERSION:-latest}
environment:
KC_DB: mariadb
KC_DB_SCHEMA: keycloak
KC_DB_USERNAME: keycloakuser
KC_DB_PASSWORD: mariadbpassword
KC_DB_URL_HOST: mariadb
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: adminpassword
KC_PROXY_HEADERS: xforwarded
KC_HTTP_ENABLED: true
KC_HOSTNAME_STRICT: false
KC_HOSTNAME_URL: https://your.domain
mem_limit: 500m
command: start
ports:
- 8080:8080
container_name: keycloak
restart: always
networks:
- local
depends_on:
- mariadb

View File

@ -0,0 +1,28 @@
version: '3'
services:
mediawiki:
image: mediawiki
restart: always
ports:
- 80:80
links:
- database
volumes:
- ./images:/var/www/html/images
- ./uploads:/uploads
# After initial setup, download LocalSettings.php to the same directory as
# this yaml and uncomment the following line and use compose to restart
# the mediawiki service
- ./LocalSettings.php:/var/www/html/LocalSettings.php
# This key also defines the name of the database host used during setup instead of the default "localhost"
database:
image: mariadb
restart: always
environment:
# @see https://phabricator.wikimedia.org/source/mediawiki/browse/master/includes/DefaultSettings.php
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
- ./db:/var/lib/mysql

View File

@ -0,0 +1,11 @@
version: '2'
services:
nextcloud:
image: nextcloud:production
restart: always
ports:
- 80:80
volumes:
- /data:/data:rw
- ./data:/var/www/html

13
offen/docker-compose.yml Normal file
View File

@ -0,0 +1,13 @@
version: '3'
services:
offen:
image: offen/offen:v1.3.4
env_file: ./offen.env
restart: always
ports:
- 8102:80
- 4434:443
volumes:
- ./data:/var/opt/offen
- ./certs:/var/www/.cache

1
offen/offen.env Normal file
View File

@ -0,0 +1 @@
OFFEN_SECRET="yoursecret"

8
offen/setup.sh Normal file
View File

@ -0,0 +1,8 @@
docker run -it --rm \
-v ./data:/var/opt/offen \
-v ./certs:/var/www/.cache \
-v .offen.env:/etc/offen/offen.env \
offen/offen:v1.3.4 setup \
-email you@your.domain \
-name your.domain \
-populate