Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ziodotsh/atfile
๐ฆโ๐ฆ Store and retrieve files on the ATmosphere
https://github.com/ziodotsh/atfile
atproto bluesky file-hosting
Last synced: 3 days ago
JSON representation
๐ฆโ๐ฆ Store and retrieve files on the ATmosphere
- Host: GitHub
- URL: https://github.com/ziodotsh/atfile
- Owner: ziodotsh
- License: mit
- Created: 2024-10-09T09:39:15.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-01-01T12:51:50.000Z (17 days ago)
- Last Synced: 2025-01-07T18:12:07.893Z (11 days ago)
- Topics: atproto, bluesky, file-hosting
- Language: Shell
- Homepage:
- Size: 256 KB
- Stars: 102
- Watchers: 1
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-atproto - ATFile - Store and retrieve files on the ATmosphere. (Tools / Bluesky)
README
ATFile
Store and retrieve files on the ATmosphere (like Bluesky)
Written entirely in Bash Shell. No NodeJS here!
โฌ๏ธ Get ATFile ย |ย
๐ฃ Submit Issue ย |ย
๐ฆ @zio.sh
## โจ Quick Start
```sh
curl -sSL https://raw.githubusercontent.com/ziodotsh/atfile/refs/heads/main/atfile-install.sh | bash
echo 'ATFILE_USERNAME=""' > ~/.config/atfile.env # e.g. alice.bsky.social, did:plc:vdjlpwlhbnug4fnjodwr3vzh
echo 'ATFILE_PASSWORD=""' >> ~/.config/atfile.env
atfile help
```## ๐ Using
### โ Requirements
* **OSยน**
* ๐ก **Linux**: GNU, MinGW and Termux only; muslยฒ not supported
* ๐ข **macOS**: Compatible with built-in version of Bash (3.2)
* ๐ก **Windows**: MinGW (Cygwin, Git Bash, MSYS2, etc.) and WSL (see Linux caveats above)
* This repository **does not** provide a native version for Windows
* ๐ข **BSD**: FreeBSD, NetBSD and OpenBSD; other non-detected BSDs should work (see ยน)
* ๐ข **Haiku**: [Yes, really](https://bsky.app/profile/did:plc:kv7sv4lynbv5s6gdhn5r5vcw/post/3lboqznyqgs26)
* ๐ด **Solaris**: Has issues; low priority
* **Bashยณ:** 3.x or later
* **Packages**
* [`curl`](https://curl.se)
* [ExifTool (`exiftool`)](https://exiftool.org) _(optional: set `ATFILE_SKIP_NI_EXIFTOOL=1` to ignore)_
* [`file`](https://www.darwinsys.com/file) _(only on *BSD, macOS, or Linux)_
* [GnuPG (`gpg`)](https://gnupg.org) _(optional: needed for `upload-crypt`, `fetch-crypt`)_
* [`jq`](https://jqlang.github.io/jq)
* [MediaInfo (`mediainfo`)](https://mediaarea.net/en/MediaInfo) _(optional: set `ATFILE_SKIP_NI_MEDIAINFO=1` to ignore)_
* `md5sum` _(optional: set `ATFILE_SKIP_NI_MD5SUM=1` to ignore)_
* Both GNU and BusyBox versions supported
* [`websocat`](https://github.com/vi/websocat) _(optional: needed for `stream`)_
* **PDS:** [Bluesky PDS](https://github.com/bluesky-social/pds)
* Other PDSs (such as [millipds](https://github.com/DavidBuchanan314/millipds)) remain untested, but if they implement standard `com.atproto.*` endpoints, there should be no reason these won't work
* Filesize limits cannot be automatically detected. By default, this is 50MB
* To change this on Bluesky PDS, set `PDS_BLOB_UPLOAD_LIMIT=`
* If the PDS is running behind Cloudflare, the Free plan imposes a 100MB upload limit
* This tool, nor setting a higher filesize limit, does not workaround [video upload limits on Bluesky](https://bsky.social/about/blog/09-11-2024-video). Videos are served via a [CDN](https://video.bsky.app), and adding larger videos to post records yields errors on the app
* **ATProto account**
* `bsky.network` (`*.bsky.social`) accounts supported
If you can, limit the amount of files you upload to Bluesky's servers. It's a miracle this even works with, what's currently, an entirely free service. Heed the copyright warning too: **do not upload copyrighted files.**
* `did:web` is supported!
(Seriously, it ain't hard)### ๐ค _(Todo)_
_(Todo)_
## ๐๏ธ Building
_(Todo)_
---
## โจ๏ธ Contributing
_(Todo)_
## ๐ค Acknowledgements
* **Paul Frazee** โ [๐ฆ @pfrazee.com](https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd)
His kind words
* **Laurens Hof** โ [๐ฆ @laurenshof.online](https://bsky.app/profile/did:plc:mdjhvva6vlrswsj26cftjttd)
Featuring ATFile on [The Fediverse Report](https://fediversereport.com): _["Last Week in the ATmosphere โ Oct 2024 week 4"](https://fediversereport.com/last-week-in-the-atmosphere-oct-2024-week-4/)_
* **Samir** โ [๐ @bdotsamir](https://github.com/bdotsamir)
Testing, and diagnosing problems with, support for macOS (`macos`)
* **Astra** โ [๐ฆ @astra.blue](https://bsky.app/profile/did:plc:ejy6lkhb72rxvkk57tnrmpjl)
[Various PRs](https://github.com/ziodotsh/atfile/pulls?q=is%3Apr+author%3Aastravexton); testing, and diagnosing problems with, support for MinGW (`linux-mingw`) and Termux (`linux-termux`).
* _(Forgot about you? [You know what to do](https://github.com/ziodotsh/atfile/compare))_---
* **ยน** You can bypass OS detection in one of two ways:
* Set `ATFILE_SKIP_UNSUPPORTED_OS=1`
Be careful! There's a reason some OSes are not supported
* Set `ATFILE_FORCE_OS=`
This overrides the OS detected. Possible values:
* BSD: `bsd-freebsd`, `bsd-netbsd`, `bsd-openbsd`
* Linux: `linux`, `linux-mingw`, `linux-musl`, `linux-termux`
* Other: `haiku`, `macos`, `solaris`, `unknown`
* **ยฒ** musl-powered distros do not use GNU/glibc packages, and have problems currently
* Known musl distros: Alpine, Chimera, Dragora, Gentoo (musl), Morpheus, OpenWrt, postmarketOS, Sabotage, Void
* Bypassing OS detection (see ยน) will work, but dates will not be handled correctly
* **ยณ** As long as you have Bash installed, running from another shell will not be problematic ([`#!/usr/bin/env bash`](https://github.com/ziodotsh/atfile/blob/main/atfile.sh#L1) forces Bash)