From ABP Sensei
Configures ABP Framework v10.4 for production: clustered/stateless design, Redis cache, BLOB storage, SignalR backplane, reverse proxy, SSL, OpenIddict certs, Docker/Kubernetes deployment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/abp-sensei:abp-deploymentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
ABP Framework v10.4 deployment guide. An ABP application is deployed like any .NET/ASP.NET Core application (Azure/AWS/GCP/on-prem/IIS). However, there are ABP-specific points to watch for clustered environments, reverse proxy, OpenIddict, and production configuration.
ABP Framework v10.4 deployment guide. An ABP application is deployed like any .NET/ASP.NET Core application (Azure/AWS/GCP/on-prem/IIS). However, there are ABP-specific points to watch for clustered environments, reverse proxy, OpenIddict, and production configuration.
When running multiple instances (cluster, container, cloud), design the application to be stateless — state kept in memory is lost because the next request may be handled by another instance.
In-memory cache is per-instance. Use a distributed cache in a cluster. ABP Distributed Cache extends the ASP.NET Core distributed cache; the default is in-memory — configure a real provider (Redis) in production:
// Volo.Abp.Caching.StackExchangeRedis package
[DependsOn(typeof(AbpCachingStackExchangeRedisModule))]
"Redis": { "Configuration": "localhost:6379" }
In solutions created by selecting Tiered + MVC, Redis usually comes ready out of the box.
The File System BLOB provider uses the local disk → not suitable in a cluster. Use the Database BLOB provider (ready in startup templates) or a cloud provider (Azure/AWS S3).
The default ABP background job manager uses a distributed lock to ensure jobs run on a single instance. In a cluster, configure a distributed lock provider (the DistributedLock library; e.g. Redis-based). The default is in-process — meaning it is not actually distributed unless a provider is configured.
Configure a backplane (e.g. Redis) for SignalR across multiple instances.
For anti-forgery, cookie, and token encryption, point DataProtection keys to a shared store that all instances can access (e.g. Redis) — otherwise instances cannot decrypt each other's tokens.
Behind a reverse proxy/load balancer, the original client IP, host, and protocol (X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host) must be read correctly:
// ConfigureServices
context.Services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
// OnApplicationInitialization — at the start of the pipeline
app.UseForwardedHeaders();
If not done correctly, URLs are generated with the wrong protocol (http/https), and IP-based logging/auth breaks.
HTTPS is mandatory in production. Configure the SSL certificate at the reverse proxy (Nginx/YARP) or application level. Detail: ABP "Configuring SSL" guide.
The automatic certificates used in development are not suitable for production. In production, configure persistent signing/encryption certificates (e.g. .pfx + password, key store). Do not embed certificate/secret values in code — use environment variables / a secret store. Detail: ABP "Configuring OpenIddict" guide.
ASPNETCORE_ENVIRONMENT=Production and appsettings.Production.jsondotnet run --project src/MyProject.DbMigratorThe microservice solution template includes ready infrastructure:
etc/
├── docker/ # docker compose for local infrastructure (Redis, RabbitMQ, DB...)
└── helm/ # Kubernetes deployment (Helm chart)
Monolith applications are also packaged as a standard .NET Docker image. In a container, the clustered principles above (distributed cache/lock, BLOB, DataProtection) apply.
ASPNETCORE_ENVIRONMENT=Productionnpx claudepluginhub burakdmir/abp-skills --plugin abp-senseiProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.