FileStash

FileStash is a nice web-based file manager that can be used with multiple different storage backend, from Google Drive to S3 buckets, SFTP and also local storage.

Unfortunately, FileStash has a few inconveninences for my needs which are:

  • Does not support sub-paths
  • Require container, which means you cannot easily run multiple instances for multiple non-root users.

Here is what i did to try it out, but i gave up because for this specific usage i do need subpath support.

Installation

FileStash is provided only as a container, which makes it difficult to run as multiple instances for multiple users.

As usual you need a dedicated user for proper security:

useradd -d /data/daemons/filestash -m filestash
su - filestash
curl -O https://downloads.filestash.app/latest/docker-compose.yml

Now properly edit the compose file:

docker-compose.yml
version: '2'
services:
  app:
    container_name: filestash
    image: machines/filestash
    restart: always
    environment:
    - APPLICATION_URL=https://www.mydomain.com/path/
    ports:
    - "8334:8334"
    volumes:
    - /data/daemons/filestash/state:/app/data/state/

  onlyoffice:
    container_name: filestash_oods
    image: onlyoffice/documentserver
    restart: always
    security_opt:
      - seccomp:unconfined

volumes:
    filestash: {}

networks: 
    filestash: {}

And then the usual:

su - filestash
podman compose pull

Reverse Proxy

The following basic NGINX setup:

filestash.conf
        location /path/ {
        client_max_body_size 512M;

        proxy_pass http://127.0.0.1:8334;
        proxy_http_version 1.1;

        proxy_set_header Connection $http_connection;
        proxy_set_header Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        #proxy_set_header Authorization $remote_user;
        }

Autostart