nandi/gleanpublic Fork 0
1aac931
Commits
Clone
git clone https://git.rickub.com/nandi/glean.git
git clone ssh://git@rickub.com/nandi/glean.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

chore: point to eurosky infra for jetstream + plc replicaUnverified

Julien Robert committed 2026-06-16T17:02:59+02:00 Browse files
1aac931 parent: 57d67c7
modified .env.example +2 -2
@@ -1,8 +1,8 @@
11 GLEAN_ADDR=:8080
22 GLEAN_DB=glean.db
33 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
66 GLEAN_SYNC_INTERVAL=8h
77 GLEAN_CLUSTER_INTERVAL=60m
88 GLEAN_FETCH_INTERVAL=15m
@@ -1,8 +1,8 @@
1 GLEAN_ADDR=:80801 GLEAN_ADDR=:8080
2 GLEAN_DB=glean.db2 GLEAN_DB=glean.db
3 GLEAN_SESSION_KEY=change-me-to-a-random-string3 GLEAN_SESSION_KEY=change-me-to-a-random-string
4-GLEAN_JETSTREAM=wss://jetstream.glean.at4+GLEAN_JETSTREAM=wss://jetstream1.eurosky.network
5-GLEAN_PLC_URL=https://didplc.glean.at5+GLEAN_PLC_URL=https://plc.eurosky.network
6 GLEAN_SYNC_INTERVAL=8h6 GLEAN_SYNC_INTERVAL=8h
7 GLEAN_CLUSTER_INTERVAL=60m7 GLEAN_CLUSTER_INTERVAL=60m
8 GLEAN_FETCH_INTERVAL=15m8 GLEAN_FETCH_INTERVAL=15m
modified docs/specs.md +2 -2
@@ -293,7 +293,7 @@ Output:
293293
294294 ### 3.9 AppView Jetstream Consumption
295295
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:
297297
298298 ```
299299 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/
10951095
10961096 Session cookies are HMAC-signed using `GLEAN_SESSION_KEY` (required, must be set to a random string). The server refuses to start without it.
10971097
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).
10991099
11001100 1. User visits `/`, clicks "Sign in with Bluesky" (or any AT Proto PDS)
11011101 2. Server redirects to AT Protocol OAuth authorization endpoint
@@ -293,7 +293,7 @@ Output:
293 293
294 ### 3.9 AppView Jetstream Consumption294 ### 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 endpoint1101 2. Server redirects to AT Protocol OAuth authorization endpoint
modified main.go +2 -2
@@ -27,7 +27,7 @@ import (
2727 func main() {
2828 addr := flag.String("addr", envOr("GLEAN_ADDR", ":8080"), "listen address")
2929 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")
3131 syncInterval := flag.Duration("sync-interval", envDuration("GLEAN_SYNC_INTERVAL", 8*time.Hour), "PDS sync interval")
3232 clusterInterval := flag.Duration("cluster-interval", envDuration("GLEAN_CLUSTER_INTERVAL", 1*time.Hour), "cluster recomputation interval")
3333 fetchInterval := flag.Duration("fetch-interval", envDuration("GLEAN_FETCH_INTERVAL", 15*time.Minute), "feed fetch tick interval")
@@ -41,7 +41,7 @@ func main() {
4141 os.Exit(1)
4242 }
4343
44- atproto.InitIdentity(envOr("GLEAN_PLC_URL", "https://didplc.glean.at"))
44+ atproto.InitIdentity(envOr("GLEAN_PLC_URL", "https://plc.eurosky.network"))
4545
4646 logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
4747
@@ -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`.
5252
5353 ## Configuration
5454
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) |
7777
7878 For production:
7979
@@ -52,28 +52,28 @@ Then open `http://localhost:8080`.
52 52
53 ## Configuration53 ## 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