{"id":13594581,"url":"https://github.com/proofrock/pupcloud","last_synced_at":"2025-10-25T00:30:47.704Z","repository":{"id":42082621,"uuid":"463271661","full_name":"proofrock/pupcloud","owner":"proofrock","description":"[SUSPENDED] A portable web file manager and gallery","archived":false,"fork":false,"pushed_at":"2023-01-31T09:44:14.000Z","size":8269,"stargazers_count":134,"open_issues_count":11,"forks_count":6,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-09-29T12:03:28.780Z","etag":null,"topics":["axentix","browser","file-sharing","go","gofiber","svelte","web"],"latest_commit_sha":null,"homepage":"https://pupcloud.vercel.app","language":"Svelte","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/proofrock.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-24T19:12:59.000Z","updated_at":"2024-08-06T11:55:09.000Z","dependencies_parsed_at":"2023-02-16T18:01:52.675Z","dependency_job_id":null,"html_url":"https://github.com/proofrock/pupcloud","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fpupcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fpupcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fpupcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fpupcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/proofrock","download_url":"https://codeload.github.com/proofrock/pupcloud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219867388,"owners_count":16555891,"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":["axentix","browser","file-sharing","go","gofiber","svelte","web"],"created_at":"2024-08-01T16:01:35.981Z","updated_at":"2025-10-25T00:30:46.197Z","avatar_url":"https://github.com/proofrock.png","language":"Svelte","readme":"## **Warning**\n\n\u003e *This project is suspended - for now - as I cannot follow it as it would deserve, due to... lack of time, to make it short.\n\u003e I am quite fond of it, so I really want to restart working on it again; but I cannot say when or how, unfortunately.\n\u003e Thank you all for your appreciation and the support you've shown me, it's been really nice for me working on it so far.*\n\u003e\n\u003e *Of course, feel free to fork it as you like; and if I can be of any help on understanding the code, ask away!*\n\n# 🐶 Pupcloud v0.8.0\n\nPut your files on the browser!\n\n_[Documentation](https://germ.gitbook.io/pupcloud/) - [Demo](https://pupcloud.vercel.app/) - [Roadmap](https://github.com/proofrock/pupcloud/wiki/Roadmap)_\n\nPoint pupcloud to a local folder and instantly get its contents exposed as a web application. Browse, manage, share\nfiles... in a truly portable way!\n\nPupcloud doesn't need a database, [a config file](https://github.com/proofrock/pupcloud/discussions/26), nor it leaves\n.dotfiles on the filesystem; it is packaged as a single executable file (written in Go+Svelte+Typescript), so you'll\njust need to [download](https://germ.gitbook.io/pupcloud/guides/installation-and-building)\nand [run](https://germ.gitbook.io/pupcloud/guides/running-pupcloud) it.\n\nIt is an exercise in minimalism: it aims to be as simple as possible, while retaining all the features you would like it\nto have. Just run it! It has everything that fits in a pup-sized cloud ;-)\n\nIf you are curious, go see the [Demo](https://pupcloud.vercel.app/)!\n\n## Features\n\n- [Web interface](https://germ.gitbook.io/pupcloud/guides/basic-usage) that scales well on mobile;\n- Nothing is saved on disk (no database, no .dotfiles...);\n- [Authentication](https://germ.gitbook.io/pupcloud/guides/authentication) (also see [below](#auth));\n- [Read-only mode](https://germ.gitbook.io/pupcloud/guides/running-pupcloud) for avoiding fs writes;\n- [File previews](https://germ.gitbook.io/pupcloud/guides/basic-usage#preview-screen);\n- (Revokable) [folder sharing](https://germ.gitbook.io/pupcloud/guides/sharing-a-folder), on a separate URL (also\n  see [below](#sharing)):\n- \"[Branding](https://germ.gitbook.io/pupcloud/guides/running-pupcloud)\" (you can specify the title of the app screen).\n\nIt doesn't include HTTPS, as this can be done easily (and much more securely) with\na [reverse proxy](https://germ.gitbook.io/pupcloud/guides/reverse-proxy).\n\nSee the [ROADMAP](ROADMAP.md) file for a glimpse of what's in store!\n\n## Basic usage\n\nPupcloud is distributed as a single executable file. Download and unpack the proper file for your OS/arch.\n\nOnce done, just execute it with the directory to serve as an argument:\n\n```bash\npupcloud -r /my/dir\n```\n\nThen, open `http://localhost:17178` with a browser. As simple as that!\n\nRun `pupcloud --help` to see the other [config options](https://germ.gitbook.io/pupcloud/guides/running-pupcloud). You\ncan also:\n\n- enable \"write\" operations (delete/cut/paste/upload...; `-E` or `--allow-edits`);\n- setup [authentication](#auth) (`-P`/`-H`);\n- setup [folder sharing](#sharing) (`--share-profile`, `--share-port`, `--share-prefix`)\n- specify a title/brand for the window (`--title`);\n- use a different port then the default of 17178 (`-p`);\n- bind to a network interface (`--bind-to`);\n- instruct pupcloud to follow symlinks (`--follow-symlinks`);\n- specify a maximum size for upload, in Megabytes (`--max-upload-size`).\n\nBy default, it's forbidden to run it as root. Use `--allow-root` if you (really) want to.\n\n### Supported file types for viewing\n\nIn the file system view, you can click on a file to open it. Currently pupcloud supports:\n\n- Images, Audio, Video (when supported by the browser)\n- PDF documents (for desktop browsers)\n- Text-like files (txt, html, sources...)\n\nDetection of file types is done by mime type, and viewing relies on the browser's capabilities.\n\n## \u003ca name=\"auth\"\u003e\u003c/a\u003eAuthentication\n\nYou can set a password for accessing pupcloud, by using the `-P` or `-H` parameter on the commandline.\n\nUsing `-P`, you can specify the password in plain text. There is a more secure option, `-H`, using which you must\nprovide the SHA-256 sum of the password you want to use, in (lowercase) hex format.\n\nYou can provide the whole hash, or just the first part, of any length you want to keep the commandline short. Of course,\nthe longer the hash, the safer the system.\n\n```bash\n# Password is \"ciao\", with 128 bit of strength (truncated at 16 bytes)\npupcloud -r /my/dir -P b133a0c0e9bee3be20163d2ad31d6248\n```\n\nYou can use [this site](https://emn178.github.io/online-tools/sha256.html) to hash the password, it doesn't send the\npassword on the net (at least at the time I am writing, you may want to check).\n\n**BEWARE**: The password is sent in clear text over the net,\nso *[always use a HTTPS-capable reverse proxy](https://germ.gitbook.io/pupcloud/guides/reverse-proxy)* if you plan to\nserve over the public internet.\n\n## \u003ca name=\"sharing\"\u003e\u003c/a\u003eFolder sharing\n\nSharing a folder is possible. Pupcloud will launch a separate server, on another port, to allow to remap it on a reverse\nproxy.\n\nIn order to set up a share, one or more *profiles* must be specified. Each profile is in the form *name*:*secret*, where\nthe secret must not be shared with the recipient, and it's used to protect the confidentiality of the share.\n\nIn the Web interface, the sharing URL can be obtained using the \"share\" button, and specifying:\n\n- the profile;\n- a password (optional);\n- an expiry date (optional);\n- if the share must be read-only.\n\nThe share can be \"revoked\" by relaunching pupcloud without a particular profile, or changing the secret of a profile.\nAll the links tied to that profile will be invalidated. Also, if the main app is launched as read-only, all its share\nlinks will be read-only.\n\nRelevant CLI parameters are:\n\n- `--share-profile`: a share profile, in the form *name*:*secret* (e.g. `Family:abc0123`). Can be repeated for more\n  profiles.\n- `--share-port`: the port for the share server; by default `17179`;\n- `--share-prefix`: useful when using a reverse proxy, it's the base URL of the share link. By\n  default, `http://localhost:17179`.\n\nSharing is enabled if at least one profile is defined.\n\n## Docker\n\nOfficial docker image available. See [DockerHub's page](https://hub.docker.com/r/germanorizzo/pupcloud) for\ninstructions.\n\n## Known bugs\n\n- In rare cases, MIME type detection is wrong. It relies on Go builtin functions, so it needs to be investigated more.\n- On mobile, some glitches may be present. Please report them in the issue tracker!\n- In general, pupcloud is not (yet) mature and well\n  audited. [Take appropriate measures](https://app.gitbook.com/s/BIkxAX0ktzzPPM6PIcMj/security) if you want to publish\n  it over the public internet!\n\n## Credits\n\nKindly supported by [JetBrains for Open Source development](https://jb.gg/OpenSourceSupport).\n\n#### Server\n\n- [fiber](https://gofiber.io/) [MIT]\n- otiai10's [copy](https://github.com/otiai10/copy) [MIT]\n- spf13's [pflag](https://github.com/spf13/pflag) [BSD 3-Clause]\n\n#### Web UI\n\n- [axentix](https://useaxentix.com/) [MIT]\n- [hammer.js](https://github.com/hammerjs/hammer.js) [MIT]\n- [Material Design Icons](https://materialdesignicons.com/) [Pictogrammers Free]\n- [svelte](https://svelte.dev/) [MIT]\n- [SweetAlert2](https://github.com/sweetalert2/sweetalert2) [MIT]\n- yeyushengfan258's\n  [Win10Sur-icon-theme](https://github.com/yeyushengfan258/Win10Sur-icon-theme) [GPLv3]\n\n#### Languages\n\n- [Go](https://go.dev)\n- [Typescript](https://www.typescriptlang.org)\n","funding_links":[],"categories":["Svelte"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofrock%2Fpupcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproofrock%2Fpupcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofrock%2Fpupcloud/lists"}