http-here
Simple zero-configuration command line http server with lightweight interface to work with files

Share folder via http with upload
Multiple files upload to current showed folder
In extended mode you can doing more
Mobile screen
Build from sources
git clone --branch v2.0.1 https://github.com/western/http-here
cd http-here
make build
# Then copy builded "http-here" binary file to the place you want.
# Usually your home ~/bin
cp http-here ~/bin
or
go install github.com/western/http-here/cmd/http-here@v2.0.1
Download ready binary file
linux / amd64
# go to your home bin
cd ~/bin
# download and unpack
wget https://github.com/western/http-here/releases/download/v2.0.1/http-here.gz
gzip -d http-here.gz
chmod +x http-here
windows / amd64
# Download this archive
https://github.com/western/http-here/releases/download/v2.0.1/http-here.zip
# Unpack it
# Open `cmd` and run
darwin / amd64
# Download this archive
https://github.com/western/http-here/releases/download/v2.0.1/http-here.darwin.amd64.gz
Run
http-here /tmp
or
http-here --port 7999 /path/to/folder
If you switch --extend-mode
http-here --extend-mode /tmp
App will change main list view to table. And you can operate with files - delete, move, copy
Below you see display width more than 992 pix (1), less than (2) and mobile window (3):
[!IMPORTANT]
During group operations COPY or MOVE all target files/folders will be rewrite
For Thumbnails support read below
Basic auth
[!IMPORTANT]
It is recommend for work on public network interfaces
every time when you start, you get a list of random accounts
http-here --basic .
or only one basic auth specific user
http-here --login loginXX --password MugMf7AHs .
The safest run
http-here --tls --basic /path/to/you
read for TLS Support below
Only share
http-here --share-only /tmp/fold
Run with prefork
Prefork help to handle with multiple heavy query (big image gallery as example)
http-here --prefork --extend-mode /tmp
When you run server as prefork, every process has a folder cache.
It is look good, if you use app only as read only.
But, if you upload some files or delete some files - folder cache should be refreshed for every process as soon as possible.
So, the app set small time for --cache-dir param by default together with --prefork.
Online editor
You can online edit files html, rtf, doc, docx, odt as office files.
Or html, txt, js, css, md formats as source code.
Or md as markdown.
You need libreoffice package for office files.
Office files follow this flow: file.doc => file.html, edit => file.doc
File encrypt
[!IMPORTANT]
Be careful. If you download .crypt file with WRONG password, it file will be contain MESS of bytes
Your server need package openssl. It will be use openssl aes-256-cbc
http-here --extend-mode --crypt /tmp
Then, 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).
During the process of uploading, your files will be encrypt and their EXT change to .crypt
When files lying on your server, their data is encrypted.
If you need decrypt any .crypt flles, set your passcode, and click on file. During download this file, it will be decrypt on the fly.
Server will be encrypt upload file:
http-here --extend-mode --crypt /tmp
- if you set
--crypt arg on cmd
- if you set passcode (pass code set by form)
Server will be decrypt download file:
http-here --extend-mode --crypt /tmp
- if you set
--crypt arg on cmd
- if filename contain
.crypt extension
- if you set right passcode (pass code set by form)
Server will be decrypt download file (case 2):
http-here /tmp
- if filename contain
.crypt extension
- if you get file with
code param: /fold3/file.jpg.crypt?code=YOUR_PASS_HERE
Notes
[!CAUTION]
Be careful, if you start this App on public network interface, anybody can work with it
[!CAUTION]
Always run this app only under unprivileged common user
- If you run application under some User, this user should be have privileges to write current folder
Automatic TLS keys generate
- When you start server with
--tls option, all keys generate automatically
http-here --tls .
- Server use self signed certs, generated at first time. Thus you need approve this connection on your clients.
Magic file index.html inside any folder
If you put inside folder file index.html, it will be return as content
Thumbnails support
For document preview you need libreoffice package. Formats pdf, rtf, doc, docx, xls, xlsx, odt, ods.
For jpg, gif, png you not need anything.
All previews generate during first view. One time.
Dependencies
- CDN
cdn.jsdelivr.net - Bootstrap and Bootstrap icons
libreoffice (not mandatory if you not use) - for doc thumbnails, for doc files online edit
openssl (not mandatory if you not use) - encrypt file support
How to build without CDN
git clone https://github.com/western/http-here
cd http-here
make without_cdn_build
API
western/http-here/refs/heads/dev/internal/docs/openapi.yaml
You can ask any question or suggest something
https://github.com/western/http-here/issues
History
backlog
- add --log and --tee args for save output (or database?)
- change background actions for FS drivers (i need one abstraction layer)
- problem: how decide to run md5sum inside some folder
-
database, separate branch without? (app have switch option for database)
- tests
- make builder for configure compiler - add all libraries to local assets, Bootstrap, Bootstrap-icons (Makefile options added)
- prepare frontend REACT repo (repo already exist, but only local)
- prepare CODEMIRROR repo (repo already exist, but only local)
- prepare tui.editor repo
- REST restructure
2.0.0
- database nonblock speedest engine
- database engine use only native golang builder (not need specific lib)
- one central model handlers
-
http-here user subcommand interface
-
http-here log subcommand interface
- basic auth by database USER accounts
--basic2 key
- index5 client js code
- search without database
- removed folder fix -
RemoveCacheDir for subfolders
- save file name spaces
1.14.3
refresh codemirror - add json highlight, disable dark, disable autocomplete;
MakeFileModal: add json, sh exts; add md editor redirect
- codemirror bundle update cm6.bundle-20250710.min.js
codemirror:
- disable autocomplete
- disable black theme
- add highlight JSON
editors:
- open SH as CODE
- for new SH file - open CODE online editor
- for new JSON file - open CODE online editor
- for new MD file - open in MARKDOWN editor
1.14.2
- refresh spa, spa app can run in two modes - default and extend
1.14.0
- add --usedb param (database disabled by default)
- cache readdir and --cache-dir param for timeout
- server connections optimization
- add --share-only param
- remove jquery
- disable WalkAndTreeBuild2, remove bstreeview (rewrite to "clipboard style")
- add MARKDOWN editor (without SPA app)
- refresh SPA app - change upload api and checkbox reset
- rewrite code
By default cache-dir timeout set to 30 seconds. If you not set yours.
Mascot
Pirates hiding their http