Docker apps, in EE, Fangtooth, and beyond

Yes.

Amen.

What is the benefit of having a stack of compose files (the Dockge method), rather than one big single compose.yml?

I have played around with Dockge and can’t seem to find a way for it to pull and update all containers in one go. With Docker Compose on the CLI I just run my alias “alias dcup=‘docker compose -f ~/compose.yml up -d’” and then boom - everything pulled and recreated (if necessary) in one simple command.

That’s what the “update” button is for:
image

I really don’t know what you mean here. The “Dockge method” is pretty much just a GUI for docker compose. If you want to put 50 separate applications into a single compose file, it won’t stop you. I don’t think that’s how it, or Compose in general, is typically used, but you could. But multi-container compose files are used all the time with Dockge.

1 Like

You could use that command while using Dockge.

Alternative, use Watchtower.

The screenshot here GitHub - louislam/dockge: A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager shows the stacks on the left-hand-side where they are all given the names of single containers. e.g. adguardhome, jellyfin. nginx etc. This is what I referred to as the “Dockge method” (a container per stack). I didn’t realise that Dockge supported more than one container per compose file - so thanks for the heads up. This is important for containers with interdependencies (“depends_on:” statements) and custom networks.
Watchtower is how I flag new container updates, but I run the updates manually, and it’s been so tedious updating one container at a time - I just don’t have the patience for that. Not when Docker Compose can update them all at once :slight_smile:

They’re given whatever name you give them. If you don’t specify a name, the default is the name of the first container in the stack.

1 Like

Looks like this is the answer:

But it requires inotifywait, which isn’t included in TrueNAS, so it’d need to run in a sandbox/presumably LXC under Fangtooth. Right now I’m running it in the Docker sandbox, but I’ll need to do something different (in due course) once I move to EE, I guess.

Sorted:

Also sorted:

It is, but good heavens it’s tedious (under 24.10). Especially when I have nine different labels to apply. But only for one app (Dockge), and tedious as it is, it works–Traefik and Homepage are both configured using those.

So, I’m now on 24.10 on my secondary NAS, and things are working pretty well. I set up the sandbox in 24.04 with Dockge, migrated my various apps (except for Tailscale), got the various Compose files sorted out, then upgraded to 24.10. Tailscale didn’t work after migration, but was easy enough to sort out. This afternoon, installed the Dockge app and migrated the apps to that from the sandbox. Edit the paths, edit the DNS records, and everything’s up and running.

Now to repeat this on my main NAS. Migrating the wiki has potential to be dicey.

1 Like

Hello guys, I finally migrated, I’m using Dockge and it wroks amazingly well, now I need to setup the reverse proxy, and I was wondering if it would be better to use traefik or nginx.

In any case, what I wanted to summon you for is because it looks like Dockge has a native setting for “url” of the service. This setting seems to be related to the configuration of the already mentioned reverse proxy. The thing is that I cannot find, for my life, any meaningful information about this “url” thingy that it’s translated into the “x-dockge” section of the compose.yaml file. How is it supposed to be used or anything.

Any ideas?

As far as I can tell, the only purpose of that field is to give you a place to note one or more URLs for the project.

I use Traefik because I can configure it with Docker labels–once the basic configuration is done, adding a new app is a matter of adding a few lines to the compose file:

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nginx.rule=Host(`nginx.local.example.com`)"
      - "traefik.http.routers.nginx.entrypoints=https"
      - "traefik.http.routers.nginx.tls=true"
      - "traefik.http.services.nginx.loadbalancer.server.port=8080"
    networks:
      - proxy

networks:
  proxy:
    external: true

For the basic configuration, I use:

See also:

It’s possible to use Caddy in this way also, and I like Caddy, but this technique is much less common and well-documented for Caddy than for Docker.

2 Likes

Just for reference for anybody looking for inspiration to get their apps setup, the Dockge + traefik solution works perfectly.

Not only supports seamless reverse proxy for custom stacks deployed via Dockge (everything using the “proxy” network and labels), but it also supports

TrueNAS official apps

  1. adding the “ix-xxxxx_default” network to the traefik stack
  2. adding the labels to the TrueNAS app in the UI

Custom URLs (like TrueNAS dashboard)

  1. adding the config to traefik

So for example I can access:

  • jdownloader.nas (deployed via Dockge)
  • deluge.nas (deployed via TrueNAS official apps)
  • truenas.local (the TrueNAS dashboard)

This is pretty basic but I’m happy it worked so well and wanted to share :slight_smile:

2 Likes

How did you add the “ix-xxxxx_default” network? Was that to the dockge app?

And did you need to do anything special for the traefik install (did you install that in dockge, or alongside as a Scale app?)

I installed Traefik in Dockge–my objective is to use the iX apps as little as possible, and there isn’t an app for Traefik in any event.

1 Like

Yes, traefik installed in Dockge. You add the networks to the traefik stack from the Dockge UI itself. Usually you want to use the “proxy” network created for all your Dockge stuff, but if you have TrueNAS apps you can add those networks too.

my objective is to use the iX apps as little as possible

This is a very good approach, IMO.

So I’m trying to install traefik on dockge. I created a per-app ip address and assigned it to dockge, and that works well.

But when I try to start traefik, it binds to 0.0.0.0 and detects a conflict with port 80. How do I need to configure dockge to not let traefik use 0.0.0.0, but use it’s assigned address of 10.242.1.65?

Dockge is just a manager for Docker.

There is no reason to give it its own IP.

But you do want to give Traefik its own IP.

Instead of using

port:port binding

use

ip:port:port binding in your Traefik compose.

The reason I wanted it on it’s own address, is so I don’t keep running into issues with the host. The only thing on 10.242.1.65 is Dockge (on port 31014) and Traefik. The only thing running port 80 is the TrueNas portal, and I can’t choose 172.16.1.106 for the GUI settings, yet I can access it that way.

But I still get this:

But Traefik isn’t on that IP, unless you specifically tell it to be–Stux explained how.