43 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?= 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 (AGPL) is thorny
- 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?= 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 | █ | █ | • | █ | █ | █ | • | █ | █ | █ | |||
| runs on Risc-V | █ | █ | █ | █ | • | █ | |||||||
| 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
- runs on iOS / iPads using a-Shell (pretty good) or iSH (very slow) but cannot run in the background and is not able to share all of your phone storage (just a separate dedicated folder)
- 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") | █ | ||||||||||||
| "tail -f" streaming | █ | ||||||||||||
| 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 -
tail -f= when viewing or downloading a logfile, the connection can remain open to keep showing new lines as they are added in real time -
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 mountas 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.htmlon 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 hooksalso include on-download triggersupload tracking / login main logfile
m/arozos:2famaybe possible through LDAP/Oauth
c/hfs32faavailable by installing a plugin
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 foldersf/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 |
| 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
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
- tested locally, v0.53.2 on archlinux
- 🔵 uploads are resumable
- ⚠️ uploads are not accelerated (copyparty is 3x faster across the atlantic)
- ⚠️ uploads are not integrity-checked
- ⚠️ uploading small files is decent;
107files per sec (copyparty does670/sec, 6x faster) - ⚠️ doesn't support crazy filenames
- ✅ config GUI
- ✅ download counter
- ✅ watch active connections
- ✅ plugins
nextcloud
- 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
- 🔵 uploads are segmented; no filesize limit, even on cloudflare
- ⚠️ uploading small files is slow;
4files 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
seafile
- 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.7files per sec (copyparty does670/sec, 140x faster) - ⚠️ 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)
- 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;
97files 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
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 highlighting
- ✅ wysiwyg editor for openoffice files
filebrowser
- 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;
69files 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
- note: keep an eye on gtsteffaniak's fork
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
- 🔵 uploading small files is fast;
340files 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
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
pingvin-share
- 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
- ⚠️ across the atlantic, copyparty is 3x faster
- ⚠️ 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
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)
notes
- high-latency connections (cross-atlantic uploads) can be accurately simulated with
tc qdisc add dev eth0 root netem delay 100ms