Replies: 3 comments 3 replies
-
@zombibly can you share your implementation details please ? I am trying to do the same with traefik |
Beta Was this translation helpful? Give feedback.
-
Hey guys, may be i am a bit late to the party. But i think it will help some other folks. Looking for an answer how to get the server working behind a reverse proxy. Satisfactory Dedicated Servernetworks:
backend:
external:
backend
services:
satisfactory-server:
container_name: 'satisfactory'
hostname: 'satisfactory'
image: 'wolveix/satisfactory-server:latest'
volumes:
- 'YOUR_SERVER_DATA/config:/config'
environment:
- MAXPLAYERS=4
- PGID=...
- PUID=...
- STEAMBETA=false
labels:
# Only necessary if you not enroll automatically containers
- "traefik.enable=true"
# Only necessary if you attach the container to multiple networks
- "traefik.docker.network=backend"
- "traefik.http.services.satisfactory.loadbalancer.server.port=7777"
# Note the dedicated satisfactory server is always running on HTTPS with a self sign cert so use https as sheme
- "traefik.http.services.satisfactory.loadbalancer.server.scheme=https"
# Ignore self sign certs when proxy from traefik to dedicated satisfactory server
- "traefik.http.services.satisfactory.loadBalancer.serverstransport=satisfactory@file"
# Sadly the next line is not supported as of traefik 3.3.4 and you need instead work with a file based definition
#- "traefik.http.serverstransports.satisfactory-serverstransports.insecureskipverify=true"
- "traefik.http.routers.satisfactory.entrypoints=satisfactory-tcp"
- "traefik.http.routers.satisfactory.rule=Host(`example.com`)"
- "traefik.http.routers.satisfactory.tls=true"
- "traefik.http.routers.satisfactory.tls.certresolver=myresolver"
- "traefik.udp.services.satisfactory.loadbalancer.server.port=7777"
- "traefik.udp.routers.satisfactory.entrypoints=satisfactory-udp"
restart: unless-stopped
deploy:
resources:
limits:
memory: 16gb
networks:
- backend Traefikservices:
traefik:
image: traefik:v3.3.4
container_name: traefik
restart: unless-stopped
ports:
- 80:80
- 443:443
# We need to expose both protocols here
- '7777:7777/tcp'
- '7777:7777/udp'
command:
...
# Expose the two enpoints for traefik you can also do it in traefik.yaml
- "--entryPoints.satisfactory-tcp.address=:7777/tcp"
- "--entryPoints.satisfactory-tcp.http.redirections.entryPoint.to=satisfactory-tcp"
- "--entryPoints.satisfactory-tcp.http.redirections.entryPoint.scheme=https"
- "--entryPoints.satisfactory-udp.address=:7777/udp"
....
# need for server transport defintion
- "--providers.file.directory=/etc/traefik/conf"
volumes:
# need for server transport defintion
- PATH_TO_YOU_CONFS/conf:/etc/traefik/conf:ro
... TransportWe need to define a customized server transport, because we try to proxy from Traefik to Satisfactory dedicated server via https and this will run into issues. Internally it uses an self sign certificate so we need to ignore that. satisfactory.yaml http:
serversTransports:
satisfactory:
insecureSkipVerify: true If you do not want to create a file provider, you can also disable insecureSkipVerify as global config for traefik by adding So now you have a server running with valid certificates. Have fun! |
Beta Was this translation helpful? Give feedback.
-
Did a lot of trial and error today. To start with, what was happening with the default deployment mentioned in the readme was that I could manage the server just fine but trying to log in and play resulted in an immediate crash on experimental branch. After a bit of digging, I figured out how to get additional ports added to my traefik deployment, and then used the following ingress definitions. ingress: # ---
# apiVersion: traefik.io/v1alpha1
# kind: IngressRouteUDP
# metadata:
# name: satisfactudp
# namespace: satisfactory
# spec:
# entryPoints:
# - satisfactudp
# routes:
# - services:
# - name: satisfactory-udp
# port: 7777
# weight: 10
# ---
# apiVersion: traefik.io/v1alpha1
# kind: IngressRouteTCP
# metadata:
# name: satisfactcp
# namespace: satisfactory
# spec:
# entryPoints:
# - satisfactcp
# routes:
# - match: HostSNI(`*`)
# priority: 10
# services:
# - name: satisfactory
# port: 7777
# ---
# apiVersion: traefik.io/v1alpha1
# kind: IngressRouteTCP
# metadata:
# name: satisfactmsg
# namespace: satisfactory
# spec:
# entryPoints:
# - satisfactmsg
# routes:
# - match: HostSNI(`*`)
# priority: 10
# services:
# - name: satisfactory
# port: 8888 entry points for traefik apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
additionalArguments:
#- "--entryPoints.satisfactudp.address=:7777/udp"
#- "--entryPoints.satisfactcp.address=:7777/tcp"
#- "--entryPoints.satisfactmsg.address=:8888/tcp"
#- "--serverstransport.insecureskipverify=true"
- "--api"
- "--api.dashboard=true"
- "--api.insecure=true"
#ports:
#satisfactmsg:
# port: 8888
# expose:
# default: true
# exposedPort: 8888
# protocol: TCP
#satisfactcp:
#port: 7777
#expose:
#default: true
#exposedPort: 7777
#protocol: TCP
#satisfactudp:
#port: 7777
#expose:
#default: true
#exposedPort: 7777
#protocol: UDP service (similar existed for TCP/7777 & 8888): # ---
# apiVersion: v1
# kind: Service
# metadata:
# name: satisfactory-udp
# namespace: satisfactory
# labels:
# app: satisfactory
# spec:
# ports:
# - name: "game"
# port: 7777
# protocol: UDP
# targetPort: 7777
# selector:
# app: satisfactory I'm not entirely sure if the 8888 port is still used? wiki says only 7777 is used, this project's documentation and examples still use 8888. But I digress, with this configuration I could not at all get a connection (the game client would exclusively indicate the server is offline / unreachable). This is all commented out because it's the current state of my files and for tonight I have given up, but if someone else has insights, they would be welcomed, as things get a bit stranger. Out of curiosity to see if the issue was my kubernetes orchestration or that I'm running the game client in a VM, I used the built-in app store on my truenas scale to deploy a server instance (also experimental branch) - this one works without issue. But the reason I want a server is to play with friends and I don't wish to expose NAS to the internet, so I looked at renting a server. This server also crashed my client upon trying to connect. So of the three deployments of the server, only one worked which is my NAS. Is the game particularly sensitive to latency? Does this sound like the UDP ports might just not be connecting? I'm a bit at my wit's end here. The crash in question triggers an unreal engine crash report prompt and it seems to be a segfault in some network code that I can only speculate about.
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
hey everyone, in preparation for the 1.0 launch I've decided to prepare a dedicated server for me and my friends to play on when the game does release. I've got the server running in docker no problem and I'm able to hit it using my internal network IP (192.168.X.X). I was even able to get friends to be able to join when I opened up my router for all ports towards that internal IP. However I don't want to have those ports open all the time and wanted to limit the exposure by using nginx as a reverse proxy on an digital ocean vm.
I know that I've gotten the nginx setup for the most part as when I stop the docker container and run nc on the server for the 15777 port and try to add the server to the server manager using the digital ocean IP I can see that the traffic is making it's way to the server vm. The issue is that if I have the docker container running and try adding the server using the digital ocean IP then I just get a "Server appears to be offline" message. I'm not really sure what could be causing the issue.
TL:DR;
using public vm as a reverse proxy for server.
client -> public proxy -> server
confirmed that traffic is flowing to the server but getting a "server offline" message.
client -> server (using internal IP) OR (using public IP with port forwarding)
server appears online and everyone can connect without issues.
EDIT: I found my issue........ I had
proxy_responses 0;
set in the nginx facepalmBeta Was this translation helpful? Give feedback.
All reactions