{"id":18160382,"url":"https://github.com/western/http-here","last_synced_at":"2026-03-14T11:11:39.265Z","repository":{"id":259961689,"uuid":"873224851","full_name":"western/http-here","owner":"western","description":"Share folder via http and upload by golang","archived":false,"fork":false,"pushed_at":"2025-01-04T20:26:56.000Z","size":3863,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-01-04T21:26:48.821Z","etag":null,"topics":["cli","command","file-server","file-upload","golang","http","http-file-server","http-server","https","server","shared-folders","static","tls","upload"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","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":"LICENSE.txt","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":"2024-10-15T20:02:51.000Z","updated_at":"2025-01-04T20:27:00.000Z","dependencies_parsed_at":"2025-01-04T21:33:46.751Z","dependency_job_id":null,"html_url":"https://github.com/western/http-here","commit_stats":null,"previous_names":["western/http-here"],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-here","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-here/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-here/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/western%2Fhttp-here/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/western","download_url":"https://codeload.github.com/western/http-here/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238620949,"owners_count":19502568,"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","file-server","file-upload","golang","http","http-file-server","http-server","https","server","shared-folders","static","tls","upload"],"created_at":"2024-11-02T08:08:08.295Z","updated_at":"2026-03-08T13:03:27.326Z","avatar_url":"https://github.com/western.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# http-here\n\nSimple zero-configuration command line http server with lightweight interface to work with files\n\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/western/http-here?style=flat-square)](https://goreportcard.com/report/github.com/western/http-here)\n[![Go Reference](https://pkg.go.dev/badge/github.com/western/http-here.svg)](https://pkg.go.dev/github.com/western/http-here)\n[![Releases](https://img.shields.io/github/release/western/http-here/all.svg?style=flat-square)](https://github.com/western/http-here/releases)\n[![LICENSE](https://img.shields.io/github/license/western/http-here.svg?style=flat-square)](https://github.com/western/http-here/blob/dev/LICENSE.txt)\n\n\n\u003e Share folder via http with upload\n\n\u003e Multiple files upload to current showed folder\n\n\u003e In extended mode you can doing more\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-here/blob/dev/doc/screen-top6.png?raw=true\" /\u003e\n\u003c/p\u003e\n\n## Mobile screen\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-here/blob/dev/doc/screen_mobile4.png?raw=true\" /\u003e\n\u003c/p\u003e\n\n\n\n\n\n## Build from sources\n\n```console\ngit clone --branch v2.0.0 https://github.com/western/http-here\ncd http-here\nmake build\n\n# Then copy builded \"http-here\" binary file to the place you want.\n# Usually your home ~/bin\ncp http-here ~/bin\n\n```\nor\n```console\ngo install github.com/western/http-here/cmd/http-here@v2.0.0\n```\n\n\n\n## Download ready binary file\n\nlinux / amd64\n\n```console\n# go to your home bin\ncd ~/bin\n\n# download and unpack\nwget https://github.com/western/http-here/releases/download/v2.0.0/http-here.gz\ngzip -d http-here.gz\n\nchmod +x http-here\n```\n\nwindows / amd64\n```console\n# Download this archive\nhttps://github.com/western/http-here/releases/download/v2.0.0/http-here.zip\n\n# Unpack it\n# Open `cmd` and run\n```\n\ndarwin / amd64\n```console\n# Download this archive\nhttps://github.com/western/http-here/releases/download/v2.0.0/http-here.darwin.amd64.gz\n```\n\n## Run\n```console\nhttp-here /tmp\n```\nor\n```console\nhttp-here --port 7999 /path/to/folder\n```\n\n\n## If you switch --extend-mode\n\n```console\nhttp-here --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-here/blob/dev/doc/panel_buttons2.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-here/blob/dev/doc/width_screen_compare10.png?raw=true\"  \u003e\n    \u003cimg src=\"https://github.com/western/http-here/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-here/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\n\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\nhttp-here --basic .\n```\n\nor only one basic auth specific user\n\n```console\nhttp-here --login loginXX --password MugMf7AHs .\n```\n\n## The safest run\n\n```console\nhttp-here --tls --basic /path/to/you\n```\n\nread for [TLS Support](#automatic-tls-keys-generate) below\n\n## Only share\n\n```console\nhttp-here --share-only /tmp/fold\n```\n\n## Run with prefork\n\nPrefork help to handle with multiple heavy query (big image gallery as example)\n\n```console\nhttp-here --prefork --extend-mode /tmp\n```\n\nWhen you run server as `prefork`, every process has a `folder cache`.\nIt is look good, if you use app only as read only.\nBut, if you upload some files or delete some files - `folder cache` should be refreshed for every process as soon as possible.\nSo, the app set small time for `--cache-dir` param by default together with `--prefork`.\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\nOr `md` as markdown.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-here/blob/dev/doc/online_editor_cmp2.png?raw=true\"  /\u003e\n    \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## 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-here/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\nhttp-here --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 encrypted.\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\nhttp-here --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\nhttp-here --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\nhttp-here /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## 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 current folder\n\n## Automatic TLS keys generate\n\n- When you start server with `--tls` option, all keys generate automatically\n\n```console\nhttp-here --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-here/blob/dev/doc/chrome_self_signed_cert.png?raw=true\" width=\"45%\" \u003e\n  \u003cimg src=\"https://github.com/western/http-here/blob/dev/doc/firefox_self_signed_cert.png?raw=true\" width=\"45%\" \u003e\n\u003c/p\u003e\n\n## Magic file index.html inside any folder\n\nIf you put inside folder file `index.html`, it will be return as content\n\n## Thumbnails support\n\nFor document preview you need `libreoffice` package. Formats `pdf, rtf, doc, docx, xls, xlsx, odt, ods`.\n\nFor `jpg, gif, png` you not need anything.\n\nAll previews generate during first view. One time.\n\n## Dependencies\n\n- CDN `cdn.jsdelivr.net` - Bootstrap and Bootstrap icons\n- `libreoffice` (not mandatory if you not use) - for doc thumbnails, for doc files online edit\n- `openssl` (not mandatory if you not use) - encrypt file support\n\n## How to build without CDN\n\n```console\ngit clone https://github.com/western/http-here\ncd http-here\nmake without_cdn_build\n```\n\n\n## API\n\n[western/http-here/refs/heads/dev/internal/docs/openapi.yaml](https://editor.swagger.io/?url=https://raw.githubusercontent.com/western/http-here/refs/heads/dev/internal/docs/openapi.yaml)\n\n## You can ask any question or suggest something\n\nhttps://github.com/western/http-here/issues\n\n## History\n\n### backlog\n- [ ] add --log and --tee args for save output (or database?)\n- [ ] change background actions for FS drivers (i need one abstraction layer)\n- [ ] problem: how decide to run md5sum inside some folder\n- [x] ~~database, separate branch without?~~ (app have switch option for database)\n- [ ] tests\n- [x] make builder for configure compiler - add all libraries to local assets, Bootstrap, Bootstrap-icons (Makefile options added)\n- [x] prepare frontend REACT repo (repo already exist, but only local)\n- [x] prepare CODEMIRROR repo (repo already exist, but only local)\n- [ ] prepare tui.editor repo\n- [x] REST restructure\n\n### 2.0.0\n- [x] database nonblock speedest engine\n- [x] database engine use only native golang builder (not need specific lib)\n- [x] one central model handlers\n- [x] `http-here user` subcommand interface\n- [x] `http-here log` subcommand interface\n- [x] basic auth by database USER accounts `--basic2 key`\n- [x] index5 client js code\n- [x] search without database\n- [x] removed folder fix - `RemoveCacheDir for subfolders`\n- [x] save file name spaces\n\n### 1.14.3\n- [x] refresh spa\n\nrefresh codemirror - add json highlight, disable dark, disable autocomplete;\n\nMakeFileModal: add json, sh exts; add md editor redirect\n- [x] codemirror bundle update cm6.bundle-20250710.min.js\n\ncodemirror:\n- [x] disable autocomplete\n- [x] disable black theme\n- [x] add highlight JSON\n\neditors:\n- [x] open SH as CODE\n- [x] for new SH file - open CODE online editor\n- [x] for new JSON file - open CODE online editor\n- [x] for new MD file - open in MARKDOWN editor\n\n### 1.14.2\n- [x] refresh spa, spa app can run in two modes - default and extend\n\n### 1.14.0\n- [x] add --usedb param (database disabled by default)\n- [x] cache readdir and --cache-dir param for timeout\n- [x] server connections optimization\n- [x] add --share-only param\n- [x] remove jquery\n- [x] disable WalkAndTreeBuild2, remove bstreeview (rewrite to \"clipboard style\")\n- [x] add MARKDOWN editor (without SPA app)\n- [x] refresh SPA app - change upload api and checkbox reset\n- [x] rewrite code\n\nBy default `cache-dir` timeout set to `30 seconds`. If you not set yours.\n\n\n\n### [other history here](HISTORY.md)\n\n## Mascot\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-here/blob/dev/doc/mascot.jpg?raw=true\" width=\"40%\"  /\u003e\n\u003c/p\u003e\n\n## Pirates hiding their http\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/western/http-here/blob/dev/doc/pirates_hiding_their_http.jpg?raw=true\" /\u003e\n\u003c/p\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwestern%2Fhttp-here","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwestern%2Fhttp-here","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwestern%2Fhttp-here/lists"}