Getting started¶
Run OpenSignature locally with Docker Compose (full stack) or with Docker infrastructure plus host-run Api / Worker / Web.
Prerequisites¶
- Docker Desktop (or compatible engine)
- For host development: .NET 10 SDK, Node.js 20+, PowerShell 7+ on Windows
1. Full stack with Docker Compose¶
| Service | Endpoint |
|---|---|
| Web | http://localhost:5173 |
| API | http://localhost:5270 |
| API health | http://localhost:5270/health |
| PostgreSQL | localhost:5432 (esign / esign / opensignature) |
| RabbitMQ AMQP | localhost:5672 |
| RabbitMQ UI | http://localhost:15672 |
pfx-init creates a disposable development PFX in a named volume. Set PFX_PASSWORD in .env (default opensignature-dev). Optional TSA: TIMESTAMPING_URL / TIMESTAMPING_USERNAME / TIMESTAMPING_PASSWORD.
Stop and remove containers (volumes kept):
USB / smart-card signing is not available inside containers — use the host development path below for PKCS#11.
2. One-command host development¶
Infrastructure only, then Api + Worker + Vite on the host:
| App | URL |
|---|---|
| Web | http://localhost:5173 |
| API | http://localhost:5270 |
Optional flags: -SkipInfrastructure, -SkipCertificate, -ApiProfile https.
If host port 5432 is busy, set POSTGRES_PORT=5433 in .env and align ConnectionStrings:PostgreSQL in Api/Worker Development settings.
3. Manual POC path¶
docker compose up -d postgres rabbitmq
pwsh ./scripts/Generate-DevCertificate.ps1
dotnet build OpenSignature.slnx
dotnet run --project src/OpenSignature.Api --launch-profile http
dotnet run --project src/OpenSignature.Worker
Create a Baseline-B CAdES signature:
curl -s -X POST "http://localhost:5270/api/v1/signatures" \
-H "X-Tenant-Id: tenant-demo" \
-H "Idempotency-Key: demo-1" \
-F "file=@samples/poc.txt;type=text/plain" \
-F "format=CAdES" \
-F "profile=B" \
-F "signingProvider=Pfx"
Poll and download:
curl -s "http://localhost:5270/api/v1/signatures/{id}" -H "X-Tenant-Id: tenant-demo"
curl -s -o signed.bin "http://localhost:5270/api/v1/signatures/{id}/content" -H "X-Tenant-Id: tenant-demo"
4. Tests¶
5. CI/CD¶
Pull requests run the .NET test suite and the web lint/build. Pushes to main also publish three container images to GitHub Container Registry:
docker pull ghcr.io/serhatboyraz/opensignature/api:latest
docker pull ghcr.io/serhatboyraz/opensignature/worker:latest
docker pull ghcr.io/serhatboyraz/opensignature/web:latest
Details: Operations.
6. Documentation site¶
Published: https://serhatboyraz.github.io/opensignature/ (Türkçe: /tr/).
Preview locally:
Open http://127.0.0.1:8000 — use the language switcher for Türkçe.