# 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](https://github.com/awesome-selfhosted/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 * top * [recommendations](#recommendations) * [feature comparisons](#feature-comparisons) * [general](#general) * [file transfer](#file-transfer) * [protocols and client support](#protocols-and-client-support) * [server configuration](#server-configuration) * [server capabilities](#server-capabilities) * [client features](#client-features) * [integration](#integration) * [another matrix](#another-matrix) * [reviews](#reviews) * [copyparty](#copyparty) * [hfs2](#hfs2) ๐Ÿ”ฅ * [hfs3](#hfs3) * [nextcloud](#nextcloud) * [seafile](#seafile) * [rclone](#rclone) * [dufs](#dufs) * [chibisafe](#chibisafe) * [kodbox](#kodbox) * [filebrowser](#filebrowser) * [filegator](#filegator) * [sftpgo](#sftpgo) * [arozos](#arozos) * [updog](#updog) * [goshs](#goshs) * [gimme-that](#gimme-that) * [ass](#ass) * [linx](#linx) * [h5ai](#h5ai) * [autoindex](#autoindex) * [miniserve](#miniserve) * [pingvin-share](#pingvin-share) * [briefly considered](#briefly-considered) * [notes](#notes) # recommendations * [kodbox](https://github.com/kalcaddle/kodbox) ([review](#kodbox)) 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](https://github.com/haiwen/seafile) ([review](#seafile)) and [nextcloud](https://github.com/nextcloud/server) ([review](#nextcloud)) could be decent alternatives if you need something heavier than copyparty * but their [license](https://snyk.io/learn/agpl-license/) is [problematic](https://opensource.google/documentation/reference/using/agpl-policy) * 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](https://github.com/filebrowser/filebrowser) ([review](#filebrowser)) and [dufs](https://github.com/sigoden/dufs) ([review](#dufs)) 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` = [copyparty](https://github.com/9001/copyparty) * `b` = [hfs2](https://github.com/rejetto/hfs2/) ๐Ÿ”ฅ * `c` = [hfs3](https://rejetto.com/hfs/) * `d` = [nextcloud](https://github.com/nextcloud/server) * `e` = [seafile](https://github.com/haiwen/seafile) * `f` = [rclone](https://github.com/rclone/rclone), specifically `rclone serve webdav .` * `g` = [dufs](https://github.com/sigoden/dufs) * `h` = [chibisafe](https://github.com/chibisafe/chibisafe) * `i` = [kodbox](https://github.com/kalcaddle/kodbox) * `j` = [filebrowser](https://github.com/filebrowser/filebrowser) * `k` = [filegator](https://github.com/filegator/filegator) * `l` = [sftpgo](https://github.com/drakkan/sftpgo) * `m` = [arozos](https://github.com/tobychui/arozos) some softwares not in the matrixes, * [updog](#updog) * [goshs](#goshs) * [gimme-that](#gimmethat) * [ass](#ass) * [linx](#linx) * [h5ai](#h5ai) * [autoindex](#autoindex) * [miniserve](#miniserve) * [pingvin-share](#pingvin-share) 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](https://ish.app/), but only the iPad will offer sufficient multitasking i think * [android app](https://f-droid.org/en/packages/me.ocv.partyup/) is for uploading only * no iOS app but has [shortcuts](https://github.com/9001/copyparty#ios-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](https://en.wikipedia.org/wiki/GetRight) 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](https://github.com/ShareX/ShareX/issues/3992) * copyparty example: [reloc-by-ext](https://github.com/9001/copyparty/tree/hovudstraum/bin/hooks#before-upload) * `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](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/reject-extension.py) or [mimetype](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/reject-mimetype.py) * `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](https://user-images.githubusercontent.com/241032/215344737-0eae8d98-9496-4256-9aa8-cd2f6971810d.png) 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](https://user-images.githubusercontent.com/241032/118192791-fb31fe00-b446-11eb-9647-898ea8efc1f7.png)) * `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](https://user-images.githubusercontent.com/241032/215322619-ea5fd606-3654-40ad-94ee-2bc058647bb2.png) 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](https://github.com/9001/copyparty/tree/hovudstraum/bin#u2cpy), 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](https://github.com/9001/copyparty/tree/hovudstraum/bin/hooks) ([discord](https://user-images.githubusercontent.com/241032/215304439-1c1cb3c8-ec6f-4c17-9f27-81f969b1811a.png), [desktop](https://user-images.githubusercontent.com/241032/215335767-9c91ed24-d36e-4b6b-9766-fb95d12d163f.png)) inspired by filebrowser, as well as the more complex [media parser](https://github.com/9001/copyparty/tree/hovudstraum/bin/mtag) alternative * upload history can be visualized using [partyjournal](https://github.com/9001/copyparty/blob/hovudstraum/bin/partyjournal.py) * `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](https://user-images.githubusercontent.com/241032/142711926-0700be6c-3e31-47b3-9928-53722221f722.png) or [media hotkeys](https://user-images.githubusercontent.com/241032/215347492-b4250797-6c90-4e09-9a4c-721edf2fb15c.png) 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](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/notify.py) * `discord ยป announce uploads` available as [a plugin](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/discord-announce.py) * `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 | | 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](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) file; the [windows exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.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](https://github.com/9001/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](https://github.com/rejetto/hfs2/) * the OG, the legend (now replaced by [hfs3](#hfs3)) * ๐Ÿ”ฅ hfs2 is dead and dangerous! unfixed RCE: [info](https://github.com/rejetto/hfs2/issues/44), [info](https://github.com/drapid/hfs/issues/3), [info](https://asec.ahnlab.com/en/67650/) * โš ๏ธ 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](https://rejetto.com/hfs/) * 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 does `670`/sec, 6x faster) * โš ๏ธ doesn't support crazy filenames * โœ… config GUI * โœ… download counter * โœ… watch active connections * โœ… plugins ## [nextcloud](https://github.com/nextcloud/server) * php, mariadb * tested locally, [linuxserver/nextcloud](https://hub.docker.com/r/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 does `670`/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](https://github.com/haiwen/seafile) * c, mariadb * tested locally, [official container](https://manual.seafile.com/latest/docker/deploy_seafile_with_docker/) v11.0.13 * โš ๏ธ [isolated on-disk file hierarchy](https://manual.seafile.com/maintain/seafile_fsck/), 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 does `670`/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 ## [rclone](https://github.com/rclone/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](https://github.com/sigoden/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; `97` files per sec (copyparty does `670`/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](https://github.com/chibisafe/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](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/reject-extension.py) or [mimetype](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/reject-mimetype.py) using plugins * โœ… token auth (api keys) ## [kodbox](https://github.com/kalcaddle/kodbox) * this thing is insane (but is getting competition from [arozos](#arozos)) * php; [docker](https://hub.docker.com/r/kodcloud/kodbox) * ๐Ÿ”ต *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](https://github.com/filebrowser/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; `69` files per sec (copyparty does `670`/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 ## [filegator](https://github.com/filegator/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](https://github.com/drakkan/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; `340` files per sec (copyparty does `670`/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](https://github.com/tobychui/arozos) * big suite of applications similar to [kodbox](#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](https://github.com/sc0tfree/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](https://github.com/patrickhener/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](https://github.com/nejdetckenobi/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](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/notify.py) ## [ass](https://github.com/tycrek/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](https://github.com/9001/copyparty/blob/hovudstraum/bin/mtag/image-noexif.py) * โœ… discord integration (custom embeds, upload webhook) * ๐Ÿ’พ [upload webhook plugin](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/discord-announce.py) * โœ… reject uploads by mimetype * ๐Ÿ’พ can reject uploads [by extension](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/reject-extension.py) or [mimetype](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/reject-mimetype.py) using plugins * โœ… can use S3 as storage backend * ๐Ÿ’พ relies on rclone-mount * โœ… custom 404 pages ## [linx](https://github.com/ZizzyDizzyMC/linx-server/) * originally [andreimarcu/linx-server](https://github.com/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](https://github.com/9001/copyparty/blob/hovudstraum/bin/hooks/wget.py) * โœ… can use S3 as storage backend * ๐Ÿ’พ relies on rclone-mount ## [h5ai](https://larsjung.de/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](https://github.com/nielsAD/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](https://github.com/svenstaro/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](https://github.com/stonith404/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 * โš ๏ธ 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](https://github.com/9001/copyparty#identity-providers) and config-files * โœ… probably more than one person who understands the code # briefly considered * [pydio](https://github.com/pydio/cells): python/agpl3, looks great, fantastic ux -- but needs mariadb, systemwide install * [gossa](https://github.com/pldubouilh/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`