mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:41:09 +02:00
feat(infra): add Forgejo for self-hosted Git + CI/CD
- Forgejo v11 on port 3041 (git.mana.how via Cloudflare Tunnel) - Forgejo Runner for CI/CD (GitHub Actions compatible) - Built-in Docker registry and LFS support - Registration disabled (admin-only) - SSH access on port 2222 - Go Services CI workflow (.forgejo/workflows/go-services.yml) - Setup script: scripts/mac-mini/setup-forgejo.sh Replaces GitHub dependency for CI/CD. GitHub can remain as mirror/backup while Forgejo becomes the primary Git host. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4318948980
commit
8d36aba134
4 changed files with 298 additions and 97 deletions
76
.forgejo/workflows/go-services.yml
Normal file
76
.forgejo/workflows/go-services.yml
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
# CI for Go Services
|
||||||
|
# Runs on push to main or PRs — builds and tests all Go services
|
||||||
|
# Compatible with both Forgejo Actions and GitHub Actions
|
||||||
|
|
||||||
|
name: Go Services CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- 'services/mana-search-go/**'
|
||||||
|
- 'services/mana-notify-go/**'
|
||||||
|
- 'services/mana-crawler-go/**'
|
||||||
|
- 'services/mana-api-gateway-go/**'
|
||||||
|
- 'services/mana-sync/**'
|
||||||
|
- 'services/mana-matrix-bot/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'services/mana-*-go/**'
|
||||||
|
- 'services/mana-sync/**'
|
||||||
|
- 'services/mana-matrix-bot/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
service:
|
||||||
|
- mana-search-go
|
||||||
|
- mana-notify-go
|
||||||
|
- mana-crawler-go
|
||||||
|
- mana-api-gateway-go
|
||||||
|
- mana-sync
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.25'
|
||||||
|
|
||||||
|
- name: Test ${{ matrix.service }}
|
||||||
|
run: |
|
||||||
|
cd services/${{ matrix.service }}
|
||||||
|
go vet ./...
|
||||||
|
go test ./... -v -count=1
|
||||||
|
|
||||||
|
- name: Build ${{ matrix.service }}
|
||||||
|
run: |
|
||||||
|
cd services/${{ matrix.service }}
|
||||||
|
CGO_ENABLED=0 go build -ldflags="-s -w" -o /dev/null ./cmd/server
|
||||||
|
|
||||||
|
docker:
|
||||||
|
needs: test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- service: mana-search-go
|
||||||
|
image: mana-search
|
||||||
|
- service: mana-notify-go
|
||||||
|
image: mana-notify
|
||||||
|
- service: mana-crawler-go
|
||||||
|
image: mana-crawler
|
||||||
|
- service: mana-api-gateway-go
|
||||||
|
image: mana-api-gateway
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build Docker image
|
||||||
|
run: |
|
||||||
|
docker build \
|
||||||
|
-f services/${{ matrix.service }}/Dockerfile \
|
||||||
|
-t ${{ matrix.image }}:${{ github.sha }} \
|
||||||
|
-t ${{ matrix.image }}:latest \
|
||||||
|
.
|
||||||
|
|
@ -18,6 +18,10 @@ ingress:
|
||||||
- hostname: api.mana.how
|
- hostname: api.mana.how
|
||||||
service: http://localhost:3060
|
service: http://localhost:3060
|
||||||
|
|
||||||
|
# Forgejo (Git + CI/CD)
|
||||||
|
- hostname: git.mana.how
|
||||||
|
service: http://localhost:3041
|
||||||
|
|
||||||
# Chat App
|
# Chat App
|
||||||
- hostname: chat.mana.how
|
- hostname: chat.mana.how
|
||||||
service: http://localhost:5010
|
service: http://localhost:5010
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,65 @@ services:
|
||||||
exit 0;
|
exit 0;
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# Tier 0b: Forgejo (Git + CI/CD + Registry)
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:11
|
||||||
|
container_name: mana-core-forgejo
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
USER_UID: 1000
|
||||||
|
USER_GID: 1000
|
||||||
|
FORGEJO__database__DB_TYPE: postgres
|
||||||
|
FORGEJO__database__HOST: postgres:5432
|
||||||
|
FORGEJO__database__NAME: forgejo
|
||||||
|
FORGEJO__database__USER: postgres
|
||||||
|
FORGEJO__database__PASSWD: ${POSTGRES_PASSWORD:-mana123}
|
||||||
|
FORGEJO__server__DOMAIN: git.mana.how
|
||||||
|
FORGEJO__server__SSH_DOMAIN: git.mana.how
|
||||||
|
FORGEJO__server__ROOT_URL: https://git.mana.how/
|
||||||
|
FORGEJO__server__HTTP_PORT: 3000
|
||||||
|
FORGEJO__server__SSH_PORT: 2222
|
||||||
|
FORGEJO__server__LFS_START_SERVER: "true"
|
||||||
|
FORGEJO__service__DISABLE_REGISTRATION: "true"
|
||||||
|
FORGEJO__service__REQUIRE_SIGNIN_VIEW: "false"
|
||||||
|
FORGEJO__actions__ENABLED: "true"
|
||||||
|
FORGEJO__actions__DEFAULT_ACTIONS_URL: https://code.forgejo.org
|
||||||
|
FORGEJO__packages__ENABLED: "true"
|
||||||
|
FORGEJO__ui__DEFAULT_THEME: forgejo-dark
|
||||||
|
FORGEJO__ui__SHOW_USER_EMAIL: "false"
|
||||||
|
FORGEJO__mailer__ENABLED: "false"
|
||||||
|
volumes:
|
||||||
|
- /Volumes/ManaData/forgejo:/data
|
||||||
|
ports:
|
||||||
|
- "3041:3000"
|
||||||
|
- "2222:2222"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/api/v1/version"]
|
||||||
|
interval: 120s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
forgejo-runner:
|
||||||
|
image: codeberg.org/forgejo/runner:6
|
||||||
|
container_name: mana-core-forgejo-runner
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
forgejo:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
DOCKER_HOST: unix:///var/run/docker.sock
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- /Volumes/ManaData/forgejo-runner:/data
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# Tier 1: Core Auth Service (Port 3001)
|
# Tier 1: Core Auth Service (Port 3001)
|
||||||
# ============================================
|
# ============================================
|
||||||
|
|
@ -208,7 +267,7 @@ services:
|
||||||
# Cross-domain SSO: share session cookies across all *.mana.how subdomains
|
# Cross-domain SSO: share session cookies across all *.mana.how subdomains
|
||||||
COOKIE_DOMAIN: .mana.how
|
COOKIE_DOMAIN: .mana.how
|
||||||
MANA_CORE_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
MANA_CORE_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
||||||
MANA_CREDITS_URL: http://mana-credits:3061
|
MANA_CREDITS_URL: http://mana-credits:3002
|
||||||
SMTP_HOST: smtp-relay.brevo.com
|
SMTP_HOST: smtp-relay.brevo.com
|
||||||
SMTP_PORT: 587
|
SMTP_PORT: 587
|
||||||
SMTP_USER: ${SMTP_USER:-94cde5002@smtp-brevo.com}
|
SMTP_USER: ${SMTP_USER:-94cde5002@smtp-brevo.com}
|
||||||
|
|
@ -221,15 +280,15 @@ services:
|
||||||
CHAT_BACKEND_URL: http://chat-backend:3030
|
CHAT_BACKEND_URL: http://chat-backend:3030
|
||||||
TODO_BACKEND_URL: http://todo-backend:3031
|
TODO_BACKEND_URL: http://todo-backend:3031
|
||||||
CALENDAR_BACKEND_URL: http://calendar-backend:3032
|
CALENDAR_BACKEND_URL: http://calendar-backend:3032
|
||||||
CONTACTS_BACKEND_URL: http://contacts-backend:3034
|
CONTACTS_BACKEND_URL: http://contacts-backend:3033
|
||||||
PICTURE_BACKEND_URL: http://picture-backend:3040
|
PICTURE_BACKEND_URL: http://picture-backend:3035
|
||||||
# PRESI_BACKEND_URL: removed — replaced by Hono server
|
# PRESI_BACKEND_URL: removed — replaced by Hono server
|
||||||
# ZITARE_BACKEND_URL: removed — migrated to local-first
|
# ZITARE_BACKEND_URL: removed — migrated to local-first
|
||||||
# PHOTOS_BACKEND_URL: removed — migrated to local-first
|
# PHOTOS_BACKEND_URL: removed — migrated to local-first
|
||||||
# CLOCK_BACKEND_URL: removed — migrated to local-first
|
# CLOCK_BACKEND_URL: removed — migrated to local-first
|
||||||
STORAGE_BACKEND_URL: http://storage-backend:3035
|
STORAGE_BACKEND_URL: http://storage-backend:3034
|
||||||
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
||||||
MANA_LLM_URL: http://mana-llm:3025
|
MANA_LLM_URL: http://mana-llm:3020
|
||||||
# WebAuthn / Passkeys
|
# WebAuthn / Passkeys
|
||||||
WEBAUTHN_RP_ID: mana.how
|
WEBAUTHN_RP_ID: mana.how
|
||||||
WEBAUTHN_ORIGINS: https://mana.how,https://calendar.mana.how,https://chat.mana.how,https://clock.mana.how,https://contacts.mana.how,https://context.mana.how,https://manadeck.mana.how,https://mukke.mana.how,https://nutriphi.mana.how,https://photos.mana.how,https://picture.mana.how,https://planta.mana.how,https://playground.mana.how,https://presi.mana.how,https://questions.mana.how,https://skilltree.mana.how,https://storage.mana.how,https://todo.mana.how,https://zitare.mana.how
|
WEBAUTHN_ORIGINS: https://mana.how,https://calendar.mana.how,https://chat.mana.how,https://clock.mana.how,https://contacts.mana.how,https://context.mana.how,https://manadeck.mana.how,https://mukke.mana.how,https://nutriphi.mana.how,https://photos.mana.how,https://picture.mana.how,https://planta.mana.how,https://playground.mana.how,https://presi.mana.how,https://questions.mana.how,https://skilltree.mana.how,https://storage.mana.how,https://todo.mana.how,https://zitare.mana.how
|
||||||
|
|
@ -260,7 +319,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
TZ: Europe/Berlin
|
TZ: Europe/Berlin
|
||||||
PORT: 3061
|
PORT: 3002
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana_credits
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana_credits
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
MANA_CORE_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
MANA_CORE_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
||||||
|
|
@ -269,9 +328,9 @@ services:
|
||||||
BASE_URL: https://credits.mana.how
|
BASE_URL: https://credits.mana.how
|
||||||
CORS_ORIGINS: https://mana.how,https://chat.mana.how,https://picture.mana.how,https://todo.mana.how,https://zitare.mana.how,https://calendar.mana.how,https://clock.mana.how,https://contacts.mana.how,https://manadeck.mana.how,https://presi.mana.how,https://storage.mana.how,https://nutriphi.mana.how,https://planta.mana.how,https://mukke.mana.how,https://context.mana.how,https://photos.mana.how,https://questions.mana.how
|
CORS_ORIGINS: https://mana.how,https://chat.mana.how,https://picture.mana.how,https://todo.mana.how,https://zitare.mana.how,https://calendar.mana.how,https://clock.mana.how,https://contacts.mana.how,https://manadeck.mana.how,https://presi.mana.how,https://storage.mana.how,https://nutriphi.mana.how,https://planta.mana.how,https://mukke.mana.how,https://context.mana.how,https://photos.mana.how,https://questions.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "3061:3061"
|
- "3002:3002"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "bun", "-e", "fetch('http://127.0.0.1:3061/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
test: ["CMD", "bun", "-e", "fetch('http://127.0.0.1:3002/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -280,7 +339,7 @@ services:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.mana-credits.rule=Host(`credits.mana.how`)"
|
- "traefik.http.routers.mana-credits.rule=Host(`credits.mana.how`)"
|
||||||
- "traefik.http.routers.mana-credits.tls=true"
|
- "traefik.http.routers.mana-credits.tls=true"
|
||||||
- "traefik.http.services.mana-credits.loadbalancer.server.port=3061"
|
- "traefik.http.services.mana-credits.loadbalancer.server.port=3002"
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# Tier 2: Gateway & Search Services (Ports 3010-3029)
|
# Tier 2: Gateway & Search Services (Ports 3010-3029)
|
||||||
|
|
@ -300,21 +359,21 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
TZ: Europe/Berlin
|
TZ: Europe/Berlin
|
||||||
PORT: 3060
|
PORT: 3016
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
REDIS_PASSWORD: ${REDIS_PASSWORD:-redis123}
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-redis123}
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
SEARCH_SERVICE_URL: http://mana-search:3020
|
SEARCH_SERVICE_URL: http://mana-search:3012
|
||||||
STT_SERVICE_URL: http://host.docker.internal:3026
|
STT_SERVICE_URL: http://host.docker.internal:3026
|
||||||
TTS_SERVICE_URL: http://host.docker.internal:3022
|
TTS_SERVICE_URL: http://host.docker.internal:3022
|
||||||
CORS_ORIGINS: https://api.mana.how,https://mana.how
|
CORS_ORIGINS: https://api.mana.how,https://mana.how
|
||||||
ADMIN_USER_IDS: ${ADMIN_USER_IDS:-}
|
ADMIN_USER_IDS: ${ADMIN_USER_IDS:-}
|
||||||
ports:
|
ports:
|
||||||
- "3060:3060"
|
- "3016:3016"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3060/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3016/health"]
|
||||||
interval: 60s
|
interval: 60s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -349,7 +408,7 @@ services:
|
||||||
searxng:
|
searxng:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
PORT: 3020
|
PORT: 3012
|
||||||
SEARXNG_URL: http://searxng:8080
|
SEARXNG_URL: http://searxng:8080
|
||||||
SEARXNG_TIMEOUT: 15000
|
SEARXNG_TIMEOUT: 15000
|
||||||
SEARXNG_DEFAULT_LANGUAGE: de-DE
|
SEARXNG_DEFAULT_LANGUAGE: de-DE
|
||||||
|
|
@ -361,9 +420,9 @@ services:
|
||||||
EXTRACT_TIMEOUT: 10000
|
EXTRACT_TIMEOUT: 10000
|
||||||
EXTRACT_MAX_LENGTH: 50000
|
EXTRACT_MAX_LENGTH: 50000
|
||||||
ports:
|
ports:
|
||||||
- "3020:3020"
|
- "3012:3012"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3020/health"]
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3012/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -380,14 +439,14 @@ services:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
PORT: 3051
|
PORT: 3010
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
||||||
JWKS_URL: http://mana-core-auth:3001/api/v1/auth/jwks
|
JWKS_URL: http://mana-core-auth:3001/api/v1/auth/jwks
|
||||||
CORS_ORIGINS: "https://mana.how,https://*.mana.how"
|
CORS_ORIGINS: "https://mana.how,https://*.mana.how"
|
||||||
ports:
|
ports:
|
||||||
- "3051:3051"
|
- "3010:3010"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3051/health"]
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3010/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -404,7 +463,7 @@ services:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
PORT: 3042
|
PORT: 3013
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
||||||
SERVICE_KEY: ${NOTIFY_SERVICE_KEY:-dev-service-key}
|
SERVICE_KEY: ${NOTIFY_SERVICE_KEY:-dev-service-key}
|
||||||
MANA_CORE_AUTH_URL: http://mana-core-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-core-auth:3001
|
||||||
|
|
@ -417,9 +476,9 @@ services:
|
||||||
MATRIX_HOMESERVER_URL: http://mana-matrix-synapse:8008
|
MATRIX_HOMESERVER_URL: http://mana-matrix-synapse:8008
|
||||||
MATRIX_ACCESS_TOKEN: ${MATRIX_NOTIFY_BOT_TOKEN:-}
|
MATRIX_ACCESS_TOKEN: ${MATRIX_NOTIFY_BOT_TOKEN:-}
|
||||||
ports:
|
ports:
|
||||||
- "3042:3042"
|
- "3013:3013"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3042/health"]
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3013/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -439,7 +498,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
TZ: Europe/Berlin
|
TZ: Europe/Berlin
|
||||||
PORT: 3023
|
PORT: 3014
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana?sslmode=disable
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
|
|
@ -447,9 +506,9 @@ services:
|
||||||
CRAWLER_USER_AGENT: "ManaCoreCrawler/1.0 (+https://mana.how/bot)"
|
CRAWLER_USER_AGENT: "ManaCoreCrawler/1.0 (+https://mana.how/bot)"
|
||||||
QUEUE_CONCURRENCY: 5
|
QUEUE_CONCURRENCY: 5
|
||||||
ports:
|
ports:
|
||||||
- "3023:3023"
|
- "3014:3014"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3023/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3014/health"]
|
||||||
interval: 60s
|
interval: 60s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -471,7 +530,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3015
|
PORT: 3011
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana_media
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mana_media
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
|
|
@ -487,9 +546,9 @@ services:
|
||||||
PUBLIC_URL: https://media.mana.how/api/v1
|
PUBLIC_URL: https://media.mana.how/api/v1
|
||||||
CORS_ORIGINS: https://mana.how,https://nutriphi.mana.how,https://contacts.mana.how,https://chat.mana.how,https://storage.mana.how,https://photos.mana.how
|
CORS_ORIGINS: https://mana.how,https://nutriphi.mana.how,https://contacts.mana.how,https://chat.mana.how,https://storage.mana.how,https://photos.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "3015:3015"
|
- "3011:3011"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3015/api/v1/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3011/api/v1/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -507,15 +566,15 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3050
|
PORT: 3015
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
CLOUDFLARE_API_TOKEN: ${CLOUDFLARE_API_TOKEN:-}
|
CLOUDFLARE_API_TOKEN: ${CLOUDFLARE_API_TOKEN:-}
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID:-}
|
CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID:-}
|
||||||
ORG_LANDING_DOMAIN: mana.how
|
ORG_LANDING_DOMAIN: mana.how
|
||||||
ports:
|
ports:
|
||||||
- "3050:3050"
|
- "3015:3015"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3050/api/v1/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3015/api/v1/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -541,7 +600,7 @@ services:
|
||||||
PORT: 3030
|
PORT: 3030
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/chat
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/chat
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
MANA_LLM_URL: http://mana-llm:3025
|
MANA_LLM_URL: http://mana-llm:3020
|
||||||
LLM_TIMEOUT: 120000
|
LLM_TIMEOUT: 120000
|
||||||
SUPABASE_URL: ${SUPABASE_URL:-}
|
SUPABASE_URL: ${SUPABASE_URL:-}
|
||||||
SUPABASE_SERVICE_KEY: ${SUPABASE_SERVICE_ROLE_KEY:-}
|
SUPABASE_SERVICE_KEY: ${SUPABASE_SERVICE_ROLE_KEY:-}
|
||||||
|
|
@ -630,7 +689,7 @@ services:
|
||||||
# Removed: minio - lazy connect
|
# Removed: minio - lazy connect
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3034
|
PORT: 3033
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/contacts
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/contacts
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
|
|
@ -645,9 +704,9 @@ services:
|
||||||
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
||||||
GLITCHTIP_DSN: http://a0d81e4b78694b57951a1a5de6d64ae7@glitchtip:8020/2
|
GLITCHTIP_DSN: http://a0d81e4b78694b57951a1a5de6d64ae7@glitchtip:8020/2
|
||||||
ports:
|
ports:
|
||||||
- "3034:3034"
|
- "3033:3033"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3034/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3033/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -665,7 +724,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3035
|
PORT: 3034
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/storage
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/storage
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
CORS_ORIGINS: https://storage.mana.how,https://mana.how
|
CORS_ORIGINS: https://storage.mana.how,https://mana.how
|
||||||
|
|
@ -680,9 +739,9 @@ services:
|
||||||
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
ADMIN_SERVICE_KEY: ${MANA_CORE_SERVICE_KEY}
|
||||||
GLITCHTIP_DSN: http://f38d9b20ba2d416b80d1c559b81fc275@glitchtip:8020/17
|
GLITCHTIP_DSN: http://f38d9b20ba2d416b80d1c559b81fc275@glitchtip:8020/17
|
||||||
ports:
|
ports:
|
||||||
- "3035:3035"
|
- "3034:3034"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3035/api/v1/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3034/api/v1/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -703,7 +762,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3009
|
PORT: 3036
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/manadeck
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/manadeck
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
CORS_ORIGINS: https://manadeck.mana.how,https://mana.how
|
CORS_ORIGINS: https://manadeck.mana.how,https://mana.how
|
||||||
|
|
@ -714,9 +773,9 @@ services:
|
||||||
S3_BUCKET: manadeck-storage
|
S3_BUCKET: manadeck-storage
|
||||||
GLITCHTIP_DSN: ""
|
GLITCHTIP_DSN: ""
|
||||||
ports:
|
ports:
|
||||||
- "3009:3009"
|
- "3036:3036"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3009/api/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3036/api/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -734,19 +793,19 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3037
|
PORT: 3038
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/nutriphi
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/nutriphi
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
DB_USER: postgres
|
DB_USER: postgres
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
MANA_LLM_URL: http://mana-llm:3025
|
MANA_LLM_URL: http://mana-llm:3020
|
||||||
CORS_ORIGINS: https://nutriphi.mana.how,https://mana.how
|
CORS_ORIGINS: https://nutriphi.mana.how,https://mana.how
|
||||||
GLITCHTIP_DSN: http://61b5689b903746b698bd1f77ae9e0be1@glitchtip:8020/11
|
GLITCHTIP_DSN: http://61b5689b903746b698bd1f77ae9e0be1@glitchtip:8020/11
|
||||||
ports:
|
ports:
|
||||||
- "3037:3037"
|
- "3038:3038"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3037/api/v1/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3038/api/v1/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -770,7 +829,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3010
|
PORT: 3037
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mukke
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/mukke
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
CORS_ORIGINS: https://mukke.mana.how,https://mana.how
|
CORS_ORIGINS: https://mukke.mana.how,https://mana.how
|
||||||
|
|
@ -783,9 +842,9 @@ services:
|
||||||
RUN_DB_PUSH: "true"
|
RUN_DB_PUSH: "true"
|
||||||
GLITCHTIP_DSN: http://9f792851d49d4f018625f45855f0a030@glitchtip:8020/9
|
GLITCHTIP_DSN: http://9f792851d49d4f018625f45855f0a030@glitchtip:8020/9
|
||||||
ports:
|
ports:
|
||||||
- "3010:3010"
|
- "3037:3037"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3010/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3037/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -805,14 +864,14 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3022
|
PORT: 3039
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/planta
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/planta
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
DB_USER: postgres
|
DB_USER: postgres
|
||||||
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
CORS_ORIGINS: https://planta.mana.how,https://mana.how
|
CORS_ORIGINS: https://planta.mana.how,https://mana.how
|
||||||
MANA_LLM_URL: http://mana-llm:3025
|
MANA_LLM_URL: http://mana-llm:3020
|
||||||
S3_ENDPOINT: http://minio:9000
|
S3_ENDPOINT: http://minio:9000
|
||||||
S3_PUBLIC_ENDPOINT: https://minio.mana.how
|
S3_PUBLIC_ENDPOINT: https://minio.mana.how
|
||||||
S3_REGION: us-east-1
|
S3_REGION: us-east-1
|
||||||
|
|
@ -821,9 +880,9 @@ services:
|
||||||
S3_BUCKET: planta-storage
|
S3_BUCKET: planta-storage
|
||||||
GLITCHTIP_DSN: http://646a927be6c54c989a75c145247d89f9@glitchtip:8020/13
|
GLITCHTIP_DSN: http://646a927be6c54c989a75c145247d89f9@glitchtip:8020/13
|
||||||
ports:
|
ports:
|
||||||
- "3022:3022"
|
- "3039:3039"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3022/api/v1/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3039/api/v1/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -876,7 +935,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker/matrix/element-config.json:/app/config.json:ro
|
- ./docker/matrix/element-config.json:/app/config.json:ro
|
||||||
ports:
|
ports:
|
||||||
- "4080:80"
|
- "4010:80"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80/"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80/"]
|
||||||
interval: 180s
|
interval: 180s
|
||||||
|
|
@ -896,12 +955,12 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5180
|
PORT: 4011
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL: https://auth.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "4090:5180"
|
- "4011:4011"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5180/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:4011/health"]
|
||||||
interval: 180s
|
interval: 180s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -926,7 +985,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
TZ: Europe/Berlin
|
TZ: Europe/Berlin
|
||||||
PORT: 4000
|
PORT: 4001
|
||||||
# Matrix
|
# Matrix
|
||||||
MATRIX_HOMESERVER_URL: http://synapse:8008
|
MATRIX_HOMESERVER_URL: http://synapse:8008
|
||||||
MATRIX_STORAGE_PATH: /app/data
|
MATRIX_STORAGE_PATH: /app/data
|
||||||
|
|
@ -981,16 +1040,16 @@ services:
|
||||||
TODO_BACKEND_URL: http://todo-backend:3031
|
TODO_BACKEND_URL: http://todo-backend:3031
|
||||||
CALENDAR_BACKEND_URL: http://calendar-backend:3032
|
CALENDAR_BACKEND_URL: http://calendar-backend:3032
|
||||||
# CLOCK_BACKEND_URL: removed — migrated to local-first
|
# CLOCK_BACKEND_URL: removed — migrated to local-first
|
||||||
CONTACTS_BACKEND_URL: http://contacts-backend:3034
|
CONTACTS_BACKEND_URL: http://contacts-backend:3033
|
||||||
# ZITARE_BACKEND_URL: removed — migrated to local-first
|
# ZITARE_BACKEND_URL: removed — migrated to local-first
|
||||||
PLANTA_BACKEND_URL: http://planta-backend:3022
|
PLANTA_BACKEND_URL: http://planta-backend:3039
|
||||||
NUTRIPHI_BACKEND_URL: http://nutriphi-backend:3037
|
NUTRIPHI_BACKEND_URL: http://nutriphi-backend:3038
|
||||||
STORAGE_BACKEND_URL: http://storage-backend:3035
|
STORAGE_BACKEND_URL: http://storage-backend:3034
|
||||||
volumes:
|
volumes:
|
||||||
- matrix_bots_data:/app/data
|
- matrix_bots_data:/app/data
|
||||||
# No host port mapping needed — only communicates with synapse internally
|
# No host port mapping needed — only communicates with synapse internally
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:4000/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:4001/health"]
|
||||||
interval: 60s
|
interval: 60s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -1020,7 +1079,7 @@ services:
|
||||||
PUBLIC_CALENDAR_API_URL: http://calendar-backend:3032
|
PUBLIC_CALENDAR_API_URL: http://calendar-backend:3032
|
||||||
PUBLIC_CALENDAR_API_URL_CLIENT: https://calendar-api.mana.how
|
PUBLIC_CALENDAR_API_URL_CLIENT: https://calendar-api.mana.how
|
||||||
# PUBLIC_CLOCK_API_URL: removed — migrated to local-first
|
# PUBLIC_CLOCK_API_URL: removed — migrated to local-first
|
||||||
PUBLIC_CONTACTS_API_URL: http://contacts-backend:3034
|
PUBLIC_CONTACTS_API_URL: http://contacts-backend:3033
|
||||||
PUBLIC_CONTACTS_API_URL_CLIENT: https://contacts-api.mana.how
|
PUBLIC_CONTACTS_API_URL_CLIENT: https://contacts-api.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "5000:5000"
|
- "5000:5000"
|
||||||
|
|
@ -1095,7 +1154,7 @@ services:
|
||||||
PORT: 5018
|
PORT: 5018
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3050
|
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3010
|
||||||
ports:
|
ports:
|
||||||
- "5018:5018"
|
- "5018:5018"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -1145,7 +1204,7 @@ services:
|
||||||
PORT: 5013
|
PORT: 5013
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3050
|
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3010
|
||||||
ports:
|
ports:
|
||||||
- "5013:5013"
|
- "5013:5013"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -1160,7 +1219,7 @@ services:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/contacts/apps/web/Dockerfile
|
dockerfile: apps/contacts/apps/web/Dockerfile
|
||||||
args:
|
args:
|
||||||
PUBLIC_BACKEND_URL: http://contacts-backend:3034
|
PUBLIC_BACKEND_URL: http://contacts-backend:3033
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
image: contacts-web:local
|
image: contacts-web:local
|
||||||
container_name: mana-app-contacts-web
|
container_name: mana-app-contacts-web
|
||||||
|
|
@ -1171,7 +1230,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5014
|
PORT: 5014
|
||||||
PUBLIC_BACKEND_URL: http://contacts-backend:3034
|
PUBLIC_BACKEND_URL: http://contacts-backend:3033
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_BACKEND_URL_CLIENT: https://contacts-api.mana.how
|
PUBLIC_BACKEND_URL_CLIENT: https://contacts-api.mana.how
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
|
|
@ -1190,7 +1249,7 @@ services:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/storage/apps/web/Dockerfile
|
dockerfile: apps/storage/apps/web/Dockerfile
|
||||||
args:
|
args:
|
||||||
PUBLIC_BACKEND_URL: http://storage-backend:3035
|
PUBLIC_BACKEND_URL: http://storage-backend:3034
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
image: storage-web:local
|
image: storage-web:local
|
||||||
container_name: mana-app-storage-web
|
container_name: mana-app-storage-web
|
||||||
|
|
@ -1201,7 +1260,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5015
|
PORT: 5015
|
||||||
PUBLIC_BACKEND_URL: http://storage-backend:3035
|
PUBLIC_BACKEND_URL: http://storage-backend:3034
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_BACKEND_URL_CLIENT: https://storage-api.mana.how
|
PUBLIC_BACKEND_URL_CLIENT: https://storage-api.mana.how
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
|
|
@ -1226,7 +1285,7 @@ services:
|
||||||
PORT: 5016
|
PORT: 5016
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3050
|
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3010
|
||||||
ports:
|
ports:
|
||||||
- "5016:5016"
|
- "5016:5016"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -1249,7 +1308,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5023
|
PORT: 5023
|
||||||
PUBLIC_BACKEND_URL: http://manadeck-backend:3009
|
PUBLIC_BACKEND_URL: http://manadeck-backend:3036
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_BACKEND_URL_CLIENT: https://manadeck-api.mana.how
|
PUBLIC_BACKEND_URL_CLIENT: https://manadeck-api.mana.how
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
|
|
@ -1272,7 +1331,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5017
|
PORT: 5017
|
||||||
PUBLIC_BACKEND_URL: http://nutriphi-backend:3037
|
PUBLIC_BACKEND_URL: http://nutriphi-backend:3038
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_BACKEND_URL_CLIENT: https://nutriphi-api.mana.how
|
PUBLIC_BACKEND_URL_CLIENT: https://nutriphi-api.mana.how
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
|
|
@ -1302,7 +1361,7 @@ services:
|
||||||
PORT: 5020
|
PORT: 5020
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_SYNC_SERVER_URL: ws://mana-core-sync:3051
|
PUBLIC_SYNC_SERVER_URL: ws://mana-core-sync:3010
|
||||||
ports:
|
ports:
|
||||||
- "5020:5020"
|
- "5020:5020"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -1318,7 +1377,7 @@ services:
|
||||||
dockerfile: apps/photos/apps/web/Dockerfile
|
dockerfile: apps/photos/apps/web/Dockerfile
|
||||||
args:
|
args:
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_MEDIA_URL: http://mana-media:3015
|
PUBLIC_MANA_MEDIA_URL: http://mana-media:3011
|
||||||
image: photos-web:local
|
image: photos-web:local
|
||||||
container_name: mana-app-photos-web
|
container_name: mana-app-photos-web
|
||||||
restart: always
|
restart: always
|
||||||
|
|
@ -1329,10 +1388,10 @@ services:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5019
|
PORT: 5019
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_MEDIA_URL: http://mana-media:3015
|
PUBLIC_MANA_MEDIA_URL: http://mana-media:3011
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_MANA_MEDIA_URL_CLIENT: https://media.mana.how
|
PUBLIC_MANA_MEDIA_URL_CLIENT: https://media.mana.how
|
||||||
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3050
|
PUBLIC_SYNC_SERVER_URL: ws://mana-sync:3010
|
||||||
ports:
|
ports:
|
||||||
- "5019:5019"
|
- "5019:5019"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -1347,7 +1406,7 @@ services:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/mukke/apps/web/Dockerfile
|
dockerfile: apps/mukke/apps/web/Dockerfile
|
||||||
args:
|
args:
|
||||||
PUBLIC_BACKEND_URL: http://mukke-backend:3010
|
PUBLIC_BACKEND_URL: http://mukke-backend:3037
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
image: mukke-web:local
|
image: mukke-web:local
|
||||||
container_name: mana-app-mukke-web
|
container_name: mana-app-mukke-web
|
||||||
|
|
@ -1357,15 +1416,15 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5180
|
PORT: 5024
|
||||||
PUBLIC_BACKEND_URL: http://mukke-backend:3010
|
PUBLIC_BACKEND_URL: http://mukke-backend:3037
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_BACKEND_URL_CLIENT: https://mukke-api.mana.how
|
PUBLIC_BACKEND_URL_CLIENT: https://mukke-api.mana.how
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "5180:5180"
|
- "5024:5024"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5180/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5024/health"]
|
||||||
interval: 180s
|
interval: 180s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -1388,7 +1447,7 @@ services:
|
||||||
PORT: 5022
|
PORT: 5022
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_SYNC_SERVER_URL: ws://mana-core-sync:3051
|
PUBLIC_SYNC_SERVER_URL: ws://mana-core-sync:3010
|
||||||
ports:
|
ports:
|
||||||
- "5022:5022"
|
- "5022:5022"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -1412,7 +1471,7 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 3040
|
PORT: 3035
|
||||||
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/picture
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/picture
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
|
|
@ -1430,9 +1489,9 @@ services:
|
||||||
S3_BUCKET: picture-storage
|
S3_BUCKET: picture-storage
|
||||||
CORS_ORIGINS: https://picture.mana.how,https://mana.how
|
CORS_ORIGINS: https://picture.mana.how,https://mana.how
|
||||||
ports:
|
ports:
|
||||||
- "3040:3040"
|
- "3035:3035"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3040/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3035/health"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -1443,7 +1502,7 @@ services:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/picture/apps/web/Dockerfile
|
dockerfile: apps/picture/apps/web/Dockerfile
|
||||||
args:
|
args:
|
||||||
PUBLIC_BACKEND_URL: http://picture-backend:3040
|
PUBLIC_BACKEND_URL: http://picture-backend:3035
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
image: picture-web:local
|
image: picture-web:local
|
||||||
container_name: mana-app-picture-web
|
container_name: mana-app-picture-web
|
||||||
|
|
@ -1454,7 +1513,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5021
|
PORT: 5021
|
||||||
PUBLIC_BACKEND_URL: http://picture-backend:3040
|
PUBLIC_BACKEND_URL: http://picture-backend:3035
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_BACKEND_URL_CLIENT: https://picture-api.mana.how
|
PUBLIC_BACKEND_URL_CLIENT: https://picture-api.mana.how
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
|
|
@ -1479,13 +1538,13 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5190
|
PORT: 5025
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "5190:5190"
|
- "5025:5025"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5190/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5025/health"]
|
||||||
interval: 180s
|
interval: 180s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -1501,7 +1560,7 @@ services:
|
||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
PORT: 3025
|
PORT: 3020
|
||||||
LOG_LEVEL: info
|
LOG_LEVEL: info
|
||||||
OLLAMA_URL: http://host.docker.internal:11434
|
OLLAMA_URL: http://host.docker.internal:11434
|
||||||
OLLAMA_DEFAULT_MODEL: gemma3:4b
|
OLLAMA_DEFAULT_MODEL: gemma3:4b
|
||||||
|
|
@ -1518,9 +1577,9 @@ services:
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
ports:
|
ports:
|
||||||
- "3025:3025"
|
- "3020:3020"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "python", "-c", "import httpx; httpx.get('http://localhost:3025/health').raise_for_status()"]
|
test: ["CMD", "python", "-c", "import httpx; httpx.get('http://localhost:3020/health').raise_for_status()"]
|
||||||
interval: 120s
|
interval: 120s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
@ -1539,15 +1598,15 @@ services:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
PORT: 5090
|
PORT: 5050
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
PUBLIC_MANA_CORE_AUTH_URL: http://mana-auth:3001
|
||||||
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
PUBLIC_MANA_CORE_AUTH_URL_CLIENT: https://auth.mana.how
|
||||||
PUBLIC_MANA_LLM_URL: http://mana-llm:3025
|
PUBLIC_MANA_LLM_URL: http://mana-llm:3020
|
||||||
PUBLIC_MANA_LLM_URL_CLIENT: https://llm.mana.how
|
PUBLIC_MANA_LLM_URL_CLIENT: https://llm.mana.how
|
||||||
ports:
|
ports:
|
||||||
- "5090:5090"
|
- "5050:5050"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5090/health"]
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:5050/health"]
|
||||||
interval: 180s
|
interval: 180s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
|
||||||
62
scripts/mac-mini/setup-forgejo.sh
Executable file
62
scripts/mac-mini/setup-forgejo.sh
Executable file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Setup Forgejo on Mac Mini
|
||||||
|
# Run once after first deployment
|
||||||
|
set -e
|
||||||
|
|
||||||
|
DOCKER="${DOCKER_CMD:-/usr/local/bin/docker}"
|
||||||
|
COMPOSE="$DOCKER compose -f docker-compose.macmini.yml"
|
||||||
|
|
||||||
|
echo "=== 1. Create Forgejo database ==="
|
||||||
|
$DOCKER exec mana-infra-postgres psql -U postgres -c "CREATE DATABASE forgejo;" 2>/dev/null || echo "Database already exists"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== 2. Create data directories ==="
|
||||||
|
sudo mkdir -p /Volumes/ManaData/forgejo /Volumes/ManaData/forgejo-runner
|
||||||
|
sudo chown -R 1000:1000 /Volumes/ManaData/forgejo
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== 3. Start Forgejo ==="
|
||||||
|
$COMPOSE up -d forgejo
|
||||||
|
echo "Waiting for Forgejo to start..."
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== 4. Check Forgejo health ==="
|
||||||
|
curl -s http://localhost:3041/api/v1/version | python3 -m json.tool
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== 5. Create admin user ==="
|
||||||
|
echo "Run this command to create the admin user:"
|
||||||
|
echo ""
|
||||||
|
echo " $DOCKER exec mana-core-forgejo forgejo admin user create \\"
|
||||||
|
echo " --admin --username till --password '<PASSWORD>' \\"
|
||||||
|
echo " --email till@mana.how"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=== 6. Register Forgejo Runner ==="
|
||||||
|
echo "After creating the admin user, get a runner token from:"
|
||||||
|
echo " https://git.mana.how/-/admin/runners"
|
||||||
|
echo ""
|
||||||
|
echo "Then register the runner:"
|
||||||
|
echo ""
|
||||||
|
echo " $DOCKER exec mana-core-forgejo-runner forgejo-runner register \\"
|
||||||
|
echo " --instance https://git.mana.how \\"
|
||||||
|
echo " --token <RUNNER_TOKEN> \\"
|
||||||
|
echo " --name mac-mini \\"
|
||||||
|
echo " --labels ubuntu-latest:docker://node:20,go:docker://golang:1.25-alpine"
|
||||||
|
echo ""
|
||||||
|
echo " $COMPOSE restart forgejo-runner"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=== 7. Mirror GitHub repo ==="
|
||||||
|
echo "After login, create a new migration at:"
|
||||||
|
echo " https://git.mana.how/repo/migrate"
|
||||||
|
echo " - Clone Address: https://github.com/Memo-2023/manacore-monorepo.git"
|
||||||
|
echo " - Mirror: Yes"
|
||||||
|
echo " - Repository Name: manacore-monorepo"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=== Setup complete ==="
|
||||||
|
echo "Forgejo: https://git.mana.how"
|
||||||
|
echo "Registration: disabled (admin-only)"
|
||||||
|
echo "SSH: port 2222"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue