R
Runtipi2mo ago
Roz

Cannot update apps: service refers to undefined network

Any app I try to update fails with error service refers to undefined network tipi_main_network I haven't changed the default compose file of these apps or anything
42 Replies
Nicolas
Nicolas2mo ago
Hello @Roz you have a custom user-config/tipi-compose.yml please try without it (rename the file to something else and restart runtipi)
Roz
RozOP2mo ago
I do, but all it does is set the cloudflare token for DNS challenges. I'll try without it and let you know I worked 🙃 But why?
Nicolas
Nicolas2mo ago
Haha, I don't know can you share what you are doing in there? without leaking your token
Roz
RozOP2mo ago
literally just this:
version: "3.9"
services:
runtipi-reverse-proxy:
environment:
- CF_DNS_API_TOKEN=...
version: "3.9"
services:
runtipi-reverse-proxy:
environment:
- CF_DNS_API_TOKEN=...
the logs are complaining about it being expired tho, perhaps that's causing an issue in creating the network somehow? Just replaced it with a fresh token. I'll try to update another application and see how that goes
Nicolas
Nicolas2mo ago
Okay strange, I'm doing exactly the same:
services:
runtipi-reverse-proxy:
ports:
- 8080:8080
environment:
- CF_DNS_API_TOKEN=
services:
runtipi-reverse-proxy:
ports:
- 8080:8080
environment:
- CF_DNS_API_TOKEN=
Maybe remove version
Roz
RozOP2mo ago
replacing the token worked should I file a GH issue along the lines of "invalid cloudflare token breaks docker networking" or something?
Nicolas
Nicolas2mo ago
I'm not sure this is something we can fix on our side Would be interesting to know why it happens
Roz
RozOP2mo ago
hmm this is weird. some apps updated, others didn't. let me check something yeah it's probably not the issue, I still see 403 logs
InfBoumcyCastle
InfBoumcyCastle2mo ago
btw version: "3.9" is deprectaed in current docker compose. probably not the cause here - but maybe it fails some tipi internal test that way
Roz
RozOP2mo ago
okay, I'm starting from scratch. there's an app giving me the same error even without the custom tipi compose, so that's likely not the issue huh... I just tried to update an app went through the update wizard just accepting everything and got an error then I did the same thing, but uncheked "Backup", and it worked :think_zoom: same thing happened with another app. I made sure to leave "Backup" on for three consecutive attempts just to make sure it wasn't some sort of cache or something, but turning off the "Backup" toggle at the end of the wizard seems to allow it to update
Nicolas
Nicolas2mo ago
Okay then in this case you should see something in the logs, about a backup failed or something else
Roz
RozOP2mo ago
nope, all I see is the cert renewal errors and runtipi | error > Failed to update app jellyseerr:migrated: service "jellyseerr" refers to undefined network tipi_main_network: invalid compose project
Nicolas
Nicolas2mo ago
Can you show us the content of apps/migrated/jellyseerr/docker-compose.yml
Roz
RozOP2mo ago
sure, but I got the same result without it. just a sec
Nicolas
Nicolas2mo ago
Maybe the generation is failing?
Roz
RozOP2mo ago
services:
jellyfin:
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
services:
jellyfin:
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
file + backup: error file - backup: success :/
Nicolas
Nicolas2mo ago
Wait that's it?
Roz
RozOP2mo ago
yep
Nicolas
Nicolas2mo ago
This is a user-config no?
Roz
RozOP2mo ago
yes oh, sorry you asked for the app one
Nicolas
Nicolas2mo ago
I was asking for the generated one yes
Roz
RozOP2mo ago
I updated it already, let me get another one lol
services:
prowlarr:
container_name: prowlarr
image: ghcr.io/linuxserver/prowlarr:2.1.5
environment:
- TZ=${TZ}
dns:
- ${DNS_IP}
volumes:
- ${APP_DATA_DIR}/data/config:/config
ports:
- ${APP_PORT}:9696
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: true
traefik.http.middlewares.prowlarr-web-redirect.redirectscheme.scheme: https
traefik.http.services.prowlarr.loadbalancer.server.port: 9696
traefik.http.routers.prowlarr-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.prowlarr-insecure.entrypoints: web
traefik.http.routers.prowlarr-insecure.service: prowlarr
traefik.http.routers.prowlarr-insecure.middlewares: prowlarr-web-redirect
traefik.http.routers.prowlarr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.prowlarr.entrypoints: websecure
traefik.http.routers.prowlarr.service: prowlarr
traefik.http.routers.prowlarr.tls.certresolver: myresolver
traefik.http.routers.prowlarr-local-insecure.rule: Host(`prowlarr.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-local-insecure.entrypoints: web
traefik.http.routers.prowlarr-local-insecure.service: prowlarr
traefik.http.routers.prowlarr-local-insecure.middlewares: prowlarr-web-redirect
traefik.http.routers.prowlarr-local.rule: Host(`prowlarr.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-local.entrypoints: websecure
traefik.http.routers.prowlarr-local.service: prowlarr
traefik.http.routers.prowlarr-local.tls: true
runtipi.managed: true
services:
prowlarr:
container_name: prowlarr
image: ghcr.io/linuxserver/prowlarr:2.1.5
environment:
- TZ=${TZ}
dns:
- ${DNS_IP}
volumes:
- ${APP_DATA_DIR}/data/config:/config
ports:
- ${APP_PORT}:9696
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: true
traefik.http.middlewares.prowlarr-web-redirect.redirectscheme.scheme: https
traefik.http.services.prowlarr.loadbalancer.server.port: 9696
traefik.http.routers.prowlarr-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.prowlarr-insecure.entrypoints: web
traefik.http.routers.prowlarr-insecure.service: prowlarr
traefik.http.routers.prowlarr-insecure.middlewares: prowlarr-web-redirect
traefik.http.routers.prowlarr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.prowlarr.entrypoints: websecure
traefik.http.routers.prowlarr.service: prowlarr
traefik.http.routers.prowlarr.tls.certresolver: myresolver
traefik.http.routers.prowlarr-local-insecure.rule: Host(`prowlarr.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-local-insecure.entrypoints: web
traefik.http.routers.prowlarr-local-insecure.service: prowlarr
traefik.http.routers.prowlarr-local-insecure.middlewares: prowlarr-web-redirect
traefik.http.routers.prowlarr-local.rule: Host(`prowlarr.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-local.entrypoints: websecure
traefik.http.routers.prowlarr-local.service: prowlarr
traefik.http.routers.prowlarr-local.tls: true
runtipi.managed: true
it does reference the network, but does it work if I skip the backup
InfBoumcyCastle
InfBoumcyCastle2mo ago
do you have that tipi_main_network even?
Roz
RozOP2mo ago
I noticed that, with backup, runtipi issues a stop command yep, it's scoped by compose but I do
❯ docker network ls
NETWORK ID NAME DRIVER SCOPE
...
6054381ea34f runtipi_tipi_main_network bridge local
❯ docker network ls
NETWORK ID NAME DRIVER SCOPE
...
6054381ea34f runtipi_tipi_main_network bridge local
look at this part of the logs:
runtipi | info > Running docker compose with args --env-file /app-data/migrated/jellyseerr/app.env --env-file /data/user-config/migrated/jellyseerr/app.env --project-name jellyseerr_migrated -f /data/apps/migrated/jellyseerr/docker-compose.yml --file /data/user-config/migrated/jellyseerr/docker-compose.yml stop
runtipi | info > Docker-compose exited with code 1
runtipi | warn > User-config detected, please make sure your configuration is correct before opening an issue
runtipi | error > Failed to update app jellyseerr:migrated: service "jellyseerr" refers to undefined network tipi_main_network: invalid compose project
runtipi | info > Updating app jellyseerr:migrated
runtipi | info > Pruned containers: null Space reclaimed: 0 MB
runtipi | info > Allocated subnet 10.128.15.0/24 for app jellyseerr:migrated
runtipi | info > Running docker compose with args --env-file /app-data/migrated/jellyseerr/app.env --env-file /data/user-config/migrated/jellyseerr/app.env --project-name jellyseerr_migrated -f /data/apps/migrated/jellyseerr/docker-compose.yml --file /data/user-config/migrated/jellyseerr/docker-compose.yml up --detach --force-recreate --remove-orphans
runtipi | info > Running docker compose with args --env-file /app-data/migrated/jellyseerr/app.env --env-file /data/user-config/migrated/jellyseerr/app.env --project-name jellyseerr_migrated -f /data/apps/migrated/jellyseerr/docker-compose.yml --file /data/user-config/migrated/jellyseerr/docker-compose.yml stop
runtipi | info > Docker-compose exited with code 1
runtipi | warn > User-config detected, please make sure your configuration is correct before opening an issue
runtipi | error > Failed to update app jellyseerr:migrated: service "jellyseerr" refers to undefined network tipi_main_network: invalid compose project
runtipi | info > Updating app jellyseerr:migrated
runtipi | info > Pruned containers: null Space reclaimed: 0 MB
runtipi | info > Allocated subnet 10.128.15.0/24 for app jellyseerr:migrated
runtipi | info > Running docker compose with args --env-file /app-data/migrated/jellyseerr/app.env --env-file /data/user-config/migrated/jellyseerr/app.env --project-name jellyseerr_migrated -f /data/apps/migrated/jellyseerr/docker-compose.yml --file /data/user-config/migrated/jellyseerr/docker-compose.yml up --detach --force-recreate --remove-orphans
the first docker-compose call is with backup on, the second is without it I'm guessing that backup tries to stop the container before updating the compose file, which fails. no backup prolly just updates the file then calls up with recreate, which now works because of the new compose file (?) hmm the compose file for prowlarr hasn't changed, so it might just be that up creates/attaches to the network while "stop" doesn't
Nicolas
Nicolas2mo ago
Oh So it's failing when calling stop before the backup
Roz
RozOP2mo ago
yeah
InfBoumcyCastle
InfBoumcyCastle2mo ago
networks: tipi_main_network: name: runtipi_tipi_main_network
Roz
RozOP2mo ago
but like I showed, the network does exist
Nicolas
Nicolas2mo ago
Have you jumped runtipi versions recently? We're getting to something
InfBoumcyCastle
InfBoumcyCastle2mo ago
this is what is generated on my end
Roz
RozOP2mo ago
I've updated to latest but unfortunately don't remember what was the previous version you're right, my bad, the generated compose file does change after the update this is the new prowlarr:
services:
prowlarr:
image: ghcr.io/linuxserver/prowlarr:2.1.5
restart: unless-stopped
networks:
prowlarr_migrated_network:
gw_priority: 0
tipi_main_network:
gw_priority: 1
environment:
TZ: ${TZ}
volumes:
- ${APP_DATA_DIR}/data/config:/config
labels:
generated: true
traefik.enable: true
traefik.docker.network: runtipi_tipi_main_network
traefik.http.middlewares.prowlarr-migrated-web-redirect.redirectscheme.scheme: https
traefik.http.services.prowlarr-migrated.loadbalancer.server.port: "9696"
traefik.http.routers.prowlarr-migrated-local-insecure.rule: Host(`prowlarr-migrated.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-migrated-local-insecure.entrypoints: web
traefik.http.routers.prowlarr-migrated-local-insecure.service: prowlarr-migrated
traefik.http.routers.prowlarr-migrated-local-insecure.middlewares: prowlarr-migrated-web-redirect
traefik.http.routers.prowlarr-migrated-local.rule: Host(`prowlarr-migrated.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-migrated-local.entrypoints: websecure
traefik.http.routers.prowlarr-migrated-local.service: prowlarr-migrated
traefik.http.routers.prowlarr-migrated-local.tls: true
runtipi.managed: true
runtipi.appurn: prowlarr:migrated
networks:
tipi_main_network:
name: runtipi_tipi_main_network
external: true
prowlarr_migrated_network:
name: prowlarr_migrated_network
external: false
ipam:
config:
- subnet: 10.128.15.0/24
services:
prowlarr:
image: ghcr.io/linuxserver/prowlarr:2.1.5
restart: unless-stopped
networks:
prowlarr_migrated_network:
gw_priority: 0
tipi_main_network:
gw_priority: 1
environment:
TZ: ${TZ}
volumes:
- ${APP_DATA_DIR}/data/config:/config
labels:
generated: true
traefik.enable: true
traefik.docker.network: runtipi_tipi_main_network
traefik.http.middlewares.prowlarr-migrated-web-redirect.redirectscheme.scheme: https
traefik.http.services.prowlarr-migrated.loadbalancer.server.port: "9696"
traefik.http.routers.prowlarr-migrated-local-insecure.rule: Host(`prowlarr-migrated.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-migrated-local-insecure.entrypoints: web
traefik.http.routers.prowlarr-migrated-local-insecure.service: prowlarr-migrated
traefik.http.routers.prowlarr-migrated-local-insecure.middlewares: prowlarr-migrated-web-redirect
traefik.http.routers.prowlarr-migrated-local.rule: Host(`prowlarr-migrated.${LOCAL_DOMAIN}`)
traefik.http.routers.prowlarr-migrated-local.entrypoints: websecure
traefik.http.routers.prowlarr-migrated-local.service: prowlarr-migrated
traefik.http.routers.prowlarr-migrated-local.tls: true
runtipi.managed: true
runtipi.appurn: prowlarr:migrated
networks:
tipi_main_network:
name: runtipi_tipi_main_network
external: true
prowlarr_migrated_network:
name: prowlarr_migrated_network
external: false
ipam:
config:
- subnet: 10.128.15.0/24
so yeah, that's probably it: backup tried to stop, it can't because the network is currently wrong. no backup updates the file and calls up directly, which works because now there's a new network config before updating tipi I was getting 2025-10-29T20:44:02.760Z - error > Failed to update app 1 APP_UPDATE_ERROR_MIN_TIPI_VERSION TranslatableError: APP_UPDATE_ERROR_MIN_TIPI_VERSION is there a way to know which app is 1? checking the minimum tipi version for that app could give a rough idea of the version I was in I guess I'll go ahead and mark this as solved
Nicolas
Nicolas2mo ago
I think it's still something we need to account for
Roz
RozOP2mo ago
oh, alright I can provide more info if you need it, I'll keep following the post
Nicolas
Nicolas2mo ago
We could simply generate the yaml before stopping for backup
Roz
RozOP2mo ago
maybe copying the old one first, in case the update operation fails?
Nicolas
Nicolas2mo ago
But my initial idea to stop before was to stop it in the current state, back it up and then only try to generate the new stuff
Roz
RozOP2mo ago
yeah, it makes sense maybe manually stop the containers instead of using compose?
Nicolas
Nicolas2mo ago
Not a bad idea
Roz
RozOP2mo ago
you think this is a first good contrib to make? I'd gladly PR
Nicolas
Nicolas2mo ago
That would be great yes! update-app-command.ts
Roz
RozOP2mo ago
awesome, I'll get on it
Nicolas
Nicolas2mo ago
nice Please ping me anytime you need infos

Did you find this page helpful?