How i could hide the minio storage behind peertube

Hi, I need help with my peertube instance.
I enabled object storage with private home minio server, private ip, private self-signed domain, private dns, only exposed peertube with nginx proxy running on public vps.
Video uploading, playback and moving around the home works fine.
But the video cannot be played outside the home.
I’ve tried uploading a video and it replays fine before the video is moved to object storage, but after transcoding, moving and publishing is done, the video doesn’t play.
I tried pressing F12 and found that the private domain name of the minio server was exposed, which made the video unable to be played outside.
So my question is, can I hide the object storage server and let the peertube proxy everything?

The principle of the object storage is to direct download on it, to distribute the load on object storage servers, and decrease the load on the Peertube server.

If what you want is to store videos on a separate server, I think the best way is to disable object storage in Peertube, and mount your object storage on the Peertube server filesystem (with something like s3fs).

Thank you for you support, will try to get my minio server online.

I have successfully created another online minio server with ddns, the newly uploaded videos can be played, it works fine, but what can I do for the previously moved or uploaded videos, which are only playable at home, how to update Object URL of previous video?

Sorry, but according to the documentation it is not yet possible: Remote storage (S3) | PeerTube documentation

Thank you for your reply.

i try log in to postgres, update database ‹ peertube › with the following sql command.

UPDATE public."videoFile" SET "fileUrl" = REPLACE("fileUrl",'your.previous.s3endpoint:YourPortNumber','your.current.s3endpoint:YourPortnumber');
UPDATE public."videoStreamingPlaylist" SET "playlistUrl" = REPLACE("playlistUrl",'your.previous.s3endpoint:YourPortNumber','your.current.s3endpoint:YourPortnumber');
UPDATE public."videoStreamingPlaylist" SET "segmentsSha256Url" = REPLACE("segmentsSha256Url",'your.previous.s3endpoint:YourPortNumber','your.current.s3endpoint:YourPortnumber')

After copied the whole bucket , video can be played and downloaded.
Everything works fine so far.

1 Like

Have you other Peertube instances that follows yours? Have you checked it is still working on them?
I don’t know this part of the Peertube code, but maybe the S3 urls are send to followers. In such case, it could still be broken when trying to play your videos from remote instances.

Yes, my instance has 3 followers. During the migration process, peertue generated a lot of dead links sent to other followers. I don’t know if peertube will be cleared automatically. Today, I changed endpoint domain name again, used with nginx to proxy minio externally, and signed it with a public certificate. Now everything is normal.