Commit graph

78 commits

Author SHA1 Message Date
8137b68676
arr: Automatically update vpn server list 2025-10-20 23:53:55 +02:00
40670b8953
site: Set up restic role directly after caddy role 2025-07-21 22:19:59 +02:00
03316733f5
paperless: Fix compose missing quote 2025-07-21 22:19:59 +02:00
c96833988a
roles: Change main service name to app 2025-07-21 22:19:58 +02:00
4a5a0beca1
restic: Fix backup container conditionals
Change the inclusion of backup containers so they actually work. They
check that restic is enabled globally, and that restic is enabled for
the individual stack they belong to. If either of the conditions is not
met they do not deploy.

This way we can simply enable restic globally with `restic_enable` and
by default all stacks will be backed up. But if we want to exclude
specific stacks from backups we can do so with the individual
`<role>_restic_enable = False` variable.

Finally found a good version of doing so with the help of the following
medium article: https://medium.com/opsops/is-defined-in-ansible-d490945611ae
which basically makes use of default fallbacks instead.
2025-07-19 10:23:23 +02:00
c5448b17cc
site: Bootstrap python for any target
Before running the main site playbook or any other tasks, we ensure that
python is installed on any host so we can actually connect with ansible.
2025-07-19 10:23:23 +02:00
84d7319465
roles: Set caddy and docker dependency chain
Each role (with outward-facing ingress needs) depends on caddy since
they depend on the availability of the 'caddy' network which is set in
that role.

Caddy in turn depends on docker.
2025-07-19 10:23:22 +02:00
6b26ba444b
restic: Only set backup hostname if we have ansible fact
For all backup containers.
2025-07-19 10:23:21 +02:00
8dafc38a83
docker: Tag complete docker playbook as docker
If we only tag the geerlingguy docker 'role' as docker we do not always
install the necessary python dependencies for later working with ansible
docker compose and network roles.

Applying the docker tag to them we can target '--tags=docker' on
playbook run and be sure that all later roles will have the correct
dependencies.
2025-07-19 10:23:21 +02:00
5b7f80bd29
repo: Rename main playbook to site.yaml 2025-07-19 10:23:20 +02:00
dc9ee09360
arr: Fix homarr volume mounts 2025-07-19 10:23:17 +02:00
9a8c4ae81f
repo: Rename compose templates to compose.yaml.jinja
It is a short, concicse name for the compose (and one of the ways that
docker officially recommends to name the files), and jinja is the
careful recommendation of the jinja docs.

https://jinja.palletsprojects.com/en/stable/templates/#template-file-extension
2025-07-18 21:49:32 +02:00
c584f6e238
repo: Remove stacks directory 2025-07-18 21:49:31 +02:00
968d2f9ca9
caddy: Remove whoami test container 2025-07-18 21:49:31 +02:00
9cf2ee10a0
restic: Skip repo init on backup containers
Only the initial 'main' prune container will init the repository, the
others will not attempt even if they don't find a repository.
2025-07-18 21:49:30 +02:00
412054e3cd
restic: Fix extensions to yaml 2025-07-18 21:37:12 +02:00
945868feff
vault: Add restic secrets 2025-07-18 21:37:11 +02:00
64b85c0c40
arr: Add restic backup 2025-07-18 21:37:10 +02:00
363ce9ae6f
arr: Remove leftover arr.yml file 2025-07-18 21:37:10 +02:00
1fd72a05a6
restic: Fix backup container local repo mounting
If our chosen backup repo is a local one, each restic container needs to
mount the local path as a volume, otherwise the data is stuck in the
container itself.
2025-07-18 21:37:09 +02:00
f1be696479
grocy: Add docker hostname to backup container 2025-07-18 21:37:08 +02:00
9cf1a5e571
grocy: Add restic backup 2025-07-18 21:37:08 +02:00
af5b647daf
grocy: Fix container service name 2025-07-18 21:37:07 +02:00
cd842ea4b5
Add hostname to restic containers
Will pass through the hostname to any snapshots set up.
The hostname is _not_ derived from the random docker container string
but instead takes the name of the _host_ on which docker is running
(from ansible facts).

The hostname in combination with the tag should point to the correct
host -> stack which is being backed up.
2025-07-18 21:37:07 +02:00
b81328d400
paperless: Add restic backups 2025-07-18 21:37:06 +02:00
e13d85990c
restic: Fix template env vars 2025-07-18 21:37:06 +02:00
065fd4562b
vault: Add restic notification secrets 2025-07-18 21:37:05 +02:00
fab6f5ff7c
restic: Add notification
Notifies double for each prune/check run which may need to be fixed.
Also custom notification contents cannot currently be passed.

Lastly, we should put identifying information into the notification body
(such as the hostname/container name for which the notification is
relevant).
2025-07-18 21:37:05 +02:00
003cf64a77
restic: Update docs 2025-07-18 21:37:04 +02:00
86d49a756b
restic: Add stack
Adapted from cloudserve-infrastructure, implements a backup stack using
restic. The actual backups have to be implemented by individual other
roles but this sets up initialization, pruning and checking of a repository.
2025-07-18 21:37:03 +02:00
93876315ca
repo: Rename all yml extensions to yaml 2025-07-18 21:37:03 +02:00
06940925a9
arr: Use gluetun port forward feature
Explanation here:
https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/vpn-port-forwarding.md

Whenever we receive a new forwarded port (around once a month?) we pass
it to qbit through its API. May require the setting no auth for local
connections in qbit.

Allows to remove the complete port-manager docker container which did
not work very well.
2025-07-17 18:40:17 +02:00
4658ff5d7e
dockerbob: Set to http protocol 2025-07-17 18:08:57 +02:00
2eab9d35d3
roles: Add inherited protocol for subdomains
Can be set globally ('protocol: http://') or per stack.
Defaults to empty which caddy treats as https.
2025-07-17 18:08:57 +02:00
0ce9d700b2
roles: Fix umask to be string type
Should not be integer which it will be cast to if given without quotes.
2025-07-17 18:08:56 +02:00
cd43b25553
arr: Fix remaining arrstack_data_dir variable 2025-07-17 18:08:56 +02:00
fbaab26f7f
repo: Add container tag to all hosted container tasks 2025-07-17 18:08:55 +02:00
9d36fe5714
repo: Grab become password from pass store 2025-07-17 18:08:55 +02:00
b147771a83
repo: Change inventory to yaml format 2025-07-17 18:08:54 +02:00
e32f2366c8
roles: Make domain global variable
Each role has their own subdomains which can be set manually, or can
inherit from the global domain with a default prefix.
2025-07-17 18:08:54 +02:00
812deeb12d
roles: Inherit from global vars with defaults
Global options such as 'timezone' or 'puid' can be set on a host and all
(relevant) roles will inherit them. Will be used for more variables in
the future.
2025-07-17 18:08:53 +02:00
770da26b03
paperless: Improve documentation 2025-07-17 18:08:52 +02:00
90f004fbdb
roles: Add grocy stack 2025-07-17 18:08:52 +02:00
6a1e01575c
repo: Move ansible setup to root dir 2025-07-17 18:07:52 +02:00
ff718b46ef
arr: Rename data dir to serve_dir 2025-07-16 22:11:46 +02:00
b8678bafaa
Merge paperless role 2025-07-16 22:11:45 +02:00
ce86cdc2c0
paperless: Add to main playbook 2025-07-16 22:11:44 +02:00
8391a54bda
paperless: Remove redundant docker compose lines 2025-07-16 22:11:44 +02:00
c0b5b04d3d
paperless: Add caddy labels 2025-07-16 22:11:43 +02:00
1b147c6a78
paperless: Set up directories 2025-07-16 22:11:43 +02:00