0

Cannot follow symlink inside "user-files" in docker image: "The item is no longer available!"

wonx 6 months ago updated 6 months ago 0

I migrated my server and installed the docker image of FileRun instead of doing it the old way. However I can't seem to make it follow symlinks as it used to.

For instance, inside ~/filerun/user-files I create a symlink pointing to /mnt/sda1 (a path that I also added to the docker-compose.yml file). I start the docker image (and I enter its console, to verify that the symlink indeed works). I enter the FileRun in my browser, and it lists a folder with the name of the symlink, but as soon as I click on it, a message saying "The item is no longer available!"

However, if the symlink points to /var/www/html (a folder that is already owned by the www-data user), FileRun is able to list all its contents.

Also, replacing the user-files folder by a symlink with the same name pointing to its destination (/mnt/sda1), also works and FileRun can see all the files without problems.

I basically want to have three symlinks at the root of the user-files folder, to point at three different directories where some files are stored, which are in separate paths of my server. It used to work in the classical install of FileRun (making sure the user www-data could read those folders), but I can't figure out how to make it work in docker.

Thanks in advance!

EDIT: I think I figured it out. I'll answer myself:

Apparently there are some complications when using symlinks inside a docker container. What I did is create a folder for each symlink I wanted, and create volumes in the docker-compose.yml directly pointing to the destination path.

For instance, I want to access /mnt/sda1/Pictures/John, /mnt/sda2/Documents, and /mnt/sda2/Pictures, and all of that under the root at /user-files:

- /user1/filerun/user-files:/user-files

- /mnt/sda1/Pictures/John:/user-files/Pictures/John

- /mnt/sda2/Documents/John:/user-files/Documents

- /mnt/sda2/Pictures:/user-files/Pictures/MorePictures

This way, it works, assuming you have the correct permissions.