# Posse-Party Deployment Guide

**Posse-Party** - POSSE (Publish on Own Site, Syndicate Elsewhere) platform for managing your social media presence.

## What is Posse-Party?

Posse-Party helps you:
- **Publish** content on your own website/platform
- **Syndicate** to other social media platforms (Twitter/X, Mastodon, LinkedIn, etc.)
- **Own** your content while still reaching audiences on other platforms
- **Cross-post** automatically to multiple platforms at once

## Quick Start

### 1. Generate Secret Key

```bash
openssl rand -hex 64
```

Copy this value - you'll need it for `SECRET_KEY_BASE`.

### 2. Create Environment File

```bash
cp posse-party.env.example .env
nano .env  # or use your preferred editor
```

**Required settings to fill in:**
- `SECRET_KEY_BASE` - The value from step 1
- `POSTGRES_PASSWORD` - A strong database password
- `APP_HOST` - Should already be set to `posseparty.bendtstudio.com`

**Optional but recommended:**
- Email configuration (for login and notifications)
- OAuth providers (for social login)

### 3. Deploy via Dokploy

1. Log into Dokploy: http://192.168.2.130:3000
2. Create a new project
3. Upload the compose file: `posse-party-compose.yml`
4. Upload your `.env` file
5. Deploy!

### 4. Add DNS Record

In Technitium DNS (http://192.168.2.130:5380):
- Add A record: `posseparty.bendtstudio.com` → `192.168.2.130`

### 5. Access Posse-Party

Once deployed, visit: https://posseparty.bendtstudio.com

The first user to register will become the admin.

## Services Included

- **web**: Rails application server (port 3000)
- **worker**: Background job processor (Solid Queue)
- **db**: PostgreSQL database
- **migrate**: One-time database migration service

## Maintenance

### Backup Database

```bash
ssh tim@192.168.2.18
cd /path/to/posse-party
docker exec posse-party-db-1 pg_dump -U postgres posse_party > backup-$(date +%Y%m%d).sql
```

### View Logs

```bash
ssh tim@192.168.2.18
docker logs posse-party-web-1 -f
docker logs posse-party-worker-1 -f
```

### Update to Latest Version

```bash
ssh tim@192.168.2.18
cd /path/to/posse-party
docker compose pull
docker compose up -d
```

## Configuration Details

### Email Setup (Optional but Recommended)

Posse-Party can send emails for:
- Account verification
- Password resets
- Notifications

See the `.env.example` file for supported providers (SendGrid, Mailgun, etc.)

### OAuth Setup (Optional)

Enable social login by configuring OAuth providers:
1. Create OAuth app at the provider (GitHub, Google, etc.)
2. Add callback URL: `https://posseparty.bendtstudio.com/auth/<provider>/callback`
3. Copy Client ID and Secret to `.env`

### S3/MinIO Storage (Optional)

By default, uploads are stored locally. To use S3 or MinIO:
1. Uncomment S3 configuration in `.env`
2. Set your credentials and bucket name
3. Redeploy

## Troubleshooting

### Service Won't Start

Check logs:
```bash
docker service logs posse-party-web-1 --tail 50
```

### Database Connection Issues

Verify database is healthy:
```bash
docker ps | grep posse-party-db
docker logs posse-party-db-1 --tail 20
```

### HTTPS Not Working

1. Check DNS record is correct
2. Verify Traefik labels in compose file
3. Check Traefik dashboard: http://192.168.2.130:8080

## Resources

- **Official Repo**: https://github.com/searlsco/posse_party
- **Documentation**: https://github.com/searlsco/posse_party/tree/main/docs
- **Website**: https://posseparty.com

## Support

For Posse-Party specific issues:
- GitHub Issues: https://github.com/searlsco/posse_party/issues

For deployment issues with your homelab:
- Check your Dokploy logs
- Review Traefik routing at http://192.168.2.130:8080
