Decentralized social network platform (fediverse)
Decentralized social network platform (fediverse)
- web: lscr.io/linuxserver/mastodon:latest - Main Mastodon web application
- streaming: ghcr.io/mastodon/mastodon-streaming:latest - Real-time streaming API
- db: postgres:14-alpine - PostgreSQL database
- redis: redis:7-alpine - Redis cache
- elastic: elasticsearch:8.11.0 - Full-text search engine
curl -q -LSsf "https://raw.githubusercontent.com/composemgr/mastodon/main/docker-compose.yaml" -o compose.ymlgit clone "https://github.com/composemgr/mastodon" ~/.local/srv/docker/mastodon
cd ~/.local/srv/docker/mastodon
docker compose up -dcomposemgr install mastodonTZ=America/New_York
BASE_HOST_NAME=$HOSTNAME # Hostname for Mastodon instanceAPP_SECRET_KEY=changeme_otp_secret
APP_JWT_TOKEN=changeme_secret_key_base
ENCRYPTION_KEY=changeme_deterministic_key
VAPID_PRIVATE_KEY=changeme_vapid_private
VAPID_PUBLIC_KEY=changeme_vapid_publicBy default, SMTP authentication is disabled (SMTP_AUTH_METHOD=none). Configure the following variables to enable email functionality:
SMTP_AUTH_METHOD=none # Authentication method: none, plain, login, cram_md5
EMAIL_SERVER_HOST=172.17.0.1 # SMTP server hostname
EMAIL_SERVER_PORT=587 # SMTP server port (25, 587, 465)
EMAIL_SERVER_LOGIN_NAME= # SMTP username (if auth enabled)
EMAIL_SERVER_LOGIN_PASS= # SMTP password (if auth enabled)
EMAIL_SERVER_MAIL_FROM=no-reply@example.com # From address for emailsDB_CREATE_DATABASE_NAME=mastodon
DB_USER_NAME=mastodon
DB_USER_PASS=changeme_db_passwordES_PASSWORD=changeme_elastic_password # Elasticsearch passwordSee docker-compose.yaml for complete list of configurable options.
- Web Interface: https://172.17.0.1:59038
./rootfs/data/mastodon- Mastodon application data./rootfs/config/mastodon- Mastodon configuration./rootfs/data/db/postgres/mastodon- PostgreSQL database data./rootfs/data/db/redis/mastodon- Redis cache data./rootfs/data/db/elastic/mastodon- Elasticsearch indices data
- Change all default passwords before deploying to production
- Use strong secrets for all authentication tokens
- Configure HTTPS using a reverse proxy (nginx, traefik, caddy)
- Regularly update Docker images for security patches
- Backup your data regularly
# View all logs
docker compose logs -f
# View specific service logs
docker compose logs -f web
docker compose logs -f streaming
docker compose logs -f db
docker compose logs -f redis
docker compose logs -f elastic# Start services
docker compose up -d
# Stop services
docker compose down
# Update to latest images
docker compose pull && docker compose up -d
# View logs
docker compose logs -f
# Restart services
docker compose restart- Docker Engine 20.10+
- Docker Compose V2+