this post was submitted on 19 Nov 2024
16 points (94.4% liked)

Selfhosted

40330 readers
426 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

Hello everybody! I have the following issue: I have two countainers, let's call them C1 and C2, and they both expose the same port, let's say 1234. I want to route both of them through a gluetun container. to do this, I added

network_mode: container:gluetun

at each container. But they both expose the same port, so there's a conflict. Without routing them though gluetun I can just

ports:
  - 1235:1234

but using network_mode this cannot be done. What can I do? The only thing that comes to my mind is to use two gluetun containers, but I'd rather use a single one

thanks in advance!

top 9 comments
sorted by: hot top controversial new old
[–] [email protected] 5 points 4 days ago* (last edited 4 days ago) (1 children)

On mobile so you'll have to forgive format jank.

It depends how each image handles ports if C1 has the ports set up as 1234:100 and C2 has the ports set up as 1234:500 then:

service:

gluetun:

ports:

 - 1234:100 #c1
 - 1235:500 #c2

[...]

Will solve the conflict

Sometimes an image will allow you to edit it's internal ports with an environment so

service:

gluetun:

ports:

  - 1234:1000 #c1
  -1235:1234 #c2

c1:

environent:

- UI_PORT=1000

[...]

When both contsiners use the same second number, C1: 1234:80, C21235:80, and neither documents suggest how to change that port, I personally haven't found a way to resolve that conflict.

[–] [email protected] 2 points 3 days ago

thanks for the detailed reply!

When both contsiners use the same second number, C1: 1234:80, C21235:80, and neither documents suggest how to change that port, I personally haven’t found a way to resolve that conflict.

unfortunately I'm in this situation, so I guess my only ways are to modify the container by hand or to create two instances of gluetun. thank you very much for your help!

[–] [email protected] 4 points 4 days ago (1 children)

I funnily had the same use case. Two different jellyfin servers for complete separation. Both routing through gluetun. The reason this doesn't work is because the network mode setting you have basically makes all three containers operate in the same network. Meaning if one binds a port the others can no longer bind the same port. Their different hosts but all sharing one network and port range. To expose the ports you can move that ports setting from C1/C2 to the gluetun service definition. This'll still work because when C1 binds to 1234 it'll be reachable through the gluetun service.

Note: as mentioned if C1 and C2 cannot use the same port if you also want to have service gluetun set. More likely than not you start C1, it binds to the port, start C2, it tries and fails to bind to the port and crashes. I fixed this by making one of my jellyfin containers use a separate port. If you can't configure the ports of your services then there's no real recourse FWIU.

[–] [email protected] 1 points 3 days ago

If you can’t configure the ports of your services then there’s no real recourse FWIU

Sadly this is my case... I guess I'll have to give up then thank you very much!

[–] [email protected] 3 points 4 days ago (2 children)

You can just change the port directly on the application for one of them.

[–] [email protected] 1 points 3 days ago (1 children)

thanks for the reply! many services allows this by setting an environmental variable or through a config file, but sadly not all of them

[–] [email protected] 1 points 3 days ago

I've yet to come across one that doesn't allow it, that's a pretty important feature for anything listening on a port to have.

[–] [email protected] 1 points 3 days ago

Yeah that would be the best way to solve this problem.

[–] [email protected] 2 points 4 days ago

The port number on the outside doesn't have to be the same as the port number on the inside.