Problem
When you send a piece of media, it has an expiry date, which for my friends, is a deal-breaker when moving to this application. I understand that it's for saving storage space and is an essential part of the early development of this application, but there should be another option for uploading files with an indefinite lifetime.
Proposed solution
Implement an option (in user settings) where the client can automatically upload to an alternative media bucket (self-hosted, perhaps another application for Fluxer) and send a link (or other embed) in place of native file hosting. Then only a file mirror should need to be hosted, so no server space would be used in serving the content.
Notes
Process
1) A user types a message and adds an attachment
2) When the attachment is sent, if the client has a custom configured media bucket, then their app makes a request to their personal backend
3) A public media link is returned from the personal backend, which is embedded in the message as a special type of file (or just as an embedded link)
Proposed MVP
A simple Docker container that, when run, serves as an alternative media bucket for Fluxer. A user then connects it to their Fluxer account, so files are uploaded there, instead of uploading to the main Fluxer servers. When other users load the sent embed/file, a request is made to the author's alternative media bucket (likely through a mirror, to protect IP addresses) and displayed on the other user's client.
I suppose an example link could be, if I hosted an instance of this hypothetical application:
https://fluxer.lexifur.me/media/1474100806723788885/128a2215-1ba3-4236-8dfd-068a357c43b3.mp4
^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TLS media bucket domain fluxer user id randomly generated media UUID
User requirements
- Some amount of actual storage
- A self-hosted, dedicated server with Docker
- A custom domain
- SSL/TLS for their domain
Expansion
- Multiple users can join an alternative media bucket, added via an Oauth integration
- Servers/guilds can specify their own alternative media bucket, where media is stored for any user sending files within
- The docker container can integrate with other remote file servers/protocols, including S3 buckets, FTP/FTPS/SFTP, SMB, Webdav, etc. and act as a broker to other storage solutions rather than a database, in the case of huge data
13 comments
Comment by @lexifuzzpup-student
Comment by @Jonesyandbeast
Comment by @lexifuzzpup
- It doesn't necessarily solve the file deletion issue, since they'll still be deleted above a threshold.
- Fluxer has users who access the app using various devices, and not all devices are created equal. Some people might be running beefy computers, while some might be using a mobile phone from 2011, so how should media sharing be decided?
- If a user is offline who holds media, how is that file retrieved?
- Decentralization adds to the turbidity and uncertainty of communities; some files may be unavailable at times or may get corrupted. For example, someone being the sole possessor of a piece of media allows them to manipulate (albeit solvable with crypto signatures) or delete the original file without the author's knowledge.
However, I do see some pros over the Docker image idea:Comment by @peq42
Comment by @omrih4
Comment by @Shanesan
Comment by @lexifuzzpup
Comment by @JLUsr
Comment by @coldreindeer
Comment by @coldreindeer
Comment by @rogue-agent
Comment by @nekoame-git
Comment by @rogue-agent