3.1.1 error after update from 3.1.0

user@tipi:~/runtipi$ sudo ./runtipi-cli update v3.1.1
Welcome to Runtipi CLI ✨

✓ Tipi successfully stopped
✓ Found version 3.1.1
✓ Downloaded runtipi-cli-linux-x86_64.tar.gz
✓ Extracted tarball
✓ Tipi updated successfully. Starting new CLI


╔════════════════════════ Runtipi started successfully ════════════════════════╗
║ ║
║ Visit http://192.168.0.1:80 to access the dashboard ║
║ ║
║ You are now running version 3.1.1 ║
║ ║
║ Tipi is entirely written in TypeScript and we are looking for ║
║ contributors! ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
user@tipi:~/runtipi$
user@tipi:~/runtipi$ sudo ./runtipi-cli start
Welcome to Runtipi CLI ✨

✓ User permissions are ok
✓ Copied system files
✓ Generated .env file
✓ File permissions ok
✓ Images pulled
✓ Existing containers stopped
✗ Failed to start containers
⠙ Starting containers...
Debug: time="2024-03-24T17:48:05+01:00" level=warning msg="The \"PWD\" variable is not set. Defaulting to a blank string."
service "tipi-worker" has neither an image nor a build context specified: invalid compose project
user@tipi:~/runtipi$ sudo ./runtipi-cli update v3.1.1
Welcome to Runtipi CLI ✨

✓ Tipi successfully stopped
✓ Found version 3.1.1
✓ Downloaded runtipi-cli-linux-x86_64.tar.gz
✓ Extracted tarball
✓ Tipi updated successfully. Starting new CLI


╔════════════════════════ Runtipi started successfully ════════════════════════╗
║ ║
║ Visit http://192.168.0.1:80 to access the dashboard ║
║ ║
║ You are now running version 3.1.1 ║
║ ║
║ Tipi is entirely written in TypeScript and we are looking for ║
║ contributors! ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
user@tipi:~/runtipi$
user@tipi:~/runtipi$ sudo ./runtipi-cli start
Welcome to Runtipi CLI ✨

✓ User permissions are ok
✓ Copied system files
✓ Generated .env file
✓ File permissions ok
✓ Images pulled
✓ Existing containers stopped
✗ Failed to start containers
⠙ Starting containers...
Debug: time="2024-03-24T17:48:05+01:00" level=warning msg="The \"PWD\" variable is not set. Defaulting to a blank string."
service "tipi-worker" has neither an image nor a build context specified: invalid compose project
47 Replies
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
reverting to 3.1.0 makes it work again
sudo ./runtipi-cli update v3.1.0`
sudo ./runtipi-cli update v3.1.0`
Nicolas
Nicolas10mo ago
Hello, thanks for reporting Can you print out ./runtipi-cli debug ?
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
this is at 3.1.0 again
Nicolas
Nicolas10mo ago
It seems that on 3.1.1 you don't get the latest docker-compose because we got rid of "tipi-worker" and your error mentions it Is it possible that you have some custom configs either main docker or traefik altering "tipi-worker"?
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
i am using the tipi-compose.yml in user-config
Nicolas
Nicolas10mo ago
Then I guess you'd need to adapt it a little bit Before updating
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
we really need a changelog 😉 or rather a description of the change /
Nicolas
Nicolas10mo ago
Well this update is non-breaking and the release notes says Merge worker and dashboard in a single runtipi docker image
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
its breaking for me 😄
Nicolas
Nicolas10mo ago
We can't support seamless upgrades for custom made configs
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
can you give me the new docker-compose here, please 🙂 ?
Nicolas
Nicolas10mo ago
Sure
Nicolas
Nicolas10mo ago
@Stavros you broke production
Stavros
Stavros10mo ago
No
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
lol i am in the process to fix my tipi-compose.yml to a working state. i have to re-add some routers to differentiate between local and exposed ones - so good so far. what i am missing is the / are the tls.certresolver: myresolver entries those are gone.
hex-developer
hex-developer10mo ago
I'm starting to see a pattern here... By the way my upgrade to 3.1.1 went fine!
Stavros
Stavros10mo ago
i DID NOT break production
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
fyi - this is my new tipi-compose.yml with it i can differentiate between local.domain/ip and exposed routers. this way i can get an additional middleware for auth etc working for external access - maybe sth to include ootb later?
services:
runtipi:
labels:
# Dashboard Local ip
traefik.http.routers.dashboard-local.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/`)
# Dashboard Exposed
traefik.http.routers.dashboard-exposed.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
traefik.http.routers.dashboard-exposed.entrypoints: websecure
traefik.http.routers.dashboard-exposed.tls.certresolver: myresolver
traefik.http.routers.dashboard-exposed.service: dashboard
traefik.http.routers.dashboard-exposed.middlewares: authentik@file, geoblock@file

# Worker Local ip
traefik.http.routers.worker-local.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/worker`)
# Worker Exposed
traefik.http.routers.worker-exposed.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker`)
traefik.http.routers.worker-exposed.entrypoints: websecure
traefik.http.routers.worker-exposed.service: worker
traefik.http.routers.worker-exposed.middlewares: authentik@file, geoblock@file

# Worker API Local ip
traefik.http.routers.worker-api-local.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/worker-api`)
# Worker API Exposed
traefik.http.routers.worker-api-exposed.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker-api`)
traefik.http.routers.worker-api-exposed.entrypoints: websecure
traefik.http.routers.worker-api-exposed.service: worker
traefik.http.routers.worker-api-exposed.middlewares: authentik@file, geoblock@file

runtipi-reverse-proxy:
...
services:
runtipi:
labels:
# Dashboard Local ip
traefik.http.routers.dashboard-local.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/`)
# Dashboard Exposed
traefik.http.routers.dashboard-exposed.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
traefik.http.routers.dashboard-exposed.entrypoints: websecure
traefik.http.routers.dashboard-exposed.tls.certresolver: myresolver
traefik.http.routers.dashboard-exposed.service: dashboard
traefik.http.routers.dashboard-exposed.middlewares: authentik@file, geoblock@file

# Worker Local ip
traefik.http.routers.worker-local.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/worker`)
# Worker Exposed
traefik.http.routers.worker-exposed.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker`)
traefik.http.routers.worker-exposed.entrypoints: websecure
traefik.http.routers.worker-exposed.service: worker
traefik.http.routers.worker-exposed.middlewares: authentik@file, geoblock@file

# Worker API Local ip
traefik.http.routers.worker-api-local.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/worker-api`)
# Worker API Exposed
traefik.http.routers.worker-api-exposed.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker-api`)
traefik.http.routers.worker-api-exposed.entrypoints: websecure
traefik.http.routers.worker-api-exposed.service: worker
traefik.http.routers.worker-api-exposed.middlewares: authentik@file, geoblock@file

runtipi-reverse-proxy:
...
Stavros
Stavros10mo ago
why are you readding the labels?
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
this way i can get an additional middleware for auth etc working for external access
Stavros
Stavros10mo ago
aha you shouldn't need to change anything in your tipi compose file rather than copying the labels you had on the worker container and dashboard container to the runtipi container nothing else
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
in a ootb conf maybe . not in my case
Stavros
Stavros10mo ago
why not?
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
well i kind of did - my previous one was:
version: '3.7'

services:
tipi-worker:
labels:
# Local ip
traefik.http.routers.worker.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/worker`)
# Websecure
traefik.http.routers.worker-secure.middlewares: geoblock@file

tipi-dashboard:
labels:
# Local ip
traefik.http.routers.dashboard.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/`)
# Websecure
traefik.http.routers.dashboard-secure.middlewares: authentik@file, geoblock@file

tipi-reverse-proxy:
ports:
- 8080:8080
volumes:
- ./app-data/traefik:/etc/traefik
- ./app-data/traefik/shared:/shared
- /var/log/traefik/:/var/log/
version: '3.7'

services:
tipi-worker:
labels:
# Local ip
traefik.http.routers.worker.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/worker`)
# Websecure
traefik.http.routers.worker-secure.middlewares: geoblock@file

tipi-dashboard:
labels:
# Local ip
traefik.http.routers.dashboard.rule: (Host(`${INTERNAL_IP}`) || Host(`tipi.${LOCAL_DOMAIN}`)) && PathPrefix(`/`)
# Websecure
traefik.http.routers.dashboard-secure.middlewares: authentik@file, geoblock@file

tipi-reverse-proxy:
ports:
- 8080:8080
volumes:
- ./app-data/traefik:/etc/traefik
- ./app-data/traefik/shared:/shared
- /var/log/traefik/:/var/log/
in the end i overwrite the standard router rule from / to IP + internal domain - and then add an additional one to also have $DOMAIN one too
Stavros
Stavros10mo ago
oh ok
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
@Stavros
what i am missing is the / are the tls.certresolver: myresolver entries
there is no certresolver label in the new docker-compose.yml - is this intentional?
Stavros
Stavros10mo ago
we didn't touch the labels they are exactly the same as the old ones just in one container
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
from the previuos docker-compose.yml:
traefik.http.routers.dashboard-secure.tls.certresolver: myresolver
traefik.http.routers.dashboard-secure.tls.certresolver: myresolver
Stavros
Stavros10mo ago
huh @Nicolas why did we remove it?
Nicolas
Nicolas10mo ago
Maybe we missed it?
Stavros
Stavros10mo ago
probably
Nicolas
Nicolas10mo ago
But I tested both local domain and published Strange
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
if you have a valid cert then there is no prob - but you cant renew
Nicolas
Nicolas10mo ago
Ok then indeed there is a mistake
Stavros
Stavros10mo ago
sorry but i dont see that in the old compose
labels:
traefik.enable: true
traefik.http.services.dashboard.loadbalancer.server.port: 3000
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
# Local ip
traefik.http.routers.dashboard.rule: PathPrefix("/")
traefik.http.routers.dashboard.service: dashboard
traefik.http.routers.dashboard.entrypoints: web
# Local domain
traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local-insecure.entrypoints: web
traefik.http.routers.dashboard-local-insecure.service: dashboard
traefik.http.routers.dashboard-local-insecure.middlewares: redirect-to-https
# secure
traefik.http.routers.dashboard-local.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local.entrypoints: websecure
traefik.http.routers.dashboard-local.tls: true
traefik.http.routers.dashboard-local.service: dashboard
labels:
traefik.enable: true
traefik.http.services.dashboard.loadbalancer.server.port: 3000
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
# Local ip
traefik.http.routers.dashboard.rule: PathPrefix("/")
traefik.http.routers.dashboard.service: dashboard
traefik.http.routers.dashboard.entrypoints: web
# Local domain
traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local-insecure.entrypoints: web
traefik.http.routers.dashboard-local-insecure.service: dashboard
traefik.http.routers.dashboard-local-insecure.middlewares: redirect-to-https
# secure
traefik.http.routers.dashboard-local.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local.entrypoints: websecure
traefik.http.routers.dashboard-local.tls: true
traefik.http.routers.dashboard-local.service: dashboard
from 3.1.0
Nicolas
Nicolas10mo ago
Yes it was here before (cli)
Stavros
Stavros10mo ago
only in the cli?
Nicolas
Nicolas10mo ago
Yes
Stavros
Stavros10mo ago
why
Nicolas
Nicolas10mo ago
Is it the only thing @InfBoumcyCastle ? Didn't check the runtipi one but it's only for dev those
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
this is the docker-compose.yml from my latest backup before the update
InfBoumcyCastle
InfBoumcyCastleOP10mo ago
line 117, 125, 188 are the certresolver after i changed my tipi-compose to the above version - everythng seems to be ok so far
Nicolas
Nicolas10mo ago
I'm releasing the missing labels
JigSaw
JigSaw10mo ago
facing the same problem when upgrading 😄 edited container_name in my tipi-compose, run now fine 🙂
services:
tipi-reverse-proxy:
services:
tipi-reverse-proxy:
to
services:
runtipi-reverse-proxy:
services:
runtipi-reverse-proxy:
and for the PWD bug:
sudo -E bash -c './runtipi-cli start'
sudo -E bash -c './runtipi-cli start'
Unknown User
Unknown User10mo ago
Message Not Public
Sign In & Join Server To View

Did you find this page helpful?