# Server authentication ## Authenticating with a server You may want to use private channels for which you need to be authenticated. To do this ephemerally you can use the `RATTLER_AUTH_FILE` environment variable to point to a JSON file with the following structure: ```json { "*.prefix.dev": { "BearerToken": "your_token" }, "otherhost.com": { "BasicHTTP": { "username": "your_username", "password": "your_password" } }, "anaconda.org": { "CondaToken": "your_token" } } ``` The keys are the host names. You can use wildcard specifiers here (e.g. `*.prefix.dev` to match all subdomains of `prefix.dev`, such as `repo.prefix.dev`). This will allow you to also obtain packages from any private channels that you have access to. The following known authentication methods are supported: - `BearerToken`: prefix.dev - `CondaToken`: anaconda.org, quetz - `BasicHTTP`: artifactory ## Uploading packages If you want to upload packages, then rattler-build comes with a built-in `upload` command. There are 4 options: - `prefix.dev`: you can create public or private channels on the prefix.dev hosted server - `anaconda.org`: you can upload packages to the free anaconda.org server - `quetz`: you can host your own quetz server and upload packages to it - `artifactory`: you can upload packages to a JFrog Artifactory server The command is: ```bash rattler-build upload ``` Note: you can also use the `RATTLER_AUTH_FILE` environment variable to authenticate with the server. ### prefix.dev To upload to [prefix.dev](https://prefix.dev), you need to have an account and a token. You can create a token in the settings of your account. The token is used to authenticate the upload. ```bash export PREFIX_API_KEY= rattler-build upload prefix -c ``` You can also use the `--api-key=$PREFIX_API_KEY` option to pass the token directly to the command. Note that you need to have created the channel on the prefix.dev website before you can upload to it. ### Quetz You need to pass a token and API key to upload to a channel on your own Quetz server. The token is used to authenticate the upload. ```bash export QUETZ_API_KEY= rattler-build upload quetz -u -c ``` ### Artifactory To upload to an Artifactory server, you need to pass a username and password. The username and password are used to authenticate the upload. ```bash export ARTIFACTORY_USERNAME= export ARTIFACTORY_PASSWORD= rattler-build upload artifactory -u -c ``` ### anaconda.org To upload to [anaconda.org](https://anaconda.org), you need to specify the owner and API key. The API key is used to authenticate the upload. The owner is the owner of the distribution, for example, your user name or organization. One can also specify a label such as `dev` for release candidates using the `-c` flag. The default value is `main`. You can also add the `--force` argument to forcibly upload a new package (and overwrite any existing ones). ```bash export ANACONDA_API_KEY= rattler-build upload anaconda -o -c