Socket
Socket
Sign inDemoInstall

hfs

Package Overview
Dependencies
164
Maintainers
1
Versions
135
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    hfs

HTTP File Server


Version published
Weekly downloads
161
increased by62.63%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

HFS: HTTP File Server (version 3)

logo and motto

Introduction

HFS is the best way via web to access or share files from your disk.

  • It's a server software, share files fresh from your disk. Don't rely on services, be independent!
  • It's all very fast. Try download zipping 100GB, it starts immediately!
  • Easy to use. HFS tries to detect problems and suggest solutions.
  • Share even a single file with our virtual file system, even with a different name, all without touching the real file. Present things the way you want!
  • Watch all activities in real-time.
  • Control bandwidth, decide how much to give.

This is a full rewrite of the Delphi version.

How does it work

  • run HFS on your computer, administration page automatically shows up
  • select what files and folders you want to be accessible
  • possibly create accounts and limit access to files
  • access those files from a phone or another computer just using a browser

Features

  • https
  • unicode
  • virtual file system
  • mobile friendly front-end
  • search
  • accounts
  • resumable downloads
  • resumable uploads
  • download folders as zip archive
  • remote delete
  • simple website serving
  • plug-ins
  • log file
  • speed throttler
  • admin web interface
  • multi-language front-end
  • virtual hosting (plug-in)
  • anti-brute-force (plug-in)
  • reverse-proxy support

Installation

  1. go to https://github.com/rejetto/hfs/releases
  2. click on Assets
  3. download the right version for your computer
  4. launch hfs file
  5. the browser should automatically open on localhost address, so you can configure the rest in the Admin-panel.
    • if a browser cannot be opened on the computer where you are installing HFS, you should enter this command in HFS console: create-admin <PASSWORD>

If you access Admin-panel via localhost, by default HFS won't require you to login. If you don't like this behavior, disable it in the Admin-panel or enter this console command config localhost_admin false.

Other systems

If your system is not Windows/Linux/Mac, you can try this alternative version:

  1. install node.js
  2. execute: sudo npm -g i hfs
  3. launch: hfs

Configuration and other files will be stored in %HOME%/.vfs

With this installation method, you can update with sudo npm -g update hfs .

Service

If you want to run HFS as a service

  • if you installed with npm on Windows
    • service installation
      • run npx qckwinsvc2 install name="HFS" description="HFS" path="%APPDATA%\npm\node_modules\hfs\src\index.js" args="--cwd %HOMEPATH%\.hfs" now
    • service update
      • run npx qckwinsvc2 uninstall name="HFS"
      • run npm -g update hfs
      • run the service installation again

Internationalization

It is possible to show the Front-end in other languages. In the Languages section of the Admin-panel you'll be able to install lang files. You can find some of these files at https://github.com/rejetto/hfs/tree/main/langs Files are named hfs-lang-CODE.json, where CODE is the ISO code for your language (e.g. pt-br for Brazilian). To download a file: open it, right-click on the "Raw" button, Save.

If your language is missing, please consider translating yourself.

Translation is applied automatically based on the configuration of the visitor's browser. Check the language configuration of your browser.

Plug-ins

To install a plugin you just copy its folder inside plugins folder.

Delete it to uninstall.

HFS will ignore all folders with -disabled at the end of the name.

Why you should upgrade from HFS 2.x to 3

As you can see from the list of features, we already have some goods that you cannot find in HFS 2. Other than that, you can also consider:

  • it's more robust: it was designed to be an always-running server, while HFS 1-2 was designed for occasional usage (transfer and quit)
  • passwords are never really stored, just a non-reversible hash is
  • faster search (up to 12x)
  • more flexible permissions

But you may still want to stay with HFS 2.x (so far) for the following reasons

  • smaller
  • more tested
  • classic window interface (can be easier for some people)

Console commands

If you have access to HFS' console, you can enter commands. Start with help to have a full list.

Configuration

Configuration can be done in several ways

  • accessing the Admin-panel with your browser
  • after HFS has started you can enter console command in the form config NAME VALUE
  • passing via command line at start in the form --NAME VALUE
  • directly editing the config.yaml file. As soon as you save it is reloaded and changes are applied

NAME stands for the property name that you want to change. See the complete list below.

Where is it stored

Configuration is stored in the file config.yaml, which is stored in the same folder of hfs.exe if you are using this kind of distribution on Windows, or USER_FOLDER/.hfs on other systems.

You can decide a different file and location by passing --config SOME_FILE at command line, or inside an env called HFS_CONFIG. Any relative path provided is relative to the cwd.

Check details about config file format.

Reverse proxy

HFS can work behind a reverse proxy. Configuration depends on what software you use, but this is an example using nginx exposing HFS under the path /files/ instead of just /. Adjust it to suit your needs.

location /files/ {
  proxy_http_version 1.1;
  keepalive_timeout 30;
  proxy_buffering off;
  proxy_redirect off;
  proxy_max_temp_file_size 0;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  # forward IP address
  proxy_set_header        X-forwarded-prefix "/files"; # the location without final slash
  client_max_body_size    0;  # disable max size for uploads
  proxy_pass      http://127.0.0.1:80/;
}

This is enough, but you may want to configure generated links accordingly:

  • go to Admin-panel > Shared files > Home > Link
  • click the change button (right side of the field)
  • enter the final URL of your proxy including the location

Contribute

There are several ways to contribute

  • Report bugs

    It's very important to report bugs, and if you are not so sure about it, don't worry, we'll discuss it. If you find important security problems, please contact us privately so that we can publish a fix before the problem is disclosed, for the safety of other users.

  • Translate to your language.

  • Suggest ideas

    While the project should not become too complex, yours may be an idea for a plugin.

  • Submit your code

    If you'd like to make a change yourself in the code, please first open an "issue" or "discussion" about it, so we'll try to cooperate and understand what's the best path for it.

  • Make a plugin

    A plugin can change the look (a theme), and/or introduce a new functionality.

More

Keywords

FAQs

Last updated on 18 Mar 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc