Aussie living in the San Francisco Bay Area.
Coding since 1998.
.NET Foundation member. C# fan
https://d.sb/
Mastodon: @dan@d.sb

  • 0 Posts
  • 46 Comments
Joined 2 years ago
cake
Cake day: June 14th, 2023

help-circle




  • I’m a C# developer and run .NET apps on Linux all the time. I usually work on CLI and server apps, but recently released my first Linux desktop app written in C#: https://flathub.org/apps/com.daniel15.wcc

    Even before .NET Core, I was using Mono to run C# apps on Linux. There used to be quite a few GNOME apps written in C#.

    There’s .NET and then there’s .NET Core which is a mere subset of .NET.

    Nope. The old .NET Framework has been deprecated for a long time. The latest version, 4.8.1, is not very different to 4.6 which was released 10 years ago.

    The modern versions are just called .NET, which is what .NET Core used to be, but with much more of the framework implemented in a cross-platform way. Something like 95% of the Windows-only .NET Framework has been reimplemented in a cross-platform way.

    The list of .NET stuff that will actually run on .NET Core (alone) is a barren wasteland.

    All modern .NET code is built on the cross-platform framework. Only legacy apps used the old Windows-only .NET Framework.

    If you get the free community version of Visual Studio and create a new C# project, it’ll be using the latest cross-platform framework. You can even cross-compile for Linux on a Windows system.








  • dan@upvote.autoSelfhosted@lemmy.worldAlternative to NordVPN Meshnet?
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    15 days ago

    This is a decent idea. You can configure the VPS to be an exit node on the Tailnet, and configure the clients to use it as their exit node. Then you’d just need to configure some nftables rules to masquerade (source NAT) to the VPN network interface.

    Having said that… At that point, why do you need the other VPN? You can just use the VPS as your exit node.


  • Tailscale is “mostly” self-hosted, in that the VPN connection itself is peer-to-peer almost all the time. You can host your own Headscale and DERP/Relay servers to make it fully self-hosted, but tbh I’m fine not self-hosting the control plane.

    The relay server is only used if both ends have very restrictive NAT and none of the NAT hole punching techniques work, which is rare other than on very locked down corporate networks. If you have IPv6 enabled on both ends, you shouldn’t have issues making a direct connection, as IPv6 doesn’t use NAT. Even with regular NAT (like a home internet connection) on both ends, Tailscale can use UDP hole punching on both ends to establish a direct connection.



  • dan@upvote.autoSelfhosted@lemmy.worldDead simple document host?
    link
    fedilink
    English
    arrow-up
    22
    ·
    edit-2
    26 days ago

    Install Nginx, add autoindex on; to the default site config, throw the files into /var/www/html or whatever default folder it uses, and delete the default index.html file. If you need to do it via Docker then use the official Nginx image https://hub.docker.com/_/nginx

    You could also just share the files via SMB. Easy to use on a PC - you could configure their computers to mount the share as a network drive on boot (e.g. R:, for recipes). Not sure about other phones but the built-in files app on my Galaxy S25 Ultra supports SMB too.




  • dan@upvote.autoSelfhosted@lemmy.worldExpanding storage on simple home server
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    1
    ·
    edit-2
    1 month ago

    Add a second SSD, if the motherboard has a SATA port (I assume your current one is an NVMe drive). A SATA SSD is still more than fast enough as a second drive.

    Moving to a bigger SSD also isn’t too difficult, as long as you have a system where you can have both the old and new SSD connected at the same time. It can be a different system if needed. Download Clonezilla onto a USB stick with Ventoy on it, and boot into it. Just make sure you have backups and do the clone in the correct direction (don’t clone the blank new drive onto the old one!!)


  • This is how I handle it for most software: Read (or at least skim) the changelogs for all minor and major versions between your current version and the latest version.

    If you’re using Docker, diff your current docker-compose to the latest one for the project. See if any third-party dependencies (like PostgreSQL, Redis, etc) have breaking changes.

    If there’s any versions with major breaking changes, upgrade to each one separately (eg. 1.0 to 2.0, then 2.0 to 3.0, etc) rather than jumping immediately to the latest one, as a lot of developers don’t sufficiently test upgrading across multiple versions.

    Take a snapshot before each upgrade (or if your file system doesn’t support snapshots, manually take a backup before each upgrade).

    …or just don’t read anything, YOLO it, and restore a snapshot if that fails. A lot of software is simple enough that all you need to do is change the version number in docker-compose (if you’re using Docker).


  • In addition to backups, consider using snapshots if your file system supports it (ZFS, Btrfs, or LVM).

    I use ZFS and have each of my Docker volumes in a separate ZFS dataset (similar to a Btrfs subvolume). This lets me snapshot each container independently. I take a snapshot before an upgrade. If the upgrade goes badly, I can instantly revert back to the point before I performed the upgrade.