A community based topic aggregation platform built on atproto

fix: production deployment issues

- Update Go to 1.24 in Dockerfile
- Fix migrations path (internal/db/migrations)
- Add custom lexicon Jetstream URLs
- Add CURSOR_SECRET env var
- Comment out partial email config (PDS requires both or neither)

+15 -3
+2 -1
Dockerfile
··· 42 42 COPY --from=builder /build/coves-server /app/coves-server 43 43 44 44 # Copy migrations (needed for goose) 45 - COPY --from=builder /build/internal/db/migrations /app/migrations 45 + # Must maintain path structure as app looks for internal/db/migrations 46 + COPY --from=builder /build/internal/db/migrations /app/internal/db/migrations 46 47 47 48 # Set ownership 48 49 RUN chown -R coves:coves /app
+13 -2
docker-compose.prod.yml
··· 68 68 # Jetstream (Bluesky production firehose) 69 69 JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe 70 70 71 + # Custom lexicon consumers (use production Jetstream with collection filters) 72 + COMMUNITY_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.community.profile&wantedCollections=social.coves.community.subscription 73 + POST_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.community.post 74 + AGGREGATOR_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.aggregator.service&wantedCollections=social.coves.aggregator.authorization 75 + VOTE_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.feed.vote 76 + COMMENT_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.community.comment 77 + 71 78 # Security - MUST be false in production 72 79 AUTH_SKIP_VERIFY: "false" 73 80 SKIP_DID_WEB_VERIFICATION: "false" ··· 84 91 85 92 # Encryption key for community credentials 86 93 ENCRYPTION_KEY: ${ENCRYPTION_KEY} 94 + 95 + # Cursor encryption for pagination 96 + CURSOR_SECRET: ${CURSOR_SECRET} 87 97 networks: 88 98 - coves-internal 89 99 depends_on: ··· 131 141 PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_ROTATION_KEY} 132 142 133 143 # Email (optional, for account recovery) 134 - PDS_EMAIL_SMTP_URL: ${PDS_EMAIL_SMTP_URL:-} 135 - PDS_EMAIL_FROM_ADDRESS: ${PDS_EMAIL_FROM_ADDRESS:-noreply@coves.me} 144 + # NOTE: Must set BOTH or NEITHER - PDS fails with partial config 145 + # PDS_EMAIL_SMTP_URL: ${PDS_EMAIL_SMTP_URL} 146 + # PDS_EMAIL_FROM_ADDRESS: ${PDS_EMAIL_FROM_ADDRESS} 136 147 137 148 # Production mode 138 149 PDS_DEV_MODE: "false"