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)

+2 -1
Dockerfile
···
COPY --from=builder /build/coves-server /app/coves-server
# Copy migrations (needed for goose)
-
COPY --from=builder /build/internal/db/migrations /app/migrations
# Set ownership
RUN chown -R coves:coves /app
···
COPY --from=builder /build/coves-server /app/coves-server
# Copy migrations (needed for goose)
+
# Must maintain path structure as app looks for internal/db/migrations
+
COPY --from=builder /build/internal/db/migrations /app/internal/db/migrations
# Set ownership
RUN chown -R coves:coves /app
+13 -2
docker-compose.prod.yml
···
# Jetstream (Bluesky production firehose)
JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe
# Security - MUST be false in production
AUTH_SKIP_VERIFY: "false"
SKIP_DID_WEB_VERIFICATION: "false"
···
# Encryption key for community credentials
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
networks:
- coves-internal
depends_on:
···
PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_ROTATION_KEY}
# Email (optional, for account recovery)
-
PDS_EMAIL_SMTP_URL: ${PDS_EMAIL_SMTP_URL:-}
-
PDS_EMAIL_FROM_ADDRESS: ${PDS_EMAIL_FROM_ADDRESS:-noreply@coves.me}
# Production mode
PDS_DEV_MODE: "false"
···
# Jetstream (Bluesky production firehose)
JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe
+
# Custom lexicon consumers (use production Jetstream with collection filters)
+
COMMUNITY_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.community.profile&wantedCollections=social.coves.community.subscription
+
POST_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.community.post
+
AGGREGATOR_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.aggregator.service&wantedCollections=social.coves.aggregator.authorization
+
VOTE_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.feed.vote
+
COMMENT_JETSTREAM_URL: wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=social.coves.community.comment
+
# Security - MUST be false in production
AUTH_SKIP_VERIFY: "false"
SKIP_DID_WEB_VERIFICATION: "false"
···
# Encryption key for community credentials
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
+
+
# Cursor encryption for pagination
+
CURSOR_SECRET: ${CURSOR_SECRET}
networks:
- coves-internal
depends_on:
···
PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${PDS_ROTATION_KEY}
# Email (optional, for account recovery)
+
# NOTE: Must set BOTH or NEITHER - PDS fails with partial config
+
# PDS_EMAIL_SMTP_URL: ${PDS_EMAIL_SMTP_URL}
+
# PDS_EMAIL_FROM_ADDRESS: ${PDS_EMAIL_FROM_ADDRESS}
# Production mode
PDS_DEV_MODE: "false"