this post was submitted on 26 Jul 2025
766 points (99.4% liked)

Selfhosted

61333 readers
350 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

I made a video about copyparty, the selfhosted fileserver I've been making for the past 5 years.

The main focus of the video is the features, but it also touches upon configuration. Was hoping it would be easier to follow than the readme on github... not sure how well that went, but hey :D

This video is also available to watch on the copyparty demo server, as a high-quality AV1 file and a lower-quality h264.

you are viewing a single comment's thread
view the rest of the comments
[–] chellomere@lemmy.world 27 points 1 year ago* (last edited 1 year ago) (2 children)

Hey fellow scener, cool project!

Just a few thoughts/questions:

  • BTRFS and ZFS support real deduplication via copy on write, and would eliminate all current disadvantages of symlink and hardlink deduplication. It just works.
  • Why have it be one huge python source file? This is a serious code smell imo, and something you really should avoid doing as this can be a major maintenance burden.
[–] tripflag@lemmy.world 28 points 1 year ago (2 children)

BTRFS and ZFS support real deduplication via copy on write, and would eliminate all current disadvantages of symlink and hardlink deduplication. It just works.

yeah that's a good point, I'll add an option to take advantage of this if you know you're running on a filesystem where that works as intended.

Why have it be one huge python source file?

oh don't worry, it's all separate files during development -- there's a build-stage which bundles everything up into a single file for distribution. But thanks for the concern :D

[–] chellomere@lemmy.world 5 points 1 year ago (1 children)

Ah, so you have compiled it into one file? Didn't know that was possible for python, what tool do you use for this?

[–] tripflag@lemmy.world 16 points 1 year ago (2 children)

sooo this is one of the things that started with someone saying "wouldn't it be funny if..."

if you open copyparty-sfx.py in a text editor, you'll see how -- but please make sure to use an editor which is able to handle about 600 KiB of comments which contain invalid utf8 / binary garbage 😁

I ended up rolling my own packer since I wanted optimal encoding efficiency, and everything I could find would do stuff like base85 or ucs2 tricks, but it turns out python is perfectly happy with binary garbage in comments if you declare that the file is latin-1 so it realizes all hope is lost :D

the only drawback of the sfx.py is that it needs to extract to $TEMP before running, so that's the slight advantage of the zipapp (the .pyz alternative), but that suffers from some performance reduction in return, and is more hermetic (doesn't let you swap out the bundled dependencies with fresh versions as easily if necessary)

[–] chellomere@lemmy.world 2 points 1 year ago

Ah, reminds me of the old self-extracting gzip executable trick. I used that once a very long time ago to make a 4k linux intro, before I realized to be competitive I should switch to windows to be able to use Crinkler, which is superior even though the decompressor is part of the executable.

[–] RecallMadness@lemmy.nz 1 points 1 year ago (1 children)

What do you use to bundle into one file?

[–] tripflag@lemmy.world 3 points 1 year ago

copyparty-sfx.py is a custom packer (see this reply) created by make-sfx.sh, and copyparty.pyz is a standard zipapp, created by make-pyz.sh. The zipapp has more disadvantages than the sfx.py, so that's the default/recommended build.

[–] suzune@ani.social 3 points 1 year ago (1 children)

Just a remark from someone who runs ZFS since the beginning. Many people don't like the deduplication feature because of its memory footprint.

It's also nice to have this feature without relying on a certain filesystem.

[–] chellomere@lemmy.world 2 points 1 year ago

I assume you mean automatic deduplication? I haven't used ZFS, but BTRFS does not have that. There are a variety of ways to perform deduplication, I have duperemove scheduled to run regularly.

If ZFS is still capable of being instructed to perform deduplication when automatic deduplication is turned off, which it really should be able to do, then this should work even with it turned off.