{"id":26587821,"url":"https://github.com/yuri-becker/seafile-mount","last_synced_at":"2026-05-10T09:40:52.370Z","repository":{"id":226472001,"uuid":"768728033","full_name":"yuri-becker/seafile-mount","owner":"yuri-becker","description":"💾 Mount your Seafile libraries, but containerized. ","archived":false,"fork":false,"pushed_at":"2024-04-24T23:34:49.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"latest","last_synced_at":"2024-04-25T00:48:17.902Z","etag":null,"topics":["dockerfile","seafile","seafile-client"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/yuribecker/seafile-mount","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuri-becker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2024-03-07T16:14:07.000Z","updated_at":"2024-04-24T23:34:52.000Z","dependencies_parsed_at":"2024-03-13T21:32:00.688Z","dependency_job_id":"8f6656c0-ce24-4404-a7a1-c4ec9d36dfdd","html_url":"https://github.com/yuri-becker/seafile-mount","commit_stats":null,"previous_names":["yuri-becker/seafile-mount"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-becker%2Fseafile-mount","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-becker%2Fseafile-mount/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-becker%2Fseafile-mount/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-becker%2Fseafile-mount/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuri-becker","download_url":"https://codeload.github.com/yuri-becker/seafile-mount/tar.gz/refs/heads/latest","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245103963,"owners_count":20561372,"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":["dockerfile","seafile","seafile-client"],"created_at":"2025-03-23T12:30:34.690Z","updated_at":"2026-05-10T09:40:52.328Z","avatar_url":"https://github.com/yuri-becker.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GPL 3 License](https://img.shields.io/github/license/yuri-becker/seafile-mount?style=for-the-badge\u0026logo=gnu\u0026logoColor=white\u0026color=%23A42E2B )](https://github.com/yuri-becker/seafile-mount/blob/latest/LICENSE.md)\n[![Docker](https://img.shields.io/docker/pulls/yuribecker/seafile-mount?style=for-the-badge\u0026logo=docker\u0026logoColor=white\u0026color=%232496ED\n)](https://hub.docker.com/r/yuribecker/seafile-mount)\n[![GitHub](https://img.shields.io/github/stars/yuri-becker/seafile-mount?style=for-the-badge\u0026logo=github\u0026logoColor=white\u0026color=%23181717)](https://github.com/yuri-becker/seafile-mount)\n\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n\n  \u003ch1 align=\"center\"\u003e\u003cstrong\u003eseafile-mount\u003c/strong\u003e\u003c/h1\u003e\n\n  \u003cp align=\"center\"\u003e\n    Mount your \u003ca href=\"https://www.seafile.com/en/home/\"\u003eSeafile\u003c/a\u003e libraries, but containerized.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## About\n\nThis docker image mounts a [Seafile](https://www.seafile.com/en/home/) user's library using\nthe [seadrive](https://help.seafile.com/drive_client/drive_client_for_linux/) client, which streams a filesystem instead\nof syncing.\n\nUsing Seadrive containerized has several advantages (probably – in my case, it was just an infrastructural requirement).\n\nImage supports x86_64 and arm64 because that's what Seadrive is available for. Albeit, the arm64 Debian repository for\nSeadrive didn't receive the latest patches, but still works.\n\n## Drawbacks\n\nYour **host** system needs to have [Fuse](https://github.com/libfuse/libfuse) installed and the container needs to be\nrun with `--privileged`.\n\n## Running it\n\n* Configure using [environment variables](#environment-variables).\n* Give extended\n  privileges ([Engine](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities), [Compose](https://docs.docker.com/compose/compose-file/05-services/#privileged))\n* [Bind mount](https://docs.docker.com/storage/bind-mounts/#use-a-bind-mount-with-compose) `/seafile` with type `bind`\n  and bind-propagation `rshared`.\n* Image is just called `seafile-mount`\n\n### Example\n\n#### Command line\n\n```sh\ndocker run --privileged \\\n--env-file ./.env \\\n--mount type=bind,source=/home/yuri/seafile-mount,target=/seafile,bind-propagation=rshared \\\n-it seafile-mount\n```\n\n#### docker-compose.yml\n\n```yaml\nversion: \"3\"\nservices:\n  seadrive:\n    container_name: seadrive\n    image: yuribecker/seafile-mount:latest\n    environment:\n      - SEAFILE_MOUNT_SERVER=https://seadrive.example.org\n      - SEAFILE_MOUNT_USERNAME=username@example.org\n      - SEAFILE_MOUNT_TOKEN=TOKEN\n    privileged: true\n    volumes:\n      - type: bind\n        bind:\n          propagation: rshared\n        source: /home/yuri/seafile-mount\n        target: /seafile\n\n```\n\n\n\n## Environment Variables\n\n| Name                               | Description                                                                     | Default                 |\n|------------------------------------|---------------------------------------------------------------------------------|-------------------------|\n| SEAFILE_MOUNT_SERVER               | URL of your server (including https://)                                         | *required*              |\n| SEAFILE_MOUNT_USERNAME             | Username (email) of the user                                                    | *required*              |\n| SEAFILE_MOUNT_TOKEN                | Token for the user, see [Acquiring a Token](#acquiring-a-token)                 | required                |\n| SEAFILE_MOUNT_IS_PRO               | Is server Professional Edition? (`true`/`false`)                                | false                   |\n| SEAFILE_MOUNT_CLIENT_NAME          | Name for how this client should show up in Seafile's admin panel                | Seafile Docker Mount    |\n| SEAFILE_MOUNT_CACHE_SIZE_LIMIT     | Size limit for the cache                                                        | 10GB                    |\n| SEAFILE_MOUNT_CLEAN_CACHE_INTERVAL | Interval for cache cleaning in minutes                                          | 10                      |\n| SEAFILE_MOUNT_FUSE_OPTS            | [FUSE mount options](https://www.systutorials.com/docs/linux/man/8-mount.fuse/) | allow_root,auto_unmount |\n| SEAFILE_MOUNT_ALLOW_OTHER          | Shortcut for SEAFILE_MOUNT_FUSE_OPTS=allow_other,auto_unmount (set to `yes`)    | *optional*              |\n\nSee\nthe [official documentation](https://help.seafile.com/drive_client/drive_client_for_linux/#running-seadrive-without-gui)\nfor more info about these options.\u003cbr/\u003e\n\u003csub\u003e\"Info\" in this case means there isn't much info in the official documentation anyway.\u003c/sub\u003e\n\n### Acquiring a Token\n\nAs shown in\nthe [official documentation](https://help.seafile.com/drive_client/drive_client_for_linux/#running-seadrive-without-gui),\nrequest a token from your Seafile instance's API.\n\n```sh\ncurl --url https://YOUR_SEAFILE_INSTANCE/api2/auth-token/ \\\n  --header 'content-type: application/x-www-form-urlencoded' \\\n  --data-urlencode \"username=EMAIL\" \\\n  --data-urlencode \"password=PASSWORD\"\n```\n\nNote that it doesn't work with a Token extracted from a browser session.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuri-becker%2Fseafile-mount","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuri-becker%2Fseafile-mount","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuri-becker%2Fseafile-mount/lists"}