💾 Storage
5 specialized data engines. The September 2026 application upgrade preserved their installed versions and named volumes, and replaced mutable image references with immutable digest pins.
🐘 PostgreSQL 16
- Role: primary relational store
- Data: users, guilds, channels, messages, permissions, relationships
- Image:
postgres@sha256:97ff59a4e30e08d1c11bdcd9455e7832368c0572b576c9092cde2df4ae5552a3(installed PostgreSQL 16) - Volume:
postgres-data→/var/lib/postgresql/data - Health:
pg_isready -U fluxer -d fluxer(10s interval, 5s timeout, 10 retries) - Connection:
postgres:5432, databasefluxer, userfluxer - SSL: disabled (internal Docker network only)
Backup (see the mission operations and preservation boundary; private Fluxer operations sources are not part of the public wiki build):
umask 077
sudo -n docker compose exec -T postgres pg_dump -Fc -U fluxer -d fluxer > fluxer.pg_dump🔑 Valkey 8.1
- Role: session cache, presence tracking, rate limiter state
- Image:
valkey/valkey@sha256:cfe71288f087704b06be45e270afa7a2abbf820093d6b11a23762081f5ff321d - Persistence: disabled (
--save "" --appendonly no) — ephemeral by design - Connection:
redis://valkey:6379/0 - Health:
valkey-cli ping(10s interval) - Restart impact: cache entries, ephemeral presence and limiter state are lost. Native auth sessions are also persisted in PostgreSQL; the API reloads an auth session from the datastore when its cache lookup misses or fails. A Valkey restart alone is not equivalent to native logout.
Source: pinned AuthSessionRepository, persistent insertion at lines 129–139 and datastore/cache fallback at lines 200–224.
📦 SeaweedFS 4.34
- Role: S3-compatible object storage
- Image:
chrislusf/seaweedfs@sha256:6620371e8af8282056685c652d4637265698c9e2c2d59f9594e6ac333ad6c634 - Command:
server -s3 -dir=/data - Volume:
seaweedfs-data→/data - S3 endpoint:
http://seaweedfs:8333 - Master:
seaweedfs:9333 - Region:
us-east-1(path-style access) - Buckets (created by
seaweedfs-init):fluxer— CDN assetsfluxer-uploads— user file uploadsfluxer-downloads— processed downloadsfluxer-reports— generated reportsfluxer-harvests— harvested content
📨 NATS 2.14
- Role: inter-service message broker, event bus
- Image:
nats@sha256:c11af972c99ae542de8925e6a7d9c533aa1eb039660420d2074beed6089b3bf0 - JetStream: enabled (
-js -sd /data) - Monitoring: port 8222
- Volume:
nats-data→/data - Connection:
nats://nats:4222 - Used by: API, Gateway, Worker, all microservice routers/shards
- Pattern: pub/sub for events, request/reply for RPC, JetStream for persistence
🔍 MeiliSearch v1.12
- Role: full-text search engine
- Image:
getmeili/meilisearch@sha256:c9fac23131cca4db95173d41cc50fd5639121ee381795528fdd7522d7978a7b8 - Environment: production, analytics disabled
- Volume:
meilisearch-data→/meili_data - Connection:
http://meilisearch:7700 - Auth: master key required (set via
MEILI_MASTER_KEYin.env) - Indexes: messages, users, channels (managed by API)
📊 Volume Summary
| Volume | Service | Persistent |
|---|---|---|
postgres-data | PostgreSQL | Yes — critical |
nats-data | NATS JetStream | Yes — event replay |
meilisearch-data | MeiliSearch | Yes — rebuild from PG if lost |
seaweedfs-data | SeaweedFS | Yes — user uploads |
caddy-data | Caddy | Yes — TLS certs (internal) |
caddy-config | Caddy | Yes — config cache |