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
█
= absolutely╱
= partially•
= maybe?
- ✅ = advantages over copyparty
- 💾 = what copyparty offers as an alternative
- 🔵 = similarities
⚠️ = disadvantages (something copyparty does "better")- 🔥 = hazards
- 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
<&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?
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
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
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
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
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
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
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
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 |
h5ai | php | █ mit | • |
autoindex | go | █ mpl2 | 11 MB |
miniserve | rust | █ mit | 2 MB |
pingvin-share | go | █ bsd2 | 487 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
- ✅ are advantages over copyparty
- 💾 are what copyparty offers as an alternative
- 🔵 are similarities
⚠️ are disadvantages (something copyparty does "better")- 🔥 are hazards
- 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)
- 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:
- nodejs; cross-platform
- vfs with gui config, per-volume permissions
- tested locally, v0.53.2 on archlinux
- 🔵 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⚠️ uploading small files is decent;107
files per sec (copyparty does670
/sec, 6x faster)⚠️ doesn't support crazy filenames- ✅ config GUI
- ✅ download counter
- ✅ watch active connections
- ✅ plugins
- php, mariadb
- tested locally, linuxserver/nextcloud v30.0.2 (sqlite)
⚠️ [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;4
files per sec (copyparty does670
/sec, 160x faster)⚠️ 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
- c, mariadb
- tested locally, official container v11.0.13
⚠️ 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;4.7
files per sec (copyparty does670
/sec, 140x faster)⚠️ 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
- 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
- rust; cross-platform (windows, linux, macos)
- tested locally, v0.43.0 on archlinux (plain binary)
⚠️ uploads not resumable / accelerated / integrity-checked⚠️ on cloudflare: max upload size 100 MiB⚠️ across the atlantic, copyparty is 3x faster
⚠️ uploading small files is decent;97
files per sec (copyparty does670
/sec, 7x 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
- 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)
- 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
- go; cross-platform (windows, linux, mac)
- tested locally, v2.31.2 on archlinux (plain binary)
- 🔵 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⚠️ uploading small files is decent;69
files per sec (copyparty does670
/sec, 9x faster)⚠️ 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
- 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
- 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- 🔵 uploading small files is fast;
340
files per sec (copyparty does670
/sec) - 🔵 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
- 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
- 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
- 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
- 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
- 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
- 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
⚠️ 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
⚠️ 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
- 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
- node; linux (docker)
- mainly for uploads, not a general file server
- 🔵 uploads are segmented (avoids cloudflare size limit)
- 🔵 segments are written directly to target file (HDD-friendly)
⚠️ uploads not resumable after a browser or laptop crash⚠️ uploads are not accelerated / integrity-checked⚠️ across the atlantic, copyparty is 3x faster- measured with chunksize 96 MiB; pingvin's default 10 MiB is much slower
⚠️ can't upload folders with subfolders⚠️ no upload ETA- 🔵 expiration times, shares, upload-undo
- ✅ config + user-registration gui
- ✅ built-in OpenID and LDAP support
- 💾 IdP middleware and config-files
- ✅ probably more than one person who understands the code
- pydio: python/agpl3, looks great, fantastic ux -- but needs mariadb, systemwide install
- gossa: go/mit, minimalistic, basic file upload, text editor, mkdir and rename (no delete/move)
- high-latency connections (cross-atlantic uploads) can be accurately simulated with
tc qdisc add dev eth0 root netem delay 100ms