161 lines
4.4 KiB
Markdown
161 lines
4.4 KiB
Markdown
# Mastodon Production Scripts
|
|
|
|
Production-ready Mastodon deployment scripts for self-hosting.
|
|
|
|
## Installation Options
|
|
|
|
### Option 1: Docker (Multi-Platform)
|
|
```bash
|
|
curl -fsSL https://git.vish.gg/Vish/mastodon-production/raw/branch/main/install.sh | sudo bash -s -- --domain mastodon.example.com --email admin@example.com
|
|
```
|
|
Supports: Ubuntu, Debian, Fedora, Rocky/Alma/RHEL 8+, Arch, openSUSE
|
|
|
|
### Option 2: Bare-Metal (Rocky Linux 10)
|
|
```bash
|
|
# Set your configuration
|
|
export DOMAIN="mastodon.example.com"
|
|
export ADMIN_USER="admin"
|
|
export ADMIN_EMAIL="admin@example.com"
|
|
export SMTP_SERVER="smtp.gmail.com"
|
|
export SMTP_PORT="587"
|
|
export SMTP_USER="your@gmail.com"
|
|
export SMTP_PASS="REDACTED_PASSWORD"
|
|
export SMTP_FROM="notifications@example.com"
|
|
|
|
# Run installer
|
|
curl -sSL https://git.vish.gg/Vish/mastodon-production/raw/branch/main/install-baremetal.sh | bash
|
|
```
|
|
|
|
## Scripts
|
|
|
|
| Script | Description |
|
|
|--------|-------------|
|
|
| `install.sh` | Docker-based installer (multi-platform) |
|
|
| `install-baremetal.sh` | Bare-metal installer for Rocky Linux 10 |
|
|
| `verify-mastodon.sh` | Health check / verification script |
|
|
| `fix-mastodon.sh` | Diagnose and auto-fix common issues |
|
|
| `backup-mastodon.sh` | Backup script for migration |
|
|
| `update-mastodon.sh` | Update to latest Mastodon version |
|
|
|
|
### Verify Installation
|
|
|
|
```bash
|
|
./verify-mastodon.sh
|
|
```
|
|
|
|
Checks:
|
|
- All services (postgresql, valkey, nginx, mastodon-*)
|
|
- API endpoints (instance, streaming)
|
|
- Database connectivity and stats
|
|
- Federation endpoints (webfinger, nodeinfo)
|
|
- Configuration files
|
|
|
|
### Fix Common Issues
|
|
|
|
```bash
|
|
./fix-mastodon.sh
|
|
```
|
|
|
|
Automatically fixes:
|
|
- Stopped services
|
|
- File permissions
|
|
- SELinux contexts
|
|
- Service startup issues
|
|
|
|
## Bare-Metal Architecture (Rocky Linux 10)
|
|
|
|
```
|
|
Internet → Cloudflare → Reverse Proxy (443) → Rocky VM (3000)
|
|
↓
|
|
nginx
|
|
↓
|
|
┌─────────────────┼─────────────────┐
|
|
↓ ↓ ↓
|
|
Puma (3001) Streaming (4000) Sidekiq
|
|
↓ ↓ ↓
|
|
└─────────────────┼─────────────────┘
|
|
↓
|
|
PostgreSQL + Valkey
|
|
```
|
|
|
|
### Services (Bare-Metal)
|
|
|
|
| Service | Port | Description |
|
|
|---------|------|-------------|
|
|
| nginx | 3000 | External reverse proxy |
|
|
| mastodon-web | 3001 | Puma web server |
|
|
| mastodon-streaming | 4000 | WebSocket streaming |
|
|
| mastodon-sidekiq | - | Background jobs |
|
|
| postgresql | 5432 | Database |
|
|
| valkey | 6379 | Redis cache |
|
|
|
|
## Backup & Restore
|
|
|
|
### Create Backup
|
|
```bash
|
|
/home/mastodon/scripts/backup-mastodon.sh
|
|
```
|
|
|
|
Creates a complete backup including:
|
|
- PostgreSQL database dump
|
|
- `.env.production` (secrets)
|
|
- User uploads (avatars, headers, media)
|
|
- Restore instructions
|
|
|
|
### Restore
|
|
See `RESTORE.md` included in backup archive.
|
|
|
|
## Update Mastodon
|
|
|
|
```bash
|
|
# Update to latest version
|
|
/home/mastodon/scripts/update-mastodon.sh
|
|
|
|
# Update to specific version
|
|
/home/mastodon/scripts/update-mastodon.sh v4.6.0
|
|
```
|
|
|
|
## Maintenance Commands
|
|
|
|
```bash
|
|
# Service status
|
|
systemctl status mastodon-web mastodon-sidekiq mastodon-streaming
|
|
|
|
# Restart all services
|
|
systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming
|
|
|
|
# View logs
|
|
journalctl -u mastodon-web -f
|
|
journalctl -u mastodon-sidekiq -f
|
|
|
|
# Access tootctl
|
|
sudo -u mastodon bash -lc 'cd ~/live && RAILS_ENV=production bin/tootctl --help'
|
|
|
|
# Create new user
|
|
sudo -u mastodon bash -lc 'cd ~/live && RAILS_ENV=production bin/tootctl accounts create USERNAME --email=EMAIL --confirmed'
|
|
|
|
# Make user admin/owner
|
|
sudo -u mastodon bash -lc 'cd ~/live && RAILS_ENV=production bin/tootctl accounts modify USERNAME --role Owner'
|
|
|
|
# Clear media cache
|
|
sudo -u mastodon bash -lc 'cd ~/live && RAILS_ENV=production bin/tootctl media remove --days=7'
|
|
```
|
|
|
|
## Requirements
|
|
|
|
### Bare-Metal
|
|
- Rocky Linux 10 (fresh install)
|
|
- 4GB+ RAM recommended
|
|
- 20GB+ disk space
|
|
- Domain with DNS configured
|
|
- SMTP credentials for email
|
|
|
|
### Docker
|
|
- Any supported Linux distribution
|
|
- Docker and Docker Compose
|
|
- Domain with DNS configured
|
|
|
|
## License
|
|
|
|
MIT
|