About AYON Service Host (ASH)
AYON addons provide services that carry out tasks on the AYON server.
e.g. ftrack leecher which stores ftrack events.
AYON uses ASH to manage services in a similar fashion to portainer.
With ASH, AYON can create, start, stop, and remove services as needed.
Prerequisites
Get AYON_API_KEY
ASH requires an API key to communicate with Ayon server.
In order to get an API key, you’d need to create a new service user and remember the service key will show only once when creating a new service user.
Create Service User | Generate Key | Copy Key |
ASH Setup
The documentation outlines two approaches for setting up ASH using Docker Compose as mentioned in Setting up using docker compose section.
- Use the same stack as the server.
- Create a completely separate one.
Let me explain it further.
Use the same stack as the server
For Ynput Cloud subscribers, please refer to the subsequent section, Create a completely separate one or reach out to us at
support@ynput.io
for additional support.
Run ASH as a part of your main Ayon stack. in other words by modifying the docker compose file which found in the self-hosted AYON.
Steps:
- Open
docker-compose.yml
inside yourayon-docker
clone - Add the following code at the end of the file, you are free to change the host name.
ASH section in ayon-docker compose file
worker: image: ynput/ayon-ash:latest hostname: worker-01 restart: unless-stopped network_mode: host depends_on: - server volumes: - "/var/run/docker.sock:/var/run/docker.sock" environment: - "AYON_API_KEY=<your-api-key>" - "AYON_SERVER_URL=<your-ayon-server-url>"
For the sake of clarity, here’s how my compose file looks like:
My full ayon-docker compose file
version: "3.7"
services:
postgres:
image: postgres:15
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ayon"]
interval: 5s
timeout: 5s
retries: 5
expose: [5432]
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "db:/var/lib/postgresql/data"
environment:
- "POSTGRES_USER=ayon"
- "POSTGRES_PASSWORD=ayon"
- "POSTGRES_DB=ayon"
redis:
image: redis:alpine
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
interval: 5s
timeout: 5s
retries: 5
expose: [6379]
server:
image: ynput/ayon:dev
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5000/api/info"]
interval: 10s
timeout: 2s
retries: 3
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
# uncomment for older versions of Docker (>4.0.0) and comment out above "depends on" section.
#depends_on:
#- postgres
#- redis
expose: [5000]
ports: ["5000:5000"]
volumes:
- "./addons:/addons"
- "./storage:/storage"
# comment out the following line on Windows
- "/etc/localtime:/etc/localtime:ro"
# uncomment the following line if you need to work on the backend code
# - "./backend:/backend"
worker:
image: ynput/ayon-ash:latest
hostname: worker-01
restart: unless-stopped
network_mode: host
depends_on:
- server
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "AYON_API_KEY=<your-api-key>"
- "AYON_SERVER_URL=<your-ayon-server-url>"
volumes:
db: {}
Create a completely separate one
Run ASH separately by either creating a new compose file or cloning ash repo.
You can create it on the same machine where you run AYON server or on different machines, it’s up to your preference.
Steps:
- Create a directory maybe name it
my-ayon-ash
- In that directory, Create empty file
docker-compose.yml
- Copy & paste the following code inside it. you are free to change the host name.
ASH separate compose file
version: "3.7" services: worker: image: ynput/ayon-ash:latest hostname: worker-02 restart: unless-stopped network_mode: host volumes: - "/var/run/docker.sock:/var/run/docker.sock" environment: - "AYON_API_KEY=<your-api-key>" - "AYON_SERVER_URL=<your-ayon-server-url>"
- In the same directory as the compose file, Run
sudo docker compose up -d
Here’s how it looks like on my side:
compose file | services list |