• 1 Post
  • 29 Comments
Joined 3 months ago
cake
Cake day: March 26th, 2024

help-circle
  • Syncthing is my answer though I appreciate it doesn’t get to the root of your question.

    There are local backups that include your system settings, text messages, contacts, call history and (optionally) apps. The one thing I want is the ability to pick a directory for the local backup so I can make it work with syncthing without jumping through hoops.

    It’s also compatible with Nextcloud and WebDAV if those are options for you.











  • My solution is to use Rathole. I rent a wildly cheap (2 core, 4GB memory) VPS and basically just run Traefik there. Then I use Rathole to make some services hosted on my desktop available to Traefik.

    I like this solution better than Wireguard for my application. It reduces attack surface to services you’ve explicitly set up, rather than a full data layer trunk between your machine and a potential malicious actor.




  • My $0.02:

    NixOS is excellent, and actually pretty easy if you’re not trying to do anything fancy (running all services under a single user, etc.). Personally this is my pick because I primarily host services for myself, so down time in exchange for learning a new thing is acceptable.

    As I mentioned elsewhere, Debian + Incus is a great minimal and rock solid solution for longer standing services. Although, it’s not composeable :(

    More directly to your preferences, I would also recommend considering Rocky. Being in the RHEL ecosystem has its perks (especially with rootless support for podman and podman-compose). I’m also generally a fan of SELinux. Rocky is a little less bleeding edge than Fedora with many of the same conveniences and recent packages. In my mind, for my purposes, that makes it a better choice than Fedora for a server OS.




  • sunstoned@lemmus.orgOPtoSelfhosted@lemmy.worldBeeper Self Hosting
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 months ago

    Hm, so it’s encrypted from your beeper client to the bridge, decrypted, then re-encrypted with the outgoing platform’s protocol. Seems like a good reason to host your own bridge, and a good call on it being a glaring attack surface.

    Seems like the secret sauce is in how they deal with messaging platform integrations? Maybe the goal is to avoid another iMessage lawsuit. With Beeper as a proof of concept it would be cool to start adding integrations in a fully open source way (legality permitting)



  • sunstoned@lemmus.orgOPtoSelfhosted@lemmy.worldBeeper Self Hosting
    link
    fedilink
    English
    arrow-up
    4
    ·
    3 months ago

    Agreed! I’m pretty psyched about their transparency and the overall model. Especially in the universe where this Apple lawsuit results in Beeper being allowed to connect to iMessage again.

    Would love to hear any results you find with hosting! I’ll give it a try too and maybe do a follow on post with what I learn.



  • Try this, friend

    Tap for spoiler
    { config, pkgs, ... }:
    
      let
        lock-false = {
          Value = false;
          Status = "locked";
        };
        lock-true = {
          Value = true;
          Status = "locked";
        };
      in
    {
      /* 
      ** ffextid
      ** Usage: `ffextid [install_url]`
      ** Description: simple script to find the extension id from an extension's manifest
      **              using the url found by right clicking the install add-on button and 
      **              selecting "copy link"
      */
      home.packages = with pkgs; [
        (pkgs.writeShellScriptBin "ffextid" ''
        #!/usr/bin/env bash 
        $(curl $1 > /tmp/ffext.xpi) 1> /dev/null
        $(unzip /tmp/ffext.xpi -d /tmp/ffext) 1> /dev/null
        
        # If ripgrep exists, use that. Otherwise default to grep
        if ! command -v rg &> /dev/null; 
        then
          rg id /tmp/ffext/manifest.json
        else
          grep id /tmp/ffext/manifest.json
        fi
        
        rm -rf /tmp/ffext*
        '')
      ]; 
      programs = {
        firefox = {
          enable = true;
          package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
            extraPolicies = {
              DisableTelemetry = true;
              # add policies here...
    
              /* ---- EXTENSIONS ---- */
              ExtensionSettings = {
                "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
                /*
                Format: 
                "[Manifest id]" = {
                  installation_mode = "force_installed" # will install the extension for you!
                  install_url = "[url]" # found by right clicking the install button on the add-on page
                };
                */
                # uBlock Origin:
                "uBlock0@raymondhill.net" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
                };
                # Privacy Badger:
                "jid1-MnnxcxisBPnSXQ@jetpack" = {
                  install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
                  installation_mode = "force_installed";
                };
                # Bitwarden
                "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4225453/bitwarden_password_manager-2024.1.1.xpi";
                };
                # XBrowserSync
                "{019b606a-6f61-4d01-af2a-cea528f606da}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/3546070/xbs-1.5.2.xpi";
                };
                # Decentraleyes
                "{jid1-BoFifL9Vbdl2zQ@jetpack}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4158232/decentraleyes-2.0.18.xpi";
                };
                # Clear URLs
                "{74145f27-f039-47ce-a470-a662b129930a}" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4064884/clearurls-1.26.1.xpi";
                };
                #Dark Reader 
                "addon@darkreader.org" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4223104/darkreader-4.9.76.xpi";
                };
                # Cookie AutoDelete
                "CookieAutoDelete@kennydo.com" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4040738/cookie_autodelete-3.8.2.xpi";
                };
                # I don't care about cookies
                "jid1-KKzOGWgsW3Ao4Q@jetpack" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4202634/i_dont_care_about_cookies-3.5.0.xpi";
                };
                # Youtube Sponsor Block
                "sponsorBlocker@ajay.app" = {
                  installation_mode = "force_installed";
                  install_url = "https://addons.mozilla.org/firefox/downloads/file/4229442/sponsorblock-5.5.4.xpi";
                };
                # add extensions here...
                /*
                "" = {
                  installation_mode = "force_installed";
                  install_url = "";
                };
                */
              };
      
              /* ---- PREFERENCES ---- */
              # Set preferences shared by all profiles.
              Preferences = {
                "browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
    
                ### BOOLEANS
                "extensions.pocket.enabled" = lock-false;
                "extensions.screenshots.disabled" = lock-true;
                "privacy.donottrack.heater.enable" = lock-true;
                "browser.compactmode.show" = lock-true;
                # add global preferences here...
              };
            };
          };
    
          /* ---- PROFILES ---- */
          # Switch profiles via about:profiles page.
          # For options that are available in Home-Manager see
          # https://nix-community.github.io/home-manager/options.html#opt-programs.firefox.profiles
          profiles ={
            sunstoned = {                 # choose a profile name; directory is /home/<user>/.mozilla/firefox/profile_0
              id = 0;               # 0 is the default profile; see also option "isDefault"
              name = "sunstoned";         # name as listed in about:profiles
              isDefault = true;     # can be omitted; true if profile ID is 0
              settings = {          # specify profile-specific preferences here; check about:config for options
                "browser.newtabpage.activity-stream.feeds.section.highlights" = false;
                "browser.startup.homepage" = "https://nixos.org";
                "browser.newtabpage.pinned" = [{
                  title = "NixOS";
                  url = "https://nixos.org";
                }];
                # add preferences for profile_0 here...
              };
            };
          # add profiles here...
          };
        };
      };
    }