Compare commits
33 Commits
template-e
...
7806dbb7ef
| Author | SHA1 | Date | |
|---|---|---|---|
|
7806dbb7ef
|
|||
|
610c62b75a
|
|||
|
60ef84f37d
|
|||
|
993fd8eee7
|
|||
|
a32a59ca0a
|
|||
|
909631952b
|
|||
|
5995621767
|
|||
|
77504eeffd
|
|||
|
078cb8edff
|
|||
|
023b48ace0
|
|||
|
20362a069a
|
|||
|
4c878661e8
|
|||
|
fb19e9eefe
|
|||
|
9c32a10144
|
|||
|
18d632e4ce
|
|||
|
ea30d599a9
|
|||
|
390a571fa4
|
|||
|
70fa7c77a8
|
|||
|
1b1d0181c7
|
|||
|
7724c47528
|
|||
|
2ed283ae54
|
|||
|
f5a2b4c6c8
|
|||
|
f6b850574d
|
|||
|
5ea7ad74cd
|
|||
|
2897d67957
|
|||
|
681a876dae
|
|||
|
a19de4c6a5
|
|||
|
5efa6934e3
|
|||
|
183fb0f237
|
|||
|
4805cca2ce
|
|||
|
30cb6e8786
|
|||
|
a8e6ec48a6
|
|||
|
50c6c57372
|
6
main.yml
6
main.yml
@@ -61,12 +61,6 @@
|
|||||||
- name: Deploy Drop
|
- name: Deploy Drop
|
||||||
import_tasks: tasks/drop.yml
|
import_tasks: tasks/drop.yml
|
||||||
tags: drop_deploy
|
tags: drop_deploy
|
||||||
- name: Deploy Gluetun
|
|
||||||
import_tasks: tasks/gluetun.yml
|
|
||||||
tags: gluetun_deploy
|
|
||||||
- name: Deploy QBittorrent
|
|
||||||
import_tasks: tasks/qbittorrent.yml
|
|
||||||
tags: qbittorrent_deploy
|
|
||||||
- name: Deploy Jackett
|
- name: Deploy Jackett
|
||||||
import_tasks: tasks/jackett.yml
|
import_tasks: tasks/jackett.yml
|
||||||
tags: jackett_deploy
|
tags: jackett_deploy
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
state: present
|
state: present
|
||||||
when: build is defined
|
when: build is defined
|
||||||
|
|
||||||
- name: Pull latest Docker image
|
|
||||||
docker_image:
|
|
||||||
name: "{{ image.name }}"
|
|
||||||
tag: "{{ image.tag }}"
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Docker Network
|
- name: Create Docker Network
|
||||||
docker_network:
|
docker_network:
|
||||||
name: "{{ network_name }}"
|
name: "{{ network_name }}"
|
||||||
@@ -39,11 +33,18 @@
|
|||||||
- name: Create Docker Container
|
- name: Create Docker Container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: "{{ name }}"
|
name: "{{ name }}"
|
||||||
image: "{{ image.name }}:{{ image.tag }}"
|
|
||||||
command: "{{ command | default(omit) }}"
|
|
||||||
recreate: true
|
recreate: true
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
networks: "{{ networks }}"
|
pull: "{{ build is not defined }}"
|
||||||
|
published_ports: "{{ published_ports | default(omit) }}"
|
||||||
|
network_mode: "{{ network_mode | default(omit) }}"
|
||||||
|
image: "{{ image.name }}:{{ image.tag }}"
|
||||||
|
command: "{{ command | default(omit) }}"
|
||||||
|
networks: "{{ networks | default(omit) }}"
|
||||||
volumes: "{{ volumes | default(omit) }}"
|
volumes: "{{ volumes | default(omit) }}"
|
||||||
env: "{{ env | default(omit) }}"
|
env: "{{ env | default(omit) }}"
|
||||||
labels: "{{ labels | default(omit) }}"
|
labels: "{{ labels | default(omit) }}"
|
||||||
|
healthcheck: "{{ healthcheck | default(omit) }}"
|
||||||
|
devices: "{{ devices | default(omit) }}"
|
||||||
|
mounts: "{{ mounts | default(omit) }}"
|
||||||
|
privileged: "{{ privileged | default(omit) }}"
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ def deploy(tag = None, host = None):
|
|||||||
command = construct_command(tag, host)
|
command = construct_command(tag, host)
|
||||||
|
|
||||||
if tag:
|
if tag:
|
||||||
print(f"Deploying {tag}...\n")
|
print(f"[MAIN] Deploying {tag}...")
|
||||||
else:
|
else:
|
||||||
print(f"Deploying {host}...\n")
|
print(f"[MAIN] Deploying host {host}...")
|
||||||
res = subprocess.run(command, shell=True, stdout=subprocess.DEVNULL)
|
res = subprocess.run(command, shell=True)
|
||||||
|
|
||||||
return res.returncode == 0
|
return res.returncode == 0
|
||||||
|
|
||||||
@@ -75,8 +75,9 @@ def main():
|
|||||||
|
|
||||||
deployed = []
|
deployed = []
|
||||||
failed = []
|
failed = []
|
||||||
|
|
||||||
for task in new_diff:
|
for task in new_diff:
|
||||||
deployment = deploy(tag=task)
|
deployment = deploy(tag=task.split("/")[1])
|
||||||
|
|
||||||
if not deployment:
|
if not deployment:
|
||||||
failed.append(task)
|
failed.append(task)
|
||||||
|
|||||||
@@ -10,12 +10,30 @@ if os.path.exists(host_vars_path):
|
|||||||
|
|
||||||
vaults = os.listdir(host_vars_path)
|
vaults = os.listdir(host_vars_path)
|
||||||
|
|
||||||
|
# 1st run - extract ungrouped, global variables
|
||||||
for vault in vaults:
|
for vault in vaults:
|
||||||
vault_path = os.path.join(host_vars_path, vault)
|
vault_path = os.path.join(host_vars_path, vault)
|
||||||
vault_contents = subprocess.run(f'ansible-vault decrypt "{vault_path}" --vault-password-file ~/.vault_pass.txt --output -', shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
vault_contents = subprocess.run(f'ansible-vault decrypt "{vault_path}" --vault-password-file ~/.vault_pass.txt --output -', shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
||||||
stdout = vault_contents.stdout.strip().splitlines()
|
stdout = vault_contents.stdout.strip().splitlines()
|
||||||
|
|
||||||
for line in stdout:
|
for line in stdout:
|
||||||
|
if line.startswith("#"):
|
||||||
|
break
|
||||||
|
elif line.split(":")[0] not in file_contents:
|
||||||
|
file_contents += f"{line.split(":")[0]}:\n"
|
||||||
|
|
||||||
|
# 2nd run - extract service-specific variables
|
||||||
|
for vault in vaults:
|
||||||
|
vault_path = os.path.join(host_vars_path, vault)
|
||||||
|
vault_contents = subprocess.run(f'ansible-vault decrypt "{vault_path}" --vault-password-file ~/.vault_pass.txt --output -', shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
||||||
|
stdout = vault_contents.stdout.strip().splitlines()
|
||||||
|
|
||||||
|
has_found_start = False
|
||||||
|
for line in stdout:
|
||||||
|
if has_found_start or line.startswith("#"):
|
||||||
|
if not has_found_start:
|
||||||
|
has_found_start = True
|
||||||
|
|
||||||
if line.startswith("#") and line not in file_contents:
|
if line.startswith("#") and line not in file_contents:
|
||||||
file_contents += f"\n{line}\n"
|
file_contents += f"\n{line}\n"
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ def search_for_image(image_name):
|
|||||||
data = yaml.safe_load(file)
|
data = yaml.safe_load(file)
|
||||||
|
|
||||||
for key in data:
|
for key in data:
|
||||||
if "docker_image" in key:
|
if "vars" in key:
|
||||||
if image_name in key["docker_image"]["name"]:
|
if image_name in key["vars"]["image"]["name"] or image_name == key["vars"]["image"]["name"]:
|
||||||
return f"{task.split(".")[0]}_deploy"
|
return f"{task.split(".")[0]}_deploy"
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -29,24 +29,36 @@ def main():
|
|||||||
for task in host['tasks']:
|
for task in host['tasks']:
|
||||||
deployable_tags.append(task['tags'])
|
deployable_tags.append(task['tags'])
|
||||||
|
|
||||||
if len(update_list["images"]) <= 0:
|
if len(update_list["images"]) > 0:
|
||||||
print("No images to update!")
|
already_deployed = []
|
||||||
else:
|
actually_updatable = []
|
||||||
print(f"Updating {update_list["metrics"]["updates_available"]} image(s)..\n")
|
blacklist = []
|
||||||
|
|
||||||
for image in update_list["images"]:
|
for image in update_list["images"]:
|
||||||
if image['result']['has_update']:
|
if image['result']['has_update']:
|
||||||
if "remote_digest" in image["result"]["info"]:
|
if image in blacklist:
|
||||||
image_name = image["parts"]["repository"]
|
print(f"[UPDATE] Ignoring '{image}' due to its blacklist")
|
||||||
ansible_tag = search_for_image(image_name)
|
elif 'version_update_type' in image['result']['info'] and image['result']['info']['version_update_type'] != "major":
|
||||||
|
actually_updatable.append({ 'reference': image['reference'], 'repository': image['parts']['repository'] })
|
||||||
|
elif 'type' in image['result']['info'] and image['result']['info']['type'] == "digest":
|
||||||
|
actually_updatable.append({ 'reference': image['reference'], 'repository': image['parts']['repository'] })
|
||||||
|
|
||||||
if ansible_tag and ansible_tag in deployable_tags:
|
print(f"Redeploying {len(actually_updatable)} container(s)..")
|
||||||
print(f"Updating '{image_name}' ({ansible_tag})..")
|
for image in actually_updatable:
|
||||||
subprocess.run(f'docker image pull {image_name}', shell=True)
|
ansible_tag = search_for_image(image['repository'])
|
||||||
|
print(ansible_tag, image['reference'])
|
||||||
|
if ansible_tag and ansible_tag in deployable_tags and ansible_tag not in already_deployed:
|
||||||
|
print(f'[UPDATE] Deploying {ansible_tag}..')
|
||||||
subprocess.run(f'ANSIBLE_CONFIG=ansible.cfg ansible-playbook main.yml --tags {ansible_tag} --vault-password-file=~/.vault_pass.txt', shell=True)
|
subprocess.run(f'ANSIBLE_CONFIG=ansible.cfg ansible-playbook main.yml --tags {ansible_tag} --vault-password-file=~/.vault_pass.txt', shell=True)
|
||||||
|
else:
|
||||||
|
print('[UPDATE] Could not find corresponding task, cleaning up..')
|
||||||
|
subprocess.run(f"docker image remove {image['reference']}", shell=True)
|
||||||
|
already_deployed.append(ansible_tag)
|
||||||
|
|
||||||
print("\nAll images updated, refreshing Cup")
|
print("\nAll images updated, refreshing Cup")
|
||||||
requests.get("https://cup.fntz.net/api/v3/refresh")
|
requests.get("https://cup.fntz.net/api/v3/refresh")
|
||||||
|
else:
|
||||||
|
print("No images to update!")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
- "{{ data_dir }}/api/db"
|
- "{{ data_dir }}/api/db"
|
||||||
image:
|
image:
|
||||||
name: postgres
|
name: postgres
|
||||||
tag: latest
|
tag: "17"
|
||||||
networks:
|
networks:
|
||||||
- name: api
|
- name: api
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,29 +1,16 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Drop Database
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: drop_postgres
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/drop"
|
- "{{ data_dir }}/drop"
|
||||||
- "{{ data_dir }}/drop/db"
|
- "{{ data_dir }}/drop/db"
|
||||||
- "{{ data_dir }}/drop/app"
|
image:
|
||||||
|
name: postgres
|
||||||
- name: Create Drop Network
|
tag: 14-alpine
|
||||||
docker_network:
|
network_name: drop
|
||||||
name: drop
|
|
||||||
|
|
||||||
- name: Pull latest Drop Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/drop-oss/drop
|
|
||||||
tag: v0.3.3
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Drop DB Container
|
|
||||||
docker_container:
|
|
||||||
name: drop_postgres
|
|
||||||
image: postgres:14-alpine
|
|
||||||
recreate: true
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
networks:
|
networks:
|
||||||
- name: drop
|
- name: drop
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -39,12 +26,16 @@
|
|||||||
POSTGRES_USER: "drop"
|
POSTGRES_USER: "drop"
|
||||||
POSTGRES_DB: "drop"
|
POSTGRES_DB: "drop"
|
||||||
|
|
||||||
- name: Create Drop Container
|
- name: Deploy Drop
|
||||||
docker_container:
|
include_role:
|
||||||
|
name: docker
|
||||||
|
vars:
|
||||||
name: drop
|
name: drop
|
||||||
image: ghcr.io/drop-oss/drop:latest
|
directories:
|
||||||
recreate: true
|
- "{{ data_dir }}/drop/app"
|
||||||
restart_policy: unless-stopped
|
image:
|
||||||
|
name: ghcr.io/drop-oss/drop
|
||||||
|
tag: latest
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
- name: drop
|
- name: drop
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Ersatz
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: ersatztv
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/ersatz"
|
- "{{ data_dir }}/ersatz"
|
||||||
|
image:
|
||||||
- name: Pull latest Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/ersatztv/ersatztv
|
name: ghcr.io/ersatztv/ersatztv
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: ersatztv
|
|
||||||
image: ghcr.io/ersatztv/ersatztv:latest
|
|
||||||
recreate: true
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri/renderD128:/dev/dri/renderD128
|
- /dev/dri/renderD128:/dev/dri/renderD128
|
||||||
mounts:
|
mounts:
|
||||||
|
|||||||
@@ -1,24 +1,15 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Frigate
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: frigate
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/frigate"
|
- "{{ data_dir }}/frigate"
|
||||||
|
image:
|
||||||
- name: Pull latest Frigate Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/blakeblackshear/frigate
|
name: ghcr.io/blakeblackshear/frigate
|
||||||
tag: stable
|
tag: stable
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Deploy Frigate Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: frigate
|
|
||||||
image: ghcr.io/blakeblackshear/frigate:stable
|
|
||||||
recreate: true
|
|
||||||
privileged: true
|
privileged: true
|
||||||
restart_policy: unless-stopped
|
|
||||||
published_ports:
|
published_ports:
|
||||||
- "5000:5000"
|
- "5000:5000"
|
||||||
- "8555:8555/tcp"
|
- "8555:8555/tcp"
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Gitea
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: gitea
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/gitea"
|
- "{{ data_dir }}/gitea"
|
||||||
|
image:
|
||||||
- name: Pull latest Gitea Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: docker.gitea.com/gitea
|
name: docker.gitea.com/gitea
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Gitea Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: gitea
|
|
||||||
image: docker.gitea.com/gitea:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: "{{ docker_network_name }}"
|
- name: "{{ docker_network_name }}"
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create folder structure
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_dir }}/homeassistant"
|
|
||||||
|
|
||||||
- name: Pull HA Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/home-assistant/home-assistant:stable
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Deploy Home Assistant Container
|
|
||||||
docker_container:
|
|
||||||
name: home_assistant
|
|
||||||
image: ghcr.io/home-assistant/home-assistant:stable
|
|
||||||
recreate: true
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
network_mode: host
|
|
||||||
privileged: true
|
|
||||||
volumes:
|
|
||||||
- "{{ data_dir }}/homeassistant:/config"
|
|
||||||
- "/etc/localtime:/etc/localtime"
|
|
||||||
- "/run/dbus:/run/dbus:ro"
|
|
||||||
labels:
|
|
||||||
traefik.enable: "true"
|
|
||||||
traefik.http.routers.ha.rule: Host(`ha.fntz.net`)
|
|
||||||
traefik.http.routers.ha.entrypoints: webSecure
|
|
||||||
traefik.http.routers.ha.tls.certresolver: letsencrypt
|
|
||||||
traefik.http.services.ha.loadbalancer.server.url: "http://{{ TRAEFIK_HOST_IP }}:8123"
|
|
||||||
@@ -1,24 +1,15 @@
|
|||||||
---
|
---
|
||||||
- name: Create Folder structure
|
- name: Deploy Homebridge
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: homebridge
|
||||||
- "{{ data_dir }}/homebridge"
|
directories:
|
||||||
|
- "{{ data_dir }}/homebridge:/homebridge"
|
||||||
- name: Pull latest Homebridge Docker Image
|
image:
|
||||||
docker_image:
|
|
||||||
name: homebridge/homebridge
|
name: homebridge/homebridge
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Homebridge Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: homebridge
|
|
||||||
image: homebridge/homebridge:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
network_mode: host
|
network_mode: host
|
||||||
recreate: true
|
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_dir }}/homebridge:/homebridge"
|
- "{{ data_dir }}/homebridge:/homebridge"
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -1,34 +1,16 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Immich DB
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: immich_postgres
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/immich"
|
- "{{ data_dir }}/immich"
|
||||||
- "{{ data_dir }}/immich/model-cache"
|
- "{{ data_dir }}/immich/model-cache"
|
||||||
- "{{ data_dir }}/immich/db"
|
- "{{ data_dir }}/immich/db"
|
||||||
|
image:
|
||||||
- name: Pull latest Immich Server Docker Image
|
name: ghcr.io/immich-app/postgres
|
||||||
docker_image:
|
tag: 14-vectorchord0.4.3-pgvectors0.2.0
|
||||||
name: ghcr.io/immich-app/immich-server
|
|
||||||
tag: v2.1.0
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Immich Redis Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: immich_redis
|
|
||||||
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
|
||||||
- name: immich
|
|
||||||
|
|
||||||
- name: Create Immich DB Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: immich_postgres
|
|
||||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_dir }}/immich/db:/var/lib/postgresql/data"
|
- "{{ data_dir }}/immich/db:/var/lib/postgresql/data"
|
||||||
env:
|
env:
|
||||||
@@ -38,13 +20,27 @@
|
|||||||
POSTGRES_INITDB_ARGS: "--data-checksums"
|
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||||
networks:
|
networks:
|
||||||
- name: immich
|
- name: immich
|
||||||
|
network_name: immich
|
||||||
|
|
||||||
- name: Create Immich Server Docker Container
|
- name: Deploy Immich Redis
|
||||||
docker_container:
|
include_role:
|
||||||
name: immich_server
|
name: docker
|
||||||
image: ghcr.io/immich-app/immich-server:v2.1.0
|
vars:
|
||||||
restart_policy: unless-stopped
|
name: immich_redis
|
||||||
recreate: true
|
image:
|
||||||
|
name: docker.io/valkey/valkey
|
||||||
|
tag: 8-bookworm
|
||||||
|
networks:
|
||||||
|
- name: immich
|
||||||
|
|
||||||
|
- name: Deploy Immich Server
|
||||||
|
include_role:
|
||||||
|
name: docker
|
||||||
|
vars:
|
||||||
|
name: immich
|
||||||
|
image:
|
||||||
|
name: ghcr.io/immich-app/immich-server
|
||||||
|
tag: v2.1.0
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
- name: immich
|
- name: immich
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create folder structure
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_dir }}/jellyfin"
|
|
||||||
|
|
||||||
- name: Pull latest Jellyfin Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: lscr.io/linuxserver/jellyfin
|
|
||||||
tag: latest
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Jellyfin Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: jellyfin
|
|
||||||
image: lscr.io/linuxserver/jellyfin:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
|
||||||
- name: homelab
|
|
||||||
published_ports:
|
|
||||||
- 8096:8096
|
|
||||||
volumes:
|
|
||||||
- "{{ data_dir }}/jellyfin:/config"
|
|
||||||
- "{{ JELLYFIN_TV_PATH }}:/data/tvshows"
|
|
||||||
- "{{ JELLYFIN_MOVIE_PATH }}:/data/movies"
|
|
||||||
- "{{ JELLYFIN_MUSIC_PATH }}:/data/music"
|
|
||||||
env:
|
|
||||||
PUID: "{{ PUID }}"
|
|
||||||
PGID: "{{ PGID }}"
|
|
||||||
TZ: "{{ TZ }}"
|
|
||||||
labels:
|
|
||||||
traefik.enable: "true"
|
|
||||||
traefik.http.routers.jf.rule: Host(`jf.fntz.net`)
|
|
||||||
traefik.http.routers.jf.entrypoints: webSecure
|
|
||||||
traefik.http.routers.jf.tls.certresolver: letsencrypt
|
|
||||||
traefik.http.services.jf.loadbalancer.server.port: "8096"
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create folder structure
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
with_items:
|
|
||||||
- "{{ data_dir }}/nextcloud"
|
|
||||||
- "{{ data_dir }}/nextcloud/data"
|
|
||||||
- "{{ data_dir }}/nextcloud/db"
|
|
||||||
|
|
||||||
- name: Create Nextcloud Docker Network
|
|
||||||
docker_network:
|
|
||||||
name: nextcloud
|
|
||||||
|
|
||||||
- name: Pull latest Nextcloud Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: nextcloud
|
|
||||||
tag: latest
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Nextcloud DB Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: nc_postgresql
|
|
||||||
image: postgres:17-alpine
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
|
||||||
- name: nextcloud
|
|
||||||
volumes:
|
|
||||||
- "{{ data_dir }}/nextcloud/db:/var/lib/postgresql/data"
|
|
||||||
env:
|
|
||||||
PGDATA: /var/lib/postgresql/data/pgdata
|
|
||||||
POSTGRES_PASSWORD: "{{ NEXTCLOUD_POSTGRES_PASSWORD }}"
|
|
||||||
POSTGRES_DATABASE: "{{ NEXTCLOUD_POSTGRES_DATABASE }}"
|
|
||||||
POSTGRES_USER: "{{ NEXTCLOUD_POSTGRES_USER }}"
|
|
||||||
POSTGRES_HOST: "{{ NEXTCLOUD_POSTGRES_HOST }}"
|
|
||||||
|
|
||||||
- name: Create Nextcloud Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: nextcloud
|
|
||||||
image: nextcloud
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
|
||||||
- name: "{{ docker_network_name }}"
|
|
||||||
- name: nextcloud
|
|
||||||
volumes:
|
|
||||||
- "{{ data_dir }}/nextcloud/data:/var/www/html"
|
|
||||||
labels:
|
|
||||||
traefik.enable: "true"
|
|
||||||
traefik.http.routers.nc.rule: Host(`{{ NEXTCLOUD_APP_URL }}`)
|
|
||||||
traefik.http.routers.nc.entrypoints: webSecure
|
|
||||||
traefik.http.routers.nc.tls.certresolver: letsencrypt
|
|
||||||
traefik.http.services.nc.loadbalancer.server.port: "80"
|
|
||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy NZBGet
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: nzbget
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/nzbget"
|
- "{{ data_dir }}/nzbget"
|
||||||
|
image:
|
||||||
- name: Pull latest NZBGet Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: lscr.io/linuxserver/nzbget
|
name: lscr.io/linuxserver/nzbget
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create NZBGet Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: nzbget
|
|
||||||
image: lscr.io/linuxserver/nzbget:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,25 +1,16 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Obsidian
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: obsidian
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/obsidian"
|
- "{{ data_dir }}/obsidian"
|
||||||
- "{{ data_dir }}/obsidian/data"
|
- "{{ data_dir }}/obsidian/data"
|
||||||
- "{{ data_dir }}/obsidian/etc"
|
- "{{ data_dir }}/obsidian/etc"
|
||||||
|
image:
|
||||||
- name: Pull Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: couchdb
|
name: couchdb
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: couchdb
|
|
||||||
image: couchdb:latest
|
|
||||||
recreate: true
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,30 +1,18 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Owncloud Database
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: owncloud_database
|
||||||
|
image:
|
||||||
|
name: mariadb
|
||||||
|
tag: latest
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/owncloud"
|
- "{{ data_dir }}/owncloud"
|
||||||
- "{{ data_dir }}/owncloud/data"
|
- "{{ data_dir }}/owncloud/data"
|
||||||
- "{{ data_dir }}/owncloud/db"
|
- "{{ data_dir }}/owncloud/db"
|
||||||
- "{{ data_dir }}/owncloud/redis"
|
- "{{ data_dir }}/owncloud/redis"
|
||||||
|
network_name: "owncloud"
|
||||||
- name: Create Owncloud Docker Network
|
|
||||||
docker_network:
|
|
||||||
name: owncloud
|
|
||||||
|
|
||||||
- name: Pull latest Owncloud Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: owncloud/server
|
|
||||||
tag: "10.15"
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Owncloud DB Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: oc_database
|
|
||||||
image: mariadb:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: owncloud
|
- name: owncloud
|
||||||
volumes:
|
volumes:
|
||||||
@@ -42,12 +30,14 @@
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
- name: Create Owncloud Redis Container
|
- name: Deploy Owncloud Redis
|
||||||
docker_container:
|
include_role:
|
||||||
name: oc_redis
|
name: docker
|
||||||
image: redis:latest
|
vars:
|
||||||
restart_policy: unless-stopped
|
name: owncloud_redis
|
||||||
recreate: true
|
image:
|
||||||
|
name: redis
|
||||||
|
tag: latest
|
||||||
networks:
|
networks:
|
||||||
- name: owncloud
|
- name: owncloud
|
||||||
command: "--databases 1"
|
command: "--databases 1"
|
||||||
@@ -59,12 +49,14 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- "{{ data_dir }}/owncloud/redis:/data"
|
- "{{ data_dir }}/owncloud/redis:/data"
|
||||||
|
|
||||||
- name: Create Owncloud Docker Container
|
- name: Deploy Owncloud
|
||||||
docker_container:
|
include_role:
|
||||||
|
name: docker
|
||||||
|
vars:
|
||||||
name: owncloud
|
name: owncloud
|
||||||
image: owncloud/server:10.15
|
image:
|
||||||
restart_policy: unless-stopped
|
name: owncloud/server
|
||||||
recreate: true
|
tag: 10.16
|
||||||
networks:
|
networks:
|
||||||
- name: "{{ docker_network_name }}"
|
- name: "{{ docker_network_name }}"
|
||||||
- name: owncloud
|
- name: owncloud
|
||||||
|
|||||||
@@ -1,28 +1,19 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy PiHole
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: pihole
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/pihole"
|
- "{{ data_dir }}/pihole"
|
||||||
|
image:
|
||||||
- name: Pull latest PiHole Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: pihole/pihole
|
name: pihole/pihole
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
published_ports:
|
||||||
|
- "53:53/tcp"
|
||||||
- name: Create PiHole Docker Container
|
- "53:53/udp"
|
||||||
docker_container:
|
|
||||||
name: pihole
|
|
||||||
image: pihole/pihole:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
published_ports:
|
|
||||||
- "{{ TRAEFIK_HOST_IP }}:53:53/tcp"
|
|
||||||
- "{{ TRAEFIK_HOST_IP }}:53:53/udp"
|
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_dir }}/pihole:/etc/pihole"
|
- "{{ data_dir }}/pihole:/etc/pihole"
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create Folder structure
|
- name: Deploy PocketID
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: pocketid
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/pocketid"
|
- "{{ data_dir }}/pocketid"
|
||||||
|
image:
|
||||||
- name: Pull latest PocketID Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/pocket-id/pocket-id
|
name: ghcr.io/pocket-id/pocket-id
|
||||||
tag: v1
|
tag: v1
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create PocketID Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: pocketid
|
|
||||||
image: ghcr.io/pocket-id/pocket-id:v1
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,36 +1,17 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Radarr
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: radarr
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/servarr"
|
- "{{ data_dir }}/servarr"
|
||||||
- "{{ data_dir }}/servarr/sonarr_config"
|
- "{{ data_dir }}/servarr/sonarr_config"
|
||||||
- "{{ data_dir }}/servarr/radarr_config"
|
- "{{ data_dir }}/servarr/radarr_config"
|
||||||
- "{{ data_dir }}/servarr/lidarr_config"
|
- "{{ data_dir }}/servarr/lidarr_config"
|
||||||
|
image:
|
||||||
- name: Pull latest Radarr Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: lscr.io/linuxserver/radarr
|
name: lscr.io/linuxserver/radarr
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
- name: Pull latest Sonarr Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: lscr.io/linuxserver/sonarr
|
|
||||||
tag: latest
|
|
||||||
source: pull
|
|
||||||
- name: Pull latest Lidarr Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: lscr.io/linuxserver/lidarr
|
|
||||||
tag: latest
|
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Deploy Radarr Container
|
|
||||||
docker_container:
|
|
||||||
name: radarr
|
|
||||||
image: lscr.io/linuxserver/radarr:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_dir }}/servarr/radarr_config:/config"
|
- "{{ data_dir }}/servarr/radarr_config:/config"
|
||||||
- "{{ SERVARR_MEDIA_PATH }}:/media"
|
- "{{ SERVARR_MEDIA_PATH }}:/media"
|
||||||
@@ -48,12 +29,14 @@
|
|||||||
traefik.http.routers.radarr.tls.certresolver: letsencrypt
|
traefik.http.routers.radarr.tls.certresolver: letsencrypt
|
||||||
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
||||||
|
|
||||||
- name: Deploy Sonarr Container
|
- name: Deploy Sonarr
|
||||||
docker_container:
|
include_role:
|
||||||
|
name: docker
|
||||||
|
vars:
|
||||||
name: sonarr
|
name: sonarr
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
image:
|
||||||
restart_policy: unless-stopped
|
name: lscr.io/linuxserver/sonarr
|
||||||
recreate: true
|
tag: latest
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ data_dir }}/servarr/sonarr_config:/config"
|
- "{{ data_dir }}/servarr/sonarr_config:/config"
|
||||||
- "{{ SERVARR_MEDIA_PATH }}:/data"
|
- "{{ SERVARR_MEDIA_PATH }}:/data"
|
||||||
@@ -71,12 +54,14 @@
|
|||||||
traefik.http.routers.sonarr.tls.certresolver: letsencrypt
|
traefik.http.routers.sonarr.tls.certresolver: letsencrypt
|
||||||
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
||||||
|
|
||||||
- name: Deploy Lidarr Container
|
- name: Deploy Lidarr
|
||||||
docker_container:
|
include_role:
|
||||||
|
name: docker
|
||||||
|
vars:
|
||||||
name: lidarr
|
name: lidarr
|
||||||
image: lscr.io/linuxserver/lidarr:latest
|
image:
|
||||||
restart_policy: unless-stopped
|
name: lscr.io/linuxserver/lidarr
|
||||||
recreate: true
|
tag: latest
|
||||||
env:
|
env:
|
||||||
PUID: "{{ PUID }}"
|
PUID: "{{ PUID }}"
|
||||||
PGID: "{{ PGID }}"
|
PGID: "{{ PGID }}"
|
||||||
|
|||||||
@@ -1,34 +1,20 @@
|
|||||||
---
|
---
|
||||||
- name: "Create file structure"
|
- name: Deploy Storage API
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: storage-api
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/storage-api"
|
- "{{ data_dir }}/storage-api"
|
||||||
- "{{ data_dir }}/storage-api/app"
|
- "{{ data_dir }}/storage-api/app"
|
||||||
- "{{ data_dir }}/storage-api/files"
|
- "{{ data_dir }}/storage-api/files"
|
||||||
|
image:
|
||||||
- name: "Clone latest Storage API"
|
name: storage-api
|
||||||
|
tag: latest
|
||||||
|
build:
|
||||||
git:
|
git:
|
||||||
repo: git@git.alexav.gg:alex/storage-api.git
|
repo: git@git.alexav.gg:alex/storage-api.git
|
||||||
dest: "{{ data_dir }}/storage-api/app"
|
dest: "{{ data_dir }}/storage-api/app"
|
||||||
|
|
||||||
- name: "Build Storage API Docker Image"
|
|
||||||
docker_image:
|
|
||||||
name: storage-api
|
|
||||||
tag: "latest"
|
|
||||||
build:
|
|
||||||
path: "{{ data_dir }}/storage-api/app"
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
source: build
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: Deploy Storage API Container
|
|
||||||
docker_container:
|
|
||||||
name: storage_api
|
|
||||||
image: storage-api:latest
|
|
||||||
recreate: true
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
networks:
|
networks:
|
||||||
- name: "{{ docker_network_name }}"
|
- name: "{{ docker_network_name }}"
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Tautulli
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: tautulli
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/tautulli"
|
- "{{ data_dir }}/tautulli"
|
||||||
|
image:
|
||||||
- name: Pull latest Tautulli Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/tautulli/tautulli
|
name: ghcr.io/tautulli/tautulli
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Tautulli Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: tautulli
|
|
||||||
image: ghcr.io/tautulli/tautulli
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Termix
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: termix
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/termix"
|
- "{{ data_dir }}/termix"
|
||||||
|
image:
|
||||||
- name: Pull latest Termix Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: ghcr.io/lukegus/termix
|
name: ghcr.io/lukegus/termix
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Termix Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: termix
|
|
||||||
image: ghcr.io/lukegus/termix:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
---
|
---
|
||||||
- name: Pull latest Tinyauth Docker Image
|
- name: Deploy Tinyauth
|
||||||
docker_image:
|
include_role:
|
||||||
|
name: docker
|
||||||
|
vars:
|
||||||
|
name: tinyauth
|
||||||
|
image:
|
||||||
name: ghcr.io/steveiliop56/tinyauth
|
name: ghcr.io/steveiliop56/tinyauth
|
||||||
tag: v4
|
tag: v4
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Tinyauth Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: tinyauth
|
|
||||||
image: ghcr.io/steveiliop56/tinyauth:v4
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
|
volumes:
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||||
env:
|
env:
|
||||||
USERS: "{{ TINYAUTH_USERS }}"
|
USERS: "{{ TINYAUTH_USERS }}"
|
||||||
SECRET: "{{ TINYAUTH_SECRET }}"
|
SECRET: "{{ TINYAUTH_SECRET }}"
|
||||||
@@ -28,8 +26,6 @@
|
|||||||
OAUTH_WHITELIST: "{{ TINYAUTH_OAUTH_WHITELIST }}"
|
OAUTH_WHITELIST: "{{ TINYAUTH_OAUTH_WHITELIST }}"
|
||||||
APP_TITLE: "{{ TINYAUTH_APP_TITLE }}"
|
APP_TITLE: "{{ TINYAUTH_APP_TITLE }}"
|
||||||
BACKGROUND_IMAGE: "{{ TINYAUTH_BACKGROUND_IMAGE }}"
|
BACKGROUND_IMAGE: "{{ TINYAUTH_BACKGROUND_IMAGE }}"
|
||||||
volumes:
|
|
||||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
||||||
labels:
|
labels:
|
||||||
traefik.enable: "true"
|
traefik.enable: "true"
|
||||||
traefik.http.routers.tinyauth.rule: Host(`auth.fntz.net`)
|
traefik.http.routers.tinyauth.rule: Host(`auth.fntz.net`)
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Uptime Kuma
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: uptime-kuma
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/uptime-kuma"
|
- "{{ data_dir }}/uptime-kuma"
|
||||||
|
image:
|
||||||
- name: Pull latest Uptime Kuma Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: louislam/uptime-kuma
|
name: louislam/uptime-kuma
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Uptime Kuma Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: uptime-kuma
|
|
||||||
image: louislam/uptime-kuma
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: Create folder structure
|
- name: Deploy Vaultwarden
|
||||||
file:
|
include_role:
|
||||||
path: "{{ item }}"
|
name: docker
|
||||||
state: directory
|
vars:
|
||||||
with_items:
|
name: vaultwarden
|
||||||
|
directories:
|
||||||
- "{{ data_dir }}/vaultwarden"
|
- "{{ data_dir }}/vaultwarden"
|
||||||
|
image:
|
||||||
- name: Pull latest Vaultwarden Docker Image
|
|
||||||
docker_image:
|
|
||||||
name: vaultwarden/server
|
name: vaultwarden/server
|
||||||
tag: latest
|
tag: latest
|
||||||
source: pull
|
|
||||||
|
|
||||||
- name: Create Vaultwarden Docker Container
|
|
||||||
docker_container:
|
|
||||||
name: vaultwarden
|
|
||||||
image: vaultwarden/server:latest
|
|
||||||
restart_policy: unless-stopped
|
|
||||||
recreate: true
|
|
||||||
networks:
|
networks:
|
||||||
- name: homelab
|
- name: homelab
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
Reference in New Issue
Block a user