Skip to content

Weird nested folders that don't exist. #315

@foundryserver

Description

@foundryserver

I have deployed this as a sidecar container in kubernetes. The server is working, however it is showing the parent folders nested in the folder tree. When clicked on I get a 404 error. This is hard to explain so let me add some screen shots.

Here is the physical layout

~ $ tree /foundrydata/*
/foundrydata/Config
├── options.json
└── options.json.lock
/foundrydata/Data
├── assets
│   └── README.txt
├── modules
│   └── README.txt
├── systems
│   └── README.txt
└── worlds
    ├── README.txt
    └── hhh
/foundrydata/Logs
├── debug.2026-03-27.log
├── debug.2026-03-28.log
├── error.2026-03-27.log
└── error.2026-03-28.log

when I login to webdav with cyberduck I get the following

Image

You can see from the green underlines that the parent folder is being duplicated. Here is the debug output.

2026-03-28T16:17:47.944Z	INFO	user authorized	{"remote_address": "173.180.115.60", "username": "harry"}
2026-03-28T16:17:47.944Z	DEBUG	allowed & method & path	{"remote_address": "173.180.115.60", "allowed": true, "method": "PROPFIND", "path": "/Data/Data/"}
2026-03-28T16:17:47.944Z	DEBUG	handle webdav request	{"remote_address": "173.180.115.60", "method": "PROPFIND", "path": "/Data/Data/", "error": "stat /foundrydata/Data/Data: no such file or directory"}

the proxy for kubernetes takes the url https://harry.foundryserver.com/webdav and rewrites the url to https://harry.foundryserver.com/ after the routing is done. I use path based routing to get to the container.

Here is the configuration

# Listen ip and port
address: 0.0.0.0
port: 3030

debug: true

# Prefix to apply to the WebDAV path-ing. Default is '/'.
prefix: /

# Whether the server runs behind a trusted proxy or not. When this is true,
# the header X-Forwarded-For will be used for logging the remote addresses
# of logging attempts (if available).
behindProxy: true

# The root directory of the  user to serve.
directory: "/foundrydata"

#permissions: The permissions to grant to authenticated users.
permissions: CRUD

# The list of users. If the list is empty, then there will be no authentication.
# Otherwise, basic authentication will automatically be configured.
#
users:
  - username: "{env}ENV_USERNAME"
    password: "{env}ENV_PASSWORD"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions