From ae225275fbd74e68dd376282de3b44969e54045a Mon Sep 17 00:00:00 2001 From: Penelope Gwen Date: Tue, 16 Apr 2024 18:24:34 -0600 Subject: [PATCH] organized and updated --- .env_template | 84 ++++++--- debian.yml | 22 +++ docker-compose.yml | 193 ------------------- docker-compose.yml.bak | 408 +++++++++++++++++++++++++++++++++++++++++ docker-compose.yml_old | 17 ++ emulators.yml | 63 +++++++ gitlab.yml | 103 +++++++++++ mastodon.yml | 85 +++++++++ matrix.yml | 39 ++++ minecraft.yml | 51 ++++++ monitoring.yml | 13 ++ nextcloud.yml | 23 +++ startall.sh | 7 + 13 files changed, 885 insertions(+), 223 deletions(-) create mode 100644 debian.yml delete mode 100644 docker-compose.yml create mode 100644 docker-compose.yml.bak create mode 100644 docker-compose.yml_old create mode 100644 emulators.yml create mode 100644 gitlab.yml create mode 100644 mastodon.yml create mode 100644 matrix.yml create mode 100644 minecraft.yml create mode 100644 monitoring.yml create mode 100644 nextcloud.yml create mode 100755 startall.sh diff --git a/.env_template b/.env_template index ecfb8af..9c8f94d 100644 --- a/.env_template +++ b/.env_template @@ -1,84 +1,108 @@ #SYSINFO -# Time zone - get identifier here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones TZ= -# UID & GID - get by running 'id' command as user who should own files UID= GID= #PATHS -# Data Path - this is the parent directory where all of your persistent container data will be stored DATA_PATH= #MASTODON -# Mastodon DB User/Pass - you choose these MASTODON_DB_USER= MASTODON_DB_PASS= -# Mastodon Domain - This will be your server's domain. It will be what follows the @ in users' handles MASTODON_DOMAIN= -# Mastodon Web Domain - this can be the same or different from your server's domain. It is the web address that your server is accessible from. If different from Mastodon Domain, follow this guide: https://masto.host/mastodon-usernames-different-from-the-domain-used-for-installation/ MASTODON_WEB_DOMAIN= -# Instructions from https://docs.linuxserver.io/images/docker-mastodon/ -# To generate keys for SECRET_KEY_BASE & OTP_SECRET run docker `run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon generate-secret` once for each MASTODON_SECRET_KEY_BASE= MASTODON_OTP_SECRET= -# To generate keys for VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY run `docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon generate-vapid` + MASTODON_VAPID_PRIVATE_KEY= MASTODON_VAPID_PUBLIC_KEY= -# These values will depend on your smtp provider and config. If not self-hosted, I recommend smtp2go SMTP_SERVER= SMTP_PORT= SMTP_USER= SMTP_PASS= SMTP_FROM= -# LDAP Server details, will vary slightly based on your configuration and provider LDAP_SERVER= LDAP_PORT= LDAP_BASE= -# LDAP Filter can restrict logins to users belonging to chosen group. -# LLDAP Example for members of 'mastodon' group: "(&(memberOf=cn=mastodon,ou=groups,dc=domain,dc=com)(&(objectclass=person)(|(%{uid}=%{email})(%{mail}=%{email}))))" LDAP_FILTER= LDAP_BIND_DN= LDAP_BIND_PASS= #MC SMP -# Difficulty can be peaceful,easy,normal,hard MC_SMP_DIFFICULTY= -# Generate MOTD at motd.gg - after clicking "get your motd", disable the "escape" toggle MC_SMP_MOTD= -# Server operator/moderators MC_SMP_OPS= -# Max # of players MC_SMP_MAX_PLAYERS= -# Server name MC_SMP_NAME= -# Server seed- wrap in quotes if it begins with a hyphen MC_SMP_SEED= +#ROMM + +ROMM_DB_PASS= +ROMM_IGDB_ID= +ROMM_IGDB_KEY= +ROMM_MOBYGAMES_APIKEY= +ROMM_AUTH_KEY= +ROMM_USER= +ROMM_PASS= + +ROMMDB_ROOT_PASS= + #SYNAPSE -# matrix server url MATRIX_SERVER= -# Synapse DB user/pass SYNAPSE_DB_USER= SYNAPSE_DB_PASS= +#GITLAB + +#DB +GL_DB_USER= +GL_DB_PASS= + +#Gitlab +GL_TZ= + +GL_HOST= + +GL_DB_KEY= +GL_SECRETS_KEY= +GL_OTP_KEY= + +GL_ROOT_PASS= +GL_ROOT_EMAIL= + +GL_EMAIL_NAME= #PORTS -#These are the ports services will be available at. I've left my reccomendations here +MASTODON_HTTP_PORT= +MASTODON_HTTPS_PORT= -MASTODON_HTTP_PORT=80 -MASTODON_HTTPS_PORT=443 +MC_NGINX_PORT= -MC_NGINX_PORT=8065 +MC_SMP_JAVA_PORT= +MC_SMP_BEDROCK_PORT= +MC_DYNMAP_PORT= -MC_SMP_JAVA_PORT=25565 -MC_SMP_BEDROCK_PORT=19132 +#CRAFTY_HTTP_PORT= +#CRAFTY_HTTPS_PORT= +#CRAFT_DYNMAP_PORT= +#CRAFTY_BEDROCK_PORT= +#CRAFTY_JAVA_PORT= -SYNAPSE_DB_PORT=5432 -MATRIX_PORT=8008 -RIOT_PORT=86 +#PUFFERPANEL_PORT= + +SYNAPSE_DB_PORT= +MATRIX_PORT= +RIOT_PORT= + +EMUJS_BACKEND_PORT= +EMUJS_PORT= + +GL_HTTP_PORT= +GL_SSH_PORT= diff --git a/debian.yml b/debian.yml new file mode 100644 index 0000000..fe87f8e --- /dev/null +++ b/debian.yml @@ -0,0 +1,22 @@ +version: "3.8" + +services: + + aptly: + image: urpylka/aptly:latest + container_name: aptly + ports: + - "89:80" + volumes: + - ${DATA_PATH}/aptly/data:/opt/aptly + logging: + driver: syslog + restart: always + +# debian: +# image: sapphic_buildserver +# container_name: sapphic_buildserver +# volumes: +# - ${DATA_PATH}/sapphic_buildserver/config:/app/config +# - ${DATA_PATH}/sapphic_buildserver/output:/app/output +# restart: always diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 046ae9a..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,193 +0,0 @@ -version: "3.8" - -volumes: - nextcloud_aio_mastercontainer: - name: nextcloud_aio_mastercontainer - -services: - - portainer_agent: #Portainer is a web UI for managing your docker containers. This container is just the agent which you need to pair with the portainer-ce host container https://www.portainer.io/ - image: portainer/agent:2.19.3 - container_name: portainer_agent - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - /var/lib/docker/volumes:/var/lib/docker/volumes - ports: - - "9001:9001" - restart: always - - mastodon-redis: # data structure server for mastodon https://redis.io/docs/about/ - image: redis - container_name: mastodon-redis - network_mode: mastodonnet - volumes: - - ${DATA_PATH}/mastodon/redis:/data' - restart: unless-stopped - - mastodon-db: # database for mastodon https://hub.docker.com/_/postgres - image: postgres:15.2 - container_name: mastodon-db - network_mode: mastodonnet - environment: - - POSTGRES_USER=${MASTODON_DB_USER} - - POSTGRES_PASSWORD=${MASTODON_DB_PASS} - volumes: - - ${DATA_PATH}/mastodon/postgres:/var/lib/postgresql/data - restart: unless-stopped - - mastodon-elasticsearch: # search and analytics engine for mastodon https://hub.docker.com/_/elasticsearch - image: elasticsearch:8.8.0 - container_name: mastodon-elasticsearch - network_mode: mastodonnet - environment: - - discovery.type=single-node - - xpack.ml.enabled=false - restart: unless-stopped - - mastodon: # activitypub microbloggin social network https://docs.linuxserver.io/images/docker-mastodon/#version-tags - image: lscr.io/linuxserver/mastodon:latest - container_name: mastodon - network_mode: mastodonnet - environment: - - PUID=${UID} - - PGID=${GID} - - TZ=${TZ} - - LOCAL_DOMAIN=${MASTODON_DOMAIN} - - REDIS_HOST=mastodon-redis - - REDIS_PORT=6379 - - DB_HOST=mastodon-db - - DB_USER=${MASTODON_DB_USER} - - DB_NAME=mastodon - - DB_PASS=${MASTODON_DB_PASS} - - DB_PORT=5432 - - ES_ENABLED=true - - SECRET_KEY_BASE=${MASTODON_SECRET_KEY_BASE} - - OTP_SECRET=${MASTODON_OTP_SECRET} - - VAPID_PRIVATE_KEY=${MASTODON_VAPID_PRIVATE_KEY} - - VAPID_PUBLIC_KEY=${MASTODON_VAPID_PUBLIC_KEY} - - SMTP_SERVER=${SMTP_SERVER} - - SMTP_PORT=${SMTP_PORT} - - SMTP_LOGIN=${SMTP_USER} - - SMTP_PASSWORD=${SMTP_PASS} - - SMTP_FROM_ADDRESS=${SMTP_FROM} - - LDAP_ENABLED=true - - LDAP_METHOD=simple - - LDAP_HOST=${LDAP_SERVER} - - LDAP_PORT=${LDAP_PORT} - - LDAP_BASE=${LDAP_BASE} - - LDAP_SEARCH_FILTER=${LDAP_FILTER} - - LDAP_BIND_DN=${LDAP_BIND_DN} - - LDAP_PASSWORD=${LDAP_BIND_PASS} - - LDAP_UID=uid - - LDAP_MAIL=mail - - LDAP_UID_CONVERSION_ENABLED=true - - S3_ENABLED=false - - WEB_DOMAIN=${MASTODON_WEB_DOMAIN} - - ES_HOST=mastodon-elasticsearch - - ES_PORT=9200 - - SIDEKIQ_ONLY=false - - SIDEKIQ_QUEUE= - - SIDEKIQ_DEFAULT=false - - SIDEKIQ_THREADS=5 - - DB_POOL=5 - volumes: - - ${DATA_PATH}/mastodon/config:/config - ports: - - ${MASTODON_HTTP_PORT}:80 - - ${MASTODON_HTTPS_PORT}:443 - restart: unless-stopped - - mc-nginx: # I use this to host a webpage at my minecraft ip - image: nginx - container_name: mc-nginx - volumes: - - ${DATA_PATH}/mc-nginx/src:/usr/share/nginx/html - ports: - - ${MC_NGINX_PORT}:80 - restart: unless-stopped - - mc-smp: # minecraft paper server. The config here and options in .env will get you a working server, but you might want to customize it further https://docker-minecraft-server.readthedocs.io/ - image: itzg/minecraft-server - container_name: mc-smp - ports: - - ${MC_SMP_JAVA_PORT}:25565/tcp - - ${MC_SMP_JAVA_PORT}:25565/udp - - ${MC_SMP_BEDROCK_PORT}:19132/tcp - - ${MC_SMP_BEDROCK_PORT}:19132/udp - environment: - - EULA=TRUE - - EXEC_DIRECTLY=TRUE - - MEMORY=4G - - VERSION=LATEST - - TYPE=PAPER - - SPIGET_RESOURCES=18494 - - MODS_FILE=/extras/mods.txt - - DIFFICULTY=${MC_SMP_DIFFICULTY} - - MOTD=${MC_SMP_MOTD} - - OPS=${MC_SMP_OPS} - - ICON=/extras/server-icon.png - - MAX_PLAYERS=${MC_SMP_MAX_PLAYERS} - - ALLOW_NETHER=TRUE - - ANNOUNCE_PLAYER_ACHIEVEMENTS=TRUE - - GENERATE_STRUCTURES=TRUE - - MODE=survival - - SERVER_NAME=${MC_SMP_NAME} - - ENABLE_ROLLING_LOGS=TRUE - - TZ=${TZ} - - SEED=${MC_SMP_SEED} - tty: true - stdin_open: true - volumes: - - ${DATA_PATH}/mc-smp/data:/data - - ${DATA_PATH}/mc-smp/extras:/extras - restart: unless-stopped - - all-in-one: #nextcloud cloud storage - the aio image provides significant functionality with minimal setup https://github.com/nextcloud/all-in-one - image: nextcloud/all-in-one:latest - container_name: nextcloud-aio-mastercontainer - environment: - - APACHE_PORT=11000 - - APACHE_IP_BINDING=0.0.0.0 - - NEXTCLOUD_DATADIR=${DATA_PATH}/nextcloud-aio/nextcloud - volumes: - - nextcloud_aio_mastercontainer:/mnt/docker-aio-config:rw - - '/var/run/docker.sock:/var/run/docker.sock:ro' - ports: - - 8080:8080 - restart: always - - synapse: #matrix server https://hub.docker.com/r/matrixdotorg/synapse/ - image: matrixdotorg/synapse:latest - container_name: "synapse" - volumes: - - ${DATA_PATH}/synapse/data:/data - environment: - - VIRTUAL_HOST=${MATRIX_SERVER} - - VIRTUAL_PORT=8008 - - SYNAPSE_SERVER_NAME=${MATRIX_SERVER} - - SYNAPSE_REPORT_STATS="yes" - ports: - - ${MATRIX_PORT}:8008/tcp - restart: unless-stopped - - riot-web: #matrix frontend https://hub.docker.com/r/bubuntux/riot-web - image: bubuntux/riot-web - container_name: riot_web - ports: - - ${RIOT_PORT}:80 - restart: unless-stopped - - synapse-postgresql: #matrix database https://hub.docker.com/_/postgres - image: postgres:latest - container_name: synapse-postgresql - hostname: synapse-postgresql - environment: - - POSTGRES_PASSWORD=${SYNAPSE_DB_PASS} - - POSTGRES_USER=${SYNAPSE_DB_USER} - - POSTGRES_DB=synapse - - POSTGRES_INITDB_ARGS=--encoding='UTF8' --lc-collate='C' --lc-ctype='C' - volumes: - - ${DATA_PATH}/synapse/postgres:/var/lib/postgresql/ - ports: - - ${SYNAPSE_DB_PORT}:5432/tcp - restart: unless-stopped diff --git a/docker-compose.yml.bak b/docker-compose.yml.bak new file mode 100644 index 0000000..0109f0b --- /dev/null +++ b/docker-compose.yml.bak @@ -0,0 +1,408 @@ +version: "3.8" + +volumes: + nextcloud_aio_mastercontainer: + name: nextcloud_aio_mastercontainer + mysql_data: + romm_resources: + romm_redis_data: + gitlab_redis_data: + name: gitlab_redis_data + gitlab_postgresql_data: + name: gitlab_postgresql_data + gitlab_data: + name: gitlab_data + + +services: + + portainer_agent: #Portainer is a web UI for managing your docker containers. This container is just the agent which you need to pair with the portainer-ce host container https://www.portainer.io/ + image: portainer/agent:2.19.3 + container_name: portainer_agent + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /var/lib/docker/volumes:/var/lib/docker/volumes + ports: + - "9001:9001" + restart: always + + mastodon-redis: # data structure server for mastodon https://redis.io/docs/about/ + image: redis + container_name: mastodon-redis + network_mode: mastodonnet + volumes: + - ${DATA_PATH}/mastodon/redis:/data' + restart: unless-stopped + + mastodon-db: # database for mastodon https://hub.docker.com/_/postgres + image: postgres:15.2 + container_name: mastodon-db + network_mode: mastodonnet + environment: + - POSTGRES_USER=${MASTODON_DB_USER} + - POSTGRES_PASSWORD=${MASTODON_DB_PASS} + volumes: + - ${DATA_PATH}/mastodon/postgres:/var/lib/postgresql/data + restart: unless-stopped + + mastodon-elasticsearch: # search and analytics engine for mastodon https://hub.docker.com/_/elasticsearch + image: elasticsearch:8.8.0 + container_name: mastodon-elasticsearch + network_mode: mastodonnet + environment: + - discovery.type=single-node + - xpack.ml.enabled=false + - xpack.security.enabled=false + restart: unless-stopped + + mastodon: # activitypub microbloggin social network https://docs.linuxserver.io/images/docker-mastodon/#version-tags + image: lscr.io/linuxserver/mastodon:latest + container_name: mastodon + network_mode: mastodonnet + environment: + - PUID=${UID} + - PGID=${GID} + - TZ=${TZ} + - LOCAL_DOMAIN=${MASTODON_DOMAIN} + - REDIS_HOST=mastodon-redis + - REDIS_PORT=6379 + - DB_HOST=mastodon-db + - DB_USER=${MASTODON_DB_USER} + - DB_NAME=mastodon + - DB_PASS=${MASTODON_DB_PASS} + - DB_PORT=5432 + - ES_ENABLED=true + - SECRET_KEY_BASE=${MASTODON_SECRET_KEY_BASE} + - OTP_SECRET=${MASTODON_OTP_SECRET} + - VAPID_PRIVATE_KEY=${MASTODON_VAPID_PRIVATE_KEY} + - VAPID_PUBLIC_KEY=${MASTODON_VAPID_PUBLIC_KEY} + - SMTP_SERVER=${SMTP_SERVER} + - SMTP_PORT=${SMTP_PORT} + - SMTP_LOGIN=${SMTP_USER} + - SMTP_PASSWORD=${SMTP_PASS} + - SMTP_FROM_ADDRESS=${SMTP_FROM} + - LDAP_ENABLED=true + - LDAP_METHOD=simple + - LDAP_HOST=${LDAP_SERVER} + - LDAP_PORT=${LDAP_PORT} + - LDAP_BASE=${LDAP_BASE} + - LDAP_SEARCH_FILTER=${LDAP_FILTER} + - LDAP_BIND_DN=${LDAP_BIND_DN} + - LDAP_PASSWORD=${LDAP_BIND_PASS} + - LDAP_UID=uid + - LDAP_MAIL=mail + - LDAP_UID_CONVERSION_ENABLED=true + - S3_ENABLED=false + - WEB_DOMAIN=${MASTODON_WEB_DOMAIN} + - ES_HOST=mastodon-elasticsearch + - ES_PORT=9200 + - SIDEKIQ_ONLY=false + - SIDEKIQ_QUEUE= + - SIDEKIQ_DEFAULT=false + - SIDEKIQ_THREADS=5 + - DB_POOL=5 + volumes: + - ${DATA_PATH}/mastodon/config:/config + ports: + - ${MASTODON_HTTP_PORT}:80 + - ${MASTODON_HTTPS_PORT}:443 + restart: unless-stopped + + mc-nginx: # I use this to host a webpage at my minecraft ip + image: nginx + container_name: mc-nginx + volumes: + - ${DATA_PATH}/mc-nginx/src:/usr/share/nginx/html + ports: + - ${MC_NGINX_PORT}:80 + restart: unless-stopped + + mc-smp: # minecraft paper server. The config here and options in .env will get you a working server, but you might want to customize it further https://docker-minecraft-server.readthedocs.io/ + image: itzg/minecraft-server + container_name: mc-smp + ports: + - ${MC_SMP_JAVA_PORT}:25565/tcp + - ${MC_SMP_JAVA_PORT}:25565/udp + - ${MC_SMP_BEDROCK_PORT}:19132/tcp + - ${MC_SMP_BEDROCK_PORT}:19132/udp + - ${MC_DYNMAP_PORT}:8123 + environment: + - EULA=TRUE + - UID=${UID} + - GID=${GID} + - EXEC_DIRECTLY=TRUE + - MEMORY=4G + - VERSION=LATEST + - TYPE=PAPER + - SPIGET_RESOURCES=18494 + - MODS_FILE=/extras/mods.txt + - DIFFICULTY=${MC_SMP_DIFFICULTY} + - MOTD=${MC_SMP_MOTD} + - OPS=${MC_SMP_OPS} + - ICON=/extras/server-icon.png + - MAX_PLAYERS=${MC_SMP_MAX_PLAYERS} + - ALLOW_NETHER=TRUE + - ANNOUNCE_PLAYER_ACHIEVEMENTS=TRUE + - GENERATE_STRUCTURES=TRUE + - MODE=survival + - SERVER_NAME=${MC_SMP_NAME} + - ENABLE_ROLLING_LOGS=TRUE + - TZ=${TZ} + - SEED=${MC_SMP_SEED} + tty: true + stdin_open: true + volumes: + - ${DATA_PATH}/mc-smp/data:/data + - ${DATA_PATH}/mc-smp/extras:/extras + restart: unless-stopped + + emulatorjs: # play many older video game systems via a web-based emulator https://emulatorjs.org/ + image: lscr.io/linuxserver/emulatorjs:latest + container_name: emulatorjs + environment: + - PUID=33 + - PGID=0 + - TZ=${TZ} + volumes: + - ${DATA_PATH}/Emulatorjs/config:/config + - ${DATA_PATH}/Emulatorjs/data:/data + - ${DATA_PATH}/local/roms:/roms + ports: + - ${EMUJS_BACKEND_PORT}:3000 + - ${EMUJS_PORT}:80 + restart: unless-stopped + +# romm: +# image: rommapp/romm:latest +# container_name: romm +# restart: unless-stopped +# environment: +# - DB_HOST=romm-db +# - DB_NAME=romm # Should match MYSQL_DATABASE in mariadb +# - DB_USER=romm-user # Should match MYSQL_USER in mariadb +# - DB_PASSWD=${ROMM_DB_PASS} # Should match MYSQL_PASSWORD in mariadb +# - IGDB_CLIENT_ID=${ROMM_IGDB_ID} # Generate an ID and SECRET in IGDB +# - IGDB_CLIENT_SECRET=${ROMM_IGDB_KEY} # https://api-docs.igdb.com/#account-creation +# - MOBYGAMES_API_KEY=${ROMM_MOBYGAMES_APIKEY} # https://www.mobygames.com/info/api/ +# - ROMM_AUTH_SECRET_KEY=${ROMM_AUTH_KEY} # Generate a key with `openssl rand -hex 32` +# - ROMM_AUTH_USERNAME=${ROMM_USER} +# - ROMM_AUTH_PASSWORD=${ROMM_PASS} # default: admin +# volumes: +# - ${DATA_PATH}/romm/resources:/romm/resources # Resources fetched from IGDB (covers, screenshots, etc.) +# - romm_redis_data:/redis-data # Cached data for background tasks +# - ${DATA_PATH}/local/roms:/romm/library/roms # Your game library +# - ${DATA_PATH}/romm/assets:/romm/assets # Uploaded saves, states, etc. +# - ${DATA_PATH}/romm/config:/romm/config # Path where config.yml is stored +# ports: +# - 308:8080 +# depends_on: +# - romm-db + +# romm-db: +# image: mariadb:latest +# container_name: romm-db +# restart: unless-stopped +# environment: +# - MYSQL_ROOT_PASSWORD=${ROMMDB_ROOT_PASS} # Use a unique, secure password +# - MYSQL_DATABASE=romm +# - MYSQL_USER=romm-user +# - MYSQL_PASSWORD=${ROMM_DB_PASS} +# volumes: +# - mysql_data:/var/lib/mysql + + all-in-one: #nextcloud cloud storage - the aio image provides significant functionality with minimal setup https://github.com/nextcloud/all-in-one + image: nextcloud/all-in-one:latest + container_name: nextcloud-aio-mastercontainer + environment: + - APACHE_PORT=11000 + - APACHE_IP_BINDING=0.0.0.0 + - NEXTCLOUD_DATADIR=${DATA_PATH}/nextcloud-aio/nextcloud + - NEXTCLOUD_MOUNT=/mnt/2TB/local/ + volumes: + - nextcloud_aio_mastercontainer:/mnt/docker-aio-config:rw + - '/var/run/docker.sock:/var/run/docker.sock:ro' + ports: + - 8080:8080 + restart: always + +# protonmail-bridge: +# image: shenxn/protonmail-bridge +# container_name: protonmail-bridge +# volumes: +# - /mnt/2TB/protonmail-bridge:/root +# ports: +# - "1025:25/tcp" +# - "1143:143/tcp" +# restart: unless-stopped + + synapse: #matrix server https://hub.docker.com/r/matrixdotorg/synapse/ + image: matrixdotorg/synapse:latest + container_name: "synapse" + volumes: + - ${DATA_PATH}/synapse/data:/data + environment: + - VIRTUAL_HOST=${MATRIX_SERVER} + - VIRTUAL_PORT=8008 + - SYNAPSE_SERVER_NAME=${MATRIX_SERVER} + - SYNAPSE_REPORT_STATS="yes" + ports: + - ${MATRIX_PORT}:8008/tcp + restart: unless-stopped + + riot-web: #matrix frontend https://hub.docker.com/r/bubuntux/riot-web + image: bubuntux/riot-web + container_name: riot_web + ports: + - ${RIOT_PORT}:80 + restart: unless-stopped + + synapse-postgresql: #matrix database https://hub.docker.com/_/postgres + image: postgres:latest + container_name: synapse-postgresql + hostname: synapse-postgresql + environment: + - POSTGRES_PASSWORD=${SYNAPSE_DB_PASS} + - POSTGRES_USER=${SYNAPSE_DB_USER} + - POSTGRES_DB=synapse + - POSTGRES_INITDB_ARGS=--encoding='UTF8' --lc-collate='C' --lc-ctype='C' + volumes: + - ${DATA_PATH}/synapse/postgres:/var/lib/postgresql/ + ports: + - ${SYNAPSE_DB_PORT}:5432/tcp + restart: unless-stopped + + aptly: + image: urpylka/aptly:latest + container_name: aptly + ports: + - "89:80" + volumes: + - ${DATA_PATH}/aptly/data:/opt/aptly + logging: + driver: syslog + restart: always + + gitlab-redis: + restart: always + image: redis:6.2.6 + container_name: gitlab-redis + command: + - --loglevel warning + volumes: +# - gitlab_redis_data:/data:Z + - ${DATA_PATH}/gitlab/redis:/data:Z + + gitlab-postgresql: + restart: always + image: sameersbn/postgresql:14-20230628 + container_name: gitlab-postgresql + volumes: +# - gitlab_postgresql_data:/var/lib/postgresql:Z + - ${DATA_PATH}/gitlab/postgresql:/var/lib/postgresql:Z + environment: + - DB_USER=${GL_DB_USER} + - DB_PASS=${GL_DB_PASS} + - DB_NAME=gitlabhq_production + - DB_EXTENSION=pg_trgm,btree_gist + + gitlab: + restart: always + image: sameersbn/gitlab:16.10.2 + container_name: gitlab + depends_on: + - gitlab-redis + - gitlab-postgresql + ports: + - "${GL_HTTP_PORT}:80" + - "${GL_SSH_PORT}:22" + volumes: +# - gitlab_data:/home/git/data:Z + - ${DATA_PATH}/gitlab/data:/home/git/data:Z + healthcheck: + test: ["CMD", "/usr/local/sbin/healthcheck"] + interval: 5m + timeout: 10s + retries: 3 + start_period: 5m + environment: + - DEBUG=true + + - DB_ADAPTER=postgresql + - DB_HOST=gitlab-postgresql + - DB_PORT=5432 + - DB_USER=${GL_DB_USER} + - DB_PASS=${GL_DB_PASS} + - DB_NAME=gitlabhq_production + + - REDIS_HOST=gitlab-redis + - REDIS_PORT=6379 + + - TZ=${TZ} + - GITLAB_TIMEZONE=${GL_TZ} + + - GITLAB_HTTPS=true + - SSL_SELF_SIGNED=false + + - GITLAB_HOST=${GL_HOST} + - GITLAB_PORT=10080 + - GITLAB_SSH_PORT=10022 + - GITLAB_SECRETS_DB_KEY_BASE=${GL_DB_KEY} + - GITLAB_SECRETS_SECRET_KEY_BASE=${GL_SECRETS_KEY} + - GITLAB_SECRETS_OTP_KEY_BASE=${GL_OTP_KEY} + + - GITLAB_ROOT_PASSWORD=${GL_ROOT_PASS} + - GITLAB_ROOT_EMAIL=${GL_ROOT_EMAIL} + + - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true + - GITLAB_NOTIFY_PUSHER=false + + - GITLAB_EMAIL=${SMTP_FROM} + - GITLAB_EMAIL_DISPLAY_NAME=${GL_EMAIL_NAME} + - GITLAB_EMAIL_REPLY_TO=${SMTP_FROM} + - GITLAB_INCOMING_EMAIL_ENABLED=false + + - GITLAB_BACKUP_SCHEDULE=daily + + - SMTP_ENABLED=true + - SMTP_DOMAIN=${SMTP_SERVER} + - SMTP_HOST=${SMTP_SERVER} + - SMTP_PORT=${SMTP_PORT} + - SMTP_USER=${SMTP_USER} + - SMTP_PASS=${SMTP_PASS} + - SMTP_STARTTLS=true + +# - LDAP_ENABLED=true +# - LDAP_LABEL=LDAP +# - LDAP_HOST=${LDAP_SERVER} +# - LDAP_PORT=${LDAP_PORT} +# - LDAP_UID=uid +# - LDAP_METHOD=plain +# - LDAP_VERIFY_SSL=false +# - LDAP_BIND_DN=${LDAP_BIND_DN} +# - LDAP_PASS=${LDAP_BIND_PASS} +# - LDAP_ACTIVE_DIRECTORY=false +# - LDAP_BASE=${LDAP_BASE} +# - LDAP_USER_FILTER=${LDAP_FILTER} +# - LDAP_LOWERCASE_USERNAMES=true + +# debian: +# image: sapphic_buildserver +# container_name: sapphic_buildserver +# volumes: +# - ${DATA_PATH}/sapphic_buildserver/config:/app/config +# - ${DATA_PATH}/sapphic_buildserver/output:/app/output +# restart: always + +# samba: # samba remote file access https://github.com/deftwork/samba +# image: elswork/samba:latest +# container_name: samba +# environment: +# - TZ=${TZ} +# ports: +# - "139:139" +# - "445:445" +# volumes: +# - ${DATA_PATH}:/mnt/Media +# - ${TEMP_PATH}/transcodecache:/transcodecache +# command: '-u "${UID}:${GID}:${SMB_USER}:${SMB_USER}:${SMB_PASS}" -s "Media:/mnt/Media:rw:${SMB_USER}" -s "TranscodeCache:/transcodecache:rw:${SMB_USER}"' +# restart: unless-stopped diff --git a/docker-compose.yml_old b/docker-compose.yml_old new file mode 100644 index 0000000..bfb193f --- /dev/null +++ b/docker-compose.yml_old @@ -0,0 +1,17 @@ +version: "3.8" + +services: + +# samba: # samba remote file access https://github.com/deftwork/samba +# image: elswork/samba:latest +# container_name: samba +# environment: +# - TZ=${TZ} +# ports: +# - "139:139" +# - "445:445" +# volumes: +# - ${DATA_PATH}:/mnt/Media +# - ${TEMP_PATH}/transcodecache:/transcodecache +# command: '-u "${UID}:${GID}:${SMB_USER}:${SMB_USER}:${SMB_PASS}" -s "Media:/mnt/Media:rw:${SMB_USER}" -s "TranscodeCache:/transcodecache:rw:${SMB_USER}"' +# restart: unless-stopped diff --git a/emulators.yml b/emulators.yml new file mode 100644 index 0000000..02e8051 --- /dev/null +++ b/emulators.yml @@ -0,0 +1,63 @@ +version: "3.8" + +volumes: + romm_mysql_data: + romm_resources: + romm_redis_data: + + +services: + + emulatorjs: # play many older video game systems via a web-based emulator https://emulatorjs.org/ + image: lscr.io/linuxserver/emulatorjs:latest + container_name: emulatorjs + environment: + - PUID=33 + - PGID=0 + - TZ=${TZ} + volumes: + - ${DATA_PATH}/Emulatorjs/config:/config + - ${DATA_PATH}/Emulatorjs/data:/data + - ${DATA_PATH}/local/roms:/roms + ports: + - ${EMUJS_BACKEND_PORT}:3000 + - ${EMUJS_PORT}:80 + restart: unless-stopped + +# romm: +# image: rommapp/romm:latest +# container_name: romm +# restart: unless-stopped +# environment: +# - DB_HOST=romm-db +# - DB_NAME=romm # Should match MYSQL_DATABASE in mariadb +# - DB_USER=romm-user # Should match MYSQL_USER in mariadb +# - DB_PASSWD=${ROMM_DB_PASS} # Should match MYSQL_PASSWORD in mariadb +# - IGDB_CLIENT_ID=${ROMM_IGDB_ID} # Generate an ID and SECRET in IGDB +# - IGDB_CLIENT_SECRET=${ROMM_IGDB_KEY} # https://api-docs.igdb.com/#account-creation +# - MOBYGAMES_API_KEY=${ROMM_MOBYGAMES_APIKEY} # https://www.mobygames.com/info/api/ +# - ROMM_AUTH_SECRET_KEY=${ROMM_AUTH_KEY} # Generate a key with `openssl rand -hex 32` +# - ROMM_AUTH_USERNAME=${ROMM_USER} +# - ROMM_AUTH_PASSWORD=${ROMM_PASS} # default: admin +# volumes: +# - ${DATA_PATH}/romm/resources:/romm/resources # Resources fetched from IGDB (covers, screenshots, etc.) +# - romm_redis_data:/redis-data # Cached data for background tasks +# - ${DATA_PATH}/local/roms:/romm/library/roms # Your game library +# - ${DATA_PATH}/romm/assets:/romm/assets # Uploaded saves, states, etc. +# - ${DATA_PATH}/romm/config:/romm/config # Path where config.yml is stored +# ports: +# - 308:8080 +# depends_on: +# - romm-db + +# romm-db: +# image: mariadb:latest +# container_name: romm-db +# restart: unless-stopped +# environment: +# - MYSQL_ROOT_PASSWORD=${ROMMDB_ROOT_PASS} # Use a unique, secure password +# - MYSQL_DATABASE=romm +# - MYSQL_USER=romm-user +# - MYSQL_PASSWORD=${ROMM_DB_PASS} +# volumes: +# - romm_mysql_data:/var/lib/mysql diff --git a/gitlab.yml b/gitlab.yml new file mode 100644 index 0000000..ffba08d --- /dev/null +++ b/gitlab.yml @@ -0,0 +1,103 @@ +version: "3.8" + +services: + + gitlab-redis: + restart: always + image: redis:6.2.6 + container_name: gitlab-redis + command: + - --loglevel warning + volumes: + - ${DATA_PATH}/gitlab/redis:/data:Z + + gitlab-postgresql: + restart: always + image: sameersbn/postgresql:14-20230628 + container_name: gitlab-postgresql + volumes: + - ${DATA_PATH}/gitlab/postgresql:/var/lib/postgresql:Z + environment: + - DB_USER=${GL_DB_USER} + - DB_PASS=${GL_DB_PASS} + - DB_NAME=gitlabhq_production + - DB_EXTENSION=pg_trgm,btree_gist + + gitlab: + restart: always + image: sameersbn/gitlab:16.10.2 + container_name: gitlab + depends_on: + - gitlab-redis + - gitlab-postgresql + ports: + - "${GL_HTTP_PORT}:80" + - "${GL_SSH_PORT}:22" + volumes: + - ${DATA_PATH}/gitlab/data:/home/git/data:Z + healthcheck: + test: ["CMD", "/usr/local/sbin/healthcheck"] + interval: 5m + timeout: 10s + retries: 3 + start_period: 5m + environment: + - DEBUG=true + + - DB_ADAPTER=postgresql + - DB_HOST=gitlab-postgresql + - DB_PORT=5432 + - DB_USER=${GL_DB_USER} + - DB_PASS=${GL_DB_PASS} + - DB_NAME=gitlabhq_production + + - REDIS_HOST=gitlab-redis + - REDIS_PORT=6379 + + - TZ=${TZ} + - GITLAB_TIMEZONE=${GL_TZ} + + - GITLAB_HTTPS=true + - SSL_SELF_SIGNED=false + + - GITLAB_HOST=${GL_HOST} + - GITLAB_PORT=80 + - GITLAB_SSH_PORT=10022 + - GITLAB_SECRETS_DB_KEY_BASE=${GL_DB_KEY} + - GITLAB_SECRETS_SECRET_KEY_BASE=${GL_SECRETS_KEY} + - GITLAB_SECRETS_OTP_KEY_BASE=${GL_OTP_KEY} + + - GITLAB_ROOT_PASSWORD=${GL_ROOT_PASS} + - GITLAB_ROOT_EMAIL=${GL_ROOT_EMAIL} + + - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true + - GITLAB_NOTIFY_PUSHER=false + + - GITLAB_EMAIL=${SMTP_FROM} + - GITLAB_EMAIL_DISPLAY_NAME=${GL_EMAIL_NAME} + - GITLAB_EMAIL_REPLY_TO=${SMTP_FROM} + - GITLAB_INCOMING_EMAIL_ENABLED=false + + - GITLAB_BACKUP_SCHEDULE=daily + + - SMTP_ENABLED=true + - SMTP_DOMAIN=${SMTP_SERVER} + - SMTP_HOST=${SMTP_SERVER} + - SMTP_PORT=${SMTP_PORT} + - SMTP_USER=${SMTP_USER} + - SMTP_PASS=${SMTP_PASS} + - SMTP_STARTTLS=true + +# - LDAP_ENABLED=true +# - LDAP_LABEL=LDAP +# - LDAP_HOST=${LDAP_SERVER} +# - LDAP_PORT=${LDAP_PORT} +# - LDAP_UID=uid +# - LDAP_METHOD=plain +# - LDAP_VERIFY_SSL=false +# - LDAP_BIND_DN=${LDAP_BIND_DN} +# - LDAP_PASS=${LDAP_BIND_PASS} +# - LDAP_ACTIVE_DIRECTORY=false +# - LDAP_BASE=${LDAP_BASE} +# - LDAP_USER_FILTER=${LDAP_FILTER} +# - LDAP_LOWERCASE_USERNAMES=true diff --git a/mastodon.yml b/mastodon.yml new file mode 100644 index 0000000..fe8941c --- /dev/null +++ b/mastodon.yml @@ -0,0 +1,85 @@ +version: "3.8" + +services: + + mastodon-redis: # data structure server for mastodon https://redis.io/docs/about/ + image: redis + container_name: mastodon-redis + network_mode: mastodonnet + volumes: + - ${DATA_PATH}/mastodon/redis:/data' + restart: unless-stopped + + mastodon-db: # database for mastodon https://hub.docker.com/_/postgres + image: postgres:15.2 + container_name: mastodon-db + network_mode: mastodonnet + environment: + - POSTGRES_USER=${MASTODON_DB_USER} + - POSTGRES_PASSWORD=${MASTODON_DB_PASS} + volumes: + - ${DATA_PATH}/mastodon/postgres:/var/lib/postgresql/data + restart: unless-stopped + + mastodon-elasticsearch: # search and analytics engine for mastodon https://hub.docker.com/_/elasticsearch + image: elasticsearch:8.8.0 + container_name: mastodon-elasticsearch + network_mode: mastodonnet + environment: + - discovery.type=single-node + - xpack.ml.enabled=false + - xpack.security.enabled=false + restart: unless-stopped + + mastodon: # activitypub microbloggin social network https://docs.linuxserver.io/images/docker-mastodon/#version-tags + image: lscr.io/linuxserver/mastodon:latest + container_name: mastodon + network_mode: mastodonnet + environment: + - PUID=${UID} + - PGID=${GID} + - TZ=${TZ} + - LOCAL_DOMAIN=${MASTODON_DOMAIN} + - REDIS_HOST=mastodon-redis + - REDIS_PORT=6379 + - DB_HOST=mastodon-db + - DB_USER=${MASTODON_DB_USER} + - DB_NAME=mastodon + - DB_PASS=${MASTODON_DB_PASS} + - DB_PORT=5432 + - ES_ENABLED=true + - SECRET_KEY_BASE=${MASTODON_SECRET_KEY_BASE} + - OTP_SECRET=${MASTODON_OTP_SECRET} + - VAPID_PRIVATE_KEY=${MASTODON_VAPID_PRIVATE_KEY} + - VAPID_PUBLIC_KEY=${MASTODON_VAPID_PUBLIC_KEY} + - SMTP_SERVER=${SMTP_SERVER} + - SMTP_PORT=${SMTP_PORT} + - SMTP_LOGIN=${SMTP_USER} + - SMTP_PASSWORD=${SMTP_PASS} + - SMTP_FROM_ADDRESS=${SMTP_FROM} + - LDAP_ENABLED=true + - LDAP_METHOD=simple + - LDAP_HOST=${LDAP_SERVER} + - LDAP_PORT=${LDAP_PORT} + - LDAP_BASE=${LDAP_BASE} + - LDAP_SEARCH_FILTER=${LDAP_FILTER} + - LDAP_BIND_DN=${LDAP_BIND_DN} + - LDAP_PASSWORD=${LDAP_BIND_PASS} + - LDAP_UID=uid + - LDAP_MAIL=mail + - LDAP_UID_CONVERSION_ENABLED=true + - S3_ENABLED=false + - WEB_DOMAIN=${MASTODON_WEB_DOMAIN} + - ES_HOST=mastodon-elasticsearch + - ES_PORT=9200 + - SIDEKIQ_ONLY=false + - SIDEKIQ_QUEUE= + - SIDEKIQ_DEFAULT=false + - SIDEKIQ_THREADS=5 + - DB_POOL=5 + volumes: + - ${DATA_PATH}/mastodon/config:/config + ports: + - ${MASTODON_HTTP_PORT}:80 + - ${MASTODON_HTTPS_PORT}:443 + restart: unless-stopped diff --git a/matrix.yml b/matrix.yml new file mode 100644 index 0000000..38c1ae8 --- /dev/null +++ b/matrix.yml @@ -0,0 +1,39 @@ +version: "3.8" + +services: + + synapse: #matrix server https://hub.docker.com/r/matrixdotorg/synapse/ + image: matrixdotorg/synapse:latest + container_name: "synapse" + volumes: + - ${DATA_PATH}/synapse/data:/data + environment: + - VIRTUAL_HOST=${MATRIX_SERVER} + - VIRTUAL_PORT=8008 + - SYNAPSE_SERVER_NAME=${MATRIX_SERVER} + - SYNAPSE_REPORT_STATS="yes" + ports: + - ${MATRIX_PORT}:8008/tcp + restart: unless-stopped + + riot-web: #matrix frontend https://hub.docker.com/r/bubuntux/riot-web + image: bubuntux/riot-web + container_name: riot_web + ports: + - ${RIOT_PORT}:80 + restart: unless-stopped + + synapse-postgresql: #matrix database https://hub.docker.com/_/postgres + image: postgres:latest + container_name: synapse-postgresql + hostname: synapse-postgresql + environment: + - POSTGRES_PASSWORD=${SYNAPSE_DB_PASS} + - POSTGRES_USER=${SYNAPSE_DB_USER} + - POSTGRES_DB=synapse + - POSTGRES_INITDB_ARGS=--encoding='UTF8' --lc-collate='C' --lc-ctype='C' + volumes: + - ${DATA_PATH}/synapse/postgres:/var/lib/postgresql/ + ports: + - ${SYNAPSE_DB_PORT}:5432/tcp + restart: unless-stopped diff --git a/minecraft.yml b/minecraft.yml new file mode 100644 index 0000000..8dd5638 --- /dev/null +++ b/minecraft.yml @@ -0,0 +1,51 @@ +version: "3.8" + +services: + + mc-nginx: # I use this to host a webpage at my minecraft ip + image: nginx + container_name: mc-nginx + volumes: + - ${DATA_PATH}/mc-nginx/src:/usr/share/nginx/html + ports: + - ${MC_NGINX_PORT}:80 + restart: unless-stopped + + mc-smp: # minecraft paper server. The config here and options in .env will get you a working server, but you might want to customize it further https://docker-minecraft-server.readthedocs.io/ + image: itzg/minecraft-server + container_name: mc-smp + ports: + - ${MC_SMP_JAVA_PORT}:25565/tcp + - ${MC_SMP_JAVA_PORT}:25565/udp + - ${MC_SMP_BEDROCK_PORT}:19132/tcp + - ${MC_SMP_BEDROCK_PORT}:19132/udp + - ${MC_DYNMAP_PORT}:8123 + environment: + - EULA=TRUE + - UID=${UID} + - GID=${GID} + - EXEC_DIRECTLY=TRUE + - MEMORY=4G + - VERSION=LATEST + - TYPE=PAPER + - SPIGET_RESOURCES=18494 + - MODS_FILE=/extras/mods.txt + - DIFFICULTY=${MC_SMP_DIFFICULTY} + - MOTD=${MC_SMP_MOTD} + - OPS=${MC_SMP_OPS} + - ICON=/extras/server-icon.png + - MAX_PLAYERS=${MC_SMP_MAX_PLAYERS} + - ALLOW_NETHER=TRUE + - ANNOUNCE_PLAYER_ACHIEVEMENTS=TRUE + - GENERATE_STRUCTURES=TRUE + - MODE=survival + - SERVER_NAME=${MC_SMP_NAME} + - ENABLE_ROLLING_LOGS=TRUE + - TZ=${TZ} + - SEED=${MC_SMP_SEED} + tty: true + stdin_open: true + volumes: + - ${DATA_PATH}/mc-smp/data:/data + - ${DATA_PATH}/mc-smp/extras:/extras + restart: unless-stopped diff --git a/monitoring.yml b/monitoring.yml new file mode 100644 index 0000000..3316e5d --- /dev/null +++ b/monitoring.yml @@ -0,0 +1,13 @@ +version: "3.8" + +services: + + portainer_agent: #Portainer is a web UI for managing your docker containers. This container is just the agent which you need to pair with the portainer-ce host container https://www.portainer.io/ + image: portainer/agent:2.19.3 + container_name: portainer_agent + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /var/lib/docker/volumes:/var/lib/docker/volumes + ports: + - "9001:9001" + restart: always diff --git a/nextcloud.yml b/nextcloud.yml new file mode 100644 index 0000000..8086ef3 --- /dev/null +++ b/nextcloud.yml @@ -0,0 +1,23 @@ +version: "3.8" + +volumes: + nextcloud_aio_mastercontainer: + name: nextcloud_aio_mastercontainer + + +services: + + all-in-one: #nextcloud cloud storage - the aio image provides significant functionality with minimal setup https://github.com/nextcloud/all-in-one + image: nextcloud/all-in-one:latest + container_name: nextcloud-aio-mastercontainer + environment: + - APACHE_PORT=11000 + - APACHE_IP_BINDING=0.0.0.0 + - NEXTCLOUD_DATADIR=${DATA_PATH}/nextcloud-aio/nextcloud + - NEXTCLOUD_MOUNT=/mnt/2TB/local/ + volumes: + - nextcloud_aio_mastercontainer:/mnt/docker-aio-config:rw + - '/var/run/docker.sock:/var/run/docker.sock:ro' + ports: + - 8080:8080 + restart: always diff --git a/startall.sh b/startall.sh new file mode 100755 index 0000000..16ea366 --- /dev/null +++ b/startall.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +script_root="$( dirname $0 )" + +for y in "${script_root}"/*.yml;do + sudo docker-compose -f "${y}" up -d +done