diff --git a/ansible/playbooks/service_configuration.yml b/ansible/playbooks/service_configuration.yml index c086e5d..db410e3 100644 --- a/ansible/playbooks/service_configuration.yml +++ b/ansible/playbooks/service_configuration.yml @@ -37,7 +37,7 @@ when: "'containers' not in group_names" # KVM-NAS01 - include_role: - name: filebrowser_deployment + name: nextcloud_deployment when: inventory_hostname == "KVM-NAS01" # KVM-MONITOR01 - include_role: diff --git a/ansible/roles/services/authentik_deployment/templates/docker-compose.yml.j2 b/ansible/roles/services/authentik_deployment/templates/docker-compose.yml.j2 index 8f8f879..6bc8075 100644 --- a/ansible/roles/services/authentik_deployment/templates/docker-compose.yml.j2 +++ b/ansible/roles/services/authentik_deployment/templates/docker-compose.yml.j2 @@ -14,7 +14,7 @@ services: environment: POSTGRES_USER: "{{ postgres_user }}" POSTGRES_PASSWORD: "{{ postgres_password }}" - POSTGRES_DB: "{{ postgres_db }}" + POSTGRES_DB: "{{ authentik_postgres_db }}" redis: image: docker.io/library/redis:7-alpine @@ -39,7 +39,7 @@ services: AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__USER: "{{ postgres_user }}" AUTHENTIK_POSTGRESQL__PASSWORD: "{{ postgres_password }}" - AUTHENTIK_POSTGRESQL__NAME: "{{ postgres_db }}" + AUTHENTIK_POSTGRESQL__NAME: "{{ authentik_postgres_db }}" AUTHENTIK_SECRET_KEY: "{{ authentik_secret_key }}" volumes: - ./media:/media @@ -63,7 +63,7 @@ services: AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__USER: "{{ postgres_user }}" AUTHENTIK_POSTGRESQL__PASSWORD: "{{ postgres_password }}" - AUTHENTIK_POSTGRESQL__NAME: "{{ postgres_db }}" + AUTHENTIK_POSTGRESQL__NAME: "{{ authentik_postgres_db }}" AUTHENTIK_SECRET_KEY: "{{ authentik_secret_key }}" volumes: - ./media:/media diff --git a/ansible/roles/services/homepage_deployment/templates/services.yaml.j2 b/ansible/roles/services/homepage_deployment/templates/services.yaml.j2 index d192fa5..b3a5e88 100644 --- a/ansible/roles/services/homepage_deployment/templates/services.yaml.j2 +++ b/ansible/roles/services/homepage_deployment/templates/services.yaml.j2 @@ -4,7 +4,7 @@ # + https://github.com/homarr-labs/dashboard-icons/tree/main/png # + https://simpleicons.org/ (For si- prefix icons) -{% set filebrowser = docker_services | selectattr('name', 'equalto', 'filebrowser') | first %} +{% set nextcloud = (docker_services | selectattr('name', 'equalto', 'nextcloud') | list | first) | default(None) %} {% set grafana = docker_services | selectattr('name', 'equalto', 'grafana') | first %} {% set prometheus = docker_services | selectattr('name', 'equalto', 'prometheus') | first %} {% set npm = docker_services | selectattr('name', 'equalto', 'npm') | first %} @@ -88,16 +88,16 @@ {% endfor %} - Management: - - Filebrowser: - icon: {{ filebrowser.name }}.png - href: {{ filebrowser.forward_scheme | default('http') }}://{{ filebrowser.forward_host }}:{{ filebrowser.forward_port }} - description: Self-hosted file manager - siteMonitor: {{ filebrowser.forward_scheme | default('http') }}://{{ filebrowser.forward_host }}:{{ filebrowser.forward_port }} + - Nextcloud: + icon: si-nextcloud-#0082C9 + href: {{ nextcloud.forward_scheme | default('http') }}://{{ nextcloud.forward_host }}:{{ nextcloud.forward_port }} + description: Self-hosted cloud storage & collaboration + siteMonitor: {{ nextcloud.forward_scheme | default('http') }}://{{ nextcloud.forward_host }}:{{ nextcloud.forward_port }}/status.php widget: - type: {{ filebrowser.name }} - url: {{ filebrowser.forward_scheme | default('http') }}://{{ filebrowser.forward_host }}:{{ filebrowser.forward_port }} - username: {{ ansible_user }} - password: {{ ansible_password }} + type: nextcloud + url: {{ nextcloud.forward_scheme | default('http') }}://{{ nextcloud.forward_host }}:{{ nextcloud.forward_port }} + username: "{{ ansible_user }}" + password: "{{ ansible_password }}" {% for env in portainer_environments %} - Portainer ({{ env.name }}): icon: si-{{ portainer.name }}-#13BEF9 diff --git a/ansible/roles/services/nextcloud_deployment/tasks/main.yml b/ansible/roles/services/nextcloud_deployment/tasks/main.yml new file mode 100644 index 0000000..2232a61 --- /dev/null +++ b/ansible/roles/services/nextcloud_deployment/tasks/main.yml @@ -0,0 +1,93 @@ +--- +# Reference: https://github.com/nextcloud/docker +- name: Linux Variables Load + ansible.builtin.include_vars: + file: ../../../variables/os_var/linux_var.yml + +- name: CIFS (Common Internet File System) Utilities Installation + ansible.builtin.apt: + name: cifs-utils + state: present + +- name: Mount Point Directory Creation + ansible.builtin.file: + name: "{{ nas_mount_dir }}" + state: directory + owner: "{{ www_data_uid }}" + group: "{{ www_data_gid }}" + mode: '0770' + +- name: NAS Credentials File Creation + ansible.builtin.template: + src: cifs_credentials.j2 + dest: /etc/cifs_credentials + owner: root + group: root + mode: '0600' + +- name: Permanent Mount Configuration + ansible.posix.mount: + src: "{{ nas_path }}" + path: "{{ nas_mount_dir }}" + fstype: cifs + opts: "credentials=/etc/cifs_credentials,uid={{ www_data_uid }},gid={{ www_data_gid }},file_mode=0770,dir_mode=0770,iocharset=utf8,vers=3.0,nofail" + state: mounted + register: permanent_mount + +- name: Reload to Apply Changes + ansible.builtin.systemd_service: + daemon_reload: true + when: permanent_mount.changed + +- name: Mount Execution + ansible.builtin.command: + cmd: mount -a + when: permanent_mount.changed + +# - name: Nextcloud Parent & Infrastructure Directories Creation +# ansible.builtin.file: +# path: "{{ item }}" +# state: directory +# owner: "{{ ansible_user }}" +# group: "{{ ansible_user }}" +# mode: '0755' +# loop: +# - "{{ nextcloud_parent_dir }}" +# - "{{ nextcloud_parent_dir }}/postgres_data" +# - "{{ nextcloud_parent_dir }}/redis_data" + +- name: Nextcloud Parent & Infrastructure Directories Creation + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + owner: "{{ item.owner }}" + group: "{{ item.group }}" + mode: "{{ item.mode }}" + loop: + - { path: "{{ nextcloud_parent_dir }}", owner: "{{ ansible_user }}", group: "{{ ansible_user }}", mode: '0755' } + - { path: "{{ nextcloud_parent_dir }}/postgres_data", owner: "{{ ansible_user }}", group: "{{ ansible_user }}", mode: '0755' } + - { path: "{{ nextcloud_parent_dir }}/redis_data", owner: '999', group: '999', mode: '0770' } + +- name: Nextcloud Web Root Directory Creation (www-data ownership) + ansible.builtin.file: + path: "{{ nextcloud_parent_dir }}/html" + state: directory + owner: "{{ www_data_uid }}" + group: "{{ www_data_gid }}" + mode: '0770' + +- name: Docker Compose File Creation + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "{{ nextcloud_parent_dir }}/docker-compose.yml" + owner: "{{ ansible_user }}" + group: "{{ ansible_user }}" + mode: '0644' + register: docker_compose_file + +- name: Nextcloud Deployment + community.docker.docker_compose_v2: + project_src: "{{ nextcloud_parent_dir }}" + pull: "{{ docker_image_pull_action }}" + state: present + remove_orphans: true \ No newline at end of file diff --git a/ansible/roles/services/nextcloud_deployment/templates/cifs_credentials.j2 b/ansible/roles/services/nextcloud_deployment/templates/cifs_credentials.j2 new file mode 100644 index 0000000..af04858 --- /dev/null +++ b/ansible/roles/services/nextcloud_deployment/templates/cifs_credentials.j2 @@ -0,0 +1,2 @@ +username={{ domain_admin_user.split('@') | first }} +password={{ domain_admin_password }} diff --git a/ansible/roles/services/nextcloud_deployment/templates/docker-compose.yml.j2 b/ansible/roles/services/nextcloud_deployment/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..9639079 --- /dev/null +++ b/ansible/roles/services/nextcloud_deployment/templates/docker-compose.yml.j2 @@ -0,0 +1,72 @@ +--- +services: + postgresql: + image: docker.io/library/postgres:16-alpine + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - ./postgres_data:/var/lib/postgresql/data + environment: + POSTGRES_USER: "{{ postgres_user }}" + POSTGRES_PASSWORD: "{{ postgres_password }}" + POSTGRES_DB: "{{ nextcloud_postgres_db }}" + + redis: + image: docker.io/library/redis:7-alpine + command: redis-server --save "" --appendonly no --loglevel warning + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - ./redis_data:/data + + app: + image: docker.io/library/nextcloud:{{ nextcloud_version }} + restart: unless-stopped + ports: + - "8080:80" + environment: + POSTGRES_HOST: postgresql + POSTGRES_USER: "{{ postgres_user }}" + POSTGRES_PASSWORD: "{{ postgres_password }}" + POSTGRES_DB: "{{ nextcloud_postgres_db }}" + REDIS_HOST: redis + NEXTCLOUD_ADMIN_USER: "{{ ansible_user }}" + NEXTCLOUD_ADMIN_PASSWORD: "{{ ansible_password }}" + NEXTCLOUD_TRUSTED_DOMAINS: "nextcloud.khangvum.com nextcloud.{{ domain_name }} {{ hostvars['KVM-NAS01'].ansible_host }} localhost 127.0.0.1" + volumes: + - ./html:/var/www/html + - "{{ nas_mount_dir }}:/var/www/html/data" + depends_on: + postgresql: + condition: service_healthy + redis: + condition: service_healthy + + cron: + image: docker.io/library/nextcloud:{{ nextcloud_version }} + restart: unless-stopped + entrypoint: /cron.sh + environment: + POSTGRES_HOST: postgresql + POSTGRES_USER: "{{ postgres_user }}" + POSTGRES_PASSWORD: "{{ postgres_password }}" + POSTGRES_DB: "{{ nextcloud_postgres_db }}" + REDIS_HOST: redis + volumes: + - ./html:/var/www/html + - "{{ nas_mount_dir }}:/var/www/html/data" + depends_on: + postgresql: + condition: service_healthy + redis: + condition: service_healthy \ No newline at end of file diff --git a/ansible/variables/docker_var/iam_var.template.yml b/ansible/variables/docker_var/iam_var.template.yml index cf79f68..18c376f 100644 --- a/ansible/variables/docker_var/iam_var.template.yml +++ b/ansible/variables/docker_var/iam_var.template.yml @@ -4,5 +4,5 @@ authentik_version: "2026.5.2" postgres_user: "{{ ansible_user }}" postgres_password: "{{ ansible_password }}" -postgres_db: "authentik" +authentik_postgres_db: "authentik" authentik_secret_key: {{ AUTHENTIK_SECRET_KEY }} \ No newline at end of file diff --git a/ansible/variables/docker_var/iam_var.yml b/ansible/variables/docker_var/iam_var.yml index bbcc0c4..68eee60 100644 --- a/ansible/variables/docker_var/iam_var.yml +++ b/ansible/variables/docker_var/iam_var.yml @@ -1,19 +1,20 @@ $ANSIBLE_VAULT;1.1;AES256 -63313539363865306537653766353039323132373736323462303238356434343762616638346538 -6139306631366464356639613937393362303661313765310a666265623631366336653965356332 -63326161383337313764356166383464626364623432386430316632626635323737326135653532 -3731383662393863300a336465643535353265656261623338643439353533323336383231663238 -35663265636661313030626332623062326162313261306230383065613935623833333135333639 -64333030356537306232373564303633303666633966346464393161346561373737333935353966 -36393130363233326137383339376661373737386339373538613034383462366231643465393830 -33303065343666646435336338323437313737323463323638646238376234613134643433626432 -64363538353364306336323238343762363939313862373735323330663932306262326137373966 -39663537633035663863353530346638653231373330386562656239376465663465666635663062 -62623362313865643636313833656634376433376564333334363031643832333064663962326538 -65666234643662623731633637663639396138383566396530316338653162356364326631323664 -32376338656632343934303339343030636663646239653232343164623865343033346137313862 -35356439613431623466613165613431663834623865313236326262643631326663303437636534 -63366435653864303566336565356636636534616165343863363032616266643163353965626435 -36316436633136306233323261333039333331333161663333643337393464376238313634383839 -62653337336636363061653433306136346163313865373633363835313637643138656564343165 -6461313338343264386533636439646433656336383438306663 +30613365383964393565333136303463396537393631393233316362303139313938303266363231 +6265336534326239343432326536666632633930323764390a646266353862646664646638613065 +35623031373863356532353565613034363134646632396136333961663731653534633836383936 +3033316464323232320a613637323161393438353738613365616434356233323564353834306535 +39396132626336663762393930333031636631353033346137653431373332393664313330643737 +34396663333037313239383635666263366130616639373663636231333662383835653138366137 +32646263666234623266366636336333366236336134373539363964346338363862666535316366 +34326464626233333635396664343265363638343763336231346439383664613830643663626561 +30626664316463613264363532666637373864383436643431303535333732356664396434333239 +33623163396132663435623530646530346434636461323530353438663837336330636465393765 +30313036666534306234663535633330643937393439646238326237316664636232356631323132 +36376234643636613939633437343233653534316362373935383636383666346164643830396633 +62663632393134373635646361383939373337356135393864366536616363373266656435633433 +38303064633532613465303839356330623534353934393637386334316461623831333362656461 +34663930313363653931663533333163376338633935643439346461313535613562643230643230 +31393235366638313939396636323663326164313534313130306365363036313336393839343037 +66383963313261376336616535353537346339646633396232356262346135316662333761663264 +39316433646361653036303462656266336533353237393161653761613736336633393536663730 +336562326637396536626137666661646532 diff --git a/ansible/variables/docker_var/media_var.template.yml b/ansible/variables/docker_var/media_var.template.yml index c08dd08..cf843f8 100644 --- a/ansible/variables/docker_var/media_var.template.yml +++ b/ansible/variables/docker_var/media_var.template.yml @@ -1,6 +1,8 @@ --- media_mount_dir: /mnt/nas/media media_path: "//{{ hostvars['KVM-SRV01'].ansible_host }}/NAS/media" +administrator_uid: 1000 +administrator_gid: 1000 # Jellyfin jellyfin_parent_dir: "/home/{{ ansible_user }}/docker/jellyfin" diff --git a/ansible/variables/docker_var/media_var.yml b/ansible/variables/docker_var/media_var.yml index bd23cf3..d50592e 100644 --- a/ansible/variables/docker_var/media_var.yml +++ b/ansible/variables/docker_var/media_var.yml @@ -1,18 +1,20 @@ $ANSIBLE_VAULT;1.1;AES256 -32623335393339313961353062633837643261643162613366633139306633363538626538316434 -6438653765333336363630383633326535313965396636330a383939626333373339333132366165 -30356165323930653234336531666632353039613337393238316162303565346165646235366437 -3334366238326433350a613837306266336461363063363630313438633266356435373561383862 -35323830313636363266316565616234366364613264623166626161313930363836613630636639 -36613035613635393463646464353261356138336531373339323562333133366230373230363463 -31306538656536343735396437323336306666656237326137383163663662626561323662643833 -63633432373565626130663831313433343835336466323061353734363433623566323965373465 -63653264623038656130646638343937376531386435616265366132643962336561303766356463 -66316631633334393236663836386563343930303135363635343037376638343162616364396633 -66643265366635376463373535306237313934633237663039363762623866303936363733316234 -30303062396665343565393962393638383039356634376461633833613261666164386534363737 -37316137353166663739366666313033326262316433346265643036353430353761323833663263 -33396462353563323435346361343963383039653537363765356465386465643734333165653434 -65663637336530343663353030653239623439313563623062333761376132663630393830643934 -64666331613663356261303033323565323163353534646134633835326339343031666130373834 -3965 +35636538333261623963333530653761363463356163363238663432643031623564306330666661 +3135333635303834376235373332323034386337366134650a616163633430353132386636356634 +34393764653265313038356237366562646433353631626537346665373133303836386563316136 +3738613639376561390a363862313631653937323436656533366435316566383565306361313633 +36306333613436643065316337386434353862643161313863636532313138326565303139633832 +36666463633662396162626531353937393137633265363963346434616437393632383534636639 +33333964353961366165333236323464393633623663616131313162666663343533633831653735 +65613536623131646463356262303533656561313866346632383534653537383339626361393337 +36396461333365303762373731326236376164646132306463303135626261303462623966616163 +38663363663330646433623634313530383561323366613536353933326236303161343130666666 +30626535623466633834376263663931383536643232306161633536333661613032643964306665 +37643837393566623738336135666232323134633632366265636661363635633864666166656662 +37356530623233343633666634343934373161393863386166306530653739303466306433396432 +36656261396266353363396136636433313462613930653434336464306131323639656637333532 +36633165616433306662636134343230653034626564323430623833646161313634313062353463 +66376433303366333164653737373030326130313637363732383866353233613531303065643338 +31326635663435356139653130383537666133643338326630333663633564613061363463616633 +66393830633833373835303163306438643337653165306235643965313738316238393034666363 +636430386633386530326263353230383932 diff --git a/ansible/variables/docker_var/nas_var.template.yml b/ansible/variables/docker_var/nas_var.template.yml index 9268052..0bc0be8 100644 --- a/ansible/variables/docker_var/nas_var.template.yml +++ b/ansible/variables/docker_var/nas_var.template.yml @@ -1,7 +1,9 @@ --- -filebrowser_parent_dir: "/home/{{ ansible_user }}/docker/filebrowser" +nextcloud_parent_dir: "/home/{{ ansible_user }}/docker/nextcloud" +nextcloud_postgres_db: "nextcloud" +nextcloud_version: "34.0.3" nas_mount_dir: /mnt/nas nas_path: "//{{ hostvars['KVM-SRV01'].ansible_host }}/NAS" -administrator_uid: 1000 -administrator_gid: 1000 \ No newline at end of file +www_data_uid: 33 +www_data_gid: 33 \ No newline at end of file diff --git a/ansible/variables/docker_var/nas_var.yml b/ansible/variables/docker_var/nas_var.yml index 66cc659..729f312 100644 --- a/ansible/variables/docker_var/nas_var.yml +++ b/ansible/variables/docker_var/nas_var.yml @@ -1,15 +1,18 @@ $ANSIBLE_VAULT;1.1;AES256 -64366164636138633532316566636532393565633766383164666232633733383361303639303564 -6531383133303361376162336663306235653066363665650a663263333063656264646238323162 -30343837633063616561306435323839616139303932663539333534323431353839393062393136 -3231396365333064620a616261383433316232316662346335306630636164326632336362633864 -32363937643035666531623661613864356431626536306563306531363230333939636234646264 -37383937373630646436396638346130333734303031626365666464373766363336393839303231 -61633662363632336134393233643361323937363934343966323433393833663061313335643831 -30666664666462316235626266623332656436306530373062396533666366333362336330323466 -65383539323363353438316438393438323164653165646632346132356231326162366662623361 -61383564323134306335383965633864333233316131386539356434306438643163366666656162 -36363435643966646638636239326533373734373939383934313037663664663166373166356634 -39383364313437363364336461656639656332653839343363303437333463363763636565663465 -38333266633132363165666339353265323364336131663135363866353139663236633466656262 -6264383434363332363664613038633530343261646566363339 +64353566373164383033353764646533373233343561303963306539653662663335343463393962 +6531356466353639613039376665383834303535303566310a623764613863663563613465313039 +35383738353162663039336636356265663364636366616161663035613462653163373834613835 +3237326664356234300a393032346534336261643132343831356365646464373935623532333935 +64666638336439616133623436333634376661653166366235356562643961326632323065656561 +38613039373435383432633736633964343032616434653132653861373066663832633833363735 +30613834626665616334386664613836643233363462353263623230386532633432353138366666 +62356362646638633864313230383431653734336138616438643433316464663366303230656566 +62313233363164616330666265373238613638353764373234313661626664326630613539623639 +64613436663330333963313264626639343035366361303132316239353430313663323361363235 +65333462353733346530303066343338353830326537653834373833386263313238323565333630 +37323436313132336237616466653834356233376430633566386532633362373138633133633939 +64343939373363396164336631386635373235303961353139366431313333386438646535633139 +34303136323839343732373836316137386333326631343739646438393735373862323237393832 +64653165356536666465353130323933343061303738333131396265383135623639613031613635 +62326438643333303432663938346231663463386532653333393966363539646434326565393830 +3734 diff --git a/ansible/variables/docker_var/vpn_var.template.yml b/ansible/variables/docker_var/vpn_var.template.yml index de6d390..f82d18e 100644 --- a/ansible/variables/docker_var/vpn_var.template.yml +++ b/ansible/variables/docker_var/vpn_var.template.yml @@ -28,9 +28,9 @@ docker_services: - name: authentik forward_host: "{{ hostvars['KVM-IAM01'].ansible_host }}" forward_port: 9000 - - name: filebrowser + - name: nextcloud forward_host: "{{ hostvars['KVM-NAS01'].ansible_host }}" - forward_port: 8095 + forward_port: 8080 - name: grafana forward_host: "{{ hostvars['KVM-MONITOR01'].ansible_host }}" forward_port: 3000 diff --git a/ansible/variables/docker_var/vpn_var.yml b/ansible/variables/docker_var/vpn_var.yml index 7949fdb..68813df 100644 --- a/ansible/variables/docker_var/vpn_var.yml +++ b/ansible/variables/docker_var/vpn_var.yml @@ -1,114 +1,114 @@ $ANSIBLE_VAULT;1.1;AES256 -36383132383230376466613636646337373335653838656263366431623135376466383563343636 -6131396464373963393835613162663962653162313332630a666434633732646266316638353730 -64313966323261383562373536333537343135346137616466316161333461623436303063393664 -3261333165313536650a303531333730663938396639386630373964373863366261326162373238 -30366661653364333934366365313066323530326130323932333330373462326635393166363366 -61333730356366316561663561353461353333303365653031616436383938626363343263633230 -33396332336431343036316665343230396531663665373135343862643465343466656237653866 -64346338333431363362636632316531653636333534353535663565346439353561313836383130 -65353964393834626161396532666531306266396364653638336533316466336639646434366466 -33623839303633393564356131353837363564386534363335383037346461633166646661343736 -39633163373131373265636132613034326130373635663031653734393864323861396166656366 -39303137326232316239336332396436633263613334346161633834333039643638656166653433 -62323666623965323531646434303564643134333364623137346337666263336131363832346365 -39393732346534643637653332333738643464326438646231366666373038313765646665386439 -34376331393932303636326435353439373531383034323933393639383738333936316232623564 -30346566663737356632353636393564626436393864353830363233613163623834306537613166 -64303731356238326637323663303536356231656636633336373839373132363131653564316236 -34366435666561316233616563366165346137353833353338326131323264306330323063636430 -35363231376565623066356634303461336136303963646130623939623237633366346236343433 -37333664363565303631323930336431656166633734353832336533613462313139626364633236 -33393538643438343062366230343637623662633432363637393063346365653637626132356166 -37363963323736303264316264666165366562383135643238343565343736386562653365363336 -35633566616533316433656634333365363764346264356431303130373235613537633338386432 -37383937373035393161346334653764326433643564363735363233373833313761366164666134 -37653539353166613766303366343731303735386164356461653332363532613566656339336164 -31393366346463363838323437656361333433633330656339343430636566333463626236363365 -32383930366636333232366135633963613965363563393437313735353137333066316265656135 -64663964316430633334383763336164313036306532653132363836396635643633333835353335 -66333134623537363432383863306361336335633339613863666137646635343164653234336365 -66396165663663633262663730633330383161343936363463646663343766636336383039623032 -63343862643463333430613730623736366536316665633462646431376234336537663164353335 -61396565313963313538376463333332666665623839353936306162666535383835303439353738 -39313832383833643465336666333537373139346165626432623330363061616138306165623365 -61323635656334633034353030613062366336353134623134646135616237396330346364333031 -66316637313161613935306438343063666139303333653734613230356635643363666466346536 -61636161366635326637373233346437633164343236343433656364383138326635366265353661 -38633262356663353230663361303538643839303236386666656535386436373062656430633530 -37353163656631303231663861633135343835343337376632336436313366646633636463313839 -31343231333135313133353938326138303432363261663635623838386132313164616231646437 -66623834313161343430343536356338633365653962356530353836303266326362316364336335 -65326134643730633461616235633336353865316130656466616533613365376461616531313266 -31313564303662663365366531373063643539623466626233343962383732663933383264353332 -62376563656565636530373837643432636663383363303131396638376562323261363731356266 -66636235366432643265393165393963333362633166363036326336333565396662613465613866 -33373032646331343531343333356131343734323062646330623964663137393963633834336664 -32623338333064623262353734666165306336636265363564373032623764623062663835363531 -36643936303036336530613430306464646538376466333331303732353837666530393435313633 -66646536343131313031643435626631323035663734616262653530623934353030316232623732 -65306233613934343061343436626632306233393030623764613266613666343233613137326633 -66643939636530303835633061316236396161383839343838656562623634356131333061646130 -61326461633835316362346330393130656533316261316439613030386264346633623963656435 -31313961306336636464643339356133343735613239613231353632663437616166636361353437 -32653232626532373630666464316339656539316334353235323762383339353836313131303834 -38636463363631656235306430623763356537383937356262396233313630316138326135336363 -66383031386561383837616365373432616536313766343535336666336237636636316363373231 -66663630613638363263636166326436313132316261663866313935363563353631323565356130 -34653030636538383063393434613937393763666332393664653461613766356539653837303832 -37386531623935346265353839613831303761363630616430326432663138386237313434386663 -33343063656139323131343539303933353636303065383932663938326661313738666664646338 -30363730663561326337383934643062633063613233396430313231303138643531313938363665 -35343534393833643563613638646631323437666461366465376237623737663238393532346132 -64393537333533306536336462643437373836643662653734386233636638346464386535346135 -64383437363561396463363633363566326630323963353033373362626138376263326539353863 -35646662393639393639633363623832333636306361396332376361316165356465383863336432 -62393265383633336537316436396630633430303762343830393736316539636237653836333732 -38626561666138383937623137666130653538313264336262333961396136656365366565643365 -63393535663034346439303463363562613533636235346434336135613162356130636339636433 -64326664363337343533383730303535633039316631656432646562386437303566386337643161 -35343630356366663033346233663265383166653366646439323966363238356136336633393065 -64666630666464666666356261393531646431653439646332396663616361666237313234376132 -32333561646230396663383061366133623565386662613462613762613736623531353230326436 -65643638626333303731363137336538333361363036366136636234376433356437623064306564 -30333337656239306237393062666364336665326361626132316536336332343635633035303837 -31343534656563373162623034636366333262656462616365383164366131346135343330306137 -37656530633664643434333535376136303336653962366166376539333035643631323935366332 -61646334633465306434326631343365646239373766303334343164386337316662356631336338 -37313963366138316130323863623263626638303766356365646332343865666236313866343564 -31646366393232646537653466343832366530303636333839626430666461383732666166653932 -34303333623161326266383664323764656638393236363934656233376438393235653535356663 -35353234656335373738393938613265336434623763306134653536653835666231656538393138 -37343863383634643361313239386162663066623033373961356463663534613434646661313436 -64323766386363306438303265326466376163373535353430386436653936363936323564363764 -36313339663738636234643261376463626333343463333364363163646637626431353232626632 -30373966323233383037393463373234323337643166363039393363613163303663346639313564 -31336137646131326536323965653132336264303933313338663237396231333562663739303638 -63613862613637343162623339633230656138633139346430306561313733336164626166383166 -63326531326265346466313361393831653363636463353762663237303938366630303536333032 -33633631333562383437316332386232326163613963663332633133633531316235363337343838 -39326538343830633366346161303038313162393833646634383031386561633038393635363137 -38663334316336383230623766646534613831363031396534373734376632376232613530333863 -37623064633861386132363134373861616164633436383430643431646632343933386630333434 -38623765313336633462616263366464653930336334326239646231313234306436346437643237 -38616338386234333736336334313732633566613762326233303636346133646563343835346232 -62313133613432626130373163383739343732376535613135653663383438363061306233653132 -65653138396338613631363634643565623836636530396466623332373032653930623863656461 -33306135336636613732616539303933666430623236306166643063333362303965656137643837 -33653561336630656538643435313462633139613062646164393833613663626264666436313139 -65626232623732373039323766646263356530656332643165656663626635313235643862646231 -64393637663038336465363635336361663431316363373137373736656230643062363762613231 -64663066373730326539336465303637623663666135636631363637356432356138306336366432 -33363935666633313533353838613862366437636164633536343132376238626264386364626139 -31333363633864383365396539363763366362623762363264353233303136326237666131386638 -37613037303338333033326464323234633764663263353465336130613832353230343131616562 -36363461336430366262626439643831393639613062326666373334396337643135383332613838 -32343631303964613061386531333839656534363763336534316566613337666661653030623962 -39386165316365353865653263656233363463346539626438323638376433333935623136396439 -38333930346333333435343936386262373162636237613131626139316565643234393666656138 -62663834383035323938653563326563373438333662656536626263653564643233613365653235 -64356365333532396335383630323431626332623830393537366139613131326563363765653831 -37343339316639613135623565383266343966306364343235306437666562376137343738323637 -35393339633139303234363532306535376166326532316432343461393936393037666137323566 -32326666343761316164613164326265333830643235373130376164636430636438626663653261 -37623865656630326235666632376632636362323834303866373961326533313063 +66623563356330623463346637346139323437646432326463376430353164653739623762666533 +6237343137663737643235353639323234663962306564620a366662653565366635656330666363 +61323965303263336532656136323963366236383931333030653031623730396231366361323932 +6134663734306138360a333937663435376337646661616535313662626164383662656437393338 +39396333396232356436653962646262393865616130333636303934303165633561633563376361 +32373037656334653835303030656136323331646265366332363565366136366562643633306166 +32643730623934646133373937653036366237343432353165393464323264316639363865393132 +61653662313065616430326437326161643235663432663535366137346633616234326339633262 +35653161636238386130643933313165666261323532343064633838646433636331363435633334 +30393466306363326632653861613932333763373439343331656164363937653864323032323431 +35316561343737383839313034613932636634646530303663616337303030326465316532643834 +64643664373139626463353739626431623665356561653863313937313834353665363763643934 +61363933373064323631653462366465613335636162666130316430313839373434623134313461 +36623036613236316562623335366139353539343336383962313038653431313363636338353865 +62363066656361326330666166616665653039386230653339363731313964313132326538326162 +64616466356563613838643936303939633932343333376635656432356339666631313036383538 +64616562666630363233373130396261303236626261346364366365346164653835376637666538 +34333131626662386133633166333636623731353164326535633962303166373732643638393763 +35636132656133613362623064316233643264333530393936323436303731323562646635666137 +65333263353931616437626331643232666330396335393361326632333237303837663238396161 +31363461323863663562646539316564316230643065366134663163303039393566613836653065 +39313136653533303433303437353062623563313139303463383033343839363466326265363733 +65333235656539393833393536623464663932623561303733636235383663653166626630663130 +35396231326665383734336634636534633537656166336330383239333837333932363131363939 +36613734396530373164383932353834373664643265303539366235613263356539376464656237 +61396637393737646637303861653631636263376332666531393463656233326532346431376465 +64643362626435656231663732373239393731393763393761393664616232303063666532353937 +38653265396334613333386266333630343364633333386463633631653732396262313765633736 +64626563353735626434666539393765643865343965666132393336643932353636383731616431 +65643436373663396437316333343931323263393466393664373761343963343234643539363565 +37373038613764653866633066373635363136623539333339396265373235386461376536363039 +61383833376630363731643763613339623934313337316139386364303936393666353734313061 +35303836623563346137353331636631323463646161396436303864663563646537343431356136 +33353638373137303765316339343034306335663438633931653562633436366431373861646331 +65616639616465386130343439326362626132653461373637663565356135353133356162353039 +39336433626666313935656637376162353934656334653430306639646536326334363431313931 +31313437393066376363393966313131356363613537663335363231336530333635383362346634 +32383364356664326430656438653865346561643230376539323666383939303563383732396533 +65376339313732633065326233366365313939633034326566356436323030303430356164666462 +32363634353264363633323438393838633333383766633437353234343933366661616231613261 +33343739323932316530373139653535346365343138613834383434333736346638643262353135 +65393130343263356233393737643264383635633435313532656638343738343563663437373234 +38333532356264636461636233303930313436656161616635313635383338636636663237333165 +33386665303238373865613263326465666630623663623035386132303532623431396632383137 +36633237333438366537323935666463386266633137386638366364333365373835303564646337 +64393433663962653661356639366631643032346438653730653635623637653538663530373534 +65636539356432623839383065656636386638383534656362623734306430313738373339643139 +66386537333934346664643934303062633862386166393635363835393531623339346435616237 +30663138623835336665373766303463613661323039643230386535323638623637646339323439 +36396362363532626362663964303637333331636165336539626461643266613165336161336538 +62636161306462656433316235333338656566343138346364353465643266383062303634376266 +37303235636365623563353638303433376631313734366137383362363261306639396161373262 +65303462653031363631636135376339316461343765303166393432613264613464646334306562 +37663063356135353264336638663164663637306338353762323338643663396366313635356234 +64393335326232356463383735396266623437633236613665373937393864663332616631326439 +35366633396231336635303537363766366435336136316331616336646465636266353563383062 +31396138636232666161653937396666313537376331383962623065666162633033386539646435 +34366361393939373732393130656136353936373638623166326538636362303136316237316334 +39373339613164393533643331333838663461353434613136613430333533633933386339376239 +36353863313835393838333239343633616365336139363934626661633937353539306465393332 +35326666356565376437316266383539646637316639663166316131363463623432383066656366 +66386533623365663130333666396363393732656630643232313663346331323435326236356239 +30623832376439663532643734383861633431376334313462333266633239663665353039383064 +63373763316330636261313735373766656337666362663966363762306338376361633232396532 +39653566356165363662383931303465366264316532663936303039663635366463666534376535 +33646336643735633432333438616163393264363864636265313639316463303861303338643831 +61663338356562313133663462313734663230656663303961376437383736353732323366376365 +64373438366164373762396639373561633233306263333336616361666433316264613962613239 +32663430396361663138636261666164306664653038363833396263613638316637386136343565 +32323732613033333936373833643030663465306233396463303163376631636537623339383336 +66303032396432613637306433333766333639326436393262323963623564303637396136376333 +66643866363130393338393033633363663664313864363064613733653662623366643431613036 +37393139636231663436633562626132663532333862363238626261396462663861613136323139 +32303464656465383462323862366264306336313032386333313533336637383734363233363863 +66663564383962623838323330323237666635326639333634396364616166343639383765333762 +64653136343961633939653031643864653636633366353538353561393638346638653361333664 +63643739323962633166626335346266636166333539646366386238326361383033323233346632 +30343864306361313762656361366135633064386438393963323533346132653939393264666535 +33353634326462346535663536653637336330616235383062613332353935653233313834323531 +66333761623666353231393366633533633438396331336137626637366362633032303338343262 +35643562393561613432666433376230643365373932643261616538316134363836313637663833 +37643236636130653835313666386237366635323230393737663463366635333630363834303264 +63616666656162303931336236353464396462343432353461316333323434613663373039666630 +38356366643532633866346139303936623032623661303937656463613538333334396161313761 +37363738366163303838613439313530323137383933313464623061303932343838306363323332 +64613430393463373635653663636535616436633831376238393433613933663461393636343662 +65303865623062343439393737643365653734613639353535393033666437343462333161376266 +62383433346561353730656533353735626665363635616438316364333435613462356239643465 +34663338303933373231646536393437363162373062396635643732373962396233623632663763 +66653638303535313638333630393866366461336634363131393063613636636135666439616238 +37376438306432323532323336666162303063343338363236613236626336346530303533643664 +62663263623864373033616462633031323533633464343664393034653665616437393362343133 +32306261343434363834633263386266346565336335366435333833393361323861643639343337 +31633161646339366239346164636334663534666635613030323861366131313839633431623230 +35323637633532643434313634336164343362633363626433643932643639333734346532333938 +31346463313834383839353733653831333035363733623834316563666639333734636633376266 +35623238353564353535386334383365306565626264633534346165633437383765323435373965 +36643330633562323734626537376431636161396237666437386364306235663434366363653161 +30363361333965366134616233313833613865623130306333663066666637656536386364313833 +37626633363437636662643032663837633965613635386366353731633039323637383236323436 +37376430326438323465653138373733333034643961663064326634666435623036653361373461 +63646535643339383063313830613761333062363437636337363739616638313665303064396364 +62353138343337396330616534643438656562376532643439346130626131663866396465376430 +65326630396566623032373538623261336266666466343333653236633934663734303633323264 +62313631386438313864663566356237373334373763393131333531353335363034366461303465 +63303561316533623835333461326630386134396665623934386163623230383562636163396639 +30333663326534373061613664313136636535356361393334353162653066343236616364646531 +34666665623335313036386462313336326238623130636537616561323064666135643734373234 +35333235303538366638613537323661306361653661356164393434386636326638383262346130 +37366163353065346433616139666632356237316433323835353066653933383536363935633735 +38616639636131666665333265393031383634376136383033346165633431333764373133363964 +34306533306564306232333637363063626337313166663532343566663334316337363461643663 +6233 diff --git a/docs/ANSIBLE.md b/docs/ANSIBLE.md index 427b853..98aa4d2 100644 --- a/docs/ANSIBLE.md +++ b/docs/ANSIBLE.md @@ -43,7 +43,7 @@ Ansible manages **_configuration_**, **_service deployments_**, and **_domain se | :---------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------- | | [`authentik_deployment`](../ansible/roles/services/authentik_deployment/tasks/main.yml) | Configure **_Authentik_** as a **_centralized identity provider_** and **_SSO gateway_** for **_authentication_** and **_authorization_** | | [`docker_configuration`](../ansible/roles/services/docker_configuration/tasks/main.yml) | Configure **_Docker_** settings | -| [`filebrowser_deployment`](../ansible/roles/services/filebrowser_deployment/tasks/main.yml) | Configure **_Filebrowser_** as a **_self-hosted file manager_** | +| [`nextcloud_deployment`](../ansible/roles/services/nextcloud_deployment/tasks/main.yml) | Configure **_Nextcloud_** as a **_self-hosted file manager_** | | [`grafana_deployment`](../ansible/roles/services/grafana_deployment/tasks/main.yml) | Configure **_Grafana_** as a **_analytics platform_** for **_dashboards_** and **_data virtualization_** | | [`home_assistant_deployment`](../ansible/roles/services/home_assistant_deployment/tasks/main.yml) | Configure **_Home Assistant_** as a **_centralized home automation platform_** for **_smart device integration_** | | [`homepage_deployment`](../ansible/roles/services/homepage_deployment/tasks/main.yml) | Configure **_Homepage_** as a **_centralized service dashboard_** for **_infrastructure monitoring_** and **_service discovery_** | @@ -109,7 +109,7 @@ Ansible manages **_configuration_**, **_service deployments_**, and **_domain se | [`media_var.yml`](../ansible/variables/docker_var/media_var.template.yml) | Define **_Immich_** and **_Jellyfin settings_** for **_self-hosted media server_** | | [`management_var.yml`](../ansible/variables/docker_var/management_var.template.yml) | Define **_Portainer_**, **_Home Assistant_**, and **_Homepage settings_** for **_centralized service dashboard_** | | [`monitoring_var.yml`](../ansible/variables/docker_var/monitoring_var.template.yml) | Define **_Grafana_**, **_Prometheus_**, and **_Node Exporter settings_** for **_monitoring stack_** | - | [`nas_var.yml`](../ansible/variables/docker_var/nas_var.template.yml) | Define **_Filebrowser settings_** for **_self-hosted file manager_** | + | [`nas_var.yml`](../ansible/variables/docker_var/nas_var.template.yml) | Define **_Nextcloud settings_** for **_self-hosted file manager_** | | [`security_var.yml`](../ansible/variables/docker_var/security_var.template.yml) | Define **_Motion settings_** for **_self-hosted security camera system_** | | [`vpn_var.yml`](../ansible/variables/docker_var/vpn_var.template.yml) | Define **_Tailscale_** and **_Nginx Proxy Manager settings_** for **_Mesh VPN service_** |