Installation
This guide walks you through installing AuthProxy in different environments. Choose the installation method that best fits your deployment requirements.
Prerequisites
Before installing AuthProxy, ensure you have:
| Requirement | Minimum | Notes |
|---|---|---|
| .NET 10 Runtime | ASP.NET Core 10.0 | Required for all deployment methods |
| Database | SQL Server / SQLite | See System Requirements. PostgreSQL is supported only as a generated read replica (DACPAC export); AuthProxy itself runs against SQL Server or SQLite. |
| Docker | 20.10+ | For containerized deployment (recommended) |
| Docker Compose | 2.0+ | For multi-service orchestration |
Installation Methods
Method 1: Docker (Recommended)
AuthProxy uses a base image + binary mounting strategy. You don't build images per version — you mount pre-compiled binaries into a shared base container.
1. Pull the base image
docker pull mcr.microsoft.com/dotnet/aspnet:10.0-alpine
2. Create the project directory structure
mkdir -p /projects/myproject/{configs,AuthProxy/1.0.0}
3. Place binaries and configuration
Copy the published AuthProxy binaries to /projects/myproject/AuthProxy/1.0.0/ and create the configuration file:
# Place appsettings.json in configs/
cp appsettings.json /projects/myproject/configs/authproxy.json
4. Run with Docker Compose
Create docker-compose.yml:
services:
authproxy:
image: mcr.microsoft.com/dotnet/aspnet:10.0-alpine
container_name: myproject-authproxy
ports:
- "8001:80"
volumes:
- /projects/myproject/AuthProxy/1.0.0:/app
- /projects/myproject/configs/authproxy.json:/app/appsettings.json
entrypoint: ["dotnet", "AuthProxy.dll"]
environment:
- ASPNETCORE_ENVIRONMENT=Production
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:80/health"]
interval: 30s
timeout: 3s
retries: 3
restart: unless-stopped
networks:
- myproject
networks:
myproject:
driver: bridge
docker compose up -d
4a. Mono-proxy with local file storage
For a single AuthProxy instance, store attachment bytes on local disk and mount that directory as a persistent Docker volume.
docker-compose.yml:
services:
authproxy:
image: mcr.microsoft.com/dotnet/aspnet:10.0-alpine
container_name: myproject-authproxy
ports:
- "8001:80"
volumes:
- /projects/myproject/AuthProxy/1.0.0:/app
- /projects/myproject/configs/authproxy.json:/app/appsettings.json
- /projects/myproject/storage/authproxy-files:/var/lib/authproxy/files
entrypoint: ["dotnet", "AuthProxy.dll"]
environment:
- ASPNETCORE_ENVIRONMENT=Production
restart: unless-stopped
appsettings.json:
{
"ServiceId": 10,
"ServiceName": "AuthProxy",
"ServerOrigin": "https://app.example.com",
"ProjectName": "MyProject",
"CoreApiKey": "your_secure_api_key_for_internal_communication",
"DBConnections": {
"GateDB": "Server=sql;Database=authproxy_db;User Id=authproxy_user;Password=your_password;TrustServerCertificate=true;Encrypt=true;"
},
"FIDO2": {
"serverDomain": "app.example.com",
"serverName": "My App",
"origins": ["https://app.example.com"]
},
"LocalFileStoragePath": "/var/lib/authproxy/files"
}
Important:
- The mounted host directory must be writable by the container user.
- Files are stored as
{LocalFileStoragePath}/{owner}/{fileId}. LocalFileStoragePathis the recommended storage mode for mono-proxy deployments.- This controls file byte storage only. File metadata and attachment lifecycle still go through the Chat module.
- Do not configure
FileServerswhen local disk storage is the intended backend.
5. Verify the installation
# Check container status
docker ps | grep authproxy
# Check health endpoint
curl http://localhost:8001/health
# Check service info
curl http://localhost:8001/auth/v1/get_info
A successful response from get_info will return the service version, project name, and available authentication methods.
Method 2: Standalone (.NET)
For development or environments without Docker:
1. Install .NET 10 SDK
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y dotnet-sdk-10.0
# Or download from https://dotnet.microsoft.com/download/dotnet/10.0
2. Run AuthProxy directly
cd /path/to/AuthProxy/binaries
dotnet AuthProxy.dll
AuthProxy will start on port 80 by default. Override with:
dotnet AuthProxy.dll --urls "http://0.0.0.0:5000"
Database Setup
AuthProxy requires a database. The tables are created automatically on first launch if they don't exist.
SQL Server / SQL Server Express (Production)
{
"DBConnections": {
"GateDB": "Server=localhost;Database=authproxy_db;User Id=authproxy_user;Password=your_password;TrustServerCertificate=true;Encrypt=true;"
}
}
SQLite (Development / Standalone)
{
"DBConnections": {
"GateDB": "Data Source=authproxy.db"
}
}
SQLite requires no additional setup — the database file is created automatically.
Minimum Configuration
Create appsettings.json with the minimum required settings:
{
"ServiceId": 10,
"ServiceName": "AuthProxy",
"ServerOrigin": "https://yourdomain.com",
"ProjectName": "MyProject",
"CoreApiKey": "your_secure_api_key_for_internal_communication",
"DBConnections": {
"GateDB": "Server=localhost;Database=authproxy_db;User Id=sa;Password=your_password;TrustServerCertificate=true;"
},
"FIDO2": {
"serverDomain": "yourdomain.com",
"serverName": "AuthProxy",
"origins": ["https://yourdomain.com"]
}
}
For a complete configuration reference, see the Configuration guide.
Post-Installation
After successful installation:
- Access the admin panel at
http://your-host/ProxyAdmin - Configure routes — add backend services in the Route Map admin page
- Set up authentication — enable desired auth methods (FIDO2, OAuth, etc.)
- Deploy PWA frontends — place built PWA files in
wwwroot/
Troubleshooting
Container won't start
# Check logs
docker logs myproject-authproxy
# Common issues:
# - Database connection refused: ensure DB is reachable from container network
# - Port already in use: change host port mapping
# - Missing DLLs: verify all binaries are in the mounted volume
Database connection fails
- Verify the connection string in
appsettings.json - Ensure the database server is accessible from the container network
- For Docker: use the container name or Docker network IP, not
localhost
Health check fails
- The
/healthendpoint requires the application to be fully started - First startup may take longer due to database table creation
- Check application logs for startup errors
Next Steps
- Quick Start Guide — get a working setup in 5 minutes
- Configuration — detailed configuration options
- Docker Deployment — production deployment guide