mirror of
https://github.com/9001/copyparty.git
synced 2026-03-23 00:23:47 +10:00
versus: 2-letter headers (#1360)
This commit is contained in:
142
docs/versus.md
142
docs/versus.md
@@ -86,33 +86,33 @@ the table headers in the matrixes below are the different softwares, with a quic
|
||||
|
||||
the softwares,
|
||||
|
||||
[a]: https://github.com/9001/copyparty "copyparty"
|
||||
[b]: https://github.com/rejetto/hfs2/ "hfs2"
|
||||
[c]: https://rejetto.com/hfs/ "hfs3"
|
||||
[d]: https://github.com/nextcloud/server "nextcloud"
|
||||
[e]: https://github.com/haiwen/seafile "seafile"
|
||||
[f]: https://github.com/rclone/rclone "rclone"
|
||||
[g]: https://github.com/sigoden/dufs "dufs"
|
||||
[h]: https://github.com/chibisafe/chibisafe "chibisafe"
|
||||
[i]: https://github.com/kalcaddle/kodbox "kodbox"
|
||||
[j]: https://github.com/filebrowser/filebrowser "filebrowser"
|
||||
[k]: https://github.com/filegator/filegator "filegator"
|
||||
[l]: https://github.com/drakkan/sftpgo "sftpgo"
|
||||
[m]: https://github.com/tobychui/arozos "arozos"
|
||||
[C]: https://github.com/9001/copyparty "copyparty"
|
||||
[h2]: https://github.com/rejetto/hfs2/ "hfs2"
|
||||
[h3]: https://rejetto.com/hfs/ "hfs3"
|
||||
[nc]: https://github.com/nextcloud/server "nextcloud"
|
||||
[sf]: https://github.com/haiwen/seafile "seafile"
|
||||
[rc]: https://github.com/rclone/rclone "rclone"
|
||||
[df]: https://github.com/sigoden/dufs "dufs"
|
||||
[cs]: https://github.com/chibisafe/chibisafe "chibisafe"
|
||||
[kb]: https://github.com/kalcaddle/kodbox "kodbox"
|
||||
[fb]: https://github.com/filebrowser/filebrowser "filebrowser"
|
||||
[fg]: https://github.com/filegator/filegator "filegator"
|
||||
[sg]: https://github.com/drakkan/sftpgo "sftpgo"
|
||||
[az]: https://github.com/tobychui/arozos "arozos"
|
||||
|
||||
* `a` = [copyparty][a]
|
||||
* `b` = [hfs2][b] 🔥
|
||||
* `c` = [hfs3][c]
|
||||
* `d` = [nextcloud][d]
|
||||
* `e` = [seafile][e]
|
||||
* `f` = [rclone][f], specifically `rclone serve webdav .`
|
||||
* `g` = [dufs][g]
|
||||
* `h` = [chibisafe][h]
|
||||
* `i` = [kodbox][i]
|
||||
* `j` = [filebrowser][j]
|
||||
* `k` = [filegator][k]
|
||||
* `l` = [sftpgo][l]
|
||||
* `m` = [arozos][m]
|
||||
* `C` = [copyparty][C]
|
||||
* `h2` = [hfs2][h2] 🔥
|
||||
* `h3` = [hfs3][h3]
|
||||
* `nc` = [nextcloud][nc]
|
||||
* `sf` = [seafile][sf]
|
||||
* `rc` = [rclone][rc], specifically `rclone serve webdav .`
|
||||
* `df` = [dufs][df]
|
||||
* `cs` = [chibisafe][cs]
|
||||
* `kb` = [kodbox][kb]
|
||||
* `fb` = [filebrowser][fb]
|
||||
* `fg` = [filegator][fg]
|
||||
* `sg` = [sftpgo][sg]
|
||||
* `az` = [arozos][az]
|
||||
|
||||
some softwares not in the matrixes,
|
||||
* [updog](#updog)
|
||||
@@ -134,8 +134,8 @@ symbol legend,
|
||||
|
||||
## general
|
||||
|
||||
| feature / software |[a]|[b]|[c]|[d]|[e]|[f]|[g]|[h]|[i]|[j]|[k]|[l]|[m]|
|
||||
| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ----------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| intuitive UX | | ╱ | █ | █ | █ | | █ | █ | █ | █ | █ | █ | █ |
|
||||
| config GUI | | █ | █ | █ | █ | | | █ | █ | █ | | █ | █ |
|
||||
| good documentation | | | █ | █ | █ | █ | █ | | | █ | █ | ╱ | ╱ |
|
||||
@@ -155,28 +155,28 @@ symbol legend,
|
||||
| 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:
|
||||
* `C`/copyparty remarks:
|
||||
* no gui for server settings; only for client-side stuff
|
||||
* runs on iOS / iPads using [a-Shell](https://holzschu.github.io/a-Shell_iOS/) (pretty good) or [iSH](https://ish.app/) (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](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
|
||||
* validated on aarch64-BE by [Øl Telecom](http://ol-tele.com/) during eth0:2025; [photo1](https://a.ocv.me/pub/g/nerd-stuff/cpp/servers/aallwinner.jpg?cache) and [diploma](https://a.ocv.me/pub/g/nerd-stuff/cpp/servers/be-ready.png?cache)
|
||||
* validated on [SGI IRIX](https://en.wikipedia.org/wiki/IRIX) ([an O2](https://en.wikipedia.org/wiki/SGI_O2)) by [Øl Telecom](http://ol-tele.com/) during 39c3; [photo1](https://a.ocv.me/pub/g/nerd-stuff/cpp/servers/sgi-o2.jpg?cache) and [screenshot](https://a.ocv.me/pub/g/nerd-stuff/cpp/servers/sgi-o2.png?cache)
|
||||
* `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
|
||||
* `l`/sftpgo:
|
||||
* `h2`/hfs2 runs on linux through wine
|
||||
* `rc`/rclone must be started with the command `rclone serve webdav .` or similar
|
||||
* `cs`/chibisafe has undocumented windows support
|
||||
* `sg`/sftpgo:
|
||||
* Must be launched with a command
|
||||
* On Termux, just run `pkg in sftpgo`
|
||||
* `m`/arozos has partial windows support
|
||||
* `az`/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]|
|
||||
| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ----------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| download folder as zip | █ | █ | █ | █ | ╱ | | █ | | █ | █ | ╱ | █ | ╱ |
|
||||
| download folder as tar | █ | | | | | | | | | | | | |
|
||||
| upload | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | ╱ | █ | █ |
|
||||
@@ -224,23 +224,23 @@ symbol legend,
|
||||
|
||||
* `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:
|
||||
* `C`/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)
|
||||
* `sf`/seafile download-as-zip is not streaming; it creates the full zipfile before download can start, and fails on big folders
|
||||
* `fg`/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:
|
||||
* `fg`/filegator download-as-zip is not streaming; it creates the full zipfile before download can start
|
||||
* `sg`/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
|
||||
* `az`/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]|
|
||||
| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ----------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| serve https | █ | | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ |
|
||||
| serve webdav | █ | | | █ | █ | █ | █ | | █ | | | █ | █ |
|
||||
| serve ftp (tcp) | █ | | | | | █ | | | | | | █ | █ |
|
||||
@@ -261,17 +261,17 @@ symbol legend,
|
||||
* `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:
|
||||
* `C`/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
|
||||
* `sg`/sftpgo translates mojibake filenames into valid utf-8 (information loss)
|
||||
* `az`/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]|
|
||||
| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ----------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| config from cmd args | █ | | █ | | | █ | █ | | | █ | | ╱ | ╱ |
|
||||
| config files | █ | █ | █ | ╱ | ╱ | █ | | █ | | █ | • | ╱ | ╱ |
|
||||
| runtime config reload | █ | █ | █ | | | | | █ | █ | █ | █ | | █ |
|
||||
@@ -282,17 +282,17 @@ symbol legend,
|
||||
| folder-rproxy ok | █ | | █ | | █ | █ | | • | • | █ | • | | • |
|
||||
|
||||
* `folder-rproxy` = reverse-proxying without dedicating an entire (sub)domain, using a subfolder instead
|
||||
* `l`/sftpgo:
|
||||
* `sg`/sftpgo:
|
||||
* config: user can be added by cmd command in [Portable mode](https://docs.sftpgo.com/2.6/cli/#portable-mode); if not in Portable mode users must be added through gui / api calls
|
||||
* `m`/arozos:
|
||||
* `az`/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]|
|
||||
| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ----------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| accounts | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ | █ |
|
||||
| per-account chroot | | | | | | | | | | | | █ | |
|
||||
| single-sign-on | ╱ | | | █ | █ | | | | • | | | | |
|
||||
@@ -337,7 +337,7 @@ symbol legend,
|
||||
* `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:
|
||||
* `C`/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)
|
||||
@@ -346,21 +346,21 @@ symbol legend,
|
||||
* [version-checker](https://github.com/9001/copyparty/#version-checker) can check if the current version has a known vulnerability and immediately exit/shutdown, but automatic self-updating is **not** available
|
||||
* [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:
|
||||
* `fg`/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:
|
||||
* `sg`/sftpgo:
|
||||
* `file action event hooks` also include on-download triggers
|
||||
* `upload tracking / log` in main logfile
|
||||
* `m`/arozos:
|
||||
* `az`/arozos:
|
||||
* `2fa` maybe possible through LDAP/Oauth
|
||||
* `c`/hfs3
|
||||
* `h3`/hfs3
|
||||
* `2fa` available by installing a plugin
|
||||
|
||||
## client features
|
||||
|
||||
| feature / software |[a]|[b]|[c]|[d]|[e]|[f]|[g]|[h]|[i]|[j]|[k]|[l]|[m]|
|
||||
| ---------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ---------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| single-page app | █ | | █ | █ | █ | | | █ | █ | █ | █ | | █ |
|
||||
| themes | █ | █ | █ | █ | | | | | █ | | | | |
|
||||
| directory tree nav | █ | ╱ | | | █ | | | | █ | | ╱ | | |
|
||||
@@ -404,22 +404,22 @@ symbol legend,
|
||||
* `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
|
||||
* `f`/rclone can do some file management (mkdir, rename, delete) when hosting througn webdav
|
||||
* `j`/filebrowser remarks:
|
||||
* `C`/copyparty has teeny-tiny skips playing gapless albums depending on audio codec (opus best)
|
||||
* `h2`/hfs2 has a very basic directory tree view, not showing sibling folders
|
||||
* `rc`/rclone can do some file management (mkdir, rename, delete) when hosting througn webdav
|
||||
* `fg`/filebrowser remarks:
|
||||
* audio playback does not continue into next song
|
||||
* plaintext viewer/editor
|
||||
* `k`/filegator directory tree is a modal window
|
||||
* `l`/sftpgo remarks:
|
||||
* `fg`/filegator directory tree is a modal window
|
||||
* `sg`/sftpgo remarks:
|
||||
* audio/video playback does not continue into next song/video
|
||||
* plaintext viewer/editor
|
||||
|
||||
|
||||
## integration
|
||||
|
||||
| feature / software |[a]|[b]|[c]|[d]|[e]|[f]|[g]|[h]|[i]|[j]|[k]|[l]|[m]|
|
||||
| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
||||
| feature / software |[C]|[h2]|[h3]|[nc]|[sf]|[rc]|[df]|[cs]|[kb]|[fb]|[fg]|[sg]|[az]|
|
||||
| ----------------------- |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||||
| OS alert on upload | ╱ | | | | | | | | | ╱ | | ╱ | |
|
||||
| discord | ╱ | | | | | | | | | ╱ | | ╱ | |
|
||||
| ┗ announce uploads | ╱ | | | | | | | | | | | ╱ | |
|
||||
@@ -428,11 +428,11 @@ symbol legend,
|
||||
| flameshot | | | | | | █ | | | | | | | |
|
||||
|
||||
* sharex `╱` = yes, but does not provide example sharex config
|
||||
* `a`/copyparty remarks:
|
||||
* `C`/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
|
||||
* `fg`/filebrowser can probably pull those off with command runners similar to copyparty
|
||||
* `sg`/sftpgo has nothing built-in but is very extensible
|
||||
|
||||
|
||||
## another matrix
|
||||
|
||||
Reference in New Issue
Block a user