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.
-
No spam.
-
Posts are to be related to self-hosting.
-
Don't duplicate the full text of your blog or readme if you're providing a link.
-
Submission headline should match the article title.
-
No trolling.
-
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.
-
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:
- 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
If I read this correctly, Immich is setup entirely through Ansible, no docker compose. That's fine, however if Immich changes something drastically in their setup topology, it'll be more work for you to implement those changes. For services that use docker compose, you could use Ansible to deploy a compose file in a dir, say
/opt/immich-dockeralong with its requisite.envand other files. Then setup running it via systemd. Then when you need to update it, it's almost copy-paste from the upstream compose file into your Ansible repo.Heck, you could do a pre-stage play where you delegate to localhost an
ansible.builtin.get_urlto download the compose file before doing the rest.I wouldn't do that because I'd be inevitably picking up breaking changes without my knowledge that I'd have to fix after the fact. Unless you're pulling from a tag I guess. Still storing along the playbook feels more robust. It's less likely to get any surprises. Also I'm working under the assumption that you want to write idempotent code so you don't get breakage when your rerun it, which allows to run it on a schedule, to ensure your config doesn't drift too much.