Skip to content

Repository files navigation

VIICoreFT

VIICoreFT

VIICoreFileTransfer — fast file & folder transfer between your computer (Windows / macOS / Linux) and a server. Installs with a single command, opens in the browser at http://<ip>:<port> and transfers files in multiple parallel streams — several times faster than plain HTTP or SFTP.

🇷🇺 Русская версия документации

Features

  • 🚀 Parallel chunked uploads — 10–100 GB files upload in 8 simultaneous streams
  • 📁 Files and whole folders — drag a folder into the browser window, the structure is preserved
  • Resume after interruption — an interrupted upload continues from where it stopped
  • ⬇️ Downloading — files directly, folders as a single ZIP archive on the fly
  • 🔒 IP filter — the site is only accessible from your IPs (or from anywhere if none are set)
  • 🔐 HTTPS — enabled in one click, a self-signed certificate is generated automatically, or upload your own (Let's Encrypt, etc.)
  • ⚙️ In-browser settings — port and folder are changed on the site, the server restarts itself
  • Single binary — Go, no dependencies, ~10 MB RAM
  • 🔄 One-command updatesVIICoreFT update

Server installation

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/VIICore/VIICoreFT/main/install.sh)"

The script downloads the binary from GitHub, creates a systemd service and asks for your IP addresses — enter them comma-separated (or leave empty to allow access for everyone). IPs can be changed at any time.

The site will be available at: http://<server-IP>:8080

HTTPS

Click on the site → enable "HTTPS" → "Save and restart".

  • If no certificate is uploaded — the server generates a self-signed one itself (valid for 10 years) and the browser will ask for confirmation once.
  • Paste your -----BEGIN CERTIFICATE----- and -----BEGIN PRIVATE KEY----- (e.g. from Let's Encrypt) to remove the warning.
  • The HTTP port with redirect (http_port, default port+1) automatically redirects visitors to HTTPS.

VIICoreFT management command

Command Action
VIICoreFT server Start the server
VIICoreFT install Reinstall (port, folder, IP list)
VIICoreFT ip add 192.168.1.10 Add an allowed IP or subnet (CIDR)
VIICoreFT ip remove 192.168.1.10 Remove an IP
VIICoreFT ip list Show the IP list
VIICoreFT ip clear Allow access for everyone
VIICoreFT status Status, address, filter
VIICoreFT update Update to the latest version
VIICoreFT uninstall Remove the service and binary

How it works

The browser splits the file into 4 MB chunks and sends them to the server in 8 parallel HTTP streams. The server writes chunks straight into the file at their offsets (WriteAt) — no merging in temporary files. On interruption, the browser asks the server for the current size and resumes from that point.

API

Method Path Purpose
GET /api/info Version, storage, stats, IP filter
GET/POST /api/settings Port, storage, HTTPS, certificate upload (POST restarts the server)
GET /api/list?path= Folder listing
POST /api/upload Chunk upload (headers X-Path, X-Offset, X-Total)
POST /api/complete?path= Finalize the file (.vftpart → final)
GET /api/progress?path= Size of a partially uploaded file (resume)
GET /api/download?path= File or folder (ZIP)
POST /api/delete Delete ({"path": "..."})

Configuration

File /etc/viicoreft/config.json (or the VIICOREFT_CONFIG environment variable):

{
  "port": 8080,
  "storage": "/srv/viicoreft",
  "allowed_ips": ["192.168.1.10", "10.0.0.0/8"],
  "tls": false,
  "cert_file": "/etc/viicoreft/cert.pem",
  "key_file": "/etc/viicoreft/key.pem",
  "http_port": 0
}

An empty allowed_ips = access for everyone. With tls: true and missing certificates, they are generated automatically.

Building from source

go build -o viicoreft .
# all platforms:
./build.sh v1.0.0

Releases are built automatically by GitHub Actions when pushing a v* tag.

License

MIT

About

VIICoreFileTransfer — fast file & folder transfer between your PC and server: parallel chunked uploads, resume, IP filter, one-click HTTPS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages