Selfhosted
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:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
view the rest of the comments
I believe you may have found your ideal OS. Debian will always lag behind ever so often. And that’s okay. We all use the Pi’s for different reasons.
I can appreciate that about Debian. Common tools and stability can be both convinient and reliable. Learning linux is already overwhelming with choices.
Even though I use Alpine for all my Pi boards and laptop, I keep a live usb partition of Linux Mint Debian Edition as my emergency backup. It just works.
I went with Arch Linux on ARM for a minimal approach - did you try that?
Genuninely interested in your experience of Alpine Linux as I'd not considered it on a Pi (only VMs so far...)
I haven't tried arch at all. I used Linux Mint for a year, LMDE for a year and only really started working with command line since last December. I think I chose to try Alpine because I wanted my web facing devices to have the least amount of software installed. Security-wise it made sense to me to have less surface area to exploit.
It took a bit extra effort for me to learn how to use OpenRC as the init system. As well as learning Linux from a bare bones linux perspective.
I actually found using Busy-box Ash interesting to work with and that's the only shell I currently use. I even wrote a whole script around Rsync in a POSIX friendly way because I liked the idea portable scripting.
If you're interested, I can send you a link that contains the setup notes for my server. It's about 85% of my setup process, the rest being some files that are mostly customization that I rsync into place towards the end of the setup process. That can give you an idea of what Alpine on ARM is like.
Thanks. No need for the setup notes (but thanks for the kind offer), it was more about the experience, but I think you've already answered my question with less surface area (I do have 1 Pi that's internet facing for Radicale)
Have you looked at Ansible? That might also cover what you're trying to do.
How do you think Ansible can help me? I've read about it a few times but it's hard for me to understand it's actual usage without spending time playing with it.
I can possibly look into it a bit more in the future. I've got a few things I'm working on like learning how to do TLS with Caddy so I can reduce my dependency with Cloudflare.
Ansible is an automation tool to setup systems to a known desirable end state.
TBH, for a single device, it's overkill, but you seem like someone who keeps good notes and has some custom files to copy across.... you could convert your setup note into an Ansible file, and it will also copy over your custom config files.
For Ansible you define the desired outcome and it does "all" (kinda) the work for you... so... say you want Apache, MariaDB and PHP, it doesn't matter if half are installed already, or not, or their dependencies - you just say:
Do an update Install packages: A B C Copy my config files over Start the services Relax
Yep, it'll take 10 times as long to get it working up front, but the day you want to duplicate it / start on a fresh Pi / VM, it's all there for you.
I use it to setup all my Pi Zeros thr same way (they're doing BLE presence detection) and for their regular updates
I've also got some VMs setup that way
But... I tried it on a laptop and as it's a single device I just ended up setting it up manually and now the ansible script is woefully out of date... just some balanced feedback.
Sounds like what I've been doing manually for a while now as I learn more. For my desktop I have three scripts. One to install Alpine on full disk encryption. One for the initial setup up to the first required reboot and the last for the remaining setup plus transferring files.
I've been learning how to edit files with sed, cat, echo and tee commands to help automate everything from a fresh install.
Similar process for my Pi's except I just copy-paste blocks of commands through a terminal instead of a script.
To transfer files to all their proper directories, I have a whole system for that using rsync. I basically keep a bare-bones directory tree with only the files I have worked on. Then I have an rsync command to send all those files onto the Pi's file system in a way that retains all the files and folder's attributes.
I wrote an rsync tool for myself to help me keep all these commands in files that I can neatly organize. I use that tool so much that it's now my entire backup system. With a bunch of files organized with numbers, I can automate the backup of my phone, two pi's and laptop to a partition on my laptop, then an additional copy to my external SSD in one command. And I have very high confidence in my restores since I do that frequently while testing new stuff. I also failed a lot before to get that much confidence.
I have issues with over organization if you couldn't tell by now hahaha.