Converting Apps from Truecharts to SCALE Apps

Hi ! Been running TrueNAS since 2016 or so … converted to SCALE 6-12 months after it’s release.

Currently on 23.10.1.1 running a bunch of Truecharts apps that are accessible via Traefik ingress. I hadn’t gone through their upgrade steps to 24.02 and by the time I was ready the Electric Eel announcement came out so I have been sitting on the sidelines watching how things unfold.

I think I need to plan a move to native apps in preparation for 24.10.

Fairly confident as to how to get the app data out of the Truecharts pvc and cloudnative-pg databases but more curious about how to replace Traefik and the cloudflared connection I have to it.

I am suspecting that I should proxy via nginx proxy manager and that I can then proxy all of my apps through that as I migrate one app at a time from Traefik am I correct?

All of my Truecharts apps have no exposed ports at the TrueNAS host level; everything is proxied via Traefik and the apps can communicate with each other, if necessary, via the internal kubernetes network. Native TrueNAS apps have the same capability? I would prefer to not have the apps’ ports exposed on the NAS host.

Just trying to start planning out my migration strategy and looking to see if i am on the right path.

Thanks in advance for your help!

Scott

I’ve already replicated my truecharts apps as native docker Apps, including traefik which also issues certs to my apps. I’ve followed Technotimes YouTube Video on how to Setup traefik v3 and dont have problem. If Apps need to communicate with each other you can Just add them to the same docker Networks. To add a Domain and certs to an App you have to provide the traefik labels to the compose files of the App.

This way i’ve replicated my truecharts App Setup to 95%, including Homepage, code-server and blocky instead of pihole

Currently, in Electric Eel, you cannot configure labels on the built in apps.

This means you can’t use Traefik for ingress. The alternate is Nginx Proxy Manager which provides a gui config, where you have to configure each app in that gui.

And that’s assuming there is an app.

The alternative is to use a custom docker compose app, and if doing that you can use labels, and then traefik.

So, you can use docker compose in a jail on Cobia (23.10) or Dragonfish (and eel), then migrate to that.

And easily migrate that to Eel later.

Jailmaker 1.x works on Cobia, 2.0+ requires Dragonfish, and is used to make the docker jail/sandbox

I would suggest creating a docker sandbox on either Cobia now, or on Dragonfish and migrating all your apps to compose with dockge + traefik, then when eel comes out you can easily migrate out of the sandbox if you choose.

This Reddit link documents the migration process from TrueCharts, specifically covering rescuing your data
https://www.reddit.com/r/truenas/comments/1d2k4lf/finally_migrated_away_from_truecharts_steps_and/

And, in this video I demonstrate how to create a docker sandbox with dockge and install a custom app

In this video, Techno Tim demonstrates setting up traefik

And in this video I demonstrate how easy it is to spin up the same docker compose apps on Electric Eel using the built in dockge app

2 Likes

Stupid question: how do I set up jailmaker if the use of apt is blocked? Am I missing a step somewhere?

Since apt isn’t used to set up jailmaker, I don’t understand the question.

My bad. The install video says to run jlmkr setup to get everything rolling. jlmkr returns that this is not an option. Running jlmkr create to setup docker bombs horribly using the template provided. What am I doing wrong here?

systemctl status jlmkr-docker returns
service not found
What am I missing?

Got it. Typo in the docker config.

OK. docker + dockage is now operational. Should I install Nginx Reverse Proxy as a docker container or as the official TN app (which would be migrated later)? The plan is to get the reverse proxy setup and migrate my apps one by one to docker.

I’d install it in the sandbox. Will have access to port 80 and the docker dns system (ie you can use dns to access containers inside docker)

Cool beans. Corollary question: in your “How to add a bridge” video, you said to shutdown all VM’s and Jails. What about apps?

You need to “Unset” the app pool, then you can re-select it after making the bridge

I just tried that and it did not let me unset the ip address of the ethernet port because applications were using it.

Did you try “unset app pool” in the app settings menu?

Yes and everything disappeared but when I went to remove the static IP from the ethernet port it said apps were still using the port. I am going to try rebooting the server since the apps are all offline supposedly.

1 Like


No joy.

App pool is unset.

jlmkr is offline.

apparently it is being used by kubernetes. Have to figure out how to stop that.

Got it. Under Apps > Advanced Settings >Node IP
It had my primary IP selected. I changed it to 0.0.0.0, saved it. Made the network changes and got br0 running and then reset the Node IP back to the static IP. Everything else as per the video.

1 Like

Not sure why that happened if you did unset your pool, but maybe it was because of binding to a specific IP, which I guess you might’ve done in order to setup a reverse proxy on a busy port.

Glad you figured out a solution

Yes, you’re on the right track. You can replace Traefik with Nginx Proxy Manager for managing your app proxies as you migrate from Truecharts to native apps on TrueNAS SCALE. Nginx Proxy Manager will allow you to proxy apps without exposing ports on the TrueNAS host, similar to how you’re using Traefik. Native TrueNAS apps also support internal communication over the Kubernetes network, so you can maintain the same setup without exposing ports externally. Just ensure a smooth transition by migrating one app at a time while keeping your cloudflared connection intact.

Thanks all!

I have started down an investigation into jlmkr as there are some apps that don’t currently have “native” SCALE apps and have Nginx Proxy Manager running and managing the proxies for itself, dockge and stirling-pdf.

I had it running as the proxy for invidious but then setup invidious to run via a Gluetun tunnel and the containers all seem to be working and the network interface of the invidious container is the ip of teh gluetun container but for the life of my I cannot figure out how to connect npm to the invidious port.

I had a docker network ‘appsnet’ previously so npm could point to the other containers by name but that wasn’t working with the gluetun setup so I moved all containers to the gluetun network to test and that’s not working either … any thoughts?

image