version: '3.9' services: db: image: postgres:14-alpine restart: unless-stopped shm_size: 256mb volumes: - /home/nick/configs/mastodon/db:/var/lib/postgresql/data environment: POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_USER: mastodon POSTGRES_PASSWORD: mastodon redis: image: redis:7-alpine restart: unless-stopped volumes: - /home/nick/configs/mastodon/redis:/data es: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4 restart: unless-stopped volumes: - /home/nick/configs/mastodon/es:/usr/share/elasticsearch/data 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 ELASTIC_PASSWORD: mastodon ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 mastodon: image: ghcr.io/mastodon/mastodon restart: unless-stopped command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" volumes: - /home/nick/configs/mastodon/public/system:/mastodon/public/system environment: LOCAL_DOMAIN: mastodon.karaolidis.com SINGLE_USER_MODE: true RAILS_ENV: production REDIS_HOST: redis REDIS_PORT: 6379 DB_HOST: db DB_USER: mastodon DB_NAME: mastodon DB_PASS: mastodon DB_PORT: 5432 ES_ENABLED: true ES_HOST: es ES_PORT: 9200 ES_USER: elastic ES_PASS: mastodon SECRET_KEY_BASE: ${SECRET_KEY_BASE} OTP_SECRET: ${OTP_SECRET} VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY} VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY} SMTP_SERVER: ${SMTP_SERVER} SMTP_PORT: ${SMTP_PORT} SMTP_LOGIN: ${SMTP_LOGIN} SMTP_PASSWORD: ${SMTP_PASSWORD} SMTP_FROM_ADDRESS: ${SMTP_FROM_ADDRESS} networks: - default - routing depends_on: - db - redis - es mastodon-streaming: image: ghcr.io/mastodon/mastodon restart: unless-stopped command: node ./streaming environment: LOCAL_DOMAIN: mastodon.karaolidis.com SINGLE_USER_MODE: true RAILS_ENV: production REDIS_HOST: redis REDIS_PORT: 6379 DB_HOST: db DB_USER: mastodon DB_NAME: mastodon DB_PASS: mastodon DB_PORT: 5432 ES_ENABLED: true ES_HOST: es ES_PORT: 9200 ES_USER: elastic ES_PASS: mastodon SECRET_KEY_BASE: ${SECRET_KEY_BASE} OTP_SECRET: ${OTP_SECRET} VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY} VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY} SMTP_SERVER: ${SMTP_SERVER} SMTP_PORT: ${SMTP_PORT} SMTP_LOGIN: ${SMTP_LOGIN} SMTP_PASSWORD: ${SMTP_PASSWORD} SMTP_FROM_ADDRESS: ${SMTP_FROM_ADDRESS} networks: - default - routing depends_on: - db - redis sidekiq: image: ghcr.io/mastodon/mastodon restart: unless-stopped command: bundle exec sidekiq volumes: - /home/nick/configs/mastodon/public/system:/mastodon/public/system environment: LOCAL_DOMAIN: mastodon.karaolidis.com SINGLE_USER_MODE: true RAILS_ENV: production REDIS_HOST: redis REDIS_PORT: 6379 DB_HOST: db DB_USER: mastodon DB_NAME: mastodon DB_PASS: mastodon DB_PORT: 5432 ES_ENABLED: true ES_HOST: es ES_PORT: 9200 ES_USER: elastic ES_PASS: mastodon SECRET_KEY_BASE: ${SECRET_KEY_BASE} OTP_SECRET: ${OTP_SECRET} VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY} VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY} SMTP_SERVER: ${SMTP_SERVER} SMTP_PORT: ${SMTP_PORT} SMTP_LOGIN: ${SMTP_LOGIN} SMTP_PASSWORD: ${SMTP_PASSWORD} SMTP_FROM_ADDRESS: ${SMTP_FROM_ADDRESS} depends_on: - db - redis networks: routing: external: true name: routing