diff --git a/README.md b/README.md index 2da2c664..cfeabf73 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ turn almost any device into a file server with resumable uploads/downloads using * [quickstart](#quickstart) - just run **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py)** -- that's it! ๐ŸŽ‰ * [at home](#at-home) - make it accessible over the internet * [on servers](#on-servers) - you may also want these, especially on servers - * [features](#features) + * [features](#features) - also see [comparison to similar software](./docs/versus.md) * [testimonials](#testimonials) - small collection of user feedback * [motivations](#motivations) - project goals / philosophy * [notes](#notes) - general notes @@ -127,7 +127,7 @@ enable thumbnails (images/audio/video), media indexing, and audio transcoding by * **Alpine:** `apk add py3-pillow ffmpeg` * **Debian:** `apt install --no-install-recommends python3-pil ffmpeg` -* **Fedora:** rpmfusion + `dnf install python3-pillow ffmpeg` +* **Fedora:** rpmfusion + `dnf install python3-pillow ffmpeg --allowerasing` * **FreeBSD:** `pkg install py39-sqlite3 py39-pillow ffmpeg` * **MacOS:** `port install py-Pillow ffmpeg` * **MacOS** (alternative): `brew install pillow ffmpeg` @@ -182,6 +182,8 @@ firewall-cmd --reload ## features +also see [comparison to similar software](./docs/versus.md) + * backend stuff * โ˜‘ IPv6 * โ˜‘ [multiprocessing](#performance) (actual multithreading) diff --git a/docs/versus.md b/docs/versus.md index 0d9d8ee4..90c8f3ff 100644 --- a/docs/versus.md +++ b/docs/versus.md @@ -48,6 +48,7 @@ currently up to date with [awesome-selfhosted](https://github.com/awesome-selfho * [filebrowser](#filebrowser) * [filegator](#filegator) * [sftpgo](#sftpgo) + * [arozos](#arozos) * [updog](#updog) * [goshs](#goshs) * [gimme-that](#gimme-that) @@ -93,6 +94,7 @@ the softwares, * `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) @@ -113,22 +115,22 @@ symbol legend, ## general -| feature / software | a | b | c | d | e | f | g | h | i | j | k | l | -| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| 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 | โ•ฑ | | | โ–ˆ | โ–ˆ | | | | | | | | +| 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: @@ -140,37 +142,38 @@ symbol legend, * `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 | -| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| 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 | โ–ˆ | | | | โ–ˆ | โ–ˆ | โ€ข | | โ–ˆ | | โ–ˆ | โ•ฑ | -| 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 | โ•ฑ | | | | | | | โ–ˆ | โ€ข | โ•ฑ | | โ•ฑ | -| checksums provided | | | | โ–ˆ | โ–ˆ | | | | โ–ˆ | โ•ฑ | | | -| cloud storage backend | โ•ฑ | โ•ฑ | โ•ฑ | โ–ˆ | โ–ˆ | โ–ˆ | โ•ฑ | | | โ•ฑ | โ–ˆ | โ–ˆ | +| 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 | โ–ˆ | | | | โ–ˆ | โ–ˆ | โ€ข | | โ–ˆ | | โ–ˆ | โ•ฑ | โ•ฑ | +| 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 | โ•ฑ | | | | | | | โ–ˆ | โ€ข | โ•ฑ | | โ•ฑ | โ€ข | +| 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 @@ -192,26 +195,27 @@ symbol legend, * 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 | -| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| 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 | โ–ˆ | | | โ€ข | โ€ข | โ–ˆ | | โ€ข | โ€ข | | | โ•ฑ | +| 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 @@ -222,61 +226,65 @@ symbol legend, * 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 | -| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| 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 | โ–ˆ | | | | โ–ˆ | โ–ˆ | | โ€ข | โ€ข | โ€ข | โ€ข | | +| 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 | -| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| 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 | โ–ˆ | โ–ˆ | โ€ข | โ–ˆ | โ–ˆ | | | โ–ˆ | โ–ˆ | | | โ•ฑ | -| curl-friendly ls | โ–ˆ | | | | | | | | | | | | -| curl-friendly upload | โ–ˆ | | | | | โ–ˆ | โ–ˆ | โ€ข | | | | | +| 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 | โ–ˆ | โ–ˆ | โ€ข | โ–ˆ | โ–ˆ | | | โ–ˆ | โ–ˆ | | | โ•ฑ | โ–ˆ | +| 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 @@ -302,49 +310,51 @@ symbol legend, * `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 | -| ---------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| 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 | | | | | โ–ˆ | | | | โ–ˆ | โ–ˆ | โ–ˆ | | +| 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 @@ -360,14 +370,14 @@ symbol legend, ## integration -| feature / software | a | b | c | d | e | f | g | h | i | j | k | l | -| ----------------------- | - | - | - | - | - | - | - | - | - | - | - | - | -| OS alert on upload | โ–ˆ | | | | | | | | | โ•ฑ | | โ•ฑ | -| discord | โ–ˆ | | | | | | | | | โ•ฑ | | โ•ฑ | -| โ”— announce uploads | โ–ˆ | | | | | | | | | | | โ•ฑ | -| โ”— custom embeds | | | | | | | | | | | | โ•ฑ | -| sharex | โ–ˆ | | | โ–ˆ | | โ–ˆ | โ•ฑ | โ–ˆ | | | | | -| flameshot | | | | | | โ–ˆ | | | | | | | +| 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: @@ -393,6 +403,7 @@ symbol legend, | 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 | @@ -504,12 +515,14 @@ symbol legend, * โœ… token auth (api keys) ## [kodbox](https://github.com/kalcaddle/kodbox) -* this thing is insane +* 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 @@ -569,6 +582,24 @@ symbol legend, * โœ… 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) +* โš ๏ธ 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 +* โš ๏ธ 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