Omnibus localhost OK / LAN KO

Hello Grist Team

Thanks again for your amazing continuous work (calendar, new chart and jupyter, csv view wow ! :heart_on_fire:) → this is by far one of the best open source project I’ve seen

I’m trying to switch from my electron app to a docker based app.

While my electron is working well (port 8888) accessible through the network via 192.168.X.X:8888, I’ve installed a container app with omnibus (localhost:8484)
Locally everything’s well (Windows env)

docker run `
  -p 8484:80 `
  -e URL=http://localhost:8484 `
  -e TEAM=samat `
  -e EMAIL=owner@example.com `
  -e PASSWORD=topsecret `
  -v ./grist:/persist `
  --name grist --rm `
  -it gristlabs/grist-omnibus  # or grist-ee-omnibus for enterprise

connection via another to machine to the matching IP does not work :
container app :
localhost:8484 → Ok
192.168.1.57:8484 → KO whaterver machine it is

Electron app :
192.168.1.57:8888 → Ok on docker machine
192.168.1.57:8888 → Ok from another machine

I think I’m missing a trivial thing but do not find what …

Hmm the URL variable is best set to the way Grist will be accessed, so in this case -e URL=http://192.168.1.57:8484. What kind of error message are you seeing, is there any hint of a connection or a complete failure to connect to anything?

On Windows, if you have a firewall, you may need to open it for the port you want to expose - but that would presumably have been the same for the Electron app.

Hello @paul-grist ,

Thanks for your support.

docker run `
  -p 8484:80 `
  -e URL=http://192.168.1.179:8484 `
  -e TEAM=samat `
  -e EMAIL=owner@example.com `
  -e PASSWORD=topsecret `
  -v ./grist:/persist `
  --name grist --rm `
  -it gristlabs/grist-omnibus  # or grist-ee-omnibus for enterprise

runs well on local machine but is not accessible on other machine(too long to get response).
I’ve made a short python python -m http.server it is accessible from other machine

it does not seem I’ve got error on the console (lots line but no error, only info, debug, 2warns)

Happy with dex
Starting traefik-forward-auth
I think everything has started up now
Listening internally on 80, externally at http://192.168.1.179:8484
Welcome to Grist.
In quiet mode, see http://localhost:17100 to use.
For full logs, re-run with DEBUG=1
Setting up database...
Database setup complete.
2023-11-03 15:57:27.262 - info: == Grist version is 1.1.6 (commit unknown)
2023-11-03 15:57:27.281 - debug: skipping incomplete language fa (set GRIST_OFFER_ALL_LANGUAGES if you want it)
2023-11-03 15:57:27.288 - debug: skipping incomplete language ja (set GRIST_OFFER_ALL_LANGUAGES if you want it)
2023-11-03 15:57:27.304 - debug: skipping incomplete language th (set GRIST_OFFER_ALL_LANGUAGES if you want it)
2023-11-03 15:57:27.317 - info: Loading empty config because /persist/config.json missing
2023-11-03 15:57:27.333 - warn: did not find an appropriately named example workspace in deployment
2023-11-03 15:57:27.339 - info: No plugins found in directory: /grist/.grist/plugins
2023-11-03 15:57:27.349 - info: Found 1 valid plugins on the system
2023-11-03 15:57:27.349 - debug: PLUGIN builtIn/core -- /grist/plugins/core
2023-11-03 15:57:27.359 - info: Server timeouts: keepAliveTimeout 305000 headersTimeout 306000
2023-11-03 15:57:27.366 - info: server(home,docs,static) available at 0.0.0.0:17100
2023-11-03 15:57:27.383 - warn: Failed to create GoogleAuth endpoint: GOOGLE_CLIENT_SECRET is not defined
2023-11-03 15:57:27.392 - info: Server timeouts: keepAliveTimeout 305000 headersTimeout 306000
2023-11-03 15:57:27.393 - info: pluginServer available at 0.0.0.0:36971
2023-11-03 15:57:27.394 - info: == appRoot: /grist
2023-11-03 15:57:27.395 - info: == i18:namespace: client,server
2023-11-03 15:57:27.395 - info: == docsRoot: /persist/docs
2023-11-03 15:57:27.395 - info: == defaultBaseDomain: 192.168.1.179
2023-11-03 15:57:27.395 - info: == instanceRoot: /persist
2023-11-03 15:57:27.395 - info: == tag: unknown
2023-11-03 15:57:27.396 - info: == database: sqlite:///persist/home.sqlite3
2023-11-03 15:57:27.396 - info: == userRoot: /grist/.grist
2023-11-03 15:57:27.396 - info: == loginMiddlewareComment: forward-auth
2023-11-03 15:57:27.396 - info: == docWorkerId: testDocWorkerId_17100
2023-11-03 15:57:27.397 - info: == pluginUrl: http://0.0.0.0:36971/
2023-11-03 15:57:27.397 - info: == willServePlugins: true
2023-11-03 15:57:27.398 - info: == grist.access.supportEmail: support@getgrist.com [default] [GRIST_SUPPORT_EMAIL]
2023-11-03 15:57:27.399 - info: == grist.access.listPublicSites: false [default] [GRIST_LIST_PUBLIC_SITES]
2023-11-03 15:57:27.399 - info: == grist.integrations.sql.timeout: 1000 [default] [GRIST_SQL_TIMEOUT_MSEC]
2023-11-03 15:57:27.400 - info: == grist.integrations.allowedWebhookDomains: - [ALLOWED_WEBHOOK_DOMAINS]
2023-11-03 15:57:27.400 - info: == grist.integrations.proxy: - [GRIST_HTTPS_PROXY]
2023-11-03 15:57:27.400 - info: == grist.locale.offerAllLanguages: - [GRIST_OFFER_ALL_LANGUAGES]
2023-11-03 15:57:27.401 - info: == grist.login.system.forwardAuth.header: X-Forwarded-User [GRIST_FORWARD_AUTH_HEADER]
2023-11-03 15:57:27.401 - info: == grist.login.system.forwardAuth.active: true
2023-11-03 15:57:27.401 - info: == grist.login.system.forwardAuth.logoutPath: _oauth/logout [GRIST_FORWARD_AUTH_LOGOUT_PATH]
2023-11-03 15:57:27.401 - info: == grist.login.system.forwardAuth.loginPath: /auth/login [default] [GRIST_FORWARD_AUTH_LOGIN_PATH]
2023-11-03 15:57:27.402 - info: == grist.login.skipSession: - [GRIST_IGNORE_SESSION]
2023-11-03 15:57:27.402 - info: == grist.login.forced: true [GRIST_FORCE_LOGIN]
2023-11-03 15:57:27.403 - info: == grist.externalStorage.minio.bucket: - [GRIST_DOCS_MINIO_BUCKET]
2023-11-03 15:57:27.403 - info: == grist.externalStorage.disable: - [GRIST_DISABLE_S3]
2023-11-03 15:57:27.403 - info: == grist.externalStorage.active: false
2023-11-03 15:57:27.406 - info: activity docCount=0, orgCount=1, orgInGoodStandingCount=1, userCount=5, userWithLoginCount=5

I’m running on pro network so ip is a bit different

The http.server check was a good idea. Just to confirm everything is ok with docker and network access on Windows, can you check if:

docker run -p 8484:8484 -it python python -m http.server 8484

is also reachable at http://192.168.1.179:8484?

I’m wondering if on Windows and Mac, there may be an extra flag somewhere for networking, since the container will need to run on a virtual machine. Maybe someone using those operating systems can chime in.

+1

while python -m http.server 8484 is reachable everywhere,
docker run -p 8484:8484 -it python python -m http.server 8484 is not reachable on the network (only localhost).

I’ll try to investigate if there is an extra flag for windows…