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.

  • twikz@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 hours ago

    Now it would be interesting to setup a raspberry pi with harddrives plugged in the USB 3 ports💡

  • HexesofVexes@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 hours ago

    Elderly raspberry pi B [✓]

    Large portable drive gathering dust [✓]

    Guess I’m setting up a locally hosted file server in the near future.

  • RheumatoidArthritis@mander.xyz
    link
    fedilink
    English
    arrow-up
    6
    ·
    4 hours ago

    I have a question, and I want to emphasise thar this is not criticism but a request for dive into technicalities.

    In the video you mentioned copyparty has an one-way sync tool. Is there a good reason why it’s not two-way, or is this just something you weren’t motivated to do?

    • tripflag@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 hour ago

      No worries, good question :>

      The problem with bidirectional filesync is that it’s an absolutely massive can of worms, very easy to mess up, and the consequences of messing up are usually the worst kind (loss of data). There’s an insane amount of edgecases to keep in mind, and you need to get every edgecase right every single time, otherwise you might wipe someone’s vacation photos, or suddenly downgrade someone’s keepass database to an older version… And stuff like syncing multiple devices to the same server makes it balloon further.

      I’ve started becoming more confident in copyparty’s filesystem-index database, but it’s still just a hint/guideline, with the filesystem being the only source of truth – it’s still not something I’d trust with tracking sync-state against one or more clients.

      The bigger guys who offer bidirectional sync (nextcloud, syncthing, etc.) have spent years perfecting their logic, so I’d like to leave this in their capable hands.

      • RheumatoidArthritis@mander.xyz
        link
        fedilink
        English
        arrow-up
        1
        ·
        28 minutes ago

        Thank you for your answer! Do you think copyparty would work together with Syncthing on the same backing directory, or would they compete for changes etc? Copyparty in this scenario would be for sharing content with friends and occasional remote upload

  • uzay@infosec.pub
    link
    fedilink
    English
    arrow-up
    4
    ·
    5 hours ago

    Look cool! I think you should consider putting a screenshot of the UI somewhere near the top of the README

  • danhab99@programming.dev
    link
    fedilink
    English
    arrow-up
    6
    ·
    7 hours ago

    Oh my gawd what a README!! I’m on my phone and I was trying to scroll back to the top of it from the bottom and I just kept on scrolling… Holy shit I’m going to put this on my kanban board give it proper attention

    • cwista@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      ·
      5 hours ago

      At this rate might be faster to read code than a read me. Or convert to a wiki style if this much details are really needed.

  • hperrin@lemmy.ca
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 hours ago

    Can you point me to the WebDAV code? I’m interested to see your implementation. There are some parts of the spec that are ambiguous, and I like to see how those are implemented in different servers.

    • tripflag@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 hours ago

      sure! my implementation is really basic, just the stuff that’s needed to make the clients i’ve tested happy, so there’s probably still clients that won’t be able to connect (And i’ll fix those as soon as I hear about them!)

      httpcli.py is the http methods handler, and the webdav-specific handlers are all next to eachother, propfind // proppatch // lock // unlock // mkcol // and there’s also put for the uploads, but that’s not entirely webdav-specific, just webdav-aware.

  • perishthethought@piefed.social
    link
    fedilink
    English
    arrow-up
    14
    ·
    13 hours ago

    The fact you mention security features, without ever saying it’s ‘super secure’ tells me you know a lot about what you’re doing. I’m so sick of apps like this that start with “most secure app on the net” but you know they’re delusional. Thank you, going to check this out.

  • muusemuuse@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    27
    ·
    edit-2
    16 hours ago

    You made this on your phone on the bus ride to and from work.

    I cleaned the cat box yesterday and considered that an accomplishment.

    Fuck.

  • hexagonwin@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    3
    ·
    13 hours ago

    Looks fantastic, I’ll actually be trying this. Love how it doesn’t lock my files into some obscure format like seafiles.

  • chellomere@lemmy.world
    link
    fedilink
    English
    arrow-up
    22
    ·
    edit-2
    20 hours ago

    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.
    • Suzune@ani.social
      link
      fedilink
      English
      arrow-up
      3
      ·
      10 hours ago

      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.

    • tripflag@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      23
      arrow-down
      1
      ·
      19 hours ago

      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
        link
        fedilink
        English
        arrow-up
        4
        ·
        13 hours ago

        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.worldOP
          link
          fedilink
          English
          arrow-up
          9
          ·
          13 hours ago

          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)

    • tripflag@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      15
      ·
      18 hours ago

      it’s such an impressive project! Amazing what they’ve accomplished in so little time, and so important too – we need as many options as we can get.

      • pwalker@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        4
        ·
        15 hours ago

        I agree but it’s still in an early development state. Not really usable for everyday work let alone most people never heard about it 😅 But yeah still cool to mention it under “modern” browsers. I wish them good luck with the first alpha next year. I hope it’ll be successful.