any.software.baikal-podman: added role

main
Jef Roosens 2025-12-28 14:47:06 +01:00
parent 44154d337f
commit 744568e446
No known key found for this signature in database
GPG Key ID: 21FD3D77D56BAF49
6 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,5 @@
dav.roosens.me {
reverse_proxy localhost:8005 {
header_down +X-Robots-Tag "none"
}
}

View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
data_dir='/mnt/data1/baikal'
snapshot_dir="${data_dir}.snapshot"
# Read-only snapshot for atomic backup
btrfs subvolume snapshot -r "$data_dir" "$snapshot_dir" || exit $?
/usr/local/bin/restic backup "$snapshot_dir"
# Always remove snapshot subvolume, even if restic fails
btrfs subvolume delete "$snapshot_dir"

View File

@ -0,0 +1,8 @@
---
- name: 'restart baikal'
ansible.builtin.systemd_service:
name: 'baikal'
state: 'restarted'
scope: 'user'
daemon_reload: true

View File

@ -0,0 +1,4 @@
---
dependencies:
- role: any.tools.caddy
become: true

View File

@ -0,0 +1,39 @@
---
- name: Ensure data directories are present
ansible.builtin.file:
path: '{{ item }}'
state: directory
mode: '0755'
owner: 'debian'
group: 'debian'
become: true
loop:
- '{{ baikal_specific_dir }}'
- '{{ baikal_config_dir }}'
- name: Ensure Quadlet files are present
ansible.builtin.template:
src: "baikal.container.j2"
dest: "/home/debian/.config/containers/systemd/baikal.container"
mode: '0755'
owner: 'debian'
group: 'debian'
notify: 'restart baikal'
- name: Ensure Caddyfile is present
ansible.builtin.copy:
src: 'baikal.Caddyfile'
dest: '/etc/caddy/baikal.Caddyfile'
owner: root
group: root
mode: '0644'
become: true
notify: 'reload caddy'
# - name: Ensure backup script is present
# ansible.builtin.copy:
# src: 'baikal.backup.sh'
# dest: '/etc/backups/baikal.backup.sh'
# owner: 'root'
# group: 'root'
# mode: '0644'

View File

@ -0,0 +1,14 @@
# vim: ft=systemd
[Container]
Image=docker.io/ckulka/baikal:0.9.4-nginx
PublishPort=127.0.0.1:8005:80
Volume={{ baikal_config_dir }}:/var/www/baikal/config
Volume={{ baikal_specific_dir }}:/var/www/baikal/Specific
[Service]
Restart=always
[Install]
WantedBy=default.target