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