diff --git a/playbooks/apps/files/bin/pcloud-to-backblaze b/playbooks/apps/files/bin/pcloud-to-backblaze new file mode 100755 index 0000000..b43588b --- /dev/null +++ b/playbooks/apps/files/bin/pcloud-to-backblaze @@ -0,0 +1,3 @@ +#!/bin/bash +set -euo pipefail +/usr/bin/rclone copy --transfers=10 --checksum pcloud:/ backblaze-pcloud-backup:gaugendre-pcloud-backup/ diff --git a/playbooks/dependencies/rclone.yaml b/playbooks/dependencies/rclone.yaml new file mode 100644 index 0000000..6022603 --- /dev/null +++ b/playbooks/dependencies/rclone.yaml @@ -0,0 +1,80 @@ +--- +- name: Setup rclone + hosts: servers + gather_facts: false + tasks: + - name: Install system deps + become: true + ansible.builtin.apt: + pkg: + - rclone + - name: Create rclone config dir + ansible.builtin.file: + path: /home/gaugendre/.config/rclone/ + state: directory + mode: "0775" + - name: Write rclone.conf + ansible.builtin.template: + src: templates/rclone/rclone.conf.j2 + dest: /home/gaugendre/.config/rclone/rclone.conf + mode: "0600" + owner: gaugendre + group: gaugendre + vars: + rclone_pcloud_access_token: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 31393931636333353461393962663165353939616233373630306166323364366464646236366236 + 3532316638623631316637376631623033333338643163640a383030393666613664616330613038 + 31343335306463346262353563613236326633656637316664353233323532623134303639623637 + 3635303632393761620a326631623230623233633137323463633934386336643163376633653062 + 65326239666231613332383164326632623132313566316332623239383263653566636564666335 + 38613738326663343562666339353138366465613939383333343138633335623863373363323465 + 396130376532643638336634313463346161 + rclone_pcloud_username: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 31306235373536353233626662396263303236386466346439393937633366393866376232336331 + 6635646438306232376534333030366538633265323664610a386461363436383439343635613539 + 64663361346262333830363338393637646661353666633461353236663264626537323137346566 + 3265613931353837350a653566366162616233643436346433393335313232633463633462336236 + 38323264346635343261323035666637326432383665313530333734626438306532 + rclone_pcloud_obscured_password: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 61383335653433326664343632373863653936633537386130393931376232313939643962313166 + 6533346439343730643963346135303938323139646538620a386463626161326237313764653733 + 61663232323538356333323162346564303832383666643837633338316138303330396330356536 + 6536666164326261610a643863626239326465333161386466656663643237643833343365333438 + 33393533336537646135616635336234313033306566663765373739626639323235343765663462 + 31613633636234653965613264306534336533663336643835316330333533383136653439323937 + 66646435663661636566653561323838633063353863333830343935623539663533373931653535 + 62623665346132333663363937613562626538376162313436613962383565356532373139663439 + 3965 + rclone_backblaze_account: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 38373439343234376561643433663663393064376163353637656634636532633737323765376566 + 6533363136383063353865663231623737333330373561380a333834306439353364646338383433 + 31646538386433376531313339303565316465363861323664303534313036653130643534643363 + 6432336533356637320a386139386630396234306661616562316635383966633730383932353662 + 64633364383538363966343538613664306436343961646431643530306563656262 + rclone_backblaze_key: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 36373439303231336137323833666564643636373261333934313561616465643365656439376136 + 6131343666376137393330653033653565356636343835660a386436376130326663336239396564 + 63326563353334366531383536313165313363613036366266626335623163343033643030656435 + 3636646264333236640a636437623137633837323731343164633831336565323031393962346665 + 37653138303333386639353161303966346638323337666435303934653139616131 + rclone_nextcloud_obscured_password: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 61303239646230396431323231313463613834323233663335373534306261303138666432373132 + 3566313861383463653661366135643236636364663766330a356162373833393137316333363964 + 36623666333839333037393135623963616139623936663264326462303637316130643234386331 + 3638393166363430650a663137653264393736313432336637373937396636346635346638313631 + 31393664663961393638333739656533326337656362386435383062653236623838336663336131 + 37343035613863623666343430633134343339386461343031316233326639643731633331313738 + 313562336232306234666333643931363135 + rclone_nextcloud_username: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 32393766396337306164343538393533623265313765643636633666653065623861633937353562 + 3731323363616630303531656139393137386138666161340a356334613833633063346332323666 + 65353537383662346331333534636333313736383532663564393230623531613839323235333632 + 6639333935356466390a636665646265336134313362373238336231363537646238373361643730 + 3833 diff --git a/playbooks/dependencies/templates/rclone/rclone.conf.j2 b/playbooks/dependencies/templates/rclone/rclone.conf.j2 new file mode 100644 index 0000000..fb10932 --- /dev/null +++ b/playbooks/dependencies/templates/rclone/rclone.conf.j2 @@ -0,0 +1,21 @@ +[pcloud] +type = pcloud +token = {"access_token":"{{ rclone_pcloud_access_token }}","token_type":"bearer","expiry":"0001-01-01T00:00:00Z"} +hostname = eapi.pcloud.com +username = {{ rclone_pcloud_username}} +password = {{ rclone_pcloud_obscured_password }} + +[backblaze-pcloud-backup] +type = b2 +account = {{ rclone_backblaze_account }} +key = {{ rclone_backblaze_key }} + +[nextcloud] +type = webdav +url = https://cloud.augendre.info/remote.php/dav/files/{{ rclone_nextcloud_username }} +vendor = nextcloud +user = {{ rclone_nextcloud_username }} +pass = {{ rclone_nextcloud_obscured_password }} + +[local] +type = local diff --git a/playbooks/system/cron.yaml b/playbooks/system/cron.yaml index fb1da01..561e749 100644 --- a/playbooks/system/cron.yaml +++ b/playbooks/system/cron.yaml @@ -119,3 +119,9 @@ minute: 0 hour: 8 job: /usr/bin/docker compose -f /mnt/data/media/docker-compose.yaml restart plex + - name: Cron - Backup pCloud to Backblaze + ansible.builtin.cron: + name: Backup pCloud to Backblaze + minute: 0 + hour: 4 + job: /mnt/data/bin/healthcheck pcloud-to-backblaze /mnt/data/bin/pcloud-to-backblaze