diff --git a/bin/actions/service.py b/bin/actions/service.py index 0946019..c57e820 100755 --- a/bin/actions/service.py +++ b/bin/actions/service.py @@ -10,7 +10,7 @@ sys.path.append(os.path.join(os.path.expanduser("~/.dotfiles"), "bin")) from helpers.functions import printfe, println, logo # Base directory for Docker services $HOME/services -SERVICES_DIR = os.path.join(os.path.expanduser("~"), "services") +SERVICES_DIR = os.path.join(os.path.expanduser("~"), ".services") # Protected services that should never be stopped PROTECTED_SERVICES = ["juicefs-redis"] diff --git a/config/ansible/tasks/servers/services/arr-stack/arr-stack.yml b/config/ansible/tasks/servers/services/arr-stack/arr-stack.yml index 57b6e97..b9da6d0 100644 --- a/config/ansible/tasks/servers/services/arr-stack/arr-stack.yml +++ b/config/ansible/tasks/servers/services/arr-stack/arr-stack.yml @@ -3,7 +3,7 @@ block: - name: Set ArrStack directories ansible.builtin.set_fact: - arr_stack_service_dir: "{{ ansible_env.HOME }}/services/arr-stack" + arr_stack_service_dir: "{{ ansible_env.HOME }}/.services/arr-stack" arr_stack_data_dir: "/mnt/services/arr-stack" - name: Create ArrStack directory diff --git a/config/ansible/tasks/servers/services/beszel/beszel.yml b/config/ansible/tasks/servers/services/beszel/beszel.yml index 92ec9cc..72a8fdc 100644 --- a/config/ansible/tasks/servers/services/beszel/beszel.yml +++ b/config/ansible/tasks/servers/services/beszel/beszel.yml @@ -3,7 +3,7 @@ block: - name: Set Beszel directories ansible.builtin.set_fact: - beszel_service_dir: "{{ ansible_env.HOME }}/services/beszel" + beszel_service_dir: "{{ ansible_env.HOME }}/.services/beszel" beszel_data_dir: "/mnt/services/beszel" - name: Create Beszel directory diff --git a/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 b/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 index c4bcf11..089031f 100644 --- a/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 +++ b/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 @@ -94,10 +94,14 @@ home.mvl.sh { home.vleeuwen.me { import country_block - redir https://home.mvl.sh{uri} + reverse_proxy host.docker.internal:8123 { + header_up Host {upstream_hostport} + header_up X-Real-IP {http.request.remote.host} + } tls {{ caddy_email }} } + unifi.mvl.sh { reverse_proxy unifi-controller:8443 { transport http { @@ -170,6 +174,21 @@ plex.vleeuwen.me { tls {{ caddy_email }} } +tautulli.mvl.sh { + import country_block + reverse_proxy host.docker.internal:8181 { + header_up Host {upstream_hostport} + header_up X-Real-IP {http.request.remote.host} + } + tls {{ caddy_email }} +} + +tautulli.vleeuwen.me { + import country_block + redir https://tautulli.mvl.sh{uri} + tls {{ caddy_email }} +} + drive.mvl.sh drive.vleeuwen.me { import country_block diff --git a/config/ansible/tasks/servers/services/caddy/caddy.yml b/config/ansible/tasks/servers/services/caddy/caddy.yml index 40b7aeb..b1f9e89 100644 --- a/config/ansible/tasks/servers/services/caddy/caddy.yml +++ b/config/ansible/tasks/servers/services/caddy/caddy.yml @@ -1,59 +1,59 @@ --- - name: Deploy Caddy service block: - - name: Set Caddy directories - ansible.builtin.set_fact: - caddy_service_dir: "{{ ansible_env.HOME }}/services/caddy" - caddy_data_dir: "/mnt/services/caddy" - geoip_db_path: "/mnt/services/echoip" - caddy_email: "{{ lookup('community.general.onepassword', 'Caddy (Proxy)', vault='Dotfiles', field='email') }}" + - name: Set Caddy directories + ansible.builtin.set_fact: + caddy_service_dir: "{{ ansible_env.HOME }}/.services/caddy" + caddy_data_dir: "/mnt/services/caddy" + geoip_db_path: "/mnt/services/echoip" + caddy_email: "{{ lookup('community.general.onepassword', 'Caddy (Proxy)', vault='Dotfiles', field='email') }}" - - name: Create Caddy directory - ansible.builtin.file: - path: "{{ caddy_service_dir }}" - state: directory - mode: "0755" + - name: Create Caddy directory + ansible.builtin.file: + path: "{{ caddy_service_dir }}" + state: directory + mode: "0755" - - name: Setup country blocking - ansible.builtin.include_tasks: country-blocking.yml + - name: Setup country blocking + ansible.builtin.include_tasks: country-blocking.yml - - name: Copy Dockerfile for custom Caddy build - ansible.builtin.copy: - src: Dockerfile - dest: "{{ caddy_service_dir }}/Dockerfile" - mode: "0644" - register: caddy_dockerfile + - name: Copy Dockerfile for custom Caddy build + ansible.builtin.copy: + src: Dockerfile + dest: "{{ caddy_service_dir }}/Dockerfile" + mode: "0644" + register: caddy_dockerfile - - name: Create Caddy network - ansible.builtin.command: docker network create caddy_default - register: create_caddy_network - failed_when: - - create_caddy_network.rc != 0 - - "'already exists' not in create_caddy_network.stderr" - changed_when: create_caddy_network.rc == 0 + - name: Create Caddy network + ansible.builtin.command: docker network create caddy_default + register: create_caddy_network + failed_when: + - create_caddy_network.rc != 0 + - "'already exists' not in create_caddy_network.stderr" + changed_when: create_caddy_network.rc == 0 - - name: Deploy Caddy docker-compose.yml - ansible.builtin.template: - src: docker-compose.yml.j2 - dest: "{{ caddy_service_dir }}/docker-compose.yml" - mode: "0644" - register: caddy_compose + - name: Deploy Caddy docker-compose.yml + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "{{ caddy_service_dir }}/docker-compose.yml" + mode: "0644" + register: caddy_compose - - name: Deploy Caddy Caddyfile - ansible.builtin.template: - src: Caddyfile.j2 - dest: "{{ caddy_service_dir }}/Caddyfile" - mode: "0644" - register: caddy_file + - name: Deploy Caddy Caddyfile + ansible.builtin.template: + src: Caddyfile.j2 + dest: "{{ caddy_service_dir }}/Caddyfile" + mode: "0644" + register: caddy_file - - name: Stop Caddy service - ansible.builtin.command: docker compose -f "{{ caddy_service_dir }}/docker-compose.yml" down --remove-orphans - when: caddy_compose.changed or caddy_file.changed + - name: Stop Caddy service + ansible.builtin.command: docker compose -f "{{ caddy_service_dir }}/docker-compose.yml" down --remove-orphans + when: caddy_compose.changed or caddy_file.changed - - name: Start Caddy service - ansible.builtin.command: docker compose -f "{{ caddy_service_dir }}/docker-compose.yml" up -d - when: caddy_compose.changed or caddy_file.changed + - name: Start Caddy service + ansible.builtin.command: docker compose -f "{{ caddy_service_dir }}/docker-compose.yml" up -d + when: caddy_compose.changed or caddy_file.changed tags: - - caddy - - services - - reverse-proxy + - caddy + - services + - reverse-proxy diff --git a/config/ansible/tasks/servers/services/downloaders/downloaders.yml b/config/ansible/tasks/servers/services/downloaders/downloaders.yml index d09cc4f..2030ea7 100644 --- a/config/ansible/tasks/servers/services/downloaders/downloaders.yml +++ b/config/ansible/tasks/servers/services/downloaders/downloaders.yml @@ -4,7 +4,7 @@ - name: Set Downloaders directories ansible.builtin.set_fact: local_data_dir: "/mnt/data" - downloaders_service_dir: "{{ ansible_env.HOME }}/services/downloaders" + downloaders_service_dir: "{{ ansible_env.HOME }}/.services/downloaders" downloaders_data_dir: "/mnt/services/downloaders" - name: Create Downloaders directory diff --git a/config/ansible/tasks/servers/services/dozzle/dozzle.yml b/config/ansible/tasks/servers/services/dozzle/dozzle.yml index a2ea2de..e50878e 100644 --- a/config/ansible/tasks/servers/services/dozzle/dozzle.yml +++ b/config/ansible/tasks/servers/services/dozzle/dozzle.yml @@ -3,7 +3,7 @@ block: - name: Set Dozzle directories ansible.builtin.set_fact: - dozzle_service_dir: "{{ ansible_env.HOME }}/services/dozzle" + dozzle_service_dir: "{{ ansible_env.HOME }}/.services/dozzle" dozzle_data_dir: "/mnt/services/dozzle" - name: Create Dozzle directory diff --git a/config/ansible/tasks/servers/services/echoip/echoip.yml b/config/ansible/tasks/servers/services/echoip/echoip.yml index 9b8bef9..58a5f5b 100644 --- a/config/ansible/tasks/servers/services/echoip/echoip.yml +++ b/config/ansible/tasks/servers/services/echoip/echoip.yml @@ -3,11 +3,13 @@ block: - name: Set EchoIP directories ansible.builtin.set_fact: - echoip_service_dir: "{{ ansible_env.HOME }}/services/echoip" + echoip_service_dir: "{{ ansible_env.HOME }}/.services/echoip" echoip_data_dir: "/mnt/services/echoip" - maxmind_account_id: "{{ lookup('community.general.onepassword', 'MaxMind', + maxmind_account_id: + "{{ lookup('community.general.onepassword', 'MaxMind', vault='Dotfiles', field='account_id') | regex_replace('\\s+', '') }}" - maxmind_license_key: "{{ lookup('community.general.onepassword', 'MaxMind', + maxmind_license_key: + "{{ lookup('community.general.onepassword', 'MaxMind', vault='Dotfiles', field='license_key') | regex_replace('\\s+', '') }}" # Requires: gather_facts: true in playbook diff --git a/config/ansible/tasks/servers/services/factorio/factorio.yml b/config/ansible/tasks/servers/services/factorio/factorio.yml index 2e0c582..2cb5e92 100644 --- a/config/ansible/tasks/servers/services/factorio/factorio.yml +++ b/config/ansible/tasks/servers/services/factorio/factorio.yml @@ -3,7 +3,7 @@ block: - name: Set Factorio directories ansible.builtin.set_fact: - factorio_service_dir: "{{ ansible_env.HOME }}/services/factorio" + factorio_service_dir: "{{ ansible_env.HOME }}/.services/factorio" factorio_data_dir: "/mnt/services/factorio" - name: Create Factorio directory diff --git a/config/ansible/tasks/servers/services/gitea/gitea.yml b/config/ansible/tasks/servers/services/gitea/gitea.yml index 43ef5a7..0465a8e 100644 --- a/config/ansible/tasks/servers/services/gitea/gitea.yml +++ b/config/ansible/tasks/servers/services/gitea/gitea.yml @@ -4,7 +4,7 @@ - name: Set Gitea directories ansible.builtin.set_fact: gitea_data_dir: "/mnt/services/gitea" - gitea_service_dir: "{{ ansible_env.HOME }}/services/gitea" + gitea_service_dir: "{{ ansible_env.HOME }}/.services/gitea" - name: Create Gitea directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/golink/golink.yml b/config/ansible/tasks/servers/services/golink/golink.yml index a8e8362..d8aba88 100644 --- a/config/ansible/tasks/servers/services/golink/golink.yml +++ b/config/ansible/tasks/servers/services/golink/golink.yml @@ -4,7 +4,7 @@ - name: Set GoLink directories ansible.builtin.set_fact: golink_data_dir: "/mnt/services/golink" - golink_service_dir: "{{ ansible_env.HOME }}/services/golink" + golink_service_dir: "{{ ansible_env.HOME }}/.services/golink" - name: Create GoLink directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/home-assistant/home-assistant.yml b/config/ansible/tasks/servers/services/home-assistant/home-assistant.yml index bf8a9e4..d800aa2 100644 --- a/config/ansible/tasks/servers/services/home-assistant/home-assistant.yml +++ b/config/ansible/tasks/servers/services/home-assistant/home-assistant.yml @@ -4,7 +4,7 @@ - name: Set Home Assistant directories ansible.builtin.set_fact: homeassistant_data_dir: "/mnt/services/homeassistant" - homeassistant_service_dir: "{{ ansible_env.HOME }}/services/homeassistant" + homeassistant_service_dir: "{{ ansible_env.HOME }}/.services/homeassistant" - name: Create Home Assistant directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/immich/immich.yml b/config/ansible/tasks/servers/services/immich/immich.yml index 50b63f0..f4dfc3f 100644 --- a/config/ansible/tasks/servers/services/immich/immich.yml +++ b/config/ansible/tasks/servers/services/immich/immich.yml @@ -5,7 +5,7 @@ ansible.builtin.set_fact: immich_data_dir: "/mnt/data/photos/immich-library" immich_database_dir: "/mnt/services/immich/postgres" - immich_service_dir: "{{ ansible_env.HOME }}/services/immich" + immich_service_dir: "{{ ansible_env.HOME }}/.services/immich" - name: Create Immich directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/nextcloud/nextcloud.yml b/config/ansible/tasks/servers/services/nextcloud/nextcloud.yml index 6f3b7b0..5308554 100644 --- a/config/ansible/tasks/servers/services/nextcloud/nextcloud.yml +++ b/config/ansible/tasks/servers/services/nextcloud/nextcloud.yml @@ -3,7 +3,7 @@ block: - name: Set Nextcloud directories ansible.builtin.set_fact: - nextcloud_service_dir: "{{ ansible_env.HOME }}/services/nextcloud" + nextcloud_service_dir: "{{ ansible_env.HOME }}/.services/nextcloud" nextcloud_data_dir: "/mnt/services/nextcloud" - name: Create Nextcloud directory diff --git a/config/ansible/tasks/servers/services/plex/plex.yml b/config/ansible/tasks/servers/services/plex/plex.yml index 4aa6306..4e17fd4 100644 --- a/config/ansible/tasks/servers/services/plex/plex.yml +++ b/config/ansible/tasks/servers/services/plex/plex.yml @@ -4,7 +4,7 @@ - name: Set Plex directories ansible.builtin.set_fact: plex_data_dir: "/mnt/services/plex" - plex_service_dir: "{{ ansible_env.HOME }}/services/plex" + plex_service_dir: "{{ ansible_env.HOME }}/.services/plex" - name: Create Plex directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/privatebin/privatebin.yml b/config/ansible/tasks/servers/services/privatebin/privatebin.yml index c32cd31..3ae5075 100644 --- a/config/ansible/tasks/servers/services/privatebin/privatebin.yml +++ b/config/ansible/tasks/servers/services/privatebin/privatebin.yml @@ -4,7 +4,7 @@ - name: Set PrivateBin directories ansible.builtin.set_fact: privatebin_data_dir: "/mnt/services/privatebin" - privatebin_service_dir: "{{ ansible_env.HOME }}/services/privatebin" + privatebin_service_dir: "{{ ansible_env.HOME }}/.services/privatebin" - name: Create PrivateBin directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/redis/redis.yml b/config/ansible/tasks/servers/services/redis/redis.yml index 6c8c55f..22b0f29 100644 --- a/config/ansible/tasks/servers/services/redis/redis.yml +++ b/config/ansible/tasks/servers/services/redis/redis.yml @@ -3,7 +3,7 @@ block: - name: Set Redis facts ansible.builtin.set_fact: - redis_service_dir: "{{ ansible_env.HOME }}/services/juicefs-redis" + redis_service_dir: "{{ ansible_env.HOME }}/.services/juicefs-redis" redis_password: "{{ lookup('community.general.onepassword', 'JuiceFS (Redis)', vault='Dotfiles', field='password') }}" - name: Create Redis service directory @@ -76,5 +76,5 @@ changed_when: docker_restart.rc == 0 when: redis_compose.changed tags: - - services - - redis + - services + - redis diff --git a/config/ansible/tasks/servers/services/service_cleanup.yml b/config/ansible/tasks/servers/services/service_cleanup.yml index ff27d25..f2ae7fa 100644 --- a/config/ansible/tasks/servers/services/service_cleanup.yml +++ b/config/ansible/tasks/servers/services/service_cleanup.yml @@ -7,7 +7,7 @@ - name: Check service directories existence for disabled services ansible.builtin.stat: - path: "{{ ansible_env.HOME }}/services/{{ item.name }}" + path: "{{ ansible_env.HOME }}/.services/{{ item.name }}" register: service_dir_results loop: "{{ services_to_cleanup }}" loop_control: @@ -19,14 +19,14 @@ - name: Check if docker-compose file exists for services to cleanup ansible.builtin.stat: - path: "{{ ansible_env.HOME }}/services/{{ item.name }}/docker-compose.yml" + path: "{{ ansible_env.HOME }}/.services/{{ item.name }}/docker-compose.yml" register: compose_file_results loop: "{{ services_with_dirs }}" loop_control: label: "{{ item.name }}" - name: Stop disabled services with docker-compose files - ansible.builtin.command: docker compose -f "{{ ansible_env.HOME }}/services/{{ item.item.name }}/docker-compose.yml" down --remove-orphans + ansible.builtin.command: docker compose -f "{{ ansible_env.HOME }}/.services/{{ item.item.name }}/docker-compose.yml" down --remove-orphans loop: "{{ compose_file_results.results | selectattr('stat.exists', 'equalto', true) }}" loop_control: label: "{{ item.item.name }}" @@ -36,7 +36,7 @@ - name: Remove service directories for disabled services ansible.builtin.file: - path: "{{ ansible_env.HOME }}/services/{{ item.name }}" + path: "{{ ansible_env.HOME }}/.services/{{ item.name }}" state: absent loop: "{{ services_with_dirs }}" loop_control: diff --git a/config/ansible/tasks/servers/services/stash/stash.yml b/config/ansible/tasks/servers/services/stash/stash.yml index 02dff9f..f264304 100644 --- a/config/ansible/tasks/servers/services/stash/stash.yml +++ b/config/ansible/tasks/servers/services/stash/stash.yml @@ -3,9 +3,9 @@ block: - name: Set Stash directories ansible.builtin.set_fact: - stash_data_dir: '/mnt/data/stash' - stash_config_dir: '/mnt/services/stash' - stash_service_dir: "{{ ansible_env.HOME }}/services/stash" + stash_data_dir: "/mnt/data/stash" + stash_config_dir: "/mnt/services/stash" + stash_service_dir: "{{ ansible_env.HOME }}/.services/stash" - name: Create Stash directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/tautulli/tautulli.yml b/config/ansible/tasks/servers/services/tautulli/tautulli.yml index 9a6d681..a04c1ec 100644 --- a/config/ansible/tasks/servers/services/tautulli/tautulli.yml +++ b/config/ansible/tasks/servers/services/tautulli/tautulli.yml @@ -4,7 +4,7 @@ - name: Set Tautulli directories ansible.builtin.set_fact: tautulli_data_dir: "{{ '/mnt/services/tautulli' }}" - tautulli_service_dir: "{{ ansible_env.HOME }}/services/tautulli" + tautulli_service_dir: "{{ ansible_env.HOME }}/.services/tautulli" - name: Create Tautulli directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/unifi-network-application/unifi-network-application.yml b/config/ansible/tasks/servers/services/unifi-network-application/unifi-network-application.yml index 201d124..41c2c94 100644 --- a/config/ansible/tasks/servers/services/unifi-network-application/unifi-network-application.yml +++ b/config/ansible/tasks/servers/services/unifi-network-application/unifi-network-application.yml @@ -4,7 +4,7 @@ - name: Set Unifi Network App directories ansible.builtin.set_fact: unifi_network_application_data_dir: "/mnt/services/unifi_network_application" - unifi_network_application_service_dir: "{{ ansible_env.HOME }}/services/unifi_network_application" + unifi_network_application_service_dir: "{{ ansible_env.HOME }}/.services/unifi_network_application" - name: Create Unifi Network App directories ansible.builtin.file: diff --git a/config/ansible/tasks/servers/services/wireguard/wireguard.yml b/config/ansible/tasks/servers/services/wireguard/wireguard.yml index c817cc2..68b0eb8 100644 --- a/config/ansible/tasks/servers/services/wireguard/wireguard.yml +++ b/config/ansible/tasks/servers/services/wireguard/wireguard.yml @@ -3,7 +3,7 @@ block: - name: Set WireGuard directories ansible.builtin.set_fact: - wireguard_service_dir: "{{ ansible_env.HOME }}/services/wireguard" + wireguard_service_dir: "{{ ansible_env.HOME }}/.services/wireguard" wireguard_data_dir: "/mnt/services/wireguard" - name: Create WireGuard directory