Skip to content

Docker Deployment

Supported Architectures

Our TransferAgent supports multiple architectures to allow for deployment in different unique environments.

Utilizing the masvio/transfer-agent:latest image will automatically pull the correct architecture for your system.

The architectures supported by this image are:

Architecture Tag
x86-64 latest
arm64 latest

Version Tags

We support a number of different tags for our users and internal development. We recommend using the latest tag for the latest updates and security patches. Other non-version stubbed tags can be unstable and may result in lost data.

Tag Description
latest Stable TransferAgent release
develop Release from development branch
vX.X.X Specific tagged version

TransferAgent Setup

Provisioning the docker image can be very simple. We provide an initial provisioning script to manage automations and authentication of the TransferAgent. For provisioning through the cli visit here

By default you can access the transfer agent at:



For ease of use, we have outlined a docker-compose file and docker cli command. Both can be used to setup our TransferAgent, however we do recommend use of docker-compose.

version: "3"
    image: masvio/transfer-agent:latest
    container_name: transfer-agent
    - PUID=1000
    - PGID=1000
      - /path/to/your/config/:/config
      - /path/to/your/automations/:/automations
      - 8080:8080
    restart: unless-stopped
    command: [
      "-config-dir /config",
      "-config /config/config.yaml"

Docker CLI (More Info)

# Other flags can be defined as outliend in the Parameters section
docker run -p 8080:8080 \
  masvio/transfer-agent:latest \
  -v /path/to/your/config:/config \
  -v /path/to/your/automations:/automations \
  -listen \ 
  -config-dir /config \
  -config /config/config.yaml 


We can configure the TransferAgent on launch using various command-line flags. The flag name and its description are below.

Flags Type Description
api String Backend API Host
api-key String API Key for local security purposes
app-version String Desktop App Version to be passed to all api requests via http header
automation-poll-interval duration Interval between automation polls (default 10s)
chunk-size String Uploader and Downloader chunk size (default "100MB")
client-type String Client type to pass on to API for login request for better tracking. Defaults to desktop-mac or desktop-win, depending on runtime OS
config-dir String Directory to save service related files. Defaults to
dontshoot String Dummy argument: tell Mac GUI not to kill & replace us
listen String Listen address (port will be system assigned if not specified or 0) (default "http://localhost:8080")
log-format String Easy Logrus log format (default "[%lvl%] %time%: %msg%\n")
log-level String Log level (debug, info, warning, error) (default "debug")
log-out String Where the logs are written (stdout, stderr,
log-timestamp-format String Easy Logrus timestamp format (default "15:04:05")
portpath String File (full path) to write port used
pprof Boolean Enable pprof profiling
pprof-port String PPROF profiling server listen port (default "6060")
progress-poll-interval duration Interval between upload progress publish events (default 30s)
version null Shows version/build number and exits
version-check null Prints the current version and the latest version information and exits


Our TransferAgent expects and creates a few folder on creation of the docker image. These folders can be overridden if required but we recommend keeping the defaults.

Volume Usage
/config Store application configuration and saved application data
/automations Default folder to mount in your automated downloads and uploads


Our docker container allows for various files to be persisted between reboots.

State Database

All state belonging to the database is store in a SQLite database file. This gets loaded on startup of the TransferAgent.

  • Default location
  • /config/app.db

Provisioning File

A provisioning file can be included to automatically create upload and download automations.

  • Default location
  • /config/config.yaml
# The email and password to authenticate
# against the API
  email: [email protected]
  password: PASSWORD
  upload_rate_limit: 100000
  download_rate_limit: 100000
  - 1:
    name: portal-download-auto
    portal_subdomain: YourPortalSubdomain
    destination_folder: /automations/portal-downloads
    effective_time: 2021-07-30T00:00:00Z
    enabled: true
  - 1:
    name: portal-upload-auto
    portal_subdomain: YourPortalSubdomain
    portal_password: changeme1
    path: /automations/portal-uploads
    sender_email: [email protected]
    timeout: 5
    delete_files_after_upload: false
    send_loose_files: false
    package_name_suffix: portal-suffix
    message: portal upload msg
    blacklist: ["*.png"]
    enabled: true