25.10 RC1 Custom App YAML Input Bug?

So today I completed a fresh install of 25.10 RC1. I found that when inputting the following…

include:
  - /path/to/compose/file/compose.yml

…into the custom app option via YAML it gives the error: “Error: custom_compose_config_string YAML is missing required “services” key”

Here is the referenced compose file:

services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    volumes:
      - /mnt/Hermes/Docker/Data/Code-Server/config:/config
      - /mnt/Hermes/Docker/Data:/data
    ports:
      - 9000:8443
    environment:
      PUID: "568"
      PGID: "568"
      TZ: "REDACTED/REDACTED"
    deploy:
      resources:
        limits:
          memory: 1G
    restart: unless-stopped

In all previous versions where we have had the ability to input custom apps via YAML this has worked to simply pull the compose.yml from a single directory with all of my compose files and create/start the container. Now on 25.10 RC1 it is giving me the error I mentioned above.

I’m not bashing IX, I absolutely love TrueNAS, but I have always disliked the apps creation tool because it lacks repeatability and proper versioning of apps. Using the YAML include: string has been a god send for me and allowed me to deploy apps quickly and repeatably without pain-stakingly configuring it through the app creation ui manually every time I want to spin up the app.

Does anyone else run apps/containers this way and is this issue also affecting you?

It should be that the middleware has added a verification feature. You need to do it like this:

include:
  - env_file:
      - /mnt/tank/appdata/lmrouter/.env
    path: /mnt/tank/appdata/lmrouter/compose.yml
services: {}
2 Likes

Does anyone else run apps/containers this way, and is this issue also affecting you?

Yep, I run mine the same way. All of my apps live as individual Docker Compose files inside /mnt/vega/docker/stacks, and I’ve been using an include: reference in the Custom App YAML to pull them in. That’s how I’ve managed everything for the last few TrueNAS versions — it kept deployment fast, version-controlled, and consistent with what I do in VS Code.

Since upgrading to 25.10-RC1 (Goldeye), I’m seeing the same error:

Error: custom_compose_config_string
YAML is missing required "services" key

Existing apps continue running fine, but any new Custom Apps using the include: syntax now fail validation. Hopefully, iX will relax the schema again or add support for includes, as this workflow has been a huge quality-of-life boost for people running modular Compose setups.

1 Like

Yes, this is very annoying. I love being able to utilized my code-server container to edit all of my compose files quickly and then simply spin down and back up the container through the UI and it will effortlessly modify the container based on the changes I made. Hopefully, they address this issue and made it possible to use the include syntax again, or another method of possibly linking to a specific compose file on disc when creating a custom app.

Copying in the compose file into the UI editor every time I want to make changes is redundant and annoying. I’ve been scarred too many times through major version updates breaking app compatibility and this is what has cause me to manage my own compose files and use the custom app feature. I reverted back to 24.04 for now. I’ll probably input a bug report/feature request about this issue when I get the time.

I just updated my custom apps like this

> include:
>   - path: /mnt/vega/docker/stacks/media_management/compose.yaml
> services: {}
2 Likes

I’ll have to give this a try. I got annoyed and reverted to 25.04. I’ll reload 25.10 and give it a shot.

2 Likes

I just tried another app on the latest and it seemed to work fine for me. I also run Code-Server as well. The environment variables took a bit to get right as it seems to only read from the .env in the same file as the docker-compose. I (or AI) created a script that created a section for system variables that I could set globally and the script updates those for each app as well as take a backup of all the app specific variables. I setup another script to add apps that takes the name and the category and creates the appropriate app folders as well as the docker config folder with the standard files and populates the .env with the system variables. Happy to share the scripts if interested.

compose:
services:
jellyfin:
container_name: jellyfin-app
env_file:
- ./.env
environment:
- PUID=${PUID_USER}
- PGID=${PGID_GROUP}
- TZ=${TZ}
hostname: jellyfin
image: jellyfin/jellyfin:latest
network_mode: host
restart: unless-stopped
ports:
- ${HOST_IP}:${JELLYFIN_PORT}:8096
volumes:
- /mnt/Tank/Apps/appdata/jellyfin/config:/config
- /mnt/Tank/Apps/appdata/jellyfin/cache:/cache
- /mnt/Tank/Media/tvshows:/media/tvshows:ro
- /mnt/Tank/Media/movies:/media/movies:ro
devices:
- /dev/dri:/dev/dri # For hardware acceleration (optional)
x-portals:

  • host: ${HOST_IP}
    name: Web UI
    path: /
    port: ${JELLYFIN_PORT}
    scheme: http

— sys.env start —

UMASK=002

HOST_IP=192.168.10.40

TZ=America/Chicago

PGID_GROUP=568

DOMAIN_NAME=NONYA :slight_smile:

PUID_USER=568

— sys.env end —

JELLYFIN_PORT=8096

Hope that helps!

Google lead me here. I run all my containers through dockge. Was able to get things working again with:

include:
  - path: /mnt/apps/docker/dockge/compose.yaml
services: {}

2 Likes

Google also led me here. Can say that adding and empty services key fixes it.

services: {}