Barazo Docker Compose templates for self-hosting barazo.forum

chore: rename barazo-forum to singi-labs across all files

+46 -46
+1 -1
.github/ISSUE_TEMPLATE/config.yml
··· 1 blank_issues_enabled: true 2 contact_links: 3 - name: File issue in barazo-workspace 4 - url: https://github.com/barazo-forum/barazo-workspace/issues/new/choose 5 about: We track all issues centrally in barazo-workspace. Please file there for cross-repo features, general feedback, or if unsure where an issue belongs.
··· 1 blank_issues_enabled: true 2 contact_links: 3 - name: File issue in barazo-workspace 4 + url: https://github.com/singi-labs/barazo-workspace/issues/new/choose 5 about: We track all issues centrally in barazo-workspace. Please file there for cross-repo features, general feedback, or if unsure where an issue belongs.
+2 -2
.github/workflows/build-smoke-test.yml
··· 48 - name: Check container image availability 49 id: check-images 50 run: | 51 - API_IMAGE="ghcr.io/barazo-forum/barazo-api:${BARAZO_API_VERSION}" 52 - WEB_IMAGE="ghcr.io/barazo-forum/barazo-web:${BARAZO_WEB_VERSION}" 53 54 MISSING=false 55 for IMAGE in "$API_IMAGE" "$WEB_IMAGE"; do
··· 48 - name: Check container image availability 49 id: check-images 50 run: | 51 + API_IMAGE="ghcr.io/singi-labs/barazo-api:${BARAZO_API_VERSION}" 52 + WEB_IMAGE="ghcr.io/singi-labs/barazo-web:${BARAZO_WEB_VERSION}" 53 54 MISSING=false 55 for IMAGE in "$API_IMAGE" "$WEB_IMAGE"; do
+2 -2
.github/workflows/cla.yml
··· 23 PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_BOT_TOKEN }} 24 with: 25 path-to-signatures: 'signatures/cla.json' 26 - path-to-document: 'https://github.com/barazo-forum/.github/blob/main/CLA.md' 27 branch: 'main' 28 allowlist: 'gxjansen,dependabot[bot],github-actions[bot]' 29 - remote-organization-name: 'barazo-forum' 30 remote-repository-name: '.github' 31 lock-pullrequest-aftermerge: false 32 use-dco-flag: false
··· 23 PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_BOT_TOKEN }} 24 with: 25 path-to-signatures: 'signatures/cla.json' 26 + path-to-document: 'https://github.com/singi-labs/.github/blob/main/CLA.md' 27 branch: 'main' 28 allowlist: 'gxjansen,dependabot[bot],github-actions[bot]' 29 + remote-organization-name: 'singi-labs' 30 remote-repository-name: '.github' 31 lock-pullrequest-aftermerge: false 32 use-dco-flag: false
+11 -11
.github/workflows/deploy-staging.yml
··· 72 - name: Checkout barazo-workspace 73 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 74 with: 75 - repository: barazo-forum/barazo-workspace 76 path: _workspace 77 78 # Copy workspace root files (lockfile, catalogs) over deploy repo root. ··· 88 - name: Checkout barazo-lexicons 89 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 90 with: 91 - repository: barazo-forum/barazo-lexicons 92 path: barazo-lexicons 93 94 - name: Checkout barazo-api 95 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 96 with: 97 - repository: barazo-forum/barazo-api 98 ref: ${{ steps.refs.outputs.api_ref }} 99 path: barazo-api 100 101 - name: Checkout barazo-web 102 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 103 with: 104 - repository: barazo-forum/barazo-web 105 ref: ${{ steps.refs.outputs.web_ref }} 106 path: barazo-web 107 ··· 128 file: barazo-api/Dockerfile 129 push: true 130 tags: | 131 - ${{ env.REGISTRY }}/barazo-forum/barazo-api:edge 132 - ${{ env.REGISTRY }}/barazo-forum/barazo-api:staging-${{ github.run_number }} 133 cache-from: type=gha,scope=api 134 cache-to: type=gha,mode=max,scope=api 135 platforms: linux/amd64 ··· 141 file: barazo-web/Dockerfile 142 push: true 143 tags: | 144 - ${{ env.REGISTRY }}/barazo-forum/barazo-web:edge 145 - ${{ env.REGISTRY }}/barazo-forum/barazo-web:staging-${{ github.run_number }} 146 cache-from: type=gha,scope=web 147 cache-to: type=gha,mode=max,scope=web 148 platforms: linux/amd64 ··· 160 set -e 161 cd ${{ env.DEPLOY_PATH }} 162 echo "Syncing configuration files from repo (commit ${{ github.sha }})..." 163 - BASE="https://raw.githubusercontent.com/barazo-forum/barazo-deploy/${{ github.sha }}" 164 for f in docker-compose.yml docker-compose.staging.yml Caddyfile .env.example; do 165 wget -qO "$f.tmp" "$BASE/$f" 166 mv "$f.tmp" "$f" ··· 364 if [ -n "$API_DIGEST" ] && [ "$API_DIGEST" != "no-previous-api" ]; then 365 echo "Rolling back API to: $API_DIGEST" 366 docker pull "$API_DIGEST" 367 - docker tag "$API_DIGEST" ghcr.io/barazo-forum/barazo-api:edge 368 fi 369 370 if [ -n "$WEB_DIGEST" ] && [ "$WEB_DIGEST" != "no-previous-web" ]; then 371 echo "Rolling back Web to: $WEB_DIGEST" 372 docker pull "$WEB_DIGEST" 373 - docker tag "$WEB_DIGEST" ghcr.io/barazo-forum/barazo-web:edge 374 fi 375 376 docker compose ${{ env.COMPOSE_FILES }} up -d
··· 72 - name: Checkout barazo-workspace 73 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 74 with: 75 + repository: singi-labs/barazo-workspace 76 path: _workspace 77 78 # Copy workspace root files (lockfile, catalogs) over deploy repo root. ··· 88 - name: Checkout barazo-lexicons 89 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 90 with: 91 + repository: singi-labs/barazo-lexicons 92 path: barazo-lexicons 93 94 - name: Checkout barazo-api 95 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 96 with: 97 + repository: singi-labs/barazo-api 98 ref: ${{ steps.refs.outputs.api_ref }} 99 path: barazo-api 100 101 - name: Checkout barazo-web 102 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 103 with: 104 + repository: singi-labs/barazo-web 105 ref: ${{ steps.refs.outputs.web_ref }} 106 path: barazo-web 107 ··· 128 file: barazo-api/Dockerfile 129 push: true 130 tags: | 131 + ${{ env.REGISTRY }}/singi-labs/barazo-api:edge 132 + ${{ env.REGISTRY }}/singi-labs/barazo-api:staging-${{ github.run_number }} 133 cache-from: type=gha,scope=api 134 cache-to: type=gha,mode=max,scope=api 135 platforms: linux/amd64 ··· 141 file: barazo-web/Dockerfile 142 push: true 143 tags: | 144 + ${{ env.REGISTRY }}/singi-labs/barazo-web:edge 145 + ${{ env.REGISTRY }}/singi-labs/barazo-web:staging-${{ github.run_number }} 146 cache-from: type=gha,scope=web 147 cache-to: type=gha,mode=max,scope=web 148 platforms: linux/amd64 ··· 160 set -e 161 cd ${{ env.DEPLOY_PATH }} 162 echo "Syncing configuration files from repo (commit ${{ github.sha }})..." 163 + BASE="https://raw.githubusercontent.com/singi-labs/barazo-deploy/${{ github.sha }}" 164 for f in docker-compose.yml docker-compose.staging.yml Caddyfile .env.example; do 165 wget -qO "$f.tmp" "$BASE/$f" 166 mv "$f.tmp" "$f" ··· 364 if [ -n "$API_DIGEST" ] && [ "$API_DIGEST" != "no-previous-api" ]; then 365 echo "Rolling back API to: $API_DIGEST" 366 docker pull "$API_DIGEST" 367 + docker tag "$API_DIGEST" ghcr.io/singi-labs/barazo-api:edge 368 fi 369 370 if [ -n "$WEB_DIGEST" ] && [ "$WEB_DIGEST" != "no-previous-web" ]; then 371 echo "Rolling back Web to: $WEB_DIGEST" 372 docker pull "$WEB_DIGEST" 373 + docker tag "$WEB_DIGEST" ghcr.io/singi-labs/barazo-web:edge 374 fi 375 376 docker compose ${{ env.COMPOSE_FILES }} up -d
+4 -4
AGENTS.md
··· 1 # Barazo Deploy -- Self-Hosting Templates 2 3 <!-- Auto-generated from barazo-workspace. To propose changes, edit the source: 4 - https://github.com/barazo-forum/barazo-workspace/tree/main/agents-md --> 5 6 - MIT | Part of [github.com/barazo-forum](https://github.com/barazo-forum) 7 8 Docker Compose templates and documentation for self-hosting a Barazo forum instance. 9 ··· 39 40 Open-source forum software built on the [AT Protocol](https://atproto.com/). Portable identity, member-owned data, no lock-in. 41 42 - - **Organization:** [github.com/barazo-forum](https://github.com/barazo-forum) 43 - **License:** AGPL-3.0 (backend) / MIT (frontend, lexicons, deploy) / CC BY-SA 4.0 + MIT (docs) / Proprietary (website) 44 - - **Contributing:** See [CONTRIBUTING.md](https://github.com/barazo-forum/.github/blob/main/CONTRIBUTING.md) 45 46 ### Coding Standards 47
··· 1 # Barazo Deploy -- Self-Hosting Templates 2 3 <!-- Auto-generated from barazo-workspace. To propose changes, edit the source: 4 + https://github.com/singi-labs/barazo-workspace/tree/main/agents-md --> 5 6 + MIT | Part of [github.com/singi-labs](https://github.com/singi-labs) 7 8 Docker Compose templates and documentation for self-hosting a Barazo forum instance. 9 ··· 39 40 Open-source forum software built on the [AT Protocol](https://atproto.com/). Portable identity, member-owned data, no lock-in. 41 42 + - **Organization:** [github.com/singi-labs](https://github.com/singi-labs) 43 - **License:** AGPL-3.0 (backend) / MIT (frontend, lexicons, deploy) / CC BY-SA 4.0 + MIT (docs) / Proprietary (website) 44 + - **Contributing:** See [CONTRIBUTING.md](https://github.com/singi-labs/.github/blob/main/CONTRIBUTING.md) 45 46 ### Coding Standards 47
+1 -1
LICENSE
··· 1 MIT License 2 3 - Copyright (c) 2026 barazo-forum 4 5 Permission is hereby granted, free of charge, to any person obtaining a copy 6 of this software and associated documentation files (the "Software"), to deal
··· 1 MIT License 2 3 + Copyright (c) 2026 singi-labs 4 5 Permission is hereby granted, free of charge, to any person obtaining a copy 6 of this software and associated documentation files (the "Software"), to deal
+15 -15
README.md
··· 1 <div align="center"> 2 3 <picture> 4 - <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/barazo-forum/.github/main/assets/logo-dark.svg"> 5 - <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/barazo-forum/.github/main/assets/logo-light.svg"> 6 - <img alt="Barazo Logo" src="https://raw.githubusercontent.com/barazo-forum/.github/main/assets/logo-dark.svg" width="120"> 7 </picture> 8 9 # Barazo Deploy ··· 12 13 [![Status: Alpha](https://img.shields.io/badge/status-alpha-orange)]() 14 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 15 - [![Validate](https://github.com/barazo-forum/barazo-deploy/actions/workflows/validate-compose.yml/badge.svg)](https://github.com/barazo-forum/barazo-deploy/actions/workflows/validate-compose.yml) 16 17 </div> 18 ··· 20 21 ## Overview 22 23 - Everything you need to self-host a [Barazo](https://github.com/barazo-forum) 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. 24 25 --- 26 ··· 41 | PostgreSQL 16 | `pgvector/pgvector:pg16` | Primary database with pgvector for full-text and optional semantic search | 42 | Valkey 8 | `valkey/valkey:8-alpine` | Redis-compatible cache for sessions, rate limiting, and queues | 43 | Tap | `ghcr.io/bluesky-social/indigo/tap:latest` | AT Protocol firehose consumer, filters `forum.barazo.*` records | 44 - | Barazo API | `ghcr.io/barazo-forum/barazo-api` | AppView backend (Fastify, REST API, firehose indexing) | 45 - | Barazo Web | `ghcr.io/barazo-forum/barazo-web` | Next.js frontend | 46 | Caddy | `caddy:2-alpine` | Reverse proxy with automatic SSL via Let's Encrypt, HTTP/3 support | 47 48 Production 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. ··· 51 52 ## Image Tags 53 54 - Barazo API and Web images are published to [GitHub Container Registry](https://github.com/orgs/barazo-forum/packages) (`ghcr.io/barazo-forum/*`). 55 56 | Tag | Meaning | When to use | 57 |-----|---------|-------------| ··· 150 ## Quick Start 151 152 ```bash 153 - git clone https://github.com/barazo-forum/barazo-deploy.git 154 cd barazo-deploy 155 156 # Configure ··· 183 184 | Repository | Description | License | 185 |------------|-------------|---------| 186 - | [barazo-api](https://github.com/barazo-forum/barazo-api) | AppView backend (Fastify, firehose, REST API) | AGPL-3.0 | 187 - | [barazo-web](https://github.com/barazo-forum/barazo-web) | Forum frontend (Next.js, Tailwind) | MIT | 188 - | [barazo-lexicons](https://github.com/barazo-forum/barazo-lexicons) | AT Protocol lexicon schemas + generated types | MIT | 189 - | [barazo-website](https://github.com/barazo-forum/barazo-website) | Marketing + documentation site | MIT | 190 191 --- 192 193 ## Community 194 195 - **Website:** [barazo.forum](https://barazo.forum) 196 - - **Discussions:** [GitHub Discussions](https://github.com/orgs/barazo-forum/discussions) 197 - - **Issues:** [Report bugs](https://github.com/barazo-forum/barazo-deploy/issues) 198 199 --- 200
··· 1 <div align="center"> 2 3 <picture> 4 + <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/singi-labs/.github/main/assets/logo-dark.svg"> 5 + <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/singi-labs/.github/main/assets/logo-light.svg"> 6 + <img alt="Barazo Logo" src="https://raw.githubusercontent.com/singi-labs/.github/main/assets/logo-dark.svg" width="120"> 7 </picture> 8 9 # Barazo Deploy ··· 12 13 [![Status: Alpha](https://img.shields.io/badge/status-alpha-orange)]() 14 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 15 + [![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) 16 17 </div> 18 ··· 20 21 ## Overview 22 23 + Everything 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. 24 25 --- 26 ··· 41 | PostgreSQL 16 | `pgvector/pgvector:pg16` | Primary database with pgvector for full-text and optional semantic search | 42 | Valkey 8 | `valkey/valkey:8-alpine` | Redis-compatible cache for sessions, rate limiting, and queues | 43 | Tap | `ghcr.io/bluesky-social/indigo/tap:latest` | AT Protocol firehose consumer, filters `forum.barazo.*` records | 44 + | Barazo API | `ghcr.io/singi-labs/barazo-api` | AppView backend (Fastify, REST API, firehose indexing) | 45 + | Barazo Web | `ghcr.io/singi-labs/barazo-web` | Next.js frontend | 46 | Caddy | `caddy:2-alpine` | Reverse proxy with automatic SSL via Let's Encrypt, HTTP/3 support | 47 48 Production 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. ··· 51 52 ## Image Tags 53 54 + Barazo API and Web images are published to [GitHub Container Registry](https://github.com/orgs/singi-labs/packages) (`ghcr.io/singi-labs/*`). 55 56 | Tag | Meaning | When to use | 57 |-----|---------|-------------| ··· 150 ## Quick Start 151 152 ```bash 153 + git clone https://github.com/singi-labs/barazo-deploy.git 154 cd barazo-deploy 155 156 # Configure ··· 183 184 | Repository | Description | License | 185 |------------|-------------|---------| 186 + | [barazo-api](https://github.com/singi-labs/barazo-api) | AppView backend (Fastify, firehose, REST API) | AGPL-3.0 | 187 + | [barazo-web](https://github.com/singi-labs/barazo-web) | Forum frontend (Next.js, Tailwind) | MIT | 188 + | [barazo-lexicons](https://github.com/singi-labs/barazo-lexicons) | AT Protocol lexicon schemas + generated types | MIT | 189 + | [barazo-website](https://github.com/singi-labs/barazo-website) | Marketing + documentation site | MIT | 190 191 --- 192 193 ## Community 194 195 - **Website:** [barazo.forum](https://barazo.forum) 196 + - **Discussions:** [GitHub Discussions](https://github.com/orgs/singi-labs/discussions) 197 + - **Issues:** [Report bugs](https://github.com/singi-labs/barazo-deploy/issues) 198 199 --- 200
+2 -2
docker-compose.staging.yml
··· 17 services: 18 # Override API for staging 19 barazo-api: 20 - image: ghcr.io/barazo-forum/barazo-api:edge 21 environment: 22 NODE_ENV: staging 23 LOG_LEVEL: debug ··· 29 30 # Override Web for staging 31 barazo-web: 32 - image: ghcr.io/barazo-forum/barazo-web:edge 33 34 # Staging postgres -- no resource overrides, keep defaults 35 # (staging uses smallest Hetzner VPS)
··· 17 services: 18 # Override API for staging 19 barazo-api: 20 + image: ghcr.io/singi-labs/barazo-api:edge 21 environment: 22 NODE_ENV: staging 23 LOG_LEVEL: debug ··· 29 30 # Override Web for staging 31 barazo-web: 32 + image: ghcr.io/singi-labs/barazo-web:edge 33 34 # Staging postgres -- no resource overrides, keep defaults 35 # (staging uses smallest Hetzner VPS)
+2 -2
docker-compose.yml
··· 95 # Barazo API (AppView backend -- Fastify, REST API, firehose indexing) 96 # --------------------------------------------------------------------------- 97 barazo-api: 98 - image: ghcr.io/barazo-forum/barazo-api:${BARAZO_API_VERSION:-latest} 99 restart: unless-stopped 100 logging: *default-logging 101 environment: ··· 146 # Barazo Web (Next.js frontend) 147 # --------------------------------------------------------------------------- 148 barazo-web: 149 - image: ghcr.io/barazo-forum/barazo-web:${BARAZO_WEB_VERSION:-latest} 150 restart: unless-stopped 151 logging: *default-logging 152 environment:
··· 95 # Barazo API (AppView backend -- Fastify, REST API, firehose indexing) 96 # --------------------------------------------------------------------------- 97 barazo-api: 98 + image: ghcr.io/singi-labs/barazo-api:${BARAZO_API_VERSION:-latest} 99 restart: unless-stopped 100 logging: *default-logging 101 environment: ··· 146 # Barazo Web (Next.js frontend) 147 # --------------------------------------------------------------------------- 148 barazo-web: 149 + image: ghcr.io/singi-labs/barazo-web:${BARAZO_WEB_VERSION:-latest} 150 restart: unless-stopped 151 logging: *default-logging 152 environment:
+3 -3
docs/deployment-checklist.md
··· 58 59 - [ ] Clone deploy repo: 60 ```bash 61 - git clone https://github.com/barazo-forum/barazo-deploy.git 62 cd barazo-deploy 63 ``` 64 - [ ] Create `.env` from template: ··· 100 - [ ] Pin Docker image versions in `docker-compose.yml`: 101 ```yaml 102 barazo-api: 103 - image: ghcr.io/barazo-forum/barazo-api:X.Y.Z 104 barazo-web: 105 - image: ghcr.io/barazo-forum/barazo-web:X.Y.Z 106 ``` 107 - [ ] Verify no `CHANGE_ME` values remain: 108 ```bash
··· 58 59 - [ ] Clone deploy repo: 60 ```bash 61 + git clone https://github.com/singi-labs/barazo-deploy.git 62 cd barazo-deploy 63 ``` 64 - [ ] Create `.env` from template: ··· 100 - [ ] Pin Docker image versions in `docker-compose.yml`: 101 ```yaml 102 barazo-api: 103 + image: ghcr.io/singi-labs/barazo-api:X.Y.Z 104 barazo-web: 105 + image: ghcr.io/singi-labs/barazo-web:X.Y.Z 106 ``` 107 - [ ] Verify no `CHANGE_ME` values remain: 108 ```bash
+2 -2
docs/installation.md
··· 34 ## 2. Clone the Repository 35 36 ```bash 37 - git clone https://github.com/barazo-forum/barazo-deploy.git 38 cd barazo-deploy 39 ``` 40 ··· 127 128 ```bash 129 # Clone the repo on your staging VPS 130 - git clone https://github.com/barazo-forum/barazo-deploy.git 131 cd barazo-deploy 132 133 # Copy the staging template and fill in secrets
··· 34 ## 2. Clone the Repository 35 36 ```bash 37 + git clone https://github.com/singi-labs/barazo-deploy.git 38 cd barazo-deploy 39 ``` 40 ··· 127 128 ```bash 129 # Clone the repo on your staging VPS 130 + git clone https://github.com/singi-labs/barazo-deploy.git 131 cd barazo-deploy 132 133 # Copy the staging template and fill in secrets
+1 -1
infrastructure/staging.md
··· 16 -> repository_dispatch event -> barazo-deploy 17 -> Checkout all repos (deploy, lexicons, api, web) 18 -> Build Docker images (amd64 only) 19 - -> Push to ghcr.io/barazo-forum/* 20 -> SSH to staging VPS: 21 1. Save current image digests (for rollback) 22 2. Check .env.example for new required vars
··· 16 -> repository_dispatch event -> barazo-deploy 17 -> Checkout all repos (deploy, lexicons, api, web) 18 -> Build Docker images (amd64 only) 19 + -> Push to ghcr.io/singi-labs/* 20 -> SSH to staging VPS: 21 1. Save current image digests (for rollback) 22 2. Check .env.example for new required vars