- Rebrand گنجور -> دیوان across GanjooRazor; lang=ur; Urdu home page and footer - Hijri century groups with Urdu names - Noto Nastaliq Urdu (default) / Noto Naskh Arabic switch - Remove footer links to Ganjoor-only services; link Wikisource, data and code - Linux deployment: Dockerfile, docker-compose (SQL Server 2022, API, site, Caddy) - DIWAN.md: changes and deploy guide Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
70 lines
2.5 KiB
YAML
70 lines
2.5 KiB
YAML
# Diwan stack: SQL Server + API (RMuseum) + site (GanjooRazor) behind Caddy (automatic HTTPS).
|
|
# Setup: cp .env.example .env, edit it, then `docker compose up -d --build`. See DIWAN.md.
|
|
services:
|
|
db:
|
|
image: mcr.microsoft.com/mssql/server:2022-latest # x86-64 only
|
|
environment:
|
|
ACCEPT_EULA: "Y"
|
|
MSSQL_PID: Express
|
|
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD:?set in .env}
|
|
volumes:
|
|
- mssql:/var/opt/mssql
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P \"$$MSSQL_SA_PASSWORD\" -Q 'SELECT 1' || exit 1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 30
|
|
restart: unless-stopped
|
|
|
|
api:
|
|
build: { context: ., args: { PROJECT: RMuseum } }
|
|
depends_on: { db: { condition: service_healthy } }
|
|
environment:
|
|
ConnectionStrings__DefaultConnection: "Server=db;Database=museum;User Id=sa;Password=${MSSQL_SA_PASSWORD};TrustServerCertificate=True;MultipleActiveResultSets=true"
|
|
Security__Secret: ${JWT_SECRET:?set in .env}
|
|
RSecurityBackend__ApplicationName: Diwan
|
|
RSecurityBackend__FirstUserEmail: ${ADMIN_EMAIL:?set in .env}
|
|
SignUp__Enabled: ${SIGNUP_ENABLED:-False}
|
|
WebServiceUrl: https://${API_DOMAIN}
|
|
# Linux paths for upstream's Windows defaults
|
|
PictureFileService__StoragePath: /data/museum
|
|
PictureFileService__TrashStoragePath: /data/museum-trash
|
|
AudioUploadService__TempUploadPath: /data/tempaudio
|
|
AudioUploadService__LocalAudioRepositoryPath: /data/audio
|
|
Ganjoor__SitemapLocation: /data/sitemap.xml
|
|
PublicDataExport__LocalWorkingCopyPath: /data/public-export
|
|
volumes:
|
|
- data:/data
|
|
restart: unless-stopped
|
|
|
|
site:
|
|
build: { context: ., args: { PROJECT: GanjooRazor } }
|
|
depends_on: [api]
|
|
environment:
|
|
APIRoot: http://api:8080 # server-side calls stay on the docker network
|
|
GlobalAPIRoot: https://${API_DOMAIN} # what browsers use
|
|
SiteUrl: https://${SITE_DOMAIN}
|
|
DataProtectionPersistPath: /data/keys
|
|
TrackingScript: "" # upstream's is Ganjoor's analytics
|
|
SemanticSearchAPIRoot: "" # upstream's indexes Persian Ganjoor, not Diwan
|
|
volumes:
|
|
- data:/data
|
|
restart: unless-stopped
|
|
|
|
caddy:
|
|
image: caddy:2
|
|
depends_on: [site, api]
|
|
ports: ["80:80", "443:443"]
|
|
environment:
|
|
SITE_DOMAIN: ${SITE_DOMAIN}
|
|
API_DOMAIN: ${API_DOMAIN}
|
|
volumes:
|
|
- ./deploy/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy:/data
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
mssql:
|
|
data:
|
|
caddy:
|