{"id":18733951,"url":"https://github.com/mgoltzsche/file-service","last_synced_at":"2026-05-07T03:37:48.628Z","repository":{"id":101282941,"uuid":"95391372","full_name":"mgoltzsche/file-service","owner":"mgoltzsche","description":"Service to share and browse files using a JS UI and WebDAV based on nginx","archived":false,"fork":false,"pushed_at":"2017-07-10T19:35:08.000Z","size":124,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-28T15:49:55.408Z","etag":null,"topics":["container","docker","file-sharing","image-viewer","imageserver","microservice","nginx","pseudo-streaming","react","webdav"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgoltzsche.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-25T23:26:29.000Z","updated_at":"2020-01-24T14:35:30.000Z","dependencies_parsed_at":"2023-09-20T20:24:34.261Z","dependency_job_id":null,"html_url":"https://github.com/mgoltzsche/file-service","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgoltzsche%2Ffile-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgoltzsche%2Ffile-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgoltzsche%2Ffile-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgoltzsche%2Ffile-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgoltzsche","download_url":"https://codeload.github.com/mgoltzsche/file-service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239605079,"owners_count":19667004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["container","docker","file-sharing","image-viewer","imageserver","microservice","nginx","pseudo-streaming","react","webdav"],"created_at":"2024-11-07T15:11:54.447Z","updated_at":"2025-11-14T17:30:15.172Z","avatar_url":"https://github.com/mgoltzsche.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# file-service\nService to share and browse files using a JavaScript UI and WebDAV based on [nginx](http://nginx.org).\n\n## Requirements\n\n- [Docker](https://www.docker.com/)\n- optional: [nodejs](https://nodejs.org/), [npm](https://www.npmjs.com/), [gulp](http://gulpjs.com/)\n\n\n## Run\n\nTo build and run the service using docker run the following shell script:\n```\n./make.sh js image run\n```\nNote that everything is built and run in a container.\n\nSince the service is published your host machine's port 80 you need to stop any other service that uses that port on your machine.\n\nFinally you can browse the UI at http://localhost/ as well as the image server at http://localhost/image/.\n\n\n## UI\n\nThe UI is written in JavaScript using [React](https://facebook.github.io/react/) and built with [npm](https://www.npmjs.com/) and [gulp](http://gulpjs.com/).\n\n\n## WebDAV\n\nWebDAV is supported using nginx' [ngx_http_dav_module](http://nginx.org/en/docs/http/ngx_http_dav_module.html) and the extension [nginx-dav-ext-module](https://github.com/arut/nginx-dav-ext-module).\n\n\n## Image transformations\n\nImage transformations are supported by nginx' [ngx_http_image_filter_module](http://nginx.org/en/docs/http/ngx_http_image_filter_module.html).\nAll transformed images are cached.\n\nTo prevent the service from DOS attacks and to control cache growth a limited amount of supported image resolutions must be configured in nginx.\nThis can be done using container environment variables with the following name convention:\n```\nIMAGE_(RESIZE|CROP)_{WIDTH}_{HEIGHT}=true\n```\n\nFor instance to serve resized images within a bounding box of 150x200 at `/image/resize/150x200/{IMAGEFILE}` set `IMAGE_RESIZE_150_200=true`.\n\n\n## Pseudo streaming\n\nHTTP pseudo streaming is supported for mp4 and flv files.\n\n\n## Security\n\nPer default this service runs without SSL and without any file access restrictions.\nWhen the service is accessible in the internet authentication and authorization as well as SSL must be configured.\n\n### SSL\n\nAlthough SSL in disabled per default this service's nginx installation can be configured to use SSL (see comments in default.conf).\nHowever it is recommended to configure SSL only in your proxy server or load balancer that passes traffic through to avoid useless SSL overhead.\nHence in most cases you do not need to enable SSL as long as you do not publish your service instance directly in a public network.\n\n### Authentication \u0026 authorization\n\nPer default this service comes with no access restrictions at all.\nApproaches of how to authenticate and authorize users are listed as follows:\n\n- Configure basic auth using a .htaccess file (see comments in default.conf)\n- Use a [Keycloak](http://www.keycloak.org/) based proxy to secure the service in a unified manner.\n\nEarlier versions supported basic auth and authorization using LDAP.\nTo add LDAP support nginx must be compiled with the 3rd party module [nginx-auth-ldap](https://github.com/kvspb/nginx-auth-ldap).\nThis approach has been deprecated in favour of the more complete keycloak approach mentioned above and completely removed from the project due conflicts between openssl-dev and openldap-dev in alpine \u003e3.4.\n\n\n## TL;DR\n\nI have built this service once as a platform to share files with my friends and to evaluate React and the nodejs ecosystem.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgoltzsche%2Ffile-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgoltzsche%2Ffile-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgoltzsche%2Ffile-service/lists"}