diff --git a/playbook.yml b/playbook.yml index f463f8e..64d9b1b 100644 --- a/playbook.yml +++ b/playbook.yml @@ -27,6 +27,7 @@ - role: changedetection - role: monitoring - role: immich + - role: hoarder vars: # devsec.hardening.ssh_hardening vars: ssh_client_port: 22 # Default, but duplicated here for documentation purpose. Not changed because its only accessible via LAN. diff --git a/roles/hoarder/tasks/main.yml b/roles/hoarder/tasks/main.yml new file mode 100644 index 0000000..bf0de5d --- /dev/null +++ b/roles/hoarder/tasks/main.yml @@ -0,0 +1,29 @@ +--- +- name: Create the compose project directory + ansible.builtin.file: + path: "/home/{{ ansible_user_id }}/hoarder" + state: directory + owner: "{{ ansible_user_id }}" + mode: '0744' +- name: Create the docker-compose.yml file + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "/home/{{ ansible_user_id }}/hoarder/docker-compose.yml" + owner: "{{ ansible_user_id }}" + mode: '0644' +- name: Create the .env file + ansible.builtin.template: + src: .env.j2 + dest: "/home/{{ ansible_user_id }}/hoarder/.env" + owner: "{{ ansible_user_id }}" + mode: '0644' +- name: Create and start services + become: true + community.docker.docker_compose_v2: + project_src: "/home/{{ ansible_user_id }}/hoarder/" +- name: Include simple-reverse-proxy role + ansible.builtin.include_role: + name: simple-reverse-proxy + vars: + simple_reverse_proxy_internal_port: 3002 + simple_reverse_proxy_internal_subdomain: local.hoarder diff --git a/roles/hoarder/templates/.env.j2 b/roles/hoarder/templates/.env.j2 new file mode 100644 index 0000000..0741e05 --- /dev/null +++ b/roles/hoarder/templates/.env.j2 @@ -0,0 +1,8 @@ +HOARDER_VERSION={{ versions.hoarder_version }} +NEXTAUTH_SECRET={{ hoarder_nextauth_secret }} +MEILI_MASTER_KEY={{ hoarder_meili_master_key }} +NEXTAUTH_URL={{ hoarder_nextauth_url }} +OPENAI_API_KEY={{ openapi_key }} +DISABLE_SIGNUPS=true +INFERENCE_TEXT_MODEL=gpt-4o-mini +INFERENCE_IMAGE_MODEL=gpt-4o-mini diff --git a/roles/hoarder/templates/docker-compose.yml.j2 b/roles/hoarder/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..7a1d930 --- /dev/null +++ b/roles/hoarder/templates/docker-compose.yml.j2 @@ -0,0 +1,39 @@ +--- +services: + web: + image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release} + restart: unless-stopped + volumes: + - hoarder_data:/data + ports: + - 127.0.0.1:3002:3000 + env_file: + - .env + environment: + MEILI_ADDR: http://meilisearch:7700 + BROWSER_WEB_URL: http://chrome:9222 + # OPENAI_API_KEY: ... + DATA_DIR: /data + chrome: + image: gcr.io/zenika-hub/alpine-chrome:123 + restart: unless-stopped + command: + - --no-sandbox + - --disable-gpu + - --disable-dev-shm-usage + - --remote-debugging-address=0.0.0.0 + - --remote-debugging-port=9222 + - --hide-scrollbars + meilisearch: + image: getmeili/meilisearch:v1.11.1 + restart: unless-stopped + env_file: + - .env + environment: + MEILI_NO_ANALYTICS: "true" + volumes: + - meilisearch:/meili_data + +volumes: + meilisearch: + hoarder_data: diff --git a/roles/hoarder/vars/main/defaults.yml b/roles/hoarder/vars/main/defaults.yml new file mode 100644 index 0000000..8214d8b --- /dev/null +++ b/roles/hoarder/vars/main/defaults.yml @@ -0,0 +1,2 @@ +--- +hoarder_nextauth_url: https://hoarder.kleinendorst.info diff --git a/roles/hoarder/vars/main/vault.yml b/roles/hoarder/vars/main/vault.yml new file mode 100644 index 0000000..d7ef860 --- /dev/null +++ b/roles/hoarder/vars/main/vault.yml @@ -0,0 +1,13 @@ +$ANSIBLE_VAULT;1.1;AES256 +31323864333237343132343336313236653962663262653233343465393633353736313738343631 +6662386466643235396666376639616434373837313538300a626466613732623466333633643238 +39613865613933356333626362326633373336313261383330633233386561323832323539663761 +3538643061396231610a396230333265353861346331393461373561343034336262376431656263 +31383837613866323765646261626661323563343339333832646533646166616534333065663466 +65323430623461353434366366393662356261363261313637363761303034646533306165353732 +62643739306237393031366531316537373231333737373763613835653130626639343563326234 +31326461346334313538333433623662383434343235386536356536356461633839336431343535 +37383964333537646634373163363366656530343133633061346662623530646466616366626364 +33386162663234313031666637623830343835663264326263303836356364323434646265623331 +64323364393964343362383636613436396539623866323865626533373032663033333139656133 +65633131633562663136 diff --git a/vault.yml b/vault.yml index 3d9ed36..57eb03c 100644 --- a/vault.yml +++ b/vault.yml @@ -1,18 +1,27 @@ $ANSIBLE_VAULT;1.1;AES256 -65323465313539616564316534353439633262633863316361613032363035663834663936333633 -3662626332313834353464396461653062356665373537310a643932323737646439376335616638 -34313464383138303332386261346635663162663966313361383465363261663930376262663737 -3138623038643066640a393966333763366165396462393736633633353763326265393231623831 -30376537306136376462656263336638656666636132306561656634663362393361636162313538 -64343063613935303066656265356636376539366166636362353236616633366165663062353232 -37623362323737303537323363386630383062356235336464643734396533353563333161333261 -33383663316165656461303263376639303939663231336133373432373064663865396436643963 -30643265313033356362663930373632386330353162646562383835623730316534396236353230 -31386161306433393663353764643636336565666435626164353861626365396339333962636337 -38383865383130383035623330313435656435633137316461383365373365343031313930343133 -63323739383637383263386663326436343938396432353163343738666366613037653434393262 -35666332383239323134643738383139316565323337613135653538336433373130343339306539 -32353662636334323130646134306434636339396239643234613261626365393138303431393866 -61353832663135636334343334613135393661326336666332316236366236353037326465636462 -31633133326431653837653634343934366662313831303263656462663334643165666138343766 -35376631656236613036616431346163313434613465303066323961323532373136 +35373831333937353462366464653434363763616462313333333630343566313735623933396338 +6165303633363362323031353431646339636435633261650a666335346237323861306231666434 +64643033363630636361393763623839643965646639303563623463386164376361333734333533 +3637326237623731360a306466353262313736393363623666623361303036303365303531373138 +33666238316565343166396265306638373732343734316533386637396233363366623164356561 +39363630373334626233666232626434363233653639376639303034653866613136383664396461 +39393064353536326337393366643162616235303362363637353330376134383866303337393335 +36353664623961663731633464373433616334633061633638383531396436346436333966333662 +64343434626661653534663234356637306332383831636461316339623866373630373933376463 +65363734633532616265643564386166626434343632306664653466353031346531343231373337 +65356461316164346136613932336134613736656634353363303334393962313837393935646162 +33646636393364333161623065613433343039343365613064383963336165646134363836313038 +39316530613061363032393864326137346132346132393431363033363932326436386263613230 +36333037653463313332336537353663303532333930383034313962616232383461643566653333 +34396166383732613330656635333635326533383238636364666530336331373333336434656235 +35653133343133386336643334383532326364373837303762396162323933343932663031363461 +37306535626261636232633261633663616136303534343334613365626533663838636431343435 +63623162616635333463616338653035343934343562326430663739383263393163636563666239 +66303362623035663965393137383934346235343166613766613365636162383931626464353161 +62613338613838616430356363303537623038656666363134383738363330376437303138646334 +35383361636132323630633332616338633533353433303735363366616134376164666339336161 +63653236356162376561396165373637626438306466326533616639613133356338653464326661 +36343066313539366235386634623933643761623362313165313930333139626431386233346337 +34336563363462613832396233323765653166333835356633633834633537636238386130386438 +31633838626337373431376132653439323066356262346566636166313038306161366661333239 +3238643837343338616136313362303963633865616661316566 diff --git a/versions.yml b/versions.yml index b5ff3b7..2775410 100644 --- a/versions.yml +++ b/versions.yml @@ -29,3 +29,5 @@ versions: # Releases: https://github.com/Kleinendorst/wedding/pkgs/container/wedding wedding: 0.0.17 cloudflared: 2024.12.2 + # Releases: https://github.com/hoarder-app/hoarder/releases + hoarder_version: 0.20.0