diff --git a/mastodon/.env b/mastodon/.env deleted file mode 100644 index 7a8a891..0000000 --- a/mastodon/.env +++ /dev/null @@ -1,17 +0,0 @@ -DOMAIN_NAME=knast.cc -DEFAULT_NETWORK=traefik -MYSQL_ROOT_PASSWORD=55pswex5gwg5ZhD97AvzTLNdWMBNbAcvwQqDdVtX -database__connection__password=L5qRYuUY6k5oBDZGXXw27Z4ZjMdPF4nvEU4Yqc2S -MYSQL_PASSWORD=565sCDJPkARAfsvfGvJ6THgG7KtJFMoV3rXeJhb7 - -LOCAL_DOMAIN=knast.cc -WEB_DOMAIN=kvist.knast.cc #This is optional and only needed if your instance is hosted on a subdomain, but you want the instance to be known by its domain. -SINGLE_USER_MODE=true #Optional, only needed if you're hosting for just yourself - -# Sending mail -# ------------ -SMTP_SERVER= -SMTP_PORT=587 -SMTP_LOGIN= -SMTP_PASSWORD= -SMTP_FROM_ADDRESS=
\ No newline at end of file diff --git a/mastodon/.env.production b/mastodon/.env.production index b031a61..49b5112 100644 --- a/mastodon/.env.production +++ b/mastodon/.env.production @@ -23,23 +23,15 @@ NO_CHOWN=false # ------- # Generate each with the `RAILS_ENV=production bundle exec rake secret` task (`docker-compose run --rm web bundle exec rake secret` if you use docker compose) # ------- -# SECRET_KEY_BASE=29e52e5bd23fdeab4676ef27eafcac36b3db9a5842ec9e50910f78c350ac4c1d3d722003ab473936d67d68bc6c5702174effda71d94e27cdaea049d4c6958eb8 -# OTP_SECRET=48cb26b4254c56457e9279b877a11d9e43f9e8e4b63875f80390bfe132597bb61ea405c040a4ff1b16736290c40a9efc166986eb2502c00f77527c6ff22f5b9f -# VAPID_PRIVATE_KEY=4da48ca5d54eb6222db3971d446dc9ad5d372ae6555c85b5221ceb56a88248f10977a1c00809a101d1bfcd6cb34aedaeee6fb471deb78912327c143f108f38d2 -# VAPID_PUBLIC_KEY=24923f2e2296745137e79deb1bdaecf221406278ae7ebebd1c5d583cacb2455a5713c726dbdd107ef4b4c0ab52040b0d9c08af69cc5f75391b0cac49ea313b40 +SECRET_KEY_BASE=2b1832e2492203dd4534236872515b71caac98629928b0b646fa236f92e110f5c0a13d7207f31776020efba52216fd0ddb4518805c6a7f873b0ec3f250908746 +OTP_SECRET=e0975d841556dfa423d5162ebbfb4e12ff1b71eeec1b4b0f10d76d1b54f8f6c0659e1c841a485b1cde4a30097f32e1fb986ee32567ff0c92209071f74485f783 +ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=F8ZjNXamWbRC5hXkwUky9IXvnh08VVTY +ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=ovgxY1PCrdvCZXdzXqOeKGaRJ65dSpE2 +ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=c2WCCEL2IgsPGBBUPNYCNqfchw5pZ1ne +VAPID_PRIVATE_KEY=RkBT4DNg9QJSANFKSpk9n93octTaWoqyIBLVixM70TE= +VAPID_PUBLIC_KEY=BHNebg8cPcoOycXApYtd0SBWoWaX2EXQ3DHDvFtvdRt93wZiyDxqapK5oVmpidzOFV4dLoH5Aoc7xI36xh-IR_0= -# ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=48cb26b4254c56457e9279b877a11d9e43f9e8e4b63875f80390bfe132597bb61ea405c040a4ff1b16736290c40a9efc166986eb2502c00f77527c6ff22f5b9f -# ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=4da48ca5d54eb6222db3971d446dc9ad5d372ae6555c85b5221ceb56a88248f10977a1c00809a101d1bfcd6cb34aedaeee6fb471deb78912327c143f108f38d2 -# ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=24923f2e2296745137e79deb1bdaecf221406278ae7ebebd1c5d583cacb2455a5713c726dbdd107ef4b4c0ab52040b0d9c08af69cc5f75391b0cac49ea313b40 - -SECRET_KEY_BASE=7a9460bb531961c4b3eb4ef00942bab7f9af218d3867f47e5da51b6c707da4781b08db278f79c7383b0a6bf20317877bb72f5516b1347ed4d8b9feba8f16b83d -OTP_SECRET=abc17afe26fb72323073413b142d82e30c40643b09b202552e9ee0422708b9dbf7300ba561b06eab31b56ed2c6508229338fb914268e45027dffb3d0ab83142e -ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=yl9EZMMokBmQdwqbbDIp7vttEOpBirks -ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=aLBt84pULNQr1C1B2RJXWgj415PADNaQ -ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=u7DB6BEIoOAkrAtM11HQyqpxJatwwOdv -VAPID_PRIVATE_KEY=tIB5Jt9LyvopqE9tOxOXi-3tFo07dsZw-uSyIjXTU_w= -VAPID_PUBLIC_KEY=BItV58p_YU4fbBAEdKrA5jX_mw2a9kWt2rnJ6p6my9Mu4Js2bfFu5a0YNTUtsUW6cgxCA4JKrFTtZP0wTeinaGQ= # Registrations # ------------- diff --git a/mastodon/README.md b/mastodon/README.md new file mode 100644 index 0000000..2e32a9e --- /dev/null +++ b/mastodon/README.md @@ -0,0 +1,22 @@ +# Took me a weekend + +First run: + +```sh +docker compose run web bundle exec rake mastodon:setup +``` + +This will guide you through the setup. +Remember that without SMTP mailing setup, you can't create new users, so only an admin user will work. + +Copy the values created in the setup guide to the `.env.production.yml` file. + +commit the changes, push to repo, start the container + +```sh +docker compose up --build +``` + +This should just spin up the container. + + diff --git a/mastodon/db.env b/mastodon/db.env deleted file mode 100644 index 07e0e76..0000000 --- a/mastodon/db.env +++ /dev/null @@ -1,15 +0,0 @@ -# PostgreSQL -# There might be some fancy way to de-dupe this, i just sent it. -# ---------- -DB_HOST=db -DB_USER=postgres -DB_NAME=postgres -DB_PASS=FsQH5cTo7DzuaJB6kggksZHWj6DgvySBBmnMrvQP -DB_PORT=5432 - -# Needed so that the pgsql container creates the expected roles and dbs for you -POSTGRES_DB=postgres -POSTGRES_USER=postgres -POSTGRES_PASSWORD=FsQH5cTo7DzuaJB6kggksZHWj6DgvySBBmnMrvQP - -REDIS_URL=redis://redis:6379 \ No newline at end of file diff --git a/mastodon/docker-compose copy.yml b/mastodon/docker-compose copy.yml deleted file mode 100644 index 1b52759..0000000 --- a/mastodon/docker-compose copy.yml +++ /dev/null @@ -1,106 +0,0 @@ -# version: '3.7' -# services: -# db: -# restart: always -# image: postgres:14-alpine -# shm_size: 256mb -# networks: -# - internal_network -# healthcheck: -# test: ['CMD', 'pg_isready', '-U', 'postgres'] -# volumes: -# - ./postgres14:/var/lib/postgresql/data -# environment: -# - 'POSTGRES_HOST_AUTH_METHOD=trust' - -# redis: -# restart: always -# image: redis:7-alpine -# networks: -# - internal_network -# healthcheck: -# test: ['CMD', 'redis-cli', 'ping'] -# volumes: -# - ./redis:/data - -# web: -# image: ghcr.io/glitch-soc/mastodon -# restart: always -# env_file: .env.production -# command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" -# networks: -# - traefik -# - internal_network -# healthcheck: -# # prettier-ignore -# test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1'] -# depends_on: -# - db -# - redis -# # - es -# volumes: -# - ./public/system:/mastodon/public/system -# labels: -# - "traefik.enable=true" -# # Main Web Router -# - "traefik.http.routers.mstdn-web-rtr.entrypoints=websecure" -# - "traefik.http.routers.mstdn-web-rtr.rule=Host(`kvist.knast.cc`)" -# - "traefik.http.routers.mstdn-web-rtr.tls=true" -# - "traefik.http.routers.mstdn-web-rtr.tls.certResolver=letsencr" -# # Media Router -# - "traefik.http.routers.mstdn-media-rtr.entrypoints=websecure" -# - "traefik.http.routers.mstdn-media-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/system/media_attachments/`))" -# - "traefik.http.routers.mstdn-media-rtr.tls=true" -# - "traefik.http.routers.mstdn-media-rtr.tls.certResolver=letsencr" -# - "traefik.http.routers.mstdn-media-rtr.middlewares=mstdn-cors-media" -# # CORS Middleware -# - "traefik.http.middlewares.mstdn-cors-media.headers.contentSecurityPolicy=img-src *; media-src *;" -# - "traefik.http.middlewares.mstdn-cors-media.headers.accesscontrolallowheaders=*" -# - "traefik.http.middlewares.mstdn-cors-media.headers.accessControlAllowOriginList=*" -# # Service -# - "traefik.http.services.mstdn-web-svc.loadbalancer.server.port=3000" - -# streaming: -# image: ghcr.io/glitch-soc/mastodon -# restart: always -# env_file: .env.production -# command: node ./streaming -# networks: -# - traefik -# - internal_network -# healthcheck: -# # prettier-ignore -# test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1'] -# depends_on: -# - db -# - redis -# labels: -# - "traefik.enable=true" -# - "traefik.http.routers.mstdn-streamer-rtr.entrypoints=websecure" -# - "traefik.http.routers.mstdn-streamer-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`))" -# - "traefik.http.routers.mstdn-streamer-rtr.tls=true" -# - "traefik.http.routers.mstdn-streamer-rtr.tls.certResolver=letsencr" -# - "traefik.http.services.mstdn-streamer-svc.loadbalancer.server.port=4000" - -# sidekiq: -# image: ghcr.io/glitch-soc/mastodon -# restart: always -# env_file: .env.production -# command: bundle exec sidekiq -# depends_on: -# - db -# - redis -# networks: -# - traefik -# - internal_network -# volumes: -# - ./public/system:/mastodon/public/system -# healthcheck: -# test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] - -# networks: -# traefik: -# name: traefik -# external: true -# internal_network: -# internal: true diff --git a/mastodon/docker-compose.ae3.yml b/mastodon/docker-compose.ae3.yml deleted file mode 100644 index fa31a9c..0000000 --- a/mastodon/docker-compose.ae3.yml +++ /dev/null @@ -1,91 +0,0 @@ -version: '3' -services: - db: - restart: unless-stopped - image: postgres:14-alpine - shm_size: 256mb - networks: - - default - healthcheck: - test: ['CMD', 'pg_isready', '-U', 'postgres'] - volumes: - - /srv/mastodon/postgres14:/var/lib/postgresql/data - environment: - - 'POSTGRES_HOST_AUTH_METHOD=trust' - - redis: - restart: unless-stopped - image: redis:7-alpine - networks: - - default - healthcheck: - test: ['CMD', 'redis-cli', 'ping'] - volumes: - - /srv/mastodon/redis:/data - - web: - image: tootsuite/mastodon - restart: unless-stopped - env_file: .env.production - command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" - networks: - - traefik - - default - healthcheck: - test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1'] - depends_on: - - db - - redis - volumes: - - /srv/mastodon/public/system:/mastodon/public/system - labels: - - "traefik.enable=true" - - "traefik.http.routers.mastodon.entrypoints=https" - - "traefik.http.routers.mastodon.rule=(Host(`kvist.knast.cc`))" - - "traefik.http.routers.mastodon.tls=true" - - "traefik.http.routers.mastodon.tls.certresolver=http" - - "traefik.http.routers.mastodon.service=mastodon" - - "traefik.http.services.mastodon.loadbalancer.server.port=3000" - - "traefik.docker.network=traefik" - - streaming: - image: tootsuite/mastodon - restart: unless-stopped - env_file: .env.production - command: node ./streaming/index.js - networks: - - default - - traefik - healthcheck: - test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1'] - depends_on: - - db - - redis - labels: - - "traefik.enable=true" - - "traefik.http.routers.mastodon-api.entrypoints=https" - - "traefik.http.routers.mastodon-api.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`))" - - "traefik.http.routers.mastodon-api.tls=true" - - "traefik.http.routers.mastodon-api.tls.certresolver=http" - - "traefik.http.routers.mastodon-api.service=mastodon-api" - - "traefik.http.services.mastodon-api.loadbalancer.server.port=4000" - - "traefik.docker.network=traefik" - - sidekiq: - image: tootsuite/mastodon - restart: unless-stopped - env_file: .env.production - command: bundle exec sidekiq - depends_on: - - db - - redis - networks: - - default - volumes: - - /srv/mastodon/public/system:/mastodon/public/system - healthcheck: - test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] - -networks: - traefik: - external: true \ No newline at end of file diff --git a/mastodon/docker-compose.latest.yml b/mastodon/docker-compose.latest.yml deleted file mode 100644 index 7b3ed01..0000000 --- a/mastodon/docker-compose.latest.yml +++ /dev/null @@ -1,101 +0,0 @@ -# -# THIS IS THE FILE THAT WORKS -# - - -services: - db: - restart: always - image: postgres:14-alpine - shm_size: 256mb - networks: - - internal_network - healthcheck: - test: ['CMD', 'pg_isready', '-U', 'postgres'] - volumes: - - /srv/mastodon/postgres14:/var/lib/postgresql/data - environment: - - 'POSTGRES_HOST_AUTH_METHOD=trust' - - redis: - restart: always - image: redis:7-alpine - networks: - - internal_network - healthcheck: - test: ['CMD', 'redis-cli', 'ping'] - volumes: - - /srv/mastodon/redis:/data - - - web: - image: ghcr.io/mastodon/mastodon:v4.3.3 - restart: always - env_file: .env.production - command: bundle exec puma -C config/puma.rb - networks: - - traefik - - internal_network - healthcheck: - # prettier-ignore - test: ['CMD-SHELL',"curl -s --noproxy localhost localhost:3000/health | grep -q 'OK' || exit 1"] - # ports: - # - '127.0.0.1:3000:3000' - depends_on: - - db - - redis - # - es - volumes: - - /srv/mastodon/web:/mastodon/public/system - labels: - - traefik.enable=true - - traefik.http.routers.mastodonweb.rule=Host(`kvist.knast.cc`) - - traefik.http.routers.mastodonweb.entrypoints=websecure - - traefik.http.routers.mastodonweb.tls.certresolver=letsencr - - traefik.http.services.mastodonweb.loadbalancer.server.port=3000 - - streaming: - image: ghcr.io/mastodon/mastodon-streaming:v4.3.3 - restart: always - env_file: .env.production - command: node ./streaming/index.js - networks: - - traefik - - internal_network - healthcheck: - # prettier-ignore - test: ['CMD-SHELL', "curl -s --noproxy localhost localhost:4000/api/v1/streaming/health | grep -q 'OK' || exit 1"] - # ports: - # - '127.0.0.1:4000:4000' - depends_on: - - db - - redis - labels: - - traefik.enable=true - - traefik.http.routers.mastodonstreaming.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`)) - - traefik.http.routers.mastodonstreaming.entrypoints=websecure - - traefik.http.routers.mastodonstreaming.tls.certresolver=letsencr - - traefik.http.services.mastodonstreaming.loadbalancer.server.port=4000 - - sidekiq: - image: ghcr.io/mastodon/mastodon:v4.3.3 - restart: always - env_file: .env.production - command: bundle exec sidekiq - depends_on: - - db - - redis - networks: - - traefik - - internal_network - volumes: - # - ./public/system:/mastodon/public/system - - /srv/mastodon/sidekiq:/mastodon/public/system - healthcheck: - test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] - -networks: - traefik: - external: true - internal_network: - internal: true diff --git a/mastodon/docker-compose.linuxserver.yml b/mastodon/docker-compose.linuxserver.yml deleted file mode 100644 index 40e9db0..0000000 --- a/mastodon/docker-compose.linuxserver.yml +++ /dev/null @@ -1,383 +0,0 @@ -# version: '3.7' -# services: -# mastodon: -# image: lscr.io/linuxserver/mastodon:latest -# container_name: mastodon -# networks: -# - traefik - -# environment: -# - PUID=1000 -# - PGID=1000 -# - TZ=Etc/UTC -# - LOCAL_DOMAIN=knast.cc -# - WEB_DOMAIN=kvist.knast.cc -# # -# # - REDIS_HOST=redis -# - REDIS_URL=redis://redis:6379 -# - REDIS_PORT=6379 -# # -# - DB_HOST=db -# - DB_USER=mastodon -# - DB_NAME=mastodon -# - DB_PASS=mastodon -# - DB_PORT=5432 -# - ES_ENABLED=false -# # -# - SECRET_KEY_BASE=e0363e8219496e6c2ddf36b9305e48bc622873b8b97cff9af48c3be3134a479ef635647a86b0a550887b5fe06008081b7d491f6c0a447d3aeb297f513b6cb751 -# - OTP_SECRET=029b6d01d97c2bc4209d5cdc8b3aa59a47f298e8beaeca94b4e0feedf586deb55621ed055aa5e0a6186a7e3d2ad2655203b87281bd9543290f1c1385e2a4b4c7 -# # -# - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=48cb26b4254c56457e9279b877a11d9e43f9e8e4b63875f80390bfe132597bb61ea405c040a4ff1b16736290c40a9efc166986eb2502c00f77527c6ff22f5b9f -# - ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=4da48ca5d54eb6222db3971d446dc9ad5d372ae6555c85b5221ceb56a88248f10977a1c00809a101d1bfcd6cb34aedaeee6fb471deb78912327c143f108f38d2 -# - ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=24923f2e2296745137e79deb1bdaecf221406278ae7ebebd1c5d583cacb2455a5713c726dbdd107ef4b4c0ab52040b0d9c08af69cc5f75391b0cac49ea313b40 -# # -# - VAPID_PRIVATE_KEY=4da48ca5d54eb6222db3971d446dc9ad5d372ae6555c85b5221ceb56a88248f10977a1c00809a101d1bfcd6cb34aedaeee6fb471deb78912327c143f108f38d2 -# - VAPID_PUBLIC_KEY=24923f2e2296745137e79deb1bdaecf221406278ae7ebebd1c5d583cacb2455a5713c726dbdd107ef4b4c0ab52040b0d9c08af69cc5f75391b0cac49ea313b40 -# # -# - SMTP_SERVER=mail.example.com -# - SMTP_PORT=25 -# - SMTP_LOGIN= -# - SMTP_PASSWORD= -# - SMTP_FROM_ADDRESS=mastodon@kvist.knast.cc -# # -# - S3_ENABLED=false - -# # - ES_HOST=es #optional -# # - ES_PORT=9200 #optional -# # - ES_USER=elastic #optional -# # - ES_PASS=elastic #optional -# # - S3_BUCKET= #optional -# # - AWS_ACCESS_KEY_ID= #optional -# # - AWS_SECRET_ACCESS_KEY= #optional -# # - S3_ALIAS_HOST= #optional -# # - SIDEKIQ_ONLY=false #optional -# # - SIDEKIQ_QUEUE= #optional -# # - SIDEKIQ_DEFAULT=false #optional -# # - SIDEKIQ_THREADS=5 #optional -# # - DB_POOL=5 #optional -# - NO_CHOWN=false -# volumes: -# - /srv/mastodon:/config -# # ports: -# # - 8008:80 -# # - 4433:443 -# restart: unless-stopped -# labels: -# - traefik.enable=true -# - traefik.http.routers.mastodon.rule=Host(`kvist.knast.cc`) -# - traefik.http.routers.mastodon.entrypoints=websecure -# - traefik.http.routers.mastodon.tls.certresolver=letsencr -# - traefik.http.services.mastodon.loadbalancer.server.port=80 -# - traefik.http.services.mastodon.loadbalancer.server.port=443 - - -# # services: -# # db: -# # restart: always -# # image: postgres:14-alpine -# # shm_size: 256mb -# # networks: -# # - internal_network -# # volumes: -# # - /srv/mastodon/postgres14:/var/lib/postgresql/data -# # # added from the default, otherwise you'll need to manually create a `mastodon` db and user/role -# # # env_file: db.env -# # env_file: -# # # - .env -# # # - db.env -# # - .env.production -# # environment: -# # - 'POSTGRES_HOST_AUTH_METHOD=trust' -# # - 'POSTGRES_USER=postgres' - -# # redis: -# # restart: always -# # image: redis:7-alpine -# # networks: -# # - internal_network -# # env_file: -# # - .env.production -# # healthcheck: -# # test: ['CMD', 'redis-cli', 'ping'] -# # # environment: -# # # - 'REDIS_URL=redis://redis:6379' -# # volumes: -# # - /srv/mastodon/redis:/data - -# # web: -# # image: ghcr.io/mastodon/mastodon:v4.3.3 -# # restart: always -# # # env_file: -# # # - .env -# # # - db.env -# # env_file: -# # # - .env -# # - .env.production -# # # - db.env -# # # ports: -# # # - 3000:3000 -# # # environment: -# # # - PUID=1000 -# # # - PGID=1000 -# # command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" -# # networks: -# # - traefik -# # - internal_network -# # healthcheck: -# # # prettier-ignore -# # test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1'] -# # depends_on: -# # - db -# # - redis -# # volumes: -# # - /srv/mastodon/web:/mastodon/public/system -# # labels: -# # - traefik.enable=true -# # - traefik.http.routers.mastodonweb.rule=Host(`kvist.knast.cc`) -# # - traefik.http.routers.mastodonweb.entrypoints=websecure -# # - traefik.http.routers.mastodonweb.tls.certresolver=letsencr -# # - traefik.http.services.mastodonweb.loadbalancer.server.port=3000 -# # # labels: -# # # - "traefik.enable=true" -# # # # Main Web Router -# # # - "traefik.http.routers.mstdn-web-rtr.entrypoints=websecure" -# # # - "traefik.http.routers.mstdn-web-rtr.rule=Host(`kvist.knast.cc`)" -# # # - "traefik.http.routers.mstdn-web-rtr.tls=true" -# # # - "traefik.http.routers.mstdn-web-rtr.tls.certResolver=letsencr" -# # # # Media Router -# # # - "traefik.http.routers.mstdn-media-rtr.entrypoints=websecure" -# # # - "traefik.http.routers.mstdn-media-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/system/media_attachments/`))" -# # # - "traefik.http.routers.mstdn-media-rtr.tls=true" -# # # - "traefik.http.routers.mstdn-media-rtr.tls.certResolver=letsencr" -# # # - "traefik.http.routers.mstdn-media-rtr.middlewares=mstdn-cors-media" -# # # # CORS Middleware -# # # - "traefik.http.middlewares.mstdn-cors-media.headers.contentSecurityPolicy=img-src *; media-src *;" -# # # - "traefik.http.middlewares.mstdn-cors-media.headers.accesscontrolallowheaders=*" -# # # - "traefik.http.middlewares.mstdn-cors-media.headers.accessControlAllowOriginList=*" -# # # # Service -# # # - "traefik.http.services.mstdn-web-svc.loadbalancer.server.port=3344" - -# # streaming: -# # image: ghcr.io/mastodon/mastodon-streaming:v4.3.3 -# # restart: always -# # # env_file: -# # # - .env -# # # - db.env -# # env_file: -# # # - .env -# # - .env.production -# # # - db.env -# # command: node ./streaming -# # environment: -# # - 'REDIS_URL=redis://redis:6379' -# # # ports: -# # # - 4000:4000 -# # networks: -# # - traefik -# # - internal_network -# # healthcheck: -# # # prettier-ignore -# # test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1'] -# # depends_on: -# # - db -# # - redis -# # labels: -# # - traefik.enable=true -# # - traefik.http.routers.mastodonstreaming.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`)) -# # - traefik.http.routers.mastodonstreaming.entrypoints=websecure -# # - traefik.http.routers.mastodonstreaming.tls.certresolver=letsencr -# # - traefik.http.services.mastodonstreaming.loadbalancer.server.port=4433 -# # # labels: -# # # - "traefik.enable=true" -# # # - "traefik.http.routers.mstdn-streamer-rtr.entrypoints=websecure" -# # # - "traefik.http.routers.mstdn-streamer-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`))" -# # # - "traefik.http.routers.mstdn-streamer-rtr.tls=true" -# # # - "traefik.http.routers.mstdn-streamer-rtr.tls.certResolver=letsencr" -# # # - "traefik.http.services.mstdn-streamer-svc.loadbalancer.server.port=4000" - - -# # sidekiq: -# # image: ghcr.io/mastodon/mastodon:v4.3.3 -# # restart: always -# # env_file: -# # # - .env -# # - .env.production -# # # - db.env -# # command: bundle exec sidekiq -# # depends_on: -# # - db -# # - redis -# # networks: -# # - traefik -# # - internal_network -# # volumes: -# # - /srv/mastodon/sidekiq:/mastodon/public/system -# # healthcheck: -# # test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] - - -# networks: -# traefik: -# external: true -# # internal_network: -# # internal: true - - - - - -# # This file is designed for production server deployment, not local development work -# # For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/docs/DEVELOPMENT.md#docker - -# # services: -# # db: -# # restart: always -# # image: postgres:14-alpine -# # shm_size: 256mb -# # networks: -# # - internal_network -# # healthcheck: -# # test: ['CMD', 'pg_isready', '-U', 'postgres'] -# # volumes: -# # - ./postgres14:/var/lib/postgresql/data -# # environment: -# # - 'POSTGRES_HOST_AUTH_METHOD=trust' - -# # redis: -# # restart: always -# # image: redis:7-alpine -# # networks: -# # - internal_network -# # healthcheck: -# # test: ['CMD', 'redis-cli', 'ping'] -# # volumes: -# # - ./redis:/data - -# # # 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: -# # # - traefik -# # # - internal_network -# # # 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: -# # # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes -# # # build: . -# # image: ghcr.io/mastodon/mastodon:v4.3.3 -# # restart: always -# # env_file: -# # - .env -# # - .env.production -# # - db.env -# # command: bundle exec puma -C config/puma.rb -# # networks: -# # - traefik -# # - internal_network -# # healthcheck: -# # # prettier-ignore -# # test: ['CMD-SHELL',"curl -s --noproxy localhost localhost:3000/health | grep -q 'OK' || exit 1"] -# # ports: -# # - '127.0.0.1:3000:3000' -# # depends_on: -# # - db -# # - redis -# # # - es -# # volumes: -# # - ./public/system:/mastodon/public/system - -# # streaming: -# # # You can uncomment the following lines if you want to not use the prebuilt image, for example if you have local code changes -# # # build: -# # # dockerfile: ./streaming/Dockerfile -# # # context: . -# # image: ghcr.io/mastodon/mastodon-streaming:v4.3.3 -# # restart: always -# # # env_file: -# # - .env -# # - .env.production -# # - db.env -# # command: node ./streaming/index.js -# # networks: -# # - traefik -# # - internal_network -# # healthcheck: -# # # prettier-ignore -# # test: ['CMD-SHELL', "curl -s --noproxy localhost localhost:4000/api/v1/streaming/health | grep -q 'OK' || exit 1"] -# # ports: -# # - '127.0.0.1:4000:4000' -# # depends_on: -# # - db -# # - redis - -# # sidekiq: -# # # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes -# # # build: . -# # image: ghcr.io/mastodon/mastodon:v4.3.3 -# # restart: always -# # # env_file: -# # - .env -# # - .env.production -# # - db.env -# # command: bundle exec sidekiq -# # depends_on: -# # - db -# # - redis -# # networks: -# # - traefik -# # - internal_network -# # volumes: -# # - ./public/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: -# # # - traefik -# # # - internal_network -# # # -# # # privoxy: -# # # image: sirboops/privoxy -# # # volumes: -# # # - ./priv-config:/opt/config -# # # networks: -# # # - traefik -# # # - internal_network - -# # networks: -# # # traefik: -# # traefik: -# # external: true -# # internal_network: -# # internal: true - -# # # networks: -# # # traefik: -# # # external: true diff --git a/mastodon/docker-compose.traefik.yml b/mastodon/docker-compose.traefik.yml deleted file mode 100644 index fd0d4a7..0000000 --- a/mastodon/docker-compose.traefik.yml +++ /dev/null @@ -1,93 +0,0 @@ -version: "3" -services: - db: - restart: unless-stopped - image: postgres:14-alpine - shm_size: 256mb - networks: - - default - healthcheck: - test: ["CMD", "pg_isready", "-U", "postgres"] - volumes: - - /srv/mastodon/postgres14:/var/lib/postgresql/data - environment: - - "POSTGRES_HOST_AUTH_METHOD=trust" - - redis: - restart: unless-stopped - image: redis:7-alpine - networks: - - default - healthcheck: - test: ["CMD", "redis-cli", "ping"] - volumes: - - /srv/mastodon/redis:/data - - web: - image: ghcr.io/mastodon/mastodon:v4.3.3 - restart: unless-stopped - env_file: .env.production - command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" - networks: - - traefik - - default - healthcheck: - test: - [ - "CMD-SHELL", - "wget -q --spider --proxy=off localhost:3000/health || exit 1", - ] - depends_on: - - db - - redis - volumes: - - /srv/mastodon/web:/mastodon/public/system - labels: - - traefik.enable=true - - traefik.http.routers.mastodonweb.rule=Host(`kvist.knast.cc`) - - traefik.http.routers.mastodonweb.entrypoints=websecure - - traefik.http.routers.mastodonweb.tls.certresolver=letsencr - - traefik.http.services.mastodonweb.loadbalancer.server.port=3000 - - streaming: - image: ghcr.io/mastodon/mastodon-streaming:v4.3.3 - restart: unless-stopped - env_file: .env.production - command: node ./streaming/index.js - networks: - - default - - traefik - healthcheck: - test: - [ - "CMD-SHELL", - "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1", - ] - depends_on: - - db - - redis - labels: - - traefik.enable=true - - traefik.http.routers.mastodonstreaming.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`)) - - traefik.http.routers.mastodonstreaming.entrypoints=websecure - - traefik.http.routers.mastodonstreaming.tls.certresolver=letsencr - - traefik.http.services.mastodonstreaming.loadbalancer.server.port=4000 - - sidekiq: - image: tootsuite/mastodon - restart: unless-stopped - env_file: .env.production - command: bundle exec sidekiq - depends_on: - - db - - redis - networks: - - default - volumes: - - /srv/mastodon/sidekiq:/mastodon/public/system - healthcheck: - test: ["CMD-SHELL", "ps aux | grep '[s]idekiq\ 6' || false"] - -networks: - traefik: - external: true diff --git a/mastodon/docker-compose.yml b/mastodon/docker-compose.yml index ca9195c..f22d4ed 100644 --- a/mastodon/docker-compose.yml +++ b/mastodon/docker-compose.yml @@ -9,11 +9,8 @@ services: volumes: - /srv/mastodon/postgres14:/var/lib/postgresql/data # added from the default, otherwise you'll need to manually create a `mastodon` db and user/role - # env_file: db.env env_file: - - .env - ./.env.production - - db.env environment: - 'POSTGRES_HOST_AUTH_METHOD=trust' - 'POSTGRES_USER=postgres' @@ -27,26 +24,14 @@ services: - ./.env.production healthcheck: test: ['CMD', 'redis-cli', 'ping'] - # environment: - # - 'REDIS_URL=redis://redis:6379' volumes: - /srv/mastodon/redis:/data web: image: ghcr.io/mastodon/mastodon:v4.3.3 restart: always - # env_file: - # - .env - # - db.env env_file: - # - .env - ./.env.production - # - db.env - # ports: - # - 3000:3000 - # environment: - # - PUID=1000 - # - PGID=1000 command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" networks: - traefik @@ -66,41 +51,15 @@ services: - "traefik.http.routers.mastodon.tls=true" - "traefik.http.routers.mastodon.tls.certresolver=letsencr" - "traefik.http.services.mastodon.loadbalancer.server.port=3000" - # labels: - # - "traefik.enable=true" - # # Main Web Router - # - "traefik.http.routers.mstdn-web-rtr.entrypoints=websecure" - # - "traefik.http.routers.mstdn-web-rtr.rule=Host(`kvist.knast.cc`)" - # - "traefik.http.routers.mstdn-web-rtr.tls=true" - # - "traefik.http.routers.mstdn-web-rtr.tls.certResolver=letsencr" - # # Media Router - # - "traefik.http.routers.mstdn-media-rtr.entrypoints=websecure" - # - "traefik.http.routers.mstdn-media-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/system/media_attachments/`))" - # - "traefik.http.routers.mstdn-media-rtr.tls=true" - # - "traefik.http.routers.mstdn-media-rtr.tls.certResolver=letsencr" - # - "traefik.http.routers.mstdn-media-rtr.middlewares=mstdn-cors-media" - # # CORS Middleware - # - "traefik.http.middlewares.mstdn-cors-media.headers.contentSecurityPolicy=img-src *; media-src *;" - # - "traefik.http.middlewares.mstdn-cors-media.headers.accesscontrolallowheaders=*" - # - "traefik.http.middlewares.mstdn-cors-media.headers.accessControlAllowOriginList=*" - # # Service - # - "traefik.http.services.mstdn-web-svc.loadbalancer.server.port=3344" streaming: image: ghcr.io/mastodon/mastodon-streaming:v4.3.3 restart: always - # env_file: - # - .env - # - db.env env_file: - # - .env - ./.env.production - # - db.env command: node ./streaming/index.js environment: - 'REDIS_URL=redis://redis:6379' - # ports: - # - 4000:4000 networks: - traefik - internal_network @@ -118,24 +77,11 @@ services: - traefik.http.routers.mastodon_streaming.tls.certresolver=letsencr - traefik.http.services.mastodon_streaming.loadbalancer.server.port=4000 - - - # labels: - # - "traefik.enable=true" - # - "traefik.http.routers.mstdn-streamer-rtr.entrypoints=websecure" - # - "traefik.http.routers.mstdn-streamer-rtr.rule=(Host(`kvist.knast.cc`) && PathPrefix(`/api/v1/streaming`))" - # - "traefik.http.routers.mstdn-streamer-rtr.tls=true" - # - "traefik.http.routers.mstdn-streamer-rtr.tls.certResolver=letsencr" - # - "traefik.http.services.mstdn-streamer-svc.loadbalancer.server.port=4000" - - sidekiq: image: ghcr.io/mastodon/mastodon:v4.3.3 restart: always env_file: - # - .env - ./.env.production - # - db.env command: bundle exec sidekiq depends_on: - db @@ -155,162 +101,3 @@ networks: internal_network: internal: true - - - - - # This file is designed for production server deployment, not local development work -# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/docs/DEVELOPMENT.md#docker - -# services: -# db: -# restart: always -# image: postgres:14-alpine -# shm_size: 256mb -# networks: -# - internal_network -# healthcheck: -# test: ['CMD', 'pg_isready', '-U', 'postgres'] -# volumes: -# - ./postgres14:/var/lib/postgresql/data -# environment: -# - 'POSTGRES_HOST_AUTH_METHOD=trust' - -# redis: -# restart: always -# image: redis:7-alpine -# networks: -# - internal_network -# healthcheck: -# test: ['CMD', 'redis-cli', 'ping'] -# volumes: -# - ./redis:/data - -# # 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: -# # - traefik -# # - internal_network -# # 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: -# # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes -# # build: . -# image: ghcr.io/mastodon/mastodon:v4.3.3 -# restart: always -# env_file: - # - .env - # - ./.env.production - # - db.env -# command: bundle exec puma -C config/puma.rb -# networks: -# - traefik -# - internal_network -# healthcheck: -# # prettier-ignore -# test: ['CMD-SHELL',"curl -s --noproxy localhost localhost:3000/health | grep -q 'OK' || exit 1"] -# ports: -# - '127.0.0.1:3000:3000' -# depends_on: -# - db -# - redis -# # - es -# volumes: -# - ./public/system:/mastodon/public/system - -# streaming: -# # You can uncomment the following lines if you want to not use the prebuilt image, for example if you have local code changes -# # build: -# # dockerfile: ./streaming/Dockerfile -# # context: . -# image: ghcr.io/mastodon/mastodon-streaming:v4.3.3 -# restart: always -# # env_file: -# - .env -# - ./.env.production -# - db.env -# command: node ./streaming/index.js -# networks: -# - traefik -# - internal_network -# healthcheck: -# # prettier-ignore -# test: ['CMD-SHELL', "curl -s --noproxy localhost localhost:4000/api/v1/streaming/health | grep -q 'OK' || exit 1"] -# ports: -# - '127.0.0.1:4000:4000' -# depends_on: -# - db -# - redis - -# sidekiq: -# # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes -# # build: . -# image: ghcr.io/mastodon/mastodon:v4.3.3 -# restart: always -# # env_file: -# - .env -# - ./.env.production -# - db.env -# command: bundle exec sidekiq -# depends_on: -# - db -# - redis -# networks: -# - traefik -# - internal_network -# volumes: -# - ./public/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: -# # - traefik -# # - internal_network -# # -# # privoxy: -# # image: sirboops/privoxy -# # volumes: -# # - ./priv-config:/opt/config -# # networks: -# # - traefik -# # - internal_network - -# networks: -# # traefik: -# traefik: -# external: true -# internal_network: -# internal: true - -# # networks: -# # traefik: -# # external: true