Skip to content

Instantly share code, notes, and snippets.

@Ardakilic
Created July 2, 2023 09:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ardakilic/0d7333ba273d7add3240dc32a3c923e9 to your computer and use it in GitHub Desktop.
Save Ardakilic/0d7333ba273d7add3240dc32a3c923e9 to your computer and use it in GitHub Desktop.
My docker-compose.yaml for mastodon hosting
version: '3.9'
services:
# https://blog.thelazyfox.xyz/setup-swag-to-safely-expose-your-self-hosted-applications-to-the-internet/
# populate swag/config/dns-conf/cloudflare.ini . Token does not work, global api worked ?
# https://github.com/linuxserver/reverse-proxy-confs/blob/master/vaultwarden.subdomain.conf.sample
# 2022-09-08 installed
swag:
image: lscr.io/linuxserver/swag:latest
container_name: swag
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Istanbul
- URL=arda.pw
- VALIDATION=dns
- SUBDOMAINS=micro,my,other,subdomains #optional
- CERTPROVIDER= #optional
- DNSPLUGIN=cloudflare #optional
# - PROPAGATION= #optional
# - DUCKDNSTOKEN= #optional
- EMAIL=cloudflare@AccountEmail.com #optional
- ONLY_SUBDOMAINS=true #optional
# - EXTRA_DOMAINS= #optional
- STAGING=false #optional
volumes:
- ./swag/config:/config
ports:
- 443:443
#- 80:80 # no http
restart: unless-stopped
networks:
- ardanet
- default
# mastodon
mastodon:
image: lscr.io/linuxserver/mastodon:4.1.2
container_name: mastodon
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Istanbul
- LOCAL_DOMAIN=micro.arda.pw
- REDIS_HOST=mastodon_redis
- REDIS_PORT=6379
- DB_HOST=mastodon_db # postgres
- DB_USER=
- DB_NAME=
- DB_PASS=
- DB_PORT=5432
- ES_ENABLED=false
- SECRET_KEY_BASE=
- OTP_SECRET=
- VAPID_PRIVATE_KEY=
- VAPID_PUBLIC_KEY=
# smtp stuff
- SMTP_SERVER=smtp.mailgun.org
- SMTP_PORT=587
- SMTP_LOGIN=
- SMTP_PASSWORD=
- SMTP_FROM_ADDRESS=
# s3 cdn stuff
- S3_ENABLED=true
- S3_BUCKET=mardassets.arda.pw
- S3_FORCE_PATH_STYLE=false
# - S3_HOSTNAME=mardassets.arda.pw # scaleway
- S3_ENDPOINT=
- AWS_ACCESS_KEY_ID=
- AWS_SECRET_ACCESS_KEY=
- S3_ALIAS_HOST=mardassets.arda.pw
- S3_REGION=fr-par # scaleway
- S3_READ_TIMEOUT=30
- S3_OPEN_TIMEOUT=30
- S3_PROTOCOL=https
- S3_STORAGE_CLASS="ONEZONE_IA" # https://github.com/mastodon/mastodon/pull/22480
# single user mode stuff
- SINGLE_USER_MODE=true
volumes:
- ./mastodon/mastodon/data/config:/config
ports:
- 31680:80
- 31443:443
depends_on:
- mastodon_db
- mastodon_redis
restart: unless-stopped
networks:
- ardanet
# - default
mastodon_db:
image: postgres:15
container_name: mastodon_db
volumes:
- ./mastodon/postgres/data/postgres:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
- POSTGRES_DB=
- POSTGRES_USER=
- POSTGRES_PASSWORD=
restart: unless-stopped
networks:
- ardanet
mastodon_redis:
image: redis
container_name: mastodon_redis
ports:
- 6379:6379
restart: unless-stopped
volumes:
- ./mastodon/redis/data:/data
networks:
- ardanet
# mastodon end
# to enable any s3 bucket, even minio for nginx reverse proxy
# nginx_s3_gateway:
# # If minio client is up and running properly, we are reasonably sure that
# # minio has properly started. That's why we depend on it here.
# image: nginxinc/nginx-s3-gateway:latest-20221216
# ports:
# - "7713:80"
# restart: unless-stopped
# environment:
# S3_BUCKET_NAME: ""
# S3_ACCESS_KEY_ID: ""
# S3_SECRET_KEY: ""
# S3_SERVER: ""
# S3_SERVER_PORT: "443"
# S3_SERVER_PROTO: "https"
# S3_REGION: ""
# S3_DEBUG: "true"
# S3_STYLE: "virtual" # virtual
# ALLOW_DIRECTORY_LIST: "false"
# PROVIDE_INDEX_PAGE:
# APPEND_SLASH_FOR_POSSIBLE_DIRECTORY:
# AWS_SIGS_VERSION: 4
# STATIC_SITE_HOSTING:
# PROXY_CACHE_VALID_OK: "1h"
# PROXY_CACHE_VALID_NOTFOUND: "1m"
# PROXY_CACHE_VALID_FORBIDDEN: "30s"
# update containers
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- ardanet
networks:
ardanet:
name: ardanet
driver: bridge
@Ardakilic
Copy link
Author

To create secret tokens, make myself admin and single user mode:

docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon secret
docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon mastodon:webpush:generate_vapid_key
docker exec -it -w /app/www mastodon bin/tootctl --version 
docker exec -it -w /app/www mastodon bin/tootctl settings registration close
docker exec -it -w /app/www mastodon bin/tootctl settings registrations close
docker exec -it -w /app/www mastodon bin/tootctl cache recount
docker exec -it -w /app/www mastodon bin/tootctl feeds build
docker exec -it -w /app/www mastodon bin/tootctl accounts modify arda --role Owner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment