From 6b33ca831b1451e35e6f0925f72df492fd4859ab Mon Sep 17 00:00:00 2001 From: sickprodigy Date: Fri, 21 Nov 2025 19:12:33 -0500 Subject: [PATCH] Add docker-compose configuration for Mastodon services --- mastodon/docker-compose.yml | 142 ++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 mastodon/docker-compose.yml diff --git a/mastodon/docker-compose.yml b/mastodon/docker-compose.yml new file mode 100644 index 0000000..b824365 --- /dev/null +++ b/mastodon/docker-compose.yml @@ -0,0 +1,142 @@ +# https://github.com/mastodon/mastodon/blob/main/docker-compose.yml +version: '3' + +services: + +# Already installed in it's own container, not sure If I want to run here also. maybe different version? + db: + restart: always + image: postgres:14-alpine + shm_size: 256mb + networks: + - internal_mast + healthcheck: + test: ['CMD', 'pg_isready', '-U', 'postgres'] + volumes: + #- ./postgres14:/var/lib/postgresql/data + - /docker-containers/mastodon/postgres14:/var/lib/postgresql/data + environment: + - 'POSTGRES_HOST_AUTH_METHOD=trust' + + redis: + restart: always + image: redis:7-alpine + networks: + - internal_mast + healthcheck: + test: ['CMD', 'redis-cli', 'ping'] + volumes: + - /docker-containers/mastodon/redis:/data + +# Already installed in it's own container + # es: + # restart: always + # image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4 + # environment: + # - "ES_JAVA_OPTS=-Xms512m -Xmx512m -Des.enforce.bootstrap.checks=true" + # - "xpack.license.self_generated.type=basic" + # - "xpack.security.enabled=false" + # - "xpack.watcher.enabled=false" + # - "xpack.graph.enabled=false" + # - "xpack.ml.enabled=false" + # - "bootstrap.memory_lock=true" + # - "cluster.name=es-mastodon" + # - "discovery.type=single-node" + # - "thread_pool.write.queue_size=1000" + # networks: + # - external_mast + # - internal_mast + # healthcheck: + # test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"] + # volumes: + # - ./elasticsearch:/usr/share/elasticsearch/data + # ulimits: + # memlock: + # soft: -1 + # hard: -1 + # nofile: + # soft: 65536 + # hard: 65536 + # ports: + # - '127.0.0.1:9200:9200' + + web: + build: . + image: ghcr.io/mastodon/mastodon:v4.2.0 + restart: always + env_file: + - /docker-containers/mastodon/.env.production + command: bundle exec puma -C config/puma.rb + networks: + - external_mast + - internal_mast + healthcheck: + # prettier-ignore + test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1'] + ports: + - '127.0.0.1:3000:3000' + depends_on: + - db + - redis + # - es + volumes: + - /docker-containers/mastodon/system:/mastodon/public/system + + streaming: + build: . + image: ghcr.io/mastodon/mastodon:v4.2.0 + restart: always + env_file: + -/docker-containers/mastodon/.env.production + command: node ./streaming + networks: + - external_mast + - internal_mast + healthcheck: + # prettier-ignore + test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1'] + ports: + - '127.0.0.1:4000:4000' + depends_on: + - db + - redis + + sidekiq: + build: . + image: ghcr.io/mastodon/mastodon:v4.2.0 + restart: always + env_file: + - /docker-containers/mastodon/.env.production + command: bundle exec sidekiq + depends_on: + - db + - redis + networks: + - external_mast + - internal_mast + volumes: + - /docker-containers/mastodon/system:/mastodon/public/system + healthcheck: + test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] + + ## Uncomment to enable federation with tor instances along with adding the following ENV variables + ## http_hidden_proxy=http://privoxy:8118 + ## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true + # tor: + # image: sirboops/tor + # networks: + # - external_mast + # - internal_mast + # + # privoxy: + # image: sirboops/privoxy + # volumes: + # - ./priv-config:/opt/config + # networks: + # - external_mast + # - internal_mast + +networks: + external_mast: + internal_mast: + internal: true \ No newline at end of file