Skip to content

Latest commit

 

History

History
725 lines (638 loc) · 41 KB

versus.md

File metadata and controls

725 lines (638 loc) · 41 KB

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?
  • = nope

...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,

some softwares not in the matrixes,

symbol legend,

  • = absolutely
  • = partially
  • = maybe?
  • = nope

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 whatever
  • a/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 wine
  • f/rclone must be started with the command rclone serve webdav . or similar
  • h/chibisafe has undocumented windows support
  • i/sftpgo must be launched with a command
  • m/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

  • 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 from rclone 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 devices
  • mojibake 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
  • 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 instead
  • l/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 path
  • files stored as-is = uploaded files are trivially readable from the server HDD, not sliced into chunks or in weird folder structures or anything like that
  • db stored in folder = filesystem index can be written to a database file inside the folder itself
  • db stored out-of-tree = filesystem index can be stored some place else, not necessarily inside the shared folders
  • existing file tree = will index any existing files it finds
  • file action event hooks = run script before/after upload, move, rename, ...
  • one-way folder sync = like rsync, optionally deleting unexpected files at target
  • full sync = stateful, dropbox-like sync
  • speed throttle = rate limiting (per ip, per user, per connection, anything like that)
  • curl-friendly ls = returns a sortable plaintext folder listing when curled
  • curl-friendly upload = uploading with curl is just curl -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 permission h (instead of r) 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 subfolders
    • unmap subfolders -- can globally filter a list of paths
  • l/sftpgo:
    • file action event hooks also include on-download triggers
    • upload 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 uploading
  • audio player » os-integration = use the lockscreen or media hotkeys to play/pause, prev/next song
  • search by custom tags = ability to tag files through the UI and search by those
  • find local file = drop a file into the browser to see if it exists on the server
  • undo recent uploads = accounts without delete permissions have a time window where they can undo their own uploads
  • a/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 folders
  • c/hfs3 remarks:
    • audio playback does not continue into next song
  • f/rclone can do some file management (mkdir, rename, delete) when hosting througn webdav
  • j/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:
    • OS alert on upload available as a plugin
    • discord » announce uploads available as a plugin
  • j/filebrowser can probably pull those off with command runners similar to copyparty
  • l/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

reviews

  • ✅ 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
  • 🔵 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
  • 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 does 87/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
  • 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 does 87/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
  • 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)
  • ⚠️ 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
  • 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
  • ✅ 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)
  • 🔵 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
  • 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
  • 🔵 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
  • ✅ discord integration (custom embeds, upload webhook)
  • ✅ reject uploads by mimetype
  • ✅ 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)
  • ✅ 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

briefly considered

  • 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)