Requisitos previos#
- Docker y Docker Compose instalados
- Nombre de dominio que apunta a su servidor
1. Crear directorio de proyectos#
mkdir mastodon
cd mastodon2. Crear un archivo de redacción Docker#
Cree un archivo docker-compose.yml:
version: ''3''
services:
db:
restart: always
image: postgres:14-alpine
shm_size: 256mb
networks:
- internal_network
healthcheck:
test: [''CMD'', ''pg_isready'', ''-U'', ''postgres'']
volumes:
- postgres_data:/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:/data
web:
restart: always
image: tootsuite/mastodon:latest
networks:
- external_network
- internal_network
healthcheck:
test: [''CMD-SHELL'', ''wget -q --spider http://localhost:3000/health || exit 1'']
timeout: 10s
depends_on:
- db
- redis
environment:
- DB_HOST=db
- DB_USER=postgres
- DB_NAME=postgres
- DB_PASS=
- REDIS_HOST=redis
- LOCAL_DOMAIN=your-domain.com
- SINGLE_USER_MODE=false
- SMTP_SERVER=smtp.mailgun.org
- SMTP_PORT=587
- SMTP_LOGIN=your-smtp-login
- SMTP_PASSWORD=your-smtp-password
- SMTP_FROM_ADDRESS=notifications@your-domain.com
volumes:
- ./public/system:/mastodon/public/system
ports:
- "3000:3000"
command: bash -c "rm -f /mastodon/tmp/pids/server.pid && bundle exec rails s -p 3000"
streaming:
restart: always
image: tootsuite/mastodon:latest
networks:
- external_network
- internal_network
depends_on:
- db
- redis
environment:
- DB_HOST=db
- DB_USER=postgres
- DB_NAME=postgres
- DB_PASS=
- REDIS_HOST=redis
- LOCAL_DOMAIN=your-domain.com
volumes:
- ./public/system:/mastodon/public/system
ports:
- "4000:4000'
command: node ./streaming
sidekiq:
restart: always
image: tootsuite/mastodon:latest
networks:
- internal_network
depends_on:
- db
- redis
environment:
- DB_HOST=db
- DB_USER=postgres
- DB_NAME=postgres
- DB_PASS=
- REDIS_HOST=redis
- LOCAL_DOMAIN=your-domain.com
volumes:
- ./public/system:/mastodon/public/system
command: bundle exec sidekiq
networks:
external_network:
internal_network:
internal: true
volumes:
postgres_data:
redis_data:3. Crear archivo de entorno#
Cree un archivo .env.production con su configuración: