Sanitized mirror from private repository - 2026-04-18 11:19:59 UTC
This commit is contained in:
97
docs/services/fluxer-setup.md
Normal file
97
docs/services/fluxer-setup.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# Fluxer Chat Server Setup
|
||||
|
||||
## Overview
|
||||
|
||||
Fluxer is a modern, Discord-like messaging platform deployed on st.vish.gg, replacing the previous Stoat Chat installation. It runs as a unified server container on the Seattle VM.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| **Domain** | st.vish.gg |
|
||||
| **Host** | Seattle VM (YOUR_WAN_IP) |
|
||||
| **Repository** | https://github.com/fluxerapp/fluxer |
|
||||
| **Branch** | `refactor` |
|
||||
| **Local Path** | `/root/fluxer` |
|
||||
| **Compose Files** | `compose.yaml` + `compose.override.yaml` |
|
||||
| **Nginx Config** | `/etc/nginx/sites-available/fluxer` |
|
||||
| **SSL Cert** | `/etc/nginx/ssl/st.vish.gg.{crt,key}` (wildcard, expires May 2026) |
|
||||
|
||||
## Architecture
|
||||
|
||||
### Unified Server Model
|
||||
Fluxer runs as a single `fluxer-server` container that bundles:
|
||||
- Frontend app, REST API, WebSocket gateway, admin panel, media proxy, and S3 storage
|
||||
|
||||
### Supporting Services
|
||||
| Service | Purpose | Image |
|
||||
|---------|---------|-------|
|
||||
| valkey | Cache/sessions (Redis-compatible) | `valkey/valkey:8.0.6-alpine` |
|
||||
| meilisearch | Full-text search | `getmeili/meilisearch:v1.14` |
|
||||
| elasticsearch | Alternative search | `elasticsearch:8.19.11` |
|
||||
| livekit | Voice/video calls | `livekit/livekit-server:v1.9.11` |
|
||||
| nats-core | Message broker | `nats:2-alpine` |
|
||||
| nats-jetstream | Persistent streaming | `nats:2-alpine` |
|
||||
|
||||
### Network Configuration
|
||||
- **Fluxer server**: `127.0.0.1:8088` (only accessible via nginx)
|
||||
- **Nginx**: Ports 80/443 on the host, terminates SSL
|
||||
- **Subdomains**: `api`, `events`, `files`, `proxy`, `voice` — all routed to fluxer_server on different path prefixes
|
||||
|
||||
## Initial Setup
|
||||
|
||||
### 1. Clone Repository
|
||||
```bash
|
||||
cd /root
|
||||
git clone https://github.com/fluxerapp/fluxer.git
|
||||
cd fluxer
|
||||
git checkout refactor
|
||||
```
|
||||
|
||||
### 2. Configure
|
||||
```bash
|
||||
# Edit the application config
|
||||
vim config/config.json
|
||||
|
||||
# Set base domain, S3 credentials, etc.
|
||||
```
|
||||
|
||||
### 3. Build and Deploy
|
||||
```bash
|
||||
MEILI_MASTER_KEY=<your-key> docker compose build fluxer_server
|
||||
MEILI_MASTER_KEY=<your-key> docker compose up -d
|
||||
```
|
||||
|
||||
### 4. Verify
|
||||
```bash
|
||||
curl -fsS http://127.0.0.1:8088/_health
|
||||
# Should return JSON with all services healthy
|
||||
```
|
||||
|
||||
## Health Check
|
||||
|
||||
The `/_health` endpoint returns status for all internal services:
|
||||
```json
|
||||
{
|
||||
"status": "healthy",
|
||||
"services": {
|
||||
"kv": {"status": "healthy"},
|
||||
"s3": {"status": "healthy"},
|
||||
"jetstream": {"status": "healthy"},
|
||||
"mediaProxy": {"status": "healthy"},
|
||||
"admin": {"status": "healthy"},
|
||||
"api": {"status": "healthy"},
|
||||
"app": {"status": "healthy"}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
- [Fluxer Deployment Details](fluxer-deployment.md) — full deployment history, maintenance commands, and changelog
|
||||
- [Fluxer Migration Guide](fluxer-migration-guide.md) — migration from Stoat Chat (February 2026)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: April 7, 2026
|
||||
**Status**: Production Running
|
||||
Reference in New Issue
Block a user