Outline: configure backups
This commit is contained in:
parent
daeef1bc4b
commit
cd4a7177d7
@ -8,6 +8,11 @@ echo "Backup: perform gitea backup"
|
|||||||
su --login gitea --command '/home/gitea/backup.sh'
|
su --login gitea --command '/home/gitea/backup.sh'
|
||||||
|
|
||||||
|
|
||||||
|
echo "Backup: perform outline backup"
|
||||||
|
|
||||||
|
su --login outline --command '/home/outline/backup.sh'
|
||||||
|
|
||||||
|
|
||||||
echo "Backup: perform gramps backup"
|
echo "Backup: perform gramps backup"
|
||||||
|
|
||||||
su --login {{ primary_user }} --command '/home/{{ primary_user }}/applications/gramps/backup.sh'
|
su --login {{ primary_user }} --command '/home/{{ primary_user }}/applications/gramps/backup.sh'
|
||||||
@ -15,7 +20,7 @@ su --login {{ primary_user }} --command '/home/{{ primary_user }}/applications/g
|
|||||||
|
|
||||||
echo "Backup: send backups to remote storage with retic"
|
echo "Backup: send backups to remote storage with retic"
|
||||||
|
|
||||||
restic-shell.sh backup --verbose /home/gitea/backups /home/major/applications/gramps/backups \
|
restic-shell.sh backup --verbose /home/gitea/backups /home/outline/backups /home/major/applications/gramps/backups \
|
||||||
&& restic-shell.sh check \
|
&& restic-shell.sh check \
|
||||||
&& restic-shell.sh forget --compact --prune --keep-daily 90 --keep-monthly 36 \
|
&& restic-shell.sh forget --compact --prune --keep-daily 90 --keep-monthly 36 \
|
||||||
&& restic-shell.sh check
|
&& restic-shell.sh check
|
||||||
@ -28,4 +33,5 @@ curl -s -X POST 'https://api.telegram.org/bot{{ notifications_tg_bot_token }}/se
|
|||||||
-d 'parse_mode=HTML' \
|
-d 'parse_mode=HTML' \
|
||||||
-d 'text=<b>{{ notifications_name }}</b>: бекап успешно завершен!'
|
-d 'text=<b>{{ notifications_name }}</b>: бекап успешно завершен!'
|
||||||
|
|
||||||
|
|
||||||
echo -e "\nBackup: done"
|
echo -e "\nBackup: done"
|
||||||
|
25
files/outline/backup.sh.j2
Normal file
25
files/outline/backup.sh.j2
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
|
BACKUP_FILE="outline_postgres_${TIMESTAMP}.sql.gz"
|
||||||
|
|
||||||
|
echo "Outline: backing up PostgreSQL database"
|
||||||
|
|
||||||
|
docker compose --file "{{ base_dir }}/docker-compose.yml" exec \
|
||||||
|
outline_postgres \
|
||||||
|
pg_dump \
|
||||||
|
-U "{{ outline_postgres_user }}" \
|
||||||
|
"{{ outline_postgres_database }}" \
|
||||||
|
| gzip > "{{ postgres_backups_dir }}/${BACKUP_FILE}"
|
||||||
|
|
||||||
|
echo "Outline: PostgreSQL backup saved to {{ postgres_backups_dir }}/${BACKUP_FILE}"
|
||||||
|
|
||||||
|
echo "Outline: removing old backups"
|
||||||
|
|
||||||
|
# Keep only the 3 most recent backups
|
||||||
|
keep-files.py "{{ postgres_backups_dir }}" --keep 3
|
||||||
|
|
||||||
|
echo "Outline: backup completed successfully."
|
@ -58,11 +58,8 @@ services:
|
|||||||
container_name: outline_postgres
|
container_name: outline_postgres
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/postgres:/var/lib/postgresql/data
|
- {{ postgres_data_dir }}:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: '{{ outline_postgres_user }}'
|
POSTGRES_USER: '{{ outline_postgres_user }}'
|
||||||
POSTGRES_PASSWORD: '{{ outline_postgres_password }}'
|
POSTGRES_PASSWORD: '{{ outline_postgres_password }}'
|
||||||
POSTGRES_DB: '{{ outline_postgres_database }}'
|
POSTGRES_DB: '{{ outline_postgres_database }}'
|
||||||
|
|
||||||
volumes:
|
|
||||||
database-data:
|
|
||||||
|
@ -11,7 +11,8 @@
|
|||||||
app_user: "{{ app_name }}"
|
app_user: "{{ app_name }}"
|
||||||
base_dir: "/home/{{ app_name }}"
|
base_dir: "/home/{{ app_name }}"
|
||||||
data_dir: "{{ (base_dir, 'data') | path_join }}"
|
data_dir: "{{ (base_dir, 'data') | path_join }}"
|
||||||
backups_dir: "{{ (base_dir, 'backups') | path_join }}"
|
postgres_data_dir: "{{ (base_dir, 'data', 'postgres') | path_join }}"
|
||||||
|
postgres_backups_dir: "{{ (base_dir, 'backups', 'postgres') | path_join }}"
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: "Create user and environment"
|
- name: "Create user and environment"
|
||||||
@ -31,13 +32,31 @@
|
|||||||
USER_UID: "{{ user_create_result.uid }}"
|
USER_UID: "{{ user_create_result.uid }}"
|
||||||
USER_GID: "{{ user_create_result.group }}"
|
USER_GID: "{{ user_create_result.group }}"
|
||||||
|
|
||||||
|
- name: "Create internal directories"
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: "directory"
|
||||||
|
owner: "{{ app_user }}"
|
||||||
|
group: "{{ app_user }}"
|
||||||
|
mode: "0770"
|
||||||
|
loop:
|
||||||
|
- "{{ postgres_backups_dir }}"
|
||||||
|
|
||||||
- name: "Copy docker compose file"
|
- name: "Copy docker compose file"
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: "./files/{{ app_name }}/docker-compose.yml.j2"
|
src: "./files/{{ app_name }}/docker-compose.yml.j2"
|
||||||
dest: "{{ base_dir }}/docker-compose.yml"
|
dest: "{{ base_dir }}/docker-compose.yml"
|
||||||
owner: "{{ app_user }}"
|
owner: "{{ app_user }}"
|
||||||
group: "{{ app_user }}"
|
group: "{{ app_user }}"
|
||||||
mode: "0644"
|
mode: "0640"
|
||||||
|
|
||||||
|
- name: "Copy backup script"
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "./files/{{ app_name }}/backup.sh.j2"
|
||||||
|
dest: "{{ base_dir }}/backup.sh"
|
||||||
|
owner: "{{ app_user }}"
|
||||||
|
group: "{{ app_user }}"
|
||||||
|
mode: "0750"
|
||||||
|
|
||||||
- name: "Run application with docker compose"
|
- name: "Run application with docker compose"
|
||||||
community.docker.docker_compose_v2:
|
community.docker.docker_compose_v2:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user