{"id":50500851,"url":"https://github.com/singi-labs/barazo-deploy","last_synced_at":"2026-06-02T11:03:49.980Z","repository":{"id":337556599,"uuid":"1153568094","full_name":"singi-labs/barazo-deploy","owner":"singi-labs","description":"Barazo Docker Compose templates for self-hosting","archived":false,"fork":false,"pushed_at":"2026-03-27T23:41:54.000Z","size":531,"stargazers_count":5,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-28T02:41:39.700Z","etag":null,"topics":["atprotocol","docker-compose"],"latest_commit_sha":null,"homepage":"https://barazo.forum","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/singi-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-09T13:00:05.000Z","updated_at":"2026-03-27T23:41:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/singi-labs/barazo-deploy","commit_stats":null,"previous_names":["atgora-forum/atgora-deploy","barazo-forum/barazo-deploy","singi-labs/barazo-deploy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/singi-labs/barazo-deploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singi-labs%2Fbarazo-deploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singi-labs%2Fbarazo-deploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singi-labs%2Fbarazo-deploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singi-labs%2Fbarazo-deploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/singi-labs","download_url":"https://codeload.github.com/singi-labs/barazo-deploy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singi-labs%2Fbarazo-deploy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33818584,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atprotocol","docker-compose"],"created_at":"2026-06-02T11:03:48.540Z","updated_at":"2026-06-02T11:03:49.974Z","avatar_url":"https://github.com/singi-labs.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/singi-labs/.github/main/assets/logo-dark.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/singi-labs/.github/main/assets/logo-light.svg\"\u003e\n  \u003cimg alt=\"Barazo Logo\" src=\"https://raw.githubusercontent.com/singi-labs/.github/main/assets/logo-dark.svg\" width=\"120\"\u003e\n\u003c/picture\u003e\n\n# Barazo Deploy\n\n**Docker Compose templates for self-hosting Barazo forums.**\n\n[![Status: Alpha](https://img.shields.io/badge/status-alpha-orange)]()\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Validate](https://github.com/singi-labs/barazo-deploy/actions/workflows/validate-compose.yml/badge.svg)](https://github.com/singi-labs/barazo-deploy/actions/workflows/validate-compose.yml)\n\n\u003c/div\u003e\n\n---\n\n## Overview\n\nEverything you need to self-host a [Barazo](https://github.com/singi-labs) forum. Includes Docker Compose templates for development, production (single community), and global aggregator deployments. Automatic SSL via Caddy, backup/restore scripts, and network segmentation out of the box.\n\n---\n\n## Docker Compose Templates\n\n| File | Purpose |\n|------|---------|\n| `docker-compose.dev.yml` | Local development -- infrastructure services only (PostgreSQL, Valkey, Tap). Run API and Web separately with `pnpm dev`. |\n| `docker-compose.yml` | Production single-community deployment with automatic SSL via Caddy. Full stack. |\n| `docker-compose.global.yml` | Global aggregator override -- layers on top of `docker-compose.yml` with higher resource limits and PostgreSQL tuning for indexing all communities network-wide. |\n\n---\n\n## Services\n\n| Service | Image | Description |\n|---------|-------|-------------|\n| PostgreSQL 16 | `pgvector/pgvector:pg16` | Primary database with pgvector for full-text and optional semantic search |\n| Valkey 8 | `valkey/valkey:8-alpine` | Redis-compatible cache for sessions, rate limiting, and queues |\n| Tap | `ghcr.io/bluesky-social/indigo/tap:latest` | AT Protocol firehose consumer, filters `forum.barazo.*` records |\n| Barazo API | `ghcr.io/singi-labs/barazo-api` | AppView backend (Fastify, REST API, firehose indexing) |\n| Barazo Web | `ghcr.io/singi-labs/barazo-web` | Next.js frontend |\n| Caddy | `caddy:2-alpine` | Reverse proxy with automatic SSL via Let's Encrypt, HTTP/3 support |\n\nProduction uses two-network segmentation: PostgreSQL and Valkey sit on the `backend` network only and are unreachable from Caddy or the frontend. Only ports 80 and 443 are exposed externally.\n\n---\n\n## Image Tags\n\nBarazo API and Web images are published to [GitHub Container Registry](https://github.com/orgs/singi-labs/packages) (`ghcr.io/singi-labs/*`).\n\n| Tag | Meaning | When to use |\n|-----|---------|-------------|\n| `:latest` | Latest stable release | **Production.** Self-hosters should pin to this or a specific version. |\n| `:1.0.0`, `:1.0`, `:1` | Semver release tags | **Production.** Pin to a major or minor version for controlled upgrades. |\n| `:edge` | Latest build from `main` | **Staging/testing only.** Rebuilt on every push to `main`. May contain breaking changes. |\n| `:staging-{N}` | Immutable per-build tag | **Debugging.** Trace a specific staging deploy to its build number. |\n| `:sha-{hash}` | Git commit SHA | **Debugging.** Trace an image to its exact source commit. |\n\n**For self-hosters:** Use `:latest` or pin to a semver tag in your `.env`:\n\n```bash\nBARAZO_API_VERSION=1.0.0\nBARAZO_WEB_VERSION=1.0.0\n```\n\nThe production `docker-compose.yml` reads these variables (defaults to `latest` if unset).\n\n---\n\n## Deployment Modes\n\n**Development:**\n\nInfrastructure services only. Run API and Web locally with `pnpm dev`.\n\n```bash\ncp .env.example .env.dev\ndocker compose -f docker-compose.dev.yml up -d\n```\n\nServices exposed on the host: PostgreSQL (5432), Valkey (6379), Tap (2480).\n\n**Production -- Single Community:**\n\nFull stack deployment for one forum community with automatic SSL.\n\n```bash\ncp .env.example .env\n# Edit .env: set COMMUNITY_DOMAIN, passwords, COMMUNITY_DID, OAuth settings\ndocker compose up -d\n```\n\nThe forum will be available at `https://\u003cCOMMUNITY_DOMAIN\u003e` once Caddy obtains the SSL certificate.\n\n**Global Aggregator:**\n\nIndexes all Barazo communities across the AT Protocol network.\n\n```bash\ncp .env.example .env\n# Edit .env: set COMMUNITY_MODE=global, domain, passwords\ndocker compose -f docker-compose.yml -f docker-compose.global.yml up -d\n```\n\n**Minimum requirements:**\n\n| Mode | CPU | RAM | Storage | Bandwidth |\n|------|-----|-----|---------|-----------|\n| Single Community | 2 vCPU | 4 GB | 20 GB SSD | 1 TB/month |\n| Global Aggregator | 4 vCPU | 8 GB | 100 GB SSD | 5 TB/month |\n\n---\n\n## Scripts\n\n| Script | Description |\n|--------|-------------|\n| `scripts/backup.sh` | Creates a compressed PostgreSQL backup with timestamp. Supports optional encryption via [age](https://github.com/FiloSottile/age) (`--encrypt` flag). Automatically cleans up backups older than `BACKUP_RETAIN_DAYS` (default: 7). |\n| `scripts/restore.sh` | Restores a PostgreSQL backup from a `.sql.gz` or `.sql.gz.age` file. Stops the API and Web during restore, then restarts them. Supports encrypted backups via `BACKUP_PRIVATE_KEY_FILE`. |\n| `scripts/smoke-test.sh` | Validates a running Barazo instance. Checks Docker service health, database connectivity, API endpoints, frontend response, SSL certificate, and HTTPS redirect. Works locally or against a remote URL. |\n\n---\n\n## Environment Variables\n\nAll variables are documented in [`.env.example`](.env.example). Key groups:\n\n| Group | Variables | Notes |\n|-------|-----------|-------|\n| Community Identity | `COMMUNITY_NAME`, `COMMUNITY_DOMAIN`, `COMMUNITY_DID`, `COMMUNITY_MODE` | `COMMUNITY_MODE` is `single` or `global` |\n| Database | `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB`, `DATABASE_URL` | Change default passwords before production use |\n| Cache | `VALKEY_PASSWORD`, `VALKEY_URL` | Password required in production |\n| AT Protocol | `TAP_RELAY_URL`, `TAP_ADMIN_PASSWORD`, `RELAY_URL` | Default relay: `bsky.network` |\n| OAuth | `OAUTH_CLIENT_ID`, `OAUTH_REDIRECT_URI` | Set to your forum's public URL |\n| Frontend | `API_INTERNAL_URL`, `NEXT_PUBLIC_SITE_URL` | `API_INTERNAL_URL` for SSR (default: `http://localhost:3000`); browser uses relative URLs |\n| Search | `EMBEDDING_URL`, `AI_EMBEDDING_DIMENSIONS` | Optional semantic search via Ollama or compatible API |\n| Encryption | `AI_ENCRYPTION_KEY` | AES-256-GCM key for BYOK API key encryption at rest |\n| Cross-Posting | `FEATURE_CROSSPOST_FRONTPAGE` | Frontpage cross-posting toggle |\n| Plugins | `PLUGINS_ENABLED`, `PLUGIN_REGISTRY_URL` | Plugin system toggle and registry |\n| Monitoring | `GLITCHTIP_DSN`, `LOG_LEVEL` | GlitchTip/Sentry error reporting |\n| Backups | `BACKUP_PUBLIC_KEY` | age public key for encrypted backups |\n\n---\n\n## Quick Start\n\n```bash\ngit clone https://github.com/singi-labs/barazo-deploy.git\ncd barazo-deploy\n\n# Configure\ncp .env.example .env\nnano .env   # Set domain, passwords, community DID, OAuth\n\n# Start all services\ndocker compose up -d\n\n# Verify\ndocker compose ps           # All services should show \"healthy\"\n./scripts/smoke-test.sh     # Run smoke tests\n```\n\n---\n\n## Documentation\n\nDetailed guides are in the [`docs/`](docs/) directory:\n\n- [Installation](docs/installation.md) -- step-by-step setup\n- [Configuration](docs/configuration.md) -- all configuration options\n- [Administration](docs/administration.md) -- managing your forum\n- [Backups](docs/backups.md) -- backup and restore procedures\n- [Upgrading](docs/upgrading.md) -- version upgrade process\n\n---\n\n## Related Repositories\n\n| Repository | Description | License |\n|------------|-------------|---------|\n| [barazo-api](https://github.com/singi-labs/barazo-api) | AppView backend (Fastify, firehose, REST API) | AGPL-3.0 |\n| [barazo-web](https://github.com/singi-labs/barazo-web) | Forum frontend (Next.js, Tailwind) | MIT |\n| [barazo-lexicons](https://github.com/singi-labs/barazo-lexicons) | AT Protocol lexicon schemas + generated types | MIT |\n| [barazo-website](https://github.com/singi-labs/barazo-website) | Marketing + documentation site | MIT |\n\n---\n\n## Community\n\n- **Website:** [barazo.forum](https://barazo.forum)\n- **Discussions:** [GitHub Discussions](https://github.com/orgs/singi-labs/discussions)\n- **Issues:** [Report bugs](https://github.com/singi-labs/barazo-deploy/issues)\n\n---\n\n## License\n\n**MIT**\n\nSee [LICENSE](LICENSE) for full terms.\n\n---\n\nMade with ♥ in 🇪🇺 by [Singi Labs](https://singi.dev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingi-labs%2Fbarazo-deploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsingi-labs%2Fbarazo-deploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingi-labs%2Fbarazo-deploy/lists"}