hooks can now interrupt or redirect actions, and initiate related actions, by printing json on stdout with commands mainly to mitigate limitations such as sharex/sharex#3992 xbr/xau can redirect uploads to other destinations with `reloc` and most hooks can initiate indexing or deletion of additional files by giving a list of vpaths in json-keys `idx` or `del` there are limitations; * xbu/xau effects don't apply to ftp, tftp, smb * xau will intentionally fail if a reloc destination exists * xau effects do not apply to up2k also provides more details for hooks: * xbu/xau: basic-uploader vpath with filename * xbr/xar: add client ip
41 KiB
alternatives to copyparty
copyparty compared against all similar software i've bumped into
there is probably some unintentional bias so please submit corrections
currently up to date with awesome-selfhosted but that probably won't last
symbol legends
...in feature matrices:
█
= absolutely╱
= partially•
= maybe?
...in reviews:
- ✅ = advantages over copyparty
- 💾 = what copyparty offers as an alternative
- 🔵 = similarities
- ⚠️ = disadvantages (something copyparty does "better")
- 🔥 = hazards
toc
recommendations
- kodbox (review) appears to be a fantastic alternative if you're not worried about running chinese software, with several advantages over copyparty
- but anything you want to share must be moved into the kodbox filesystem
- seafile (review) and nextcloud (review) could be decent alternatives if you need something heavier than copyparty
- but their license is problematic
- and copyparty is way better at uploads in particular (resumable, accelerated)
- and anything you want to share must be moved into the respective filesystems
- filebrowser (review) and dufs (review) are simpler copyparties but with a settings gui
- has some of the same strengths of copyparty, being portable and able to work with an existing folder structure
- ...but copyparty is better at uploads + some other things
feature comparisons
<&Kethsar> copyparty is very much bloat ed, so yeah
the table headers in the matrixes below are the different softwares, with a quick review of each software in the next section
the softwares,
a
= copypartyb
= hfs2 🔥c
= hfs3d
= nextcloude
= seafilef
= rclone, specificallyrclone serve webdav .
g
= dufsh
= chibisafei
= kodboxj
= filebrowserk
= filegatorl
= sftpgom
= arozos
some softwares not in the matrixes,
symbol legend,
█
= absolutely╱
= partially•
= maybe?
general
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
intuitive UX | ╱ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | ||
config GUI | █ | █ | █ | █ | █ | █ | █ | █ | █ | ||||
good documentation | █ | █ | █ | █ | █ | █ | ╱ | ╱ | |||||
runs on iOS | ╱ | ╱ | |||||||||||
runs on Android | █ | █ | |||||||||||
runs on WinXP | █ | █ | █ | ||||||||||
runs on Windows | █ | █ | █ | █ | █ | █ | █ | ╱ | █ | █ | █ | █ | ╱ |
runs on Linux | █ | ╱ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ |
runs on Macos | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | ||
runs on FreeBSD | █ | • | █ | █ | █ | • | █ | █ | █ | ||||
portable binary | █ | █ | █ | █ | █ | █ | █ | █ | |||||
zero setup, just go | █ | █ | █ | ╱ | █ | █ | ╱ | █ | |||||
android app | ╱ | █ | █ | ||||||||||
iOS app | ╱ | █ | █ |
zero setup
= you can get a mostly working setup by just launching the app, without having to install any software or configure whatevera
/copyparty remarks:- no gui for server settings; only for client-side stuff
- can theoretically run on iOS / iPads using iSH, but only the iPad will offer sufficient multitasking i think
- android app is for uploading only
- no iOS app but has shortcuts for easy uploading
b
/hfs2 runs on linux through winef
/rclone must be started with the commandrclone serve webdav .
or similarh
/chibisafe has undocumented windows supporti
/sftpgo must be launched with a commandm
/arozos has partial windows support
file transfer
the thing that copyparty is actually kinda good at
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
download folder as zip | █ | █ | █ | █ | ╱ | █ | █ | █ | ╱ | █ | ╱ | ||
download folder as tar | █ | ||||||||||||
upload | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | ╱ | █ | █ |
parallel uploads | █ | █ | █ | • | █ | █ | █ | █ | |||||
resumable uploads | █ | █ | █ | █ | █ | ╱ | |||||||
upload segmenting | █ | █ | █ | █ | █ | ╱ | █ | ||||||
upload acceleration | █ | █ | █ | ||||||||||
upload verification | █ | █ | █ | █ | |||||||||
upload deduplication | █ | █ | █ | ||||||||||
upload a 999 TiB file | █ | █ | █ | • | █ | █ | ╱ | ╱ | |||||
CTRL-V from device | █ | █ | |||||||||||
race the beam ("p2p") | █ | ||||||||||||
keep last-modified time | █ | █ | █ | █ | █ | ||||||||
upload rules | ╱ | ╱ | ╱ | ╱ | ╱ | ╱ | ╱ | ╱ | ╱ | ╱ | |||
┗ max disk usage | █ | █ | █ | █ | █ | █ | █ | ||||||
┗ max filesize | █ | █ | █ | █ | █ | ||||||||
┗ max items in folder | █ | ╱ | |||||||||||
┗ max file age | █ | █ | |||||||||||
┗ max uploads over time | █ | ╱ | |||||||||||
┗ compress before write | █ | ||||||||||||
┗ randomize filename | █ | █ | █ | ||||||||||
┗ mimetype reject-list | ╱ | • | ╱ | ╱ | • | ||||||||
┗ extension reject-list | ╱ | █ | • | ╱ | ╱ | • | |||||||
┗ upload routing | █ | ||||||||||||
checksums provided | █ | █ | █ | ╱ | |||||||||
cloud storage backend | ╱ | ╱ | ╱ | █ | █ | █ | ╱ | ╱ | █ | █ | ╱ |
-
upload segmenting
= files are sliced into chunks, making it possible to upload files larger than 100 MiB on cloudflare for example -
upload acceleration
= each file can be uploaded using several TCP connections, which can offer a huge speed boost over huge distances / on flaky connections -- like the good old download accelerators except in reverse -
upload verification
= uploads are checksummed or otherwise confirmed to have been transferred correctly -
CTRL-V from device
= press CTRL-C in Windows Explorer (or whatever) and paste into the webbrowser to upload it -
race the beam
= files can be downloaded while they're still uploading; downloaders are slowed down such that the uploader is always ahead -
upload routing
= depending on filetype / contents / uploader etc., the file can be redirected to another location or otherwise transformed; mitigates limitations such as sharex#3992- copyparty example: reloc-by-ext
-
checksums provided
= when downloading a file from the server, the file's checksum is provided for verification client-side -
cloud storage backend
= able to serve files from (and write to) s3 or similar cloud services;╱
means the software can do this with some help fromrclone mount
as a bridge -
a
/copyparty can reject uploaded files (based on complex conditions), for example by extension or mimetype -
e
/seafile download-as-zip is not streaming; it creates the full zipfile before download can start, and fails on big folders -
j
/filebrowser remarks:- can provide checksums for single files on request
- can probably do extension/mimetype rejection similar to copyparty
-
k
/filegator download-as-zip is not streaming; it creates the full zipfile before download can start -
l
/sftpgo:- resumable/segmented uploads only over SFTP, not over HTTP
- upload rules are totals only, not over time
- can probably do extension/mimetype rejection similar to copyparty
-
m
/arozos download-as-zip is not streaming; it creates the full zipfile before download can start, and fails on big folders
protocols and client support
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
serve https | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | |
serve webdav | █ | █ | █ | █ | █ | █ | █ | █ | |||||
serve ftp (tcp) | █ | █ | █ | █ | |||||||||
serve ftps (tls) | █ | █ | █ | ||||||||||
serve tftp (udp) | █ | ||||||||||||
serve sftp (ssh) | █ | █ | █ | ||||||||||
serve smb/cifs | ╱ | █ | |||||||||||
serve dlna | █ | ||||||||||||
listen on unix-socket | █ | █ | █ | █ | █ | █ | █ | █ | |||||
zeroconf | █ | █ | |||||||||||
supports netscape 4 | ╱ | █ | • | ╱ | |||||||||
...internet explorer 6 | ╱ | █ | █ | █ | • | ╱ | |||||||
mojibake filenames | █ | • | • | █ | █ | • | █ | • | ╱ | ||||
undecodable filenames | █ | • | • | █ | • | ╱ |
webdav
= protocol convenient for mounting a remote server as a local filesystem; see zeroconf:zeroconf
= the server announces itself on the LAN, automatically appearing on other zeroconf-capable devicesmojibake filenames
= filenames decoded with the wrong codec and then reencoded (usually to utf-8), so宇多田ヒカル
might look likeëFæ╜ôcâqâJâï
undecodable filenames
= pure binary garbage which cannot be parsed as utf-8- you can successfully play
$'\355\221'
with mpv through mounting a remote copyparty server with rclone, pog
- you can successfully play
a
/copyparty remarks:- extremely minimal samba/cifs server
- netscape 4 / ie6 support is mostly listed as a joke altho some people have actually found it useful (ie4 tho)
l
/sftpgo translates mojibake filenames into valid utf-8 (information loss)m
/arozos has readonly-support for older browsers; no uploading
server configuration
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
config from cmd args | █ | █ | █ | █ | ╱ | ╱ | |||||||
config files | █ | █ | █ | ╱ | ╱ | █ | █ | █ | • | ╱ | ╱ | ||
runtime config reload | █ | █ | █ | █ | █ | █ | █ | █ | |||||
same-port http / https | █ | ||||||||||||
listen multiple ports | █ | █ | |||||||||||
virtual file system | █ | █ | █ | █ | █ | ||||||||
reverse-proxy ok | █ | █ | █ | █ | █ | █ | █ | • | • | • | █ | ╱ | |
folder-rproxy ok | █ | █ | █ | █ | • | • | █ | • | • |
folder-rproxy
= reverse-proxying without dedicating an entire (sub)domain, using a subfolder insteadl
/sftpgo:- config: users must be added through gui / api calls
m
/arozos:- configuration is primarily through GUI
- reverse-proxy is not guaranteed to see the correct client IP
server capabilities
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accounts | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ |
per-account chroot | █ | ||||||||||||
single-sign-on | ╱ | █ | █ | • | |||||||||
token auth | ╱ | █ | █ | █ | █ | ||||||||
2fa | ╱ | █ | █ | █ | ╱ | ||||||||
per-volume permissions | █ | █ | █ | █ | █ | █ | █ | █ | █ | ╱ | █ | █ | |
per-folder permissions | ╱ | █ | █ | █ | █ | █ | ╱ | █ | █ | ||||
per-file permissions | █ | █ | █ | █ | █ | ||||||||
per-file passwords | █ | █ | █ | █ | █ | █ | |||||||
unmap subfolders | █ | █ | █ | █ | ╱ | • | |||||||
index.html blocks list | ╱ | █ | • | ||||||||||
write-only folders | █ | █ | █ | █ | |||||||||
files stored as-is | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | |||
file versioning | █ | █ | |||||||||||
file encryption | █ | █ | █ | █ | |||||||||
file indexing | █ | █ | █ | █ | █ | █ | █ | ||||||
┗ per-volume db | █ | • | • | • | • | • | |||||||
┗ db stored in folder | █ | • | • | █ | |||||||||
┗ db stored out-of-tree | █ | █ | █ | █ | • | • | █ | ||||||
┗ existing file tree | █ | █ | █ | ||||||||||
file action event hooks | █ | █ | █ | • | |||||||||
one-way folder sync | █ | █ | █ | █ | |||||||||
full sync | █ | █ | |||||||||||
speed throttle | █ | █ | █ | █ | █ | ||||||||
anti-bruteforce | █ | █ | █ | █ | █ | • | █ | • | |||||
dyndns updater | █ | ||||||||||||
self-updater | █ | █ | |||||||||||
log rotation | █ | █ | █ | █ | • | █ | █ | • | |||||
upload tracking / log | █ | █ | • | █ | █ | █ | █ | ╱ | █ | ||||
prometheus metrics | █ | █ | █ | ||||||||||
curl-friendly ls | █ | ||||||||||||
curl-friendly upload | █ | █ | █ | • |
unmap subfolders
= "shadowing"; mounting a local folder in the middle of an existing filesystem tree in order to disable access below that pathfiles stored as-is
= uploaded files are trivially readable from the server HDD, not sliced into chunks or in weird folder structures or anything like thatdb stored in folder
= filesystem index can be written to a database file inside the folder itselfdb stored out-of-tree
= filesystem index can be stored some place else, not necessarily inside the shared foldersexisting file tree
= will index any existing files it findsfile action event hooks
= run script before/after upload, move, rename, ...one-way folder sync
= like rsync, optionally deleting unexpected files at targetfull sync
= stateful, dropbox-like syncspeed throttle
= rate limiting (per ip, per user, per connection, anything like that)curl-friendly ls
= returns a sortable plaintext folder listing when curledcurl-friendly upload
= uploading with curl is justcurl -T some.bin http://.../
a
/copyparty remarks:- single-sign-on, token-auth, and 2fa is possible through authelia/authentik or similar, but nobody's made an example yet
- one-way folder sync from local to server can be done efficiently with u2c.py, or with webdav and conventional rsync
- can hot-reload config files (with just a few exceptions)
- can set per-folder permissions if that folder is made into a separate volume, so there is configuration overhead
index.html
on its own does not prevent directory listing, but permissionh
(instead ofr
) enforces index.html to be returned instead of folder contents- event hooks (discord, desktop) inspired by filebrowser, as well as the more complex media parser alternative
- upload history can be visualized using partyjournal
k
/filegator remarks:per-* permissions
-- can limit a user to one folder and its subfoldersunmap subfolders
-- can globally filter a list of paths
l
/sftpgo:file action event hooks
also include on-download triggersupload tracking / log
in main logfile
m
/arozos:2fa
maybe possible through LDAP/Oauth
client features
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
single-page app | █ | █ | █ | █ | █ | █ | █ | █ | █ | ||||
themes | █ | █ | █ | █ | █ | ||||||||
directory tree nav | █ | ╱ | █ | █ | ╱ | ||||||||
multi-column sorting | █ | ||||||||||||
thumbnails | █ | ╱ | ╱ | █ | █ | ╱ | █ | ||||||
┗ image thumbnails | █ | █ | █ | █ | █ | █ | █ | ||||||
┗ video thumbnails | █ | █ | █ | █ | █ | ||||||||
┗ audio spectrograms | █ | ||||||||||||
audio player | █ | ╱ | █ | █ | █ | ╱ | █ | ||||||
┗ gapless playback | █ | • | |||||||||||
┗ audio equalizer | █ | ||||||||||||
┗ waveform seekbar | █ | ||||||||||||
┗ OS integration | █ | ||||||||||||
┗ transcode to lossy | █ | ||||||||||||
video player | █ | █ | █ | █ | █ | █ | |||||||
┗ video transcoding | █ | ||||||||||||
audio BPM detector | █ | ||||||||||||
audio key detector | █ | ||||||||||||
search by path / name | █ | █ | █ | █ | █ | █ | █ | █ | ╱ | ||||
search by date / size | █ | █ | █ | █ | |||||||||
search by bpm / key | █ | ||||||||||||
search by custom tags | █ | █ | |||||||||||
search in file contents | █ | █ | █ | ||||||||||
search by custom parser | █ | ||||||||||||
find local file | █ | ||||||||||||
undo recent uploads | █ | ||||||||||||
create directories | █ | █ | █ | █ | ╱ | █ | █ | █ | █ | █ | █ | █ | |
image viewer | █ | █ | █ | █ | █ | █ | █ | █ | |||||
markdown viewer | █ | █ | █ | ╱ | ╱ | █ | |||||||
markdown editor | █ | █ | █ | ╱ | ╱ | █ | |||||||
readme.md in listing | █ | █ | |||||||||||
rename files | █ | █ | █ | █ | █ | ╱ | █ | █ | █ | █ | █ | █ | |
batch rename | █ | █ | |||||||||||
cut / paste files | █ | █ | █ | █ | █ | █ | |||||||
move files | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | |||
delete files | █ | █ | █ | █ | █ | ╱ | █ | █ | █ | █ | █ | █ | █ |
copy files | █ | █ | █ | █ | █ |
single-page app
= multitasking; possible to continue navigating while uploadingaudio player » os-integration
= use the lockscreen or media hotkeys to play/pause, prev/next songsearch by custom tags
= ability to tag files through the UI and search by thosefind local file
= drop a file into the browser to see if it exists on the serverundo recent uploads
= accounts without delete permissions have a time window where they can undo their own uploadsa
/copyparty has teeny-tiny skips playing gapless albums depending on audio codec (opus best)b
/hfs2 has a very basic directory tree view, not showing sibling foldersc
/hfs3 remarks:- audio playback does not continue into next song
f
/rclone can do some file management (mkdir, rename, delete) when hosting througn webdavj
/filebrowser remarks:- audio playback does not continue into next song
- plaintext viewer/editor
k
/filegator directory tree is a modal window
integration
feature / software | a | b | c | d | e | f | g | h | i | j | k | l | m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
OS alert on upload | █ | ╱ | ╱ | ||||||||||
discord | █ | ╱ | ╱ | ||||||||||
┗ announce uploads | █ | ╱ | |||||||||||
┗ custom embeds | ╱ | ||||||||||||
sharex | █ | █ | █ | ╱ | █ | ||||||||
flameshot | █ |
- sharex
╱
= yes, but does not provide example sharex config a
/copyparty remarks:j
/filebrowser can probably pull those off with command runners similar to copypartyl
/sftpgo has nothing built-in but is very extensible
another matrix
software / feature | lang | lic | size |
---|---|---|---|
copyparty | python | █ mit | 0.6 MB |
hfs2 | delphi | ░ gpl3 | 2 MB |
hfs3 | ts | ░ gpl3 | 36 MB |
nextcloud | php | ‼ agpl | • |
seafile | c | ‼ agpl | • |
rclone | c | █ mit | 45 MB |
dufs | rust | █ apl2 | 2.5 MB |
chibisafe | ts | █ mit | • |
kodbox | php | ░ gpl3 | 92 MB |
filebrowser | go | █ apl2 | 20 MB |
filegator | php | █ mit | • |
sftpgo | go | ‼ agpl | 44 MB |
arozos | go | ░ gpl3 | 531 MB |
updog | python | █ mit | 17 MB |
goshs | go | █ mit | 11 MB |
gimme-that | python | █ mit | 4.8 MB |
ass | ts | █ isc | • |
linx | go | ░ gpl3 | 20 MB |
size
= binary (if available) or installed size of program and its dependencies- copyparty size is for the standalone python file; the windows exe is 6 MiB
reviews
- ✅ are advantages over copyparty
- 💾 are what copyparty offers as an alternative
- 🔵 are similarities
- ⚠️ are disadvantages (something copyparty does "better")
- 🔥 are hazards
copyparty
- resumable uploads which are verified server-side
- upload segmenting allows for potentially much faster uploads on some connections, and terabyte-sized files even on cloudflare
- both of the above are surprisingly uncommon features
- very cross-platform (python, no dependencies)
hfs2
- the OG, the legend (now replaced by hfs3)
- 🔥 hfs2 is dead and dangerous! unfixed RCE: info, info, info
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ windows-only
- ✅ config GUI
- vfs with gui config, per-volume permissions
- starting to show its age, hence the rewrite:
hfs3
- nodejs; cross-platform
- vfs with gui config, per-volume permissions
- 🔵 uploads are resumable
- ⚠️ uploads are not segmented; max upload size 100 MiB on cloudflare
- ⚠️ uploads are not accelerated (copyparty is 3x faster across the atlantic)
- ⚠️ uploads are not integrity-checked
- ⚠️ copies the file after upload; need twice filesize free disk space
- ⚠️ doesn't support crazy filenames
- ✅ config GUI
- ✅ download counter
- ✅ watch active connections
- ✅ plugins
nextcloud
- php, mariadb
- ⚠️ [isolated on-disk file hierarchy] in per-user folders
- not that bad, can probably be remedied with bindmounts or maybe symlinks
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ uploading small files is slow;
2.2
files per sec (copyparty does87
/sec), tested locally with linuxserver/nextcloud (sqlite) - ⚠️ no write-only / upload-only folders
- ⚠️ http/webdav only; no ftp, zeroconf
- ⚠️ less awesome music player
- ⚠️ doesn't run on android or ipads
- ⚠️ AGPL licensed
- ✅ great ui/ux
- ✅ config gui
- ✅ apps (android / iphone)
- 💾 android upload-only app + iPhone upload shortcut
- ✅ more granular permissions (per-file)
- ✅ search: fulltext indexing of file contents
- ✅ webauthn passwordless authentication
seafile
- c, mariadb
- ⚠️ isolated on-disk file hierarchy, incompatible with other software
- much worse than nextcloud in that regard
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ uploading small files is slow;
2.7
files per sec (copyparty does87
/sec), tested locally with official container - ⚠️ no write-only / upload-only folders
- ⚠️ big folders cannot be zip-downloaded
- ⚠️ http/webdav only; no ftp, zeroconf
- ⚠️ less awesome music player
- ⚠️ doesn't run on android or ipads
- ⚠️ AGPL licensed
- ✅ great ui/ux
- ✅ config gui
- ✅ apps (android / iphone)
- 💾 android upload-only app + iPhone upload shortcut
- ✅ more granular permissions (per-file)
- ✅ search: fulltext indexing of file contents
rclone
- nice standalone c program
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ no web-ui, just a server / downloader / uploader utility
- ✅ works with almost any protocol, cloud provider
- ⚠️ copyparty's webdav server is slightly faster
dufs
- rust; cross-platform (windows, linux, macos)
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ across the atlantic, copyparty is 3x faster
- ⚠️ doesn't support crazy filenames
- ✅ per-url access control (copyparty is per-volume)
- 🔵 basic but really snappy ui
- 🔵 upload, rename, delete, ... see feature matrix
chibisafe
- nodejs; recommends docker
- 🔵 it has upload segmenting!
- ⚠️ but uploads are still not resumable / accelerated / integrity-checked
- ⚠️ not portable
- ⚠️ isolated on-disk file hierarchy, incompatible with other software
- ⚠️ http/webdav only; no ftp or zeroconf
- ✅ pretty ui
- ✅ control panel for server settings and user management
- ✅ user registration
- ✅ searchable image tags; delete by tag
- ✅ browser extension to upload files to the server
- ✅ reject uploads by file extension
- 💾 can reject uploads by extension or mimetype using plugins
- ✅ token auth (api keys)
kodbox
- this thing is insane (but is getting competition from arozos)
- php; docker
- 🔵 upload segmenting, acceleration, and integrity checking!
- ⚠️ but uploads are not resumable(?)
- ⚠️ not portable
- ⚠️ isolated on-disk file hierarchy, incompatible with other software
- ⚠️ uploading small files to copyparty is 16x faster
- ⚠️ uploading large files to copyparty is 3x faster
- ⚠️ http/webdav only; no ftp or zeroconf
- ⚠️ some parts of the GUI are in chinese
- ✅ fantastic ui/ux
- ✅ control panel for server settings and user management
- ✅ file tags; file discussions!?
- ✅ video transcoding
- ✅ unzip uploaded archives
- ✅ IDE with syntax hilighting
- ✅ wysiwyg editor for openoffice files
filebrowser
- go; cross-platform (windows, linux, mac)
- 🔵 uploads are resumable and segmented
- 🔵 multiple files are uploaded in parallel, but...
- ⚠️ big files are not accelerated (copyparty is 5x faster across the atlantic)
- ⚠️ uploads are not integrity-checked
- ⚠️ http only; no webdav / ftp / zeroconf
- ⚠️ doesn't support crazy filenames
- ⚠️ no directory tree nav
- ⚠️ limited file search
- ✅ settings gui
- ✅ good ui/ux
- ⚠️ but no directory tree for navigation
- ✅ user signup
- ✅ command runner / remote shell
- ✅ more efficient; can handle around twice as much simultaneous traffic
filegator
- php; cross-platform (windows, linux, mac)
- 🔵 it has upload segmenting and acceleration
- ⚠️ but uploads are still not integrity-checked
- ⚠️ on copyparty, uploads are 40x faster
- compared to the official filegator docker example which might be bad
- ⚠️ http only; no webdav / ftp / zeroconf
- ⚠️ does not support symlinks
- ⚠️ expensive download-as-zip feature
- ⚠️ doesn't support crazy filenames
- ⚠️ limited file search
sftpgo
- go; cross-platform (windows, linux, mac)
- ⚠️ http uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ across the atlantic, copyparty is 2.5x faster
- 🔵 sftp uploads are resumable
- ⚠️ web UI is very minimal + a bit slow
- ⚠️ no thumbnails / image viewer / audio player
- ⚠️ basic file manager (no cut/paste/move)
- ⚠️ no filesystem indexing / search
- ⚠️ doesn't run on phones, tablets
- ⚠️ no zeroconf (mdns/ssdp)
- ⚠️ impractical directory URLs
- ⚠️ AGPL licensed
- 🔵 ftp, ftps, webdav
- ✅ sftp server
- ✅ settings gui
- ✅ acme (automatic tls certs)
- 💾 relies on caddy/certbot/acme.sh
- ✅ at-rest encryption
- 💾 relies on LUKS/BitLocker
- ✅ can use S3/GCS as storage backend
- 💾 relies on rclone-mount
- ✅ on-download event hook (otherwise same as copyparty)
- ✅ more extensive permissions control
arozos
- big suite of applications similar to kodbox, copyparty is better at downloading/uploading/music/indexing but arozos has other advantages
- go; primarily linux (limited support for windows)
- ⚠️ needs root
- ⚠️ uploads not resumable / integrity-checked
- ⚠️ uploading small files to copyparty is 2.7x faster
- ⚠️ uploading large files to copyparty is at least 10% faster
- arozos is websocket-based, 512 KiB chunks; writes each chunk to separate files and then merges
- copyparty splices directly into the final file; faster and better for the HDD and filesystem
- ⚠️ across the atlantic, uploading to copyparty is 6x faster
- ⚠️ no directory tree navpane; not as easy to navigate
- ⚠️ download-as-zip is not streaming; creates a temp.file on the server
- ⚠️ not self-contained (pulls from jsdelivr)
- ⚠️ has an audio player, but supports less filetypes
- ⚠️ limited support for configuring real-ip detection
- ✅ sftp server
- ✅ settings gui
- ✅ good-looking gui
- ✅ an IDE, msoffice viewer, rich host integration, much more
updog
- python; cross-platform
- basic directory listing with upload feature
- ⚠️ less portable
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ no vfs; single folder, single account
goshs
- go; cross-platform (windows, linux, mac)
- ⚠️ no vfs; single folder, single account
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ✅ cool clipboard widget
- 💾 the markdown editor is an ok substitute
- 🔵 read-only and upload-only modes (same as copyparty's write-only)
- 🔵 https, webdav, but no ftp
gimme-that
- python, but with c dependencies
- ⚠️ no vfs; single folder, multiple accounts
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ weird folder structure for uploads
- ✅ clamav antivirus check on upload! neat
- 🔵 optional max-filesize, os-notification on uploads
- 💾 os-notification available as a plugin
ass
- nodejs; recommends docker
- ⚠️ not portable
- ⚠️ upload only; no browser
- ⚠️ upload through sharex only; no web-ui
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ✅ token auth
- ✅ gps metadata stripping
- 💾 possible with a plugin
- ✅ discord integration (custom embeds, upload webhook)
- ✅ reject uploads by mimetype
- 💾 can reject uploads by extension or mimetype using plugins
- ✅ can use S3 as storage backend
- 💾 relies on rclone-mount
- ✅ custom 404 pages
linx
- originally andreimarcu/linx-server but development has ended
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- 🔵 some of its unique features have been added to copyparty as former linx users have migrated
- file expiration timers, filename randomization
- ✅ password-protected files
- 💾 password-protected folders + filekeys to skip the folder password seem to cover most usecases
- ✅ file deletion keys
- ✅ download files as torrents
- ✅ remote uploads (send a link to the server and it downloads it)
- 💾 available as a plugin
- ✅ can use S3 as storage backend
- 💾 relies on rclone-mount
h5ai
- ⚠️ read only; no upload/move/delete
- ⚠️ search hits the filesystem directly; not indexed/cached
- ✅ slick ui
- ✅ in-browser qr generator to share URLs
- 🔵 directory tree, image viewer, thumbnails, download-as-tar
autoindex
- ⚠️ read only; no upload/move/delete
- ✅ directory cache for faster browsing of cloud storage
- 💾 local index/cache for recursive search (names/attrs/tags), but not for browsing
miniserve
- rust; cross-platform (windows, linux, mac)
- ⚠️ uploads not resumable / accelerated / integrity-checked
- ⚠️ on cloudflare: max upload size 100 MiB
- ⚠️ no thumbnails / image viewer / audio player / file manager
- ⚠️ no filesystem indexing / search
- 🔵 upload, tar/zip download, qr-code
- ✅ faster at loading huge folders