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