pretendo-docker/compose.yml
2024-08-07 13:40:50 -04:00

505 lines
11 KiB
YAML

name: pretendo-network
services:
mitmproxy-pretendo:
image: ghcr.io/matthewl246/mitmproxy-pretendo:local
# build: ./repos/mitmproxy-pretendo
restart: always
ports:
# Proxy server
- 8080:8080
# Mitmweb interface
- 127.0.0.1:8081:8081
volumes:
- type: volume
source: mitmproxy-pretendo-data
target: /home/mitmproxy/.mitmproxy
command: mitmweb --web-host 0.0.0.0
tty: true
# Uncomment everything below to enable SSSL connections with DNS redirection
#
# nginx-sssl:
# # This forwards all requests to the primary Nginx
# build: ./repos/SSSL-DNS/nginx
# restart: always
# ports:
# # HTTPS
# - 443:443
# volumes:
# - type: bind
# source: ./config/nginx-sssl.conf
# target: /opt/nginx/conf/nginx.conf
# read_only: true
# - type: bind
# source: ./console-files/cert-chain.pem
# target: /opt/nginx/ssl/ca.pem
# read_only: true
# - type: bind
# source: ./console-files/ssl-cert-private-key.pem
# target: /opt/nginx/ssl/private.key
# read_only: true
#
# coredns-public:
# # This responds to DNS queries from client consoles, redirecting Nintendo requests to the local server
# image: coredns/coredns:latest
# restart: always
# ports:
# # DNS
# - 53:53/udp
# volumes:
# - type: bind
# source: ./config/public.Corefile
# target: /etc/coredns/Corefile
# read_only: true
# networks:
# default:
# command: -conf /etc/coredns/Corefile
# env_file:
# - ./.env
coredns-internal:
# This responds to DNS queries from the internal network of containers, redirecting Pretendo to the Nginx container
image: coredns/coredns:latest
restart: always
volumes:
- type: bind
source: ./config/internal.Corefile
target: /etc/coredns/Corefile
read_only: true
networks:
internal:
ipv4_address: 172.20.0.200
command: -conf /etc/coredns/Corefile
nginx:
image: nginx:mainline-alpine
depends_on:
- coredns-internal
- mitmproxy-pretendo
restart: always
ports:
# HTTP
- 80:80
volumes:
- type: bind
source: ./config/nginx.conf
target: /etc/nginx/nginx.conf
read_only: true
- type: bind
source: ./config/nginx
target: /etc/nginx/conf.d/
read_only: true
networks:
default:
internal:
dns: 172.20.0.200
mongodb:
# TODO: Set up authentication
image: mongo:latest
depends_on:
- coredns-internal
restart: always
ports:
# For connecting with mongosh or MongoDB Compass
- 127.0.0.1:27017:27017
volumes:
- type: bind
source: ./config/mongod.conf
target: /etc/mongod.conf
read_only: true
- type: volume
source: mongodb-database
target: /data/db
networks:
internal:
dns: 172.20.0.200
command: --config "/etc/mongod.conf" --replSet rs
mongo-express:
image: mongo-express:latest
depends_on:
- coredns-internal
- mongodb
restart: always
ports:
# Web interface
- 127.0.0.1:8082:8082
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/mongo-express.env
minio:
image: minio/minio:latest
depends_on:
- coredns-internal
- nginx
restart: always
ports:
# Web console
- 127.0.0.1:8083:8083
volumes:
- type: volume
source: minio-s3-data
target: /data
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/minio.env
- ./environment/minio.local.env
command: server --console-address ":8083"
redis:
image: redis:alpine
depends_on:
- coredns-internal
restart: always
volumes:
- type: volume
source: redis-data
target: /data
networks:
internal:
dns: 172.20.0.200
command: redis-server --save 60 1
redis-commander:
image: ghcr.io/joeferner/redis-commander:latest
depends_on:
- coredns-internal
- redis
restart: always
ports:
# Web interface
- 127.0.0.1:8086:8086
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/redis-commander.env
mailpit:
image: axllent/mailpit:latest
depends_on:
- coredns-internal
restart: always
ports:
# Mailpit web UI
- 127.0.0.1:8084:8084
volumes:
- type: volume
source: mailpit-mail
target: /data
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/mailpit.env
postgres:
image: postgres:alpine
depends_on:
- coredns-internal
restart: always
ports:
# For connecting with pgAdmin
- 127.0.0.1:5432:5432
volumes:
- type: volume
source: postgres-database
target: /var/lib/postgresql/data
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/postgres.env
- ./environment/postgres.local.env
adminer:
image: adminer:latest
depends_on:
- coredns-internal
- postgres
restart: always
ports:
# Adminer web interface
- 127.0.0.1:8085:8080
volumes:
- type: bind
source: ./config/adminer-login-servers.php
target: /var/www/html/plugins-enabled/login-servers.php
read_only: true
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/adminer.env
account:
build: ./repos/account
depends_on:
- coredns-internal
- nginx
- mongodb
- minio
- redis
- mailpit
restart: always
ports:
# Node.js debugger
- 127.0.0.1:9229:9229
networks:
internal:
dns: 172.20.0.200
command: ["node", "--inspect=0.0.0.0:9229", "."]
env_file:
- ./environment/account.env
- ./environment/account.local.env
website:
build: ./repos/website
depends_on:
- account
- mongodb
restart: always
ports:
# Node.js debugger
- 127.0.0.1:9230:9230
volumes:
- type: bind
source: ./config/website-config.json
target: /home/node/app/config.json
read_only: true
networks:
internal:
command: ["node", "--inspect=0.0.0.0:9230", "."]
dns: 172.20.0.200
friends:
build: ./repos/friends
depends_on:
- account
- postgres
restart: always
ports:
# Go delve debugger
- 127.0.0.1:2345:2345
# Authentication server
- 6000:6000/udp
# Secure server
- 6001:6001/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/friends.env
- ./environment/friends.local.env
miiverse-api:
build: ./repos/miiverse-api
depends_on:
- account
- mongodb
- friends
restart: always
ports:
# Node.js debugger
- 127.0.0.1:9231:9231
volumes:
- type: bind
source: ./config/mongoose-connect-options.json
target: /home/node/app/mongoose-connect-options.json
read_only: true
networks:
internal:
dns: 172.20.0.200
command: ["node", "--inspect=0.0.0.0:9231", "."]
env_file:
- ./environment/miiverse-api.env
- ./environment/miiverse-api.local.env
juxtaposition-ui:
build: ./repos/juxtaposition-ui
depends_on:
- account
- mongodb
- redis
- friends
restart: always
ports:
# Node.js debugger
- 127.0.0.1:9232:9232
volumes:
- type: bind
source: ./config/juxtaposition-config.js
target: /app/config.js
read_only: true
networks:
internal:
dns: 172.20.0.200
command: ["node", "--inspect=0.0.0.0:9232", "."]
env_file:
- ./environment/juxtaposition-ui.env
- ./environment/juxtaposition-ui.local.env
boss:
build: ./repos/BOSS
depends_on:
- account
- mongodb
restart: always
ports:
# Node.js debugger
- 127.0.0.1:9233:9233
volumes:
- type: bind
source: ./config/mongoose-connect-options.json
target: /home/node/app/mongoose-connect-options.json
read_only: true
networks:
internal:
dns: 172.20.0.200
command: ["node", "--inspect=0.0.0.0:9233", "."]
env_file:
- ./environment/boss.env
- ./environment/boss.local.env
wiiu-chat-authentication:
build: ./repos/wiiu-chat-authentication
depends_on:
- account
- mongodb
restart: always
ports:
# Go delve debugger
- 127.0.0.1:2346:2345
# Authentication server
- 6002:6002/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/wiiu-chat.env
- ./environment/wiiu-chat.local.env
wiiu-chat-secure:
build: ./repos/wiiu-chat-secure
depends_on:
- account
- mongodb
- wiiu-chat-authentication
restart: always
ports:
# Go delve debugger
- 127.0.0.1:2347:2345
# Secure server
- 6003:6003/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/wiiu-chat.env
- ./environment/wiiu-chat.local.env
super-mario-maker:
build: ./repos/super-mario-maker
depends_on:
- account
- minio
- postgres
restart: always
ports:
# Go delve debugger
- 127.0.0.1:2348:2345
# Authentication server
- 6004:6004/udp
# Secure server
- 6005:6005/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/super-mario-maker.env
- ./environment/super-mario-maker.local.env
splatoon:
build: ./repos/splatoon
depends_on:
- account
- mongodb
restart: unless-stopped
ports:
# Go delve debugger
- 127.0.0.1:2349:2345
# Authentication server
- 6006:6006/udp
# Secure server
- 6007:6007/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/splatoon.env
- ./environment/splatoon.local.env
minecraft-wiiu:
build: ./repos/minecraft-wiiu
depends_on:
- account
restart: unless-stopped
ports:
# Go delve debugger
- 127.0.0.1:2350:2345
# Authentication server
- 6008:6008/udp
# Secure server
- 6009:6009/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/minecraft-wiiu.env
- ./environment/minecraft-wiiu.local.env
pikmin-3:
build: ./repos/pikmin-3
depends_on:
- account
- postgres
restart: unless-stopped
ports:
# Go delve debugger
- 127.0.0.1:2351:2349
# Authentication server
- 6010:6010/udp
# Secure server
- 6011:6011/udp
networks:
internal:
dns: 172.20.0.200
env_file:
- ./environment/pikmin-3.env
- ./environment/pikmin-3.local.env
volumes:
mitmproxy-pretendo-data:
mongodb-database:
minio-s3-data:
redis-data:
mailpit-mail:
postgres-database:
networks:
default:
# We need to use a custom network so that we can set a static IP address for
# CoreDNS and use it as a DNS server for the other containers.
internal:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/24