Deploying to a generic Daml ledger¶
Daml ledgers expose a unified administration API. This means that deploying to a Daml ledger is no different from deploying to your local sandbox.
To deploy to a Daml ledger, run the following command from within your Daml project:
$ daml deploy --host=<HOST> --port=<PORT> --access-token-file=<TOKEN-FILE>
where <HOST> and <PORT> is the hostname and port your ledger is listening on, which defaults
to port 6564. The <TOKEN-FILE> is needed if your sandbox runs with
authorization and needs to contain a JWT token with an admin claim.
If your sandbox is not setup to use any authentication it can be omitted.
Instead of passing --host, --port and --access-token-file flags to the command above,
you can add the following section to the project’s daml.yaml file:
ledger:
    host: <HOSTNAME>
    port: <PORT>
    access-token-file: <PATH TO ACCESS TOKEN FILE>
The daml deploy command will
- upload the project’s compiled DAR file to the ledger. This will make the Daml templates defined in the current project available to the API users of the sandbox.
- allocate the parties specified in the project’s daml.yamlon the ledger if they are missing.
For more further interactions with the ledger, use the daml ledger command. Try running daml
ledger --help to get a list of available ledger commands:
$ daml ledger --help
Usage: daml ledger COMMAND
  Interact with a remote Daml ledger. You can specify the ledger in daml.yaml
  with the ledger.host and ledger.port options, or you can pass the --host and
  --port flags to each command below. If the ledger is authenticated, you should
  pass the name of the file containing the token using the --access-token-file
  flag or the `ledger.access-token-file` field in daml.yaml.
Available options:
  -h,--help                Show this help text
Available commands:
  list-parties             List parties known to ledger
  allocate-parties         Allocate parties on ledger
  upload-dar               Upload DAR file to ledger
  navigator                Launch Navigator on ledger
Connecting via TLS¶
To connect to the ledger via TLS, you can pass --tls to the
various commands. If your ledger supports or requires mutual
authentication you can pass your client key and certificate chain
files via --pem client_key.pem --crt client.crt. Finally, you can
use a custom certificate authority for validating the server
certificate by passing --cacrt server.crt. If --pem, --crt
or --cacrt are specified TLS is enabled automatically so --tls
is redundant.
Configuring Request Timeouts¶
You can configure the timeout used on API requests by passing
--timeout=N to the various daml ledger commands and daml
deploy which will set the timeout to N seconds. Note that this is a
per-request timeout not a timeout for the whole command. That matters
for commands like daml deploy that consist of multiple requests.