{"id":15696839,"url":"https://github.com/western/http-up","last_synced_at":"2025-05-08T23:28:24.670Z","repository":{"id":183205722,"uuid":"669743443","full_name":"western/http-up","owner":"western","description":"Simple share folder via http with upload","archived":false,"fork":false,"pushed_at":"2025-05-07T16:36:07.000Z","size":5762,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-05-07T17:27:50.644Z","etag":null,"topics":["cli","command","expressjs","file-server","file-sharing","file-upload","http","http-file-server","http-server","https","https-server","javascript","nodejs","server","shared-folders","static","tls","upload"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/http-up","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/western.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2023-07-23T09:34:31.000Z","updated_at":"2025-05-07T16:36:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"7c9a4547-588c-4d9f-a424-48c4f2b6333e","html_url":"https://github.com/western/http-up","commit_stats":null,"previous_names":["western/http-up"],"tags_count":103,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/western","download_url":"https://codeload.github.com/western/http-up/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252926069,"owners_count":21826237,"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":["cli","command","expressjs","file-server","file-sharing","file-upload","http","http-file-server","http-server","https","https-server","javascript","nodejs","server","shared-folders","static","tls","upload"],"created_at":"2024-10-03T19:10:09.693Z","updated_at":"2025-05-08T23:28:24.660Z","avatar_url":"https://github.com/western.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# http-up\n\nSimple zero-configuration command line http server with lightweight interface to work with files\n\nShare folder via http with upload\n\nMultiple files upload to current showed folder\n\nIn extended mode you can doing more\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/screen-top6.png?raw=true\" /\u003e\n\u003c/p\u003e\n\n## Mobile window\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/screen_mobile4.png?raw=true\" /\u003e\n\u003c/p\u003e\n\n## Fast running without install\n\n```console\nnpx http-up .\n```\n\nor\n\n```console\nnpx http-up --port 3999 /path/to/fold\n```\n\n## If you switch --extend-mode\n\n```console\nnpx http-up --extend-mode /tmp\n```\n\nApp will change main list view to table. And you can operate with files - delete, move, copy\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/panel_buttons.png?raw=true\"  \u003e\n\u003c/p\u003e\n\nBelow you see display width more than 992 pix (1), less than (2) and mobile window (3):\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/width_screen_compare10.png?raw=true\"  \u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/width_screen_compare11.png?raw=true\"  \u003e\n\u003c/p\u003e\n\n\u003e [!IMPORTANT]  \n\u003e During group operations COPY or MOVE all target files/folders will be rewrite\n\n## Preview doc button\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/preview_doc_button.png?raw=true\"  \u003e\n    \n\u003c/p\u003e\n\nFor [Thumbnails support](#thumbnails-support) read below\n\n## Buttons share/rename/edit\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/share_rename_edit.png?raw=true\"  \u003e\n    \n\u003c/p\u003e\n\nEdit button work with formats `html, rtf, doc, docx, odt`.\n\nFor document online edit you need `libreoffice` package.\n\n## Motivation for share button\n\nImagine, that you run app with basic auth `npx http-up --user XXX --password YYY --extend-mode .`\n\nAnd you not want to share with your login/password\n\nAnd you need to show only one file\n\n## Basic auth\n\n\u003e [!IMPORTANT]  \n\u003e It is recommend for work on public network interfaces\n\nevery time when you start, you get a list of random accounts\n\n```console\nnpx http-up --basic .\n```\n\nor only one basic auth specific user\n\n```console\nnpx http-up --user login1 --password EAJteG5 .\n```\n\n## The safest run\n\n```console\nnpx http-up --tls --basic /path/to/you\n```\nread for [TLS Support](#automatic-tls-keys-generate) below\n\n## Only share\n\n```console\nnpx http-up --upload-disable --folder-make-disable /tmp/fold\n```\n\n## Online editor\n\nYou can online edit files `html, rtf, doc, docx, odt` as office files.\n\nOr `html, txt, js, css, md` formats as source code.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/online_editor_cmp.png?raw=true\"  /\u003e\n\u003c/p\u003e\n\nYou need `libreoffice` package for office files.\n\nOffice files follow this flow: `file.doc =\u003e file.html, edit =\u003e file.doc`\n\n## New filename ext\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/new_filename_ext.png?raw=true\"  /\u003e\n\u003c/p\u003e\n\nIf you set extension for file as `rtf, doc, docx, odt`, after create you can edit it with online WYSIWYG.\n\n(For formats `rtf, doc, docx, odt` you need `libreoffice` package)\n\nIf you set extension `html, txt, js, css, md`, you will edit it with code editor.\n\n## File encrypt\n\n\u003e [!IMPORTANT]  \n\u003e Be careful. If you download `.crypt` file with WRONG password, it file will be contain MESS of bytes\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/code_to_encrypt5.png?raw=true\" width=\"60%\"  \u003e\n    \n\u003c/p\u003e\n\nYour server need package `openssl`. It will be use `openssl aes-256-cbc`\n\n```console\nnpx http-up --extend-mode --crypt /tmp\n```\n\nThen, set your passcode to the form. The passcode store on the form between requests and you not need input it every time (if you clear it server will not use openssl).\n\nDuring the process of uploading, your files will be encrypt and their EXT change to `.crypt`\n\nWhen files lying on your server, their data is crypted.\n\nIf you need decrypt any `.crypt` flles, set your passcode, and click on file. During download this file, it will be decrypt on the fly.\n\n### Server will be encrypt upload file:\n```console\nnpx http-up --extend-mode --crypt /tmp\n```\n- if you set `--crypt` arg on cmd\n- if you set passcode (pass code set by form)\n\n### Server will be decrypt download file:\n```console\nnpx http-up --extend-mode --crypt /tmp\n```\n- if you set `--crypt` arg on cmd\n- if filename contain `.crypt` extension\n- if you set right passcode (pass code set by form)\n\n### Server will be decrypt download file (case 2):\n```console\nnpx http-up /tmp\n```\n- if filename contain `.crypt` extension\n- if you get file with `code` param: `/fold3/file.jpg.crypt?code=YOUR_PASS_HERE`\n\n\n\n\n\n\n## Automatic TLS keys generate\n\n- For start HTTPS server you need `openssl` linux package\n- When you start server with `--tls` option, all keys generate automatically\n\n```console\nnpx http-up . --tls\n```\n\n- Server use self signed certs, generated at first time. Thus you need approve this connection on your clients.\n\n\u003cp float=\"left\"\u003e\n  \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/chrome_self_signed_cert.png?raw=true\" width=\"45%\" \u003e\n  \u003cimg src=\"https://github.com/western/http-up/blob/dev/doc/firefox_self_signed_cert.png?raw=true\" width=\"45%\" \u003e\n\u003c/p\u003e\n\n## Export log data and how read it\n\nAfter export log data to file\n\n```console\nnpx http-up --log-export file.json\n```\n\nYou can ask `show all data for client \"192.168.0.102\" ` inside with `jq`:\n\n```console\njq '.[] | select(.ip==\"192.168.0.102\")' file.json\n```\n\nOr `show all events, contain \"spring\" substring`:\n\n```console\njq '.[] | select(.msg | contains(\"spring\"))' file.json\n```\n\nOr you can work with SQL directly inside `.httpup/db` folder\n\n## Magic file index.html inside any folder\n\nIf you put inside folder `index.html`, it will be return as content\n\n## Thumbnails support\n\nYou need `convert` (ImageMagick package) for preview images `jpg, png, gif`\n\nFor document preview you need `libreoffice` package. Formats `pdf, rtf, doc, docx, xls, xlsx, odt, ods`\n\n## Linux packages needs for full functional\n\n- `md5sum` (coreutils package) - make md5 sum of file\n- `convert` (ImageMagick package) - for make thumbnails\n- `libreoffice` - for doc thumbnails, for doc files online edit\n- `openssl` - encrypt file support, package for certs build\n- `zip` - cmd util for zip_and_download\n\n\n## Notes\n\n\u003e [!CAUTION]\n\u003e Be careful, if you start this App on public network interface, anybody can work with it\n\n\u003e [!CAUTION]  \n\u003e Always run this app only under unprivileged common user\n\n- If you run application under some User, this user should be have privileges to write target folder\n\n\n\n## History\n\n### backlog\n- [ ] save whitespaces for filenames?\n- [ ] what is the lib can resize images enough fast\n- [ ] database migration\n- [ ] project needs middleware (or module arch) or not\n- [ ] TS ?\n- [ ] rich frontend (react, vue) ?\n- [x] search\n- [ ] should i support no_database version?\n- [ ] tabs\n\n### 2.4.2\n- [x] generate tls keys via openssl directly: remove easyrsa dependence\n\n### 2.4.0\n- [x] code restructure\n- [x] search highlight fix\n- [x] API changes\n- [x] add player for folder\n- [x] more stable for get file (res.sendFile err catch)\n- [x] add TAG show for log info\n- [x] check move/copy API source and target path\n\n\n\n\n\n### [other history here](HISTORY.md)\n\n\n## Any questions\n\nhttps://github.com/western/http-up/issues\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwestern%2Fhttp-up","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwestern%2Fhttp-up","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwestern%2Fhttp-up/lists"}