Add Immich installer #12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "add-immich-installer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
We want to be able to specify applications for the server to install. The first application we're going to implement automatic installation for is Immich.
Ideally, we would have some external repository of installers. This way the server manager is not limited to only installing applications that were known at compile time. However, installing and configuring applications is an open ended problem. And however we solve this problem, it would benefit from being as declarative as possible; data, rather than scripts.
What we know at the moment:
.envand populate them with values derived from the ServerConfigsystemctl --user -M runner@ enable --now podman.socketuseradd --create-home runnerusermod -aG docker runnerloginctl enable-linger runnerdnfA template language for populating files may be useful. So far all commands that need to be issued could be issued based on data, e.g. a list of packages to install, service units to enable, users to add and their groups and properties, etc.
One advantage of a declarative (data) approach is it allows the server manager to check if the current configuration matches target configuration. If an imperative script is partially executed, it may not be safely re executed. If a declarative data structure is partially applied, then declarations that match current state (the partially applied portion) can be ignored by the program and execution can continue from the unapplied portion of the target declaration. A declarative approach also facilitates drift detection and self healing
Solution
What I have learnt building an implementation for the above spec:
Currently the implementation doesn't open the firewall, it doesn't configure DNS (which is a big issue to figure out later), and it doesn't configure caddy. However, I think merging this code and then refactoring to the resource based implementation will be a better use of time
WIP: Add Immich installerto Add Immich installer