chore: point to eurosky infra for jetstream + plc replicaUnverified
1aac931 parent: 57d67c7 modified
.env.example +2 -2 | @@ -1,8 +1,8 @@ | ||
| 1 | 1 | GLEAN_ADDR=:8080 |
| 2 | 2 | GLEAN_DB=glean.db |
| 3 | 3 | GLEAN_SESSION_KEY=change-me-to-a-random-string |
| 4 | -GLEAN_JETSTREAM=wss://jetstream.glean.at | |
| 5 | -GLEAN_PLC_URL=https://didplc.glean.at | |
| 4 | +GLEAN_JETSTREAM=wss://jetstream1.eurosky.network | |
| 5 | +GLEAN_PLC_URL=https://plc.eurosky.network | |
| 6 | 6 | GLEAN_SYNC_INTERVAL=8h |
| 7 | 7 | GLEAN_CLUSTER_INTERVAL=60m |
| 8 | 8 | GLEAN_FETCH_INTERVAL=15m |
| @@ -1,8 +1,8 @@ | |||
| 1 | GLEAN_ADDR=:8080 | 1 | GLEAN_ADDR=:8080 |
| 2 | GLEAN_DB=glean.db | 2 | GLEAN_DB=glean.db |
| 3 | GLEAN_SESSION_KEY=change-me-to-a-random-string | 3 | GLEAN_SESSION_KEY=change-me-to-a-random-string |
| 4 | -GLEAN_JETSTREAM=wss://jetstream.glean.at | 4 | +GLEAN_JETSTREAM=wss://jetstream1.eurosky.network |
| 5 | -GLEAN_PLC_URL=https://didplc.glean.at | 5 | +GLEAN_PLC_URL=https://plc.eurosky.network |
| 6 | GLEAN_SYNC_INTERVAL=8h | 6 | GLEAN_SYNC_INTERVAL=8h |
| 7 | GLEAN_CLUSTER_INTERVAL=60m | 7 | GLEAN_CLUSTER_INTERVAL=60m |
| 8 | GLEAN_FETCH_INTERVAL=15m | 8 | GLEAN_FETCH_INTERVAL=15m |
modified
docs/specs.md +2 -2 | @@ -293,7 +293,7 @@ Output: | ||
| 293 | 293 | |
| 294 | 294 | ### 3.9 AppView Jetstream Consumption |
| 295 | 295 | |
| 296 | -Glean subscribes to a Jetstream endpoint (`GLEAN_JETSTREAM`, default `wss://jetstream.glean.at`) for all `at.glean.*` records: | |
| 296 | +Glean subscribes to a Jetstream endpoint (`GLEAN_JETSTREAM`, default `wss://jetstream1.eurosky.network`) for all `at.glean.*` records: | |
| 297 | 297 | |
| 298 | 298 | ``` |
| 299 | 299 | SUBSCRIBE collections: ["at.glean.subscription", "at.glean.annotation", "at.glean.like", "app.bsky.graph.follow", "sh.tangled.graph.follow", "at.margin.note", "app.skyreader.feed.subscription"] |
| @@ -1095,7 +1095,7 @@ glean/ | ||
| 1095 | 1095 | |
| 1096 | 1096 | Session cookies are HMAC-signed using `GLEAN_SESSION_KEY` (required, must be set to a random string). The server refuses to start without it. |
| 1097 | 1097 | |
| 1098 | -DID resolution uses a configurable PLC directory (`GLEAN_PLC_URL`, defaults to `https://didplc.glean.at`). The identity directory is initialized once at startup via `InitIdentity()` with a caching layer (250k entries, 24h TTL). | |
| 1098 | +DID resolution uses a configurable PLC directory (`GLEAN_PLC_URL`, defaults to `https://plc.eurosky.network`). The identity directory is initialized once at startup via `InitIdentity()` with a caching layer (250k entries, 24h TTL). | |
| 1099 | 1099 | |
| 1100 | 1100 | 1. User visits `/`, clicks "Sign in with Bluesky" (or any AT Proto PDS) |
| 1101 | 1101 | 2. Server redirects to AT Protocol OAuth authorization endpoint |
| @@ -293,7 +293,7 @@ Output: | |||
| 293 | 293 | ||
| 294 | ### 3.9 AppView Jetstream Consumption | 294 | ### 3.9 AppView Jetstream Consumption |
| 295 | 295 | ||
| 296 | -Glean subscribes to a Jetstream endpoint (`GLEAN_JETSTREAM`, default `wss://jetstream.glean.at`) for all `at.glean.*` records: | 296 | +Glean subscribes to a Jetstream endpoint (`GLEAN_JETSTREAM`, default `wss://jetstream1.eurosky.network`) for all `at.glean.*` records: |
| 297 | 297 | ||
| 298 | ``` | 298 | ``` |
| 299 | SUBSCRIBE collections: ["at.glean.subscription", "at.glean.annotation", "at.glean.like", "app.bsky.graph.follow", "sh.tangled.graph.follow", "at.margin.note", "app.skyreader.feed.subscription"] | 299 | SUBSCRIBE collections: ["at.glean.subscription", "at.glean.annotation", "at.glean.like", "app.bsky.graph.follow", "sh.tangled.graph.follow", "at.margin.note", "app.skyreader.feed.subscription"] |
| @@ -1095,7 +1095,7 @@ glean/ | |||
| 1095 | 1095 | ||
| 1096 | Session cookies are HMAC-signed using `GLEAN_SESSION_KEY` (required, must be set to a random string). The server refuses to start without it. | 1096 | Session cookies are HMAC-signed using `GLEAN_SESSION_KEY` (required, must be set to a random string). The server refuses to start without it. |
| 1097 | 1097 | ||
| 1098 | -DID resolution uses a configurable PLC directory (`GLEAN_PLC_URL`, defaults to `https://didplc.glean.at`). The identity directory is initialized once at startup via `InitIdentity()` with a caching layer (250k entries, 24h TTL). | 1098 | +DID resolution uses a configurable PLC directory (`GLEAN_PLC_URL`, defaults to `https://plc.eurosky.network`). The identity directory is initialized once at startup via `InitIdentity()` with a caching layer (250k entries, 24h TTL). |
| 1099 | 1099 | ||
| 1100 | 1. User visits `/`, clicks "Sign in with Bluesky" (or any AT Proto PDS) | 1100 | 1. User visits `/`, clicks "Sign in with Bluesky" (or any AT Proto PDS) |
| 1101 | 2. Server redirects to AT Protocol OAuth authorization endpoint | 1101 | 2. Server redirects to AT Protocol OAuth authorization endpoint |
modified
main.go +2 -2 | @@ -27,7 +27,7 @@ import ( | ||
| 27 | 27 | func main() { |
| 28 | 28 | addr := flag.String("addr", envOr("GLEAN_ADDR", ":8080"), "listen address") |
| 29 | 29 | dbPath := flag.String("db", envOr("GLEAN_DB", "glean.db"), "database path") |
| 30 | - jetstreamURL := flag.String("jetstream", envOr("GLEAN_JETSTREAM", "wss://jetstream.glean.at"), "Jetstream URL") | |
| 30 | + jetstreamURL := flag.String("jetstream", envOr("GLEAN_JETSTREAM", "wss://jetstream1.eurosky.network"), "Jetstream URL") | |
| 31 | 31 | syncInterval := flag.Duration("sync-interval", envDuration("GLEAN_SYNC_INTERVAL", 8*time.Hour), "PDS sync interval") |
| 32 | 32 | clusterInterval := flag.Duration("cluster-interval", envDuration("GLEAN_CLUSTER_INTERVAL", 1*time.Hour), "cluster recomputation interval") |
| 33 | 33 | fetchInterval := flag.Duration("fetch-interval", envDuration("GLEAN_FETCH_INTERVAL", 15*time.Minute), "feed fetch tick interval") |
| @@ -41,7 +41,7 @@ func main() { | ||
| 41 | 41 | os.Exit(1) |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | - atproto.InitIdentity(envOr("GLEAN_PLC_URL", "https://didplc.glean.at")) | |
| 44 | + atproto.InitIdentity(envOr("GLEAN_PLC_URL", "https://plc.eurosky.network")) | |
| 45 | 45 | |
| 46 | 46 | logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo})) |
| 47 | 47 | |
| @@ -27,7 +27,7 @@ import ( | |||
| 27 | func main() { | 27 | func main() { |
| 28 | addr := flag.String("addr", envOr("GLEAN_ADDR", ":8080"), "listen address") | 28 | addr := flag.String("addr", envOr("GLEAN_ADDR", ":8080"), "listen address") |
| 29 | dbPath := flag.String("db", envOr("GLEAN_DB", "glean.db"), "database path") | 29 | dbPath := flag.String("db", envOr("GLEAN_DB", "glean.db"), "database path") |
| 30 | - jetstreamURL := flag.String("jetstream", envOr("GLEAN_JETSTREAM", "wss://jetstream.glean.at"), "Jetstream URL") | 30 | + jetstreamURL := flag.String("jetstream", envOr("GLEAN_JETSTREAM", "wss://jetstream1.eurosky.network"), "Jetstream URL") |
| 31 | syncInterval := flag.Duration("sync-interval", envDuration("GLEAN_SYNC_INTERVAL", 8*time.Hour), "PDS sync interval") | 31 | syncInterval := flag.Duration("sync-interval", envDuration("GLEAN_SYNC_INTERVAL", 8*time.Hour), "PDS sync interval") |
| 32 | clusterInterval := flag.Duration("cluster-interval", envDuration("GLEAN_CLUSTER_INTERVAL", 1*time.Hour), "cluster recomputation interval") | 32 | clusterInterval := flag.Duration("cluster-interval", envDuration("GLEAN_CLUSTER_INTERVAL", 1*time.Hour), "cluster recomputation interval") |
| 33 | fetchInterval := flag.Duration("fetch-interval", envDuration("GLEAN_FETCH_INTERVAL", 15*time.Minute), "feed fetch tick interval") | 33 | fetchInterval := flag.Duration("fetch-interval", envDuration("GLEAN_FETCH_INTERVAL", 15*time.Minute), "feed fetch tick interval") |
| @@ -41,7 +41,7 @@ func main() { | |||
| 41 | os.Exit(1) | 41 | os.Exit(1) |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | - atproto.InitIdentity(envOr("GLEAN_PLC_URL", "https://didplc.glean.at")) | 44 | + atproto.InitIdentity(envOr("GLEAN_PLC_URL", "https://plc.eurosky.network")) |
| 45 | 45 | ||
| 46 | logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo})) | 46 | logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo})) |
| 47 | 47 | ||
modified
readme.md +22 -22 | @@ -52,28 +52,28 @@ Then open `http://localhost:8080`. | ||
| 52 | 52 | |
| 53 | 53 | ## Configuration |
| 54 | 54 | |
| 55 | -| Variable | Default | What it does | | |
| 56 | -| ---------------------------- | -------------------------- | ------------------------------------------------------------------------ | | |
| 57 | -| `GLEAN_SESSION_KEY` | _(required)_ | Secret key for signing session cookies (any random string) | | |
| 58 | -| `GLEAN_ADDR` | `:8080` | Listen address | | |
| 59 | -| `GLEAN_DB` | `glean.db` | SQLite base path (`_users`, `_articles`, `_recs` suffixes) | | |
| 60 | -| `GLEAN_JETSTREAM` | `wss://jetstream.glean.at` | Jetstream WebSocket URL | | |
| 61 | -| `GLEAN_SYNC_INTERVAL` | `8h` | PDS sync interval (Go duration: `24h`, `12h`, etc.) | | |
| 62 | -| `GLEAN_CLUSTER_INTERVAL` | `1h` | Cluster recomputation interval (Go duration) | | |
| 63 | -| `GLEAN_FETCH_INTERVAL` | `15m` | Feed fetch scheduler tick interval (Go duration) | | |
| 64 | -| `GLEAN_COLLECTION_DIR_URL` | _(empty)_ | Collection directory URL for startup backfill | | |
| 65 | -| `GLEAN_BACKFILL_CONCURRENCY` | `5` | Max concurrent backfill workers | | |
| 66 | -| `GLEAN_PLC_URL` | `https://didplc.glean.at` | PLC directory URL for DID resolution | | |
| 67 | -| `GLEAN_OAUTH_CLIENT_ID` | _(empty)_ | OAuth client metadata URL (leave empty for localhost dev) | | |
| 68 | -| `GLEAN_OAUTH_REDIRECT_URL` | _(empty)_ | OAuth redirect URL (leave empty for localhost dev) | | |
| 69 | -| `GLEAN_EMBED_BASE_URL` | _(empty)_ | Embeddings API base URL (recommended, see below) | | |
| 70 | -| `GLEAN_EMBED_API_KEY` | _(empty)_ | API key for the embeddings endpoint | | |
| 71 | -| `GLEAN_EMBED_MODEL` | `text-embedding-3-small` | Embedding model name | | |
| 72 | -| `GLEAN_EMBED_DIMENSION` | `1536` | Embedding vector dimension | | |
| 73 | -| `GLEAN_LLM_BASE_URL` | _(empty)_ | LLM API base URL for language detection and digest summaries (see below) | | |
| 74 | -| `GLEAN_LLM_API_KEY` | _(empty)_ | API key for the LLM endpoint | | |
| 75 | -| `GLEAN_LLM_MODEL` | `gpt-4o-mini` | LLM model name | | |
| 76 | -| `GLEAN_PPROF_ADDR` | _(empty)_ | Enable pprof profiling server (e.g. `:6060`, off by default) | | |
| 55 | +| Variable | Default | What it does | | |
| 56 | +| ---------------------------- | ---------------------------------- | ------------------------------------------------------------------------ | | |
| 57 | +| `GLEAN_SESSION_KEY` | _(required)_ | Secret key for signing session cookies (any random string) | | |
| 58 | +| `GLEAN_ADDR` | `:8080` | Listen address | | |
| 59 | +| `GLEAN_DB` | `glean.db` | SQLite base path (`_users`, `_articles`, `_recs` suffixes) | | |
| 60 | +| `GLEAN_JETSTREAM` | `wss://jetstream1.eurosky.network` | Jetstream WebSocket URL | | |
| 61 | +| `GLEAN_SYNC_INTERVAL` | `8h` | PDS sync interval (Go duration: `24h`, `12h`, etc.) | | |
| 62 | +| `GLEAN_CLUSTER_INTERVAL` | `1h` | Cluster recomputation interval (Go duration) | | |
| 63 | +| `GLEAN_FETCH_INTERVAL` | `15m` | Feed fetch scheduler tick interval (Go duration) | | |
| 64 | +| `GLEAN_COLLECTION_DIR_URL` | _(empty)_ | Collection directory URL for startup backfill | | |
| 65 | +| `GLEAN_BACKFILL_CONCURRENCY` | `5` | Max concurrent backfill workers | | |
| 66 | +| `GLEAN_PLC_URL` | `https://plc.eurosky.network` | PLC directory URL for DID resolution | | |
| 67 | +| `GLEAN_OAUTH_CLIENT_ID` | _(empty)_ | OAuth client metadata URL (leave empty for localhost dev) | | |
| 68 | +| `GLEAN_OAUTH_REDIRECT_URL` | _(empty)_ | OAuth redirect URL (leave empty for localhost dev) | | |
| 69 | +| `GLEAN_EMBED_BASE_URL` | _(empty)_ | Embeddings API base URL (recommended, see below) | | |
| 70 | +| `GLEAN_EMBED_API_KEY` | _(empty)_ | API key for the embeddings endpoint | | |
| 71 | +| `GLEAN_EMBED_MODEL` | `text-embedding-3-small` | Embedding model name | | |
| 72 | +| `GLEAN_EMBED_DIMENSION` | `1536` | Embedding vector dimension | | |
| 73 | +| `GLEAN_LLM_BASE_URL` | _(empty)_ | LLM API base URL for language detection and digest summaries (see below) | | |
| 74 | +| `GLEAN_LLM_API_KEY` | _(empty)_ | API key for the LLM endpoint | | |
| 75 | +| `GLEAN_LLM_MODEL` | `gpt-4o-mini` | LLM model name | | |
| 76 | +| `GLEAN_PPROF_ADDR` | _(empty)_ | Enable pprof profiling server (e.g. `:6060`, off by default) | | |
| 77 | 77 | |
| 78 | 78 | For production: |
| 79 | 79 | |
| @@ -52,28 +52,28 @@ Then open `http://localhost:8080`. | |||
| 52 | 52 | ||
| 53 | ## Configuration | 53 | ## Configuration |
| 54 | 54 | ||
| 55 | -| Variable | Default | What it does | | 55 | +| Variable | Default | What it does | |
| 56 | -| ---------------------------- | -------------------------- | ------------------------------------------------------------------------ | | 56 | +| ---------------------------- | ---------------------------------- | ------------------------------------------------------------------------ | |
| 57 | -| `GLEAN_SESSION_KEY` | _(required)_ | Secret key for signing session cookies (any random string) | | 57 | +| `GLEAN_SESSION_KEY` | _(required)_ | Secret key for signing session cookies (any random string) | |
| 58 | -| `GLEAN_ADDR` | `:8080` | Listen address | | 58 | +| `GLEAN_ADDR` | `:8080` | Listen address | |
| 59 | -| `GLEAN_DB` | `glean.db` | SQLite base path (`_users`, `_articles`, `_recs` suffixes) | | 59 | +| `GLEAN_DB` | `glean.db` | SQLite base path (`_users`, `_articles`, `_recs` suffixes) | |
| 60 | -| `GLEAN_JETSTREAM` | `wss://jetstream.glean.at` | Jetstream WebSocket URL | | 60 | +| `GLEAN_JETSTREAM` | `wss://jetstream1.eurosky.network` | Jetstream WebSocket URL | |
| 61 | -| `GLEAN_SYNC_INTERVAL` | `8h` | PDS sync interval (Go duration: `24h`, `12h`, etc.) | | 61 | +| `GLEAN_SYNC_INTERVAL` | `8h` | PDS sync interval (Go duration: `24h`, `12h`, etc.) | |
| 62 | -| `GLEAN_CLUSTER_INTERVAL` | `1h` | Cluster recomputation interval (Go duration) | | 62 | +| `GLEAN_CLUSTER_INTERVAL` | `1h` | Cluster recomputation interval (Go duration) | |
| 63 | -| `GLEAN_FETCH_INTERVAL` | `15m` | Feed fetch scheduler tick interval (Go duration) | | 63 | +| `GLEAN_FETCH_INTERVAL` | `15m` | Feed fetch scheduler tick interval (Go duration) | |
| 64 | -| `GLEAN_COLLECTION_DIR_URL` | _(empty)_ | Collection directory URL for startup backfill | | 64 | +| `GLEAN_COLLECTION_DIR_URL` | _(empty)_ | Collection directory URL for startup backfill | |
| 65 | -| `GLEAN_BACKFILL_CONCURRENCY` | `5` | Max concurrent backfill workers | | 65 | +| `GLEAN_BACKFILL_CONCURRENCY` | `5` | Max concurrent backfill workers | |
| 66 | -| `GLEAN_PLC_URL` | `https://didplc.glean.at` | PLC directory URL for DID resolution | | 66 | +| `GLEAN_PLC_URL` | `https://plc.eurosky.network` | PLC directory URL for DID resolution | |
| 67 | -| `GLEAN_OAUTH_CLIENT_ID` | _(empty)_ | OAuth client metadata URL (leave empty for localhost dev) | | 67 | +| `GLEAN_OAUTH_CLIENT_ID` | _(empty)_ | OAuth client metadata URL (leave empty for localhost dev) | |
| 68 | -| `GLEAN_OAUTH_REDIRECT_URL` | _(empty)_ | OAuth redirect URL (leave empty for localhost dev) | | 68 | +| `GLEAN_OAUTH_REDIRECT_URL` | _(empty)_ | OAuth redirect URL (leave empty for localhost dev) | |
| 69 | -| `GLEAN_EMBED_BASE_URL` | _(empty)_ | Embeddings API base URL (recommended, see below) | | 69 | +| `GLEAN_EMBED_BASE_URL` | _(empty)_ | Embeddings API base URL (recommended, see below) | |
| 70 | -| `GLEAN_EMBED_API_KEY` | _(empty)_ | API key for the embeddings endpoint | | 70 | +| `GLEAN_EMBED_API_KEY` | _(empty)_ | API key for the embeddings endpoint | |
| 71 | -| `GLEAN_EMBED_MODEL` | `text-embedding-3-small` | Embedding model name | | 71 | +| `GLEAN_EMBED_MODEL` | `text-embedding-3-small` | Embedding model name | |
| 72 | -| `GLEAN_EMBED_DIMENSION` | `1536` | Embedding vector dimension | | 72 | +| `GLEAN_EMBED_DIMENSION` | `1536` | Embedding vector dimension | |
| 73 | -| `GLEAN_LLM_BASE_URL` | _(empty)_ | LLM API base URL for language detection and digest summaries (see below) | | 73 | +| `GLEAN_LLM_BASE_URL` | _(empty)_ | LLM API base URL for language detection and digest summaries (see below) | |
| 74 | -| `GLEAN_LLM_API_KEY` | _(empty)_ | API key for the LLM endpoint | | 74 | +| `GLEAN_LLM_API_KEY` | _(empty)_ | API key for the LLM endpoint | |
| 75 | -| `GLEAN_LLM_MODEL` | `gpt-4o-mini` | LLM model name | | 75 | +| `GLEAN_LLM_MODEL` | `gpt-4o-mini` | LLM model name | |
| 76 | -| `GLEAN_PPROF_ADDR` | _(empty)_ | Enable pprof profiling server (e.g. `:6060`, off by default) | | 76 | +| `GLEAN_PPROF_ADDR` | _(empty)_ | Enable pprof profiling server (e.g. `:6060`, off by default) | |
| 77 | 77 | ||
| 78 | For production: | 78 | For production: |
| 79 | 79 | ||