Before you begin
To get started, share the following with the C8 team:- Your DockerHub username
- Access to the C8 DockerHub repository
- Integration credentials:
client_idaccess_key_idsecret_access_key
- A coupon code for MainNet registration
- Docker Compose
- A 24-word BIP39 mnemonic phrase that you generate yourself (see Generate a BIP39 mnemonic below)
Deployment flow
The full deployment is a five-step sequence. Each step is described in detail below.Create the environment file
Define
WALLET_MNEMONIC, CLIENT_ID, backend URLs, and auth/batch settings in .env.1. Generate a BIP39 mnemonic
Generate a random 24-word BIP39 mnemonic phrase. Usingbip39:
bitcoin-cli:
2. Create the environment file
Create a.env file next to docker-compose-client.yml:
.env
AUTH_TYPE=noop disables authentication for the wallet API. With this setting, all API endpoints are exposed without authentication.For production deployments, C8 can provide Keycloak or Auth0 configuration. When identity-provider authentication is enabled, all C8 Enterprise Wallet API endpoints expect a valid JWT token from the configured IdP.3. Prepare Docker Compose
Use the provideddocker-compose-client.yml template and set the image value to the DockerHub image shared by C8:
docker-compose-client.yml
4. Deploy
Run Docker Compose with the CloudWatch logging parameters provided during integration:-d:
5. Verify the deployment
After deployment, open Swagger UI:API account creation
When creating new accounts through the API, include thecoupon parameter:
Configuration reference
| Parameter | Description |
|---|---|
WALLET_MNEMONIC | 24-word BIP39 mnemonic used by the self-custodial wallet |
CLIENT_ID | Client identifier provided by C8 |
BACKEND_URL | C8 wallet backend API URL |
IDENTITY_SERVICE_URL | C8 identity service URL |
SCANNER_API_BASE_URL | C8 scanner / ledger history server URL |
AUTH_TYPE | API authentication mode. noop disables authentication |
AUTO_BATCH_SWITCH | Enables or disables auto-batching |
AUTO_BATCH_DB_TYPE | Auto-batching storage type, for example in-memory |
AWS_REGION | AWS region used for CloudWatch logs |
CLOUDWATCH_LOG_GROUP | CloudWatch log group name |
CLOUDWATCH_LOG_STREAM | CloudWatch log stream name, usually the client ID |
CLOUDWATCH_ENDPOINT | CloudWatch Logs endpoint |
AWS_ACCESS_KEY_ID | AWS access key ID provided during integration |
AWS_SECRET_ACCESS_KEY | AWS secret access key provided during integration |
Security notes
- Keep
.env, mnemonic phrases, and AWS credentials out of source control. - Use
AUTH_TYPE=nooponly in controlled environments. - Prefer IdP-backed API authentication for production deployments.
- Rotate integration credentials according to your organization security policy.
Try it on DevNet
Want to try the wallet before going to production? You can point it at the C8 DevNet environment.- In your
.env, set the following URLs:.env - On DevNet, you don’t need a signup coupon to register new accounts — just omit the
couponparameter when creating accounts through the API.
