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_HOST} - SMTP_PORT=${SMTP_PORT} - SMTP_LOGIN=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_FROM_ADDRESS=${SMTP_FROM} 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_HOST} - SMTP_PORT=${SMTP_PORT} - SMTP_LOGIN=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_FROM_ADDRESS=${SMTP_FROM} 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_HOST} - SMTP_PORT=${SMTP_PORT} - SMTP_LOGIN=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_FROM_ADDRESS=${SMTP_FROM} depends_on: - db - redis networks: routing: external: true name: routing