diff --git a/config/ansible/tasks/servers/server.yml b/config/ansible/tasks/servers/server.yml index fe0cce3..117b6f4 100644 --- a/config/ansible/tasks/servers/server.yml +++ b/config/ansible/tasks/servers/server.yml @@ -75,7 +75,7 @@ vars: services: - - name: qdrant + - name: dashy enabled: true hosts: - mennos-desktop 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 b9da6d0..ac21843 100644 --- a/config/ansible/tasks/servers/services/arr-stack/arr-stack.yml +++ b/config/ansible/tasks/servers/services/arr-stack/arr-stack.yml @@ -35,3 +35,4 @@ tags: - services - arr_stack + - arr-stack diff --git a/config/ansible/tasks/servers/services/arr-stack/docker-compose.yml.j2 b/config/ansible/tasks/servers/services/arr-stack/docker-compose.yml.j2 index 36a7646..95e1f83 100644 --- a/config/ansible/tasks/servers/services/arr-stack/docker-compose.yml.j2 +++ b/config/ansible/tasks/servers/services/arr-stack/docker-compose.yml.j2 @@ -20,7 +20,7 @@ services: deploy: resources: limits: - memory: 1G + memory: 2G sonarr: image: linuxserver/sonarr:latest @@ -42,7 +42,7 @@ services: deploy: resources: limits: - memory: 1G + memory: 2G whisparr: image: ghcr.io/hotio/whisparr:latest @@ -63,7 +63,7 @@ services: deploy: resources: limits: - memory: 1G + memory: 2G prowlarr: container_name: prowlarr @@ -127,6 +127,53 @@ services: limits: memory: 512M + tdarr: + image: ghcr.io/haveagitgat/tdarr:latest + container_name: tdarr + environment: + - PUID=1000 + - PGID=100 + - TZ=Europe/Amsterdam + - serverIP=0.0.0.0 + - serverPort=8266 + - webUIPort=8265 + - internalNode=true + - inContainer=true + - ffmpegVersion=7 + - nodeName=MyInternalNode + - auth=false + - openBrowser=true + - maxLogSizeMB=10 + - cronPluginUpdate= + - NVIDIA_DRIVER_CAPABILITIES=all + - NVIDIA_VISIBLE_DEVICES=all + volumes: + - {{ arr_stack_data_dir }}/tdarr-server:/app/server + - {{ arr_stack_data_dir }}/tdarr-config:/app/configs + - {{ arr_stack_data_dir }}/tdarr-logs:/app/logs + - /mnt/data:/media + - {{ arr_stack_data_dir }}/tdarr-cache:/temp + ports: + - 8265:8265 + - 8266:8266 + extra_hosts: + - host.docker.internal:host-gateway + restart: unless-stopped + runtime: nvidia + devices: + - /dev/dri:/dev/dri + networks: + - arr_stack_net + deploy: + resources: + limits: + memory: 4G + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + networks: arr_stack_net: caddy_network: diff --git a/config/ansible/tasks/servers/services/dashy/conf.yml.j2 b/config/ansible/tasks/servers/services/dashy/conf.yml.j2 new file mode 100644 index 0000000..1004688 --- /dev/null +++ b/config/ansible/tasks/servers/services/dashy/conf.yml.j2 @@ -0,0 +1,324 @@ +pageInfo: + title: Menno's Home + navLinks: [] +sections: + - name: Selfhosted + items: + - title: Plex + icon: http://mennos-desktop:4000/assets/plex.svg + url: https://plex.mvl.sh + statusCheckUrl: https://plex.mvl.sh/identity + statusCheck: true + id: 0_1035_plex + - title: Tautulli + icon: http://mennos-desktop:4000/assets/tautulli.svg + url: https://tautulli.mvl.sh + id: 1_1035_tautulli + statusCheck: true + - title: Overseerr + icon: http://mennos-desktop:4000/assets/overseerr.svg + url: https://overseerr.mvl.sh + id: 2_1035_overseerr + statusCheck: true + - title: Immich + icon: http://mennos-desktop:4000/assets/immich.svg + url: https://photos.mvl.sh + id: 3_1035_immich + statusCheck: true + - title: Nextcloud + icon: http://mennos-desktop:4000/assets/nextcloud.svg + url: https://drive.mvl.sh + id: 3_1035_nxtcld + statusCheck: true + - title: ComfyUI + icon: http://mennos-desktop:8188/assets/favicon.ico + url: http://mennos-desktop:8188 + statusCheckUrl: http://host.docker.internal:8188/api/system_stats + id: 3_1035_comfyui + statusCheck: true + displayData: + sortBy: default + rows: 1 + cols: 2 + collapsed: false + hideForGuests: false + - name: Media Management + items: + - title: Sonarr + icon: http://mennos-desktop:4000/assets/sonarr.svg + url: http://go/sonarr + id: 0_1533_sonarr + - title: Radarr + icon: http://mennos-desktop:4000/assets/radarr.svg + url: http://go/radarr + id: 1_1533_radarr + - title: Prowlarr + icon: http://mennos-desktop:4000/assets/prowlarr.svg + url: http://go/prowlarr + id: 2_1533_prowlarr + - title: Tdarr + icon: http://mennos-desktop:4000/assets/tdarr.png + url: http://go/tdarr + id: 3_1533_tdarr + - name: Kagi + items: + - title: Kagi Search + icon: favicon + url: https://kagi.com/ + id: 0_380_kagisearch + - title: Kagi Translate + icon: favicon + url: https://translate.kagi.com/ + id: 1_380_kagitranslate + - title: Kagi Assistant + icon: favicon + url: https://kagi.com/assistant + id: 2_380_kagiassistant + - name: News + items: + - title: Nu.nl + icon: http://mennos-desktop:4000/assets/nunl.svg + url: https://www.nu.nl/ + id: 0_380_nu + - title: Tweakers.net + icon: favicon + url: https://www.tweakers.net/ + id: 1_380_tweakers + - title: NL Times + icon: favicon + url: https://www.nltimes.nl/ + id: 2_380_nl_times + - name: Downloaders + items: + - title: qBittorrent + icon: http://mennos-desktop:4000/assets/qbittorrent.svg + url: http://go/qbit + id: 0_1154_qbittorrent + tags: + - download + - torrent + - yarr + - title: Sabnzbd + icon: http://mennos-desktop:4000/assets/sabnzbd.svg + url: http://go/sabnzbd + id: 1_1154_sabnzbd + tags: + - download + - nzb + - yarr + - name: Git + items: + - title: GitHub + icon: http://mennos-desktop:4000/assets/github.svg + url: https://github.com/vleeuwenmenno + id: 0_292_github + tags: + - repo + - git + - hub + - title: Gitea + icon: http://mennos-desktop:4000/assets/gitea.svg + url: http://git.mvl.sh/vleeuwenmenno + id: 1_292_gitea + tags: + - repo + - git + - tea + - name: Server Monitoring + items: + - title: Beszel + icon: http://mennos-desktop:4000/assets/beszel.svg + url: http://go/beszel + tags: + - monitoring + - logs + id: 0_1725_beszel + - title: Dozzle + icon: http://mennos-desktop:4000/assets/dozzle.svg + url: http://go/dozzle + id: 1_1725_dozzle + tags: + - monitoring + - logs + - title: UpDown.io Status + icon: far fa-signal + url: http://go/status + id: 2_1725_updowniostatus + tags: + - monitoring + - logs + - name: Tools + items: + - title: Home Assistant + icon: http://mennos-desktop:4000/assets/home-assistant.svg + url: http://go/homeassistant + id: 0_529_homeassistant + - title: Tailscale + icon: http://mennos-desktop:4000/assets/tailscale.svg + url: http://go/tailscale + id: 1_529_tailscale + - title: GliNet KVM + icon: http://mennos-desktop:4000/assets/glinet.svg + url: http://go/glkvm + id: 2_529_glinetkvm + - title: Unifi Network Controller + icon: http://mennos-desktop:4000/assets/unifi.svg + url: http://go/unifi + id: 3_529_unifinetworkcontroller + - title: Dashboard Icons + icon: favicon + url: https://dashboardicons.com/ + id: 4_529_dashboardicons + - name: Weather + items: + - title: Buienradar + icon: favicon + url: https://www.buienradar.nl/weer/Beverwijk/NL/2758998 + id: 0_529_buienradar + - title: ClearOutside + icon: favicon + url: https://clearoutside.com/forecast/52.49/4.66 + id: 1_529_clearoutside + - title: Windy + icon: favicon + url: https://www.windy.com/ + id: 2_529_windy + - title: Meteoblue + icon: favicon + url: https://www.meteoblue.com/en/country/weather/radar/the-netherlands_the-netherlands_2750405 + id: 2_529_meteoblue + - name: DiscountOffice + displayData: + sortBy: default + rows: 1 + cols: 3 + collapsed: false + hideForGuests: false + items: + - title: DiscountOffice.nl + icon: favicon + url: https://discountoffice.nl/ + id: 0_1429_discountofficenl + tags: + - do + - discount + - work + - title: DiscountOffice.be + icon: favicon + url: https://discountoffice.be/ + id: 1_1429_discountofficebe + tags: + - do + - discount + - work + - title: Admin NL + icon: favicon + url: https://discountoffice.nl/administrator + id: 2_1429_adminnl + tags: + - do + - discount + - work + - title: Admin BE + icon: favicon + url: https://discountoffice.be/administrator + id: 3_1429_adminbe + tags: + - do + - discount + - work + - title: Subsites + icon: favicon + url: https://elastomappen.nl + id: 4_1429_subsites + tags: + - do + - discount + - work + - title: Proxmox + icon: http://mennos-desktop:4000/assets/proxmox.svg + url: https://www.transip.nl/cp/vps/prm/350680/ + id: 5_1429_proxmox + tags: + - do + - discount + - work + - title: Transip + icon: favicon + url: https://www.transip.nl/cp/vps/prm/350680/ + id: 6_1429_transip + tags: + - do + - discount + - work + - title: Kibana + icon: http://mennos-desktop:4000/assets/kibana.svg + url: http://go/kibana + id: 7_1429_kibana + tags: + - do + - discount + - work + - name: Other + items: + - title: Whisparr + icon: http://mennos-desktop:4000/assets/whisparr.svg + url: http://go/whisparr + id: 0_514_whisparr + - title: Stash + icon: http://mennos-desktop:4000/assets/stash.svg + url: http://go/stash + id: 1_514_stash + displayData: + sortBy: default + rows: 1 + cols: 1 + collapsed: true + hideForGuests: true +appConfig: + layout: auto + iconSize: large + theme: nord + startingView: default + defaultOpeningMethod: sametab + statusCheck: false + statusCheckInterval: 0 + routingMode: history + enableMultiTasking: false + widgetsAlwaysUseProxy: false + webSearch: + disableWebSearch: false + searchEngine: https://kagi.com/search?q= + openingMethod: newtab + searchBangs: {} + enableFontAwesome: true + enableMaterialDesignIcons: false + hideComponents: + hideHeading: false + hideNav: true + hideSearch: false + hideSettings: true + hideFooter: false + auth: + enableGuestAccess: false + users: [] + enableOidc: false + oidc: + adminRole: "false" + adminGroup: "false" + enableHeaderAuth: false + headerAuth: + userHeader: REMOTE_USER + proxyWhitelist: [] + enableKeycloak: false + showSplashScreen: false + preventWriteToDisk: false + preventLocalSave: false + disableConfiguration: false + disableConfigurationForNonAdmin: false + allowConfigEdit: true + enableServiceWorker: false + disableContextMenu: false + disableUpdateChecks: false + disableSmartSort: false + enableErrorReporting: false diff --git a/config/ansible/tasks/servers/services/dashy/dashy.yml b/config/ansible/tasks/servers/services/dashy/dashy.yml new file mode 100644 index 0000000..1946cee --- /dev/null +++ b/config/ansible/tasks/servers/services/dashy/dashy.yml @@ -0,0 +1,44 @@ +--- +- name: Deploy Dashy service + block: + - name: Set Dashy directories + ansible.builtin.set_fact: + dashy_service_dir: "{{ ansible_env.HOME }}/.services/dashy" + dashy_data_dir: "/mnt/services/dashy" + + - name: Create Dashy directory + ansible.builtin.file: + path: "{{ dashy_service_dir }}" + state: directory + mode: "0755" + + - name: Create Dashy data directory + ansible.builtin.file: + path: "{{ dashy_data_dir }}" + state: directory + mode: "0755" + + - name: Deploy Dashy docker-compose.yml + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "{{ dashy_service_dir }}/docker-compose.yml" + mode: "0644" + register: dashy_compose + + - name: Deploy Dashy config.yml + ansible.builtin.template: + src: conf.yml.j2 + dest: "{{ dashy_data_dir }}/conf.yml" + mode: "0644" + register: dashy_config + + - name: Stop Dashy service + ansible.builtin.command: docker compose -f "{{ dashy_service_dir }}/docker-compose.yml" down --remove-orphans + when: dashy_compose.changed + + - name: Start Dashy service + ansible.builtin.command: docker compose -f "{{ dashy_service_dir }}/docker-compose.yml" up -d + when: dashy_compose.changed + tags: + - services + - dashy diff --git a/config/ansible/tasks/servers/services/dashy/docker-compose.yml.j2 b/config/ansible/tasks/servers/services/dashy/docker-compose.yml.j2 new file mode 100644 index 0000000..09faefb --- /dev/null +++ b/config/ansible/tasks/servers/services/dashy/docker-compose.yml.j2 @@ -0,0 +1,21 @@ +services: + dashy: + image: lissy93/dashy:latest + restart: unless-stopped + ports: + - 4000:8080 + volumes: + - {{dashy_data_dir}}/:/app/user-data + networks: + - caddy_network + extra_hosts: + - host.docker.internal:host-gateway + deploy: + resources: + limits: + memory: 2G + +networks: + caddy_network: + external: true + name: caddy_default diff --git a/config/ansible/tasks/servers/services/downloaders/docker-compose.yml.j2 b/config/ansible/tasks/servers/services/downloaders/docker-compose.yml.j2 index a7e1d26..f1552e4 100644 --- a/config/ansible/tasks/servers/services/downloaders/docker-compose.yml.j2 +++ b/config/ansible/tasks/servers/services/downloaders/docker-compose.yml.j2 @@ -11,7 +11,6 @@ services: - 6881:6881 - 6881:6881/udp - 8085:8085 # Qbittorrent - - 7788:8080 # Sabnzbd devices: - /dev/net/tun:/dev/net/tun volumes: @@ -39,10 +38,8 @@ services: - {{ downloaders_data_dir }}/sabnzbd-config:/config - {{ local_data_dir }}:{{ local_data_dir }} restart: unless-stopped - network_mode: "service:gluetun" - depends_on: - gluetun: - condition: service_healthy + ports: + - 7788:8080 deploy: resources: limits: diff --git a/config/ansible/tasks/servers/services/plex/docker-compose.yml.j2 b/config/ansible/tasks/servers/services/plex/docker-compose.yml.j2 index a569ffb..c67c5cf 100644 --- a/config/ansible/tasks/servers/services/plex/docker-compose.yml.j2 +++ b/config/ansible/tasks/servers/services/plex/docker-compose.yml.j2 @@ -14,9 +14,10 @@ services: volumes: - {{ plex_data_dir }}/config:/config - {{ plex_data_dir }}/transcode:/transcode - - {{ '/mnt/data/movies' }}:/movies - - {{ '/mnt/data/tvshows' }}:/tvshows - - {{ '/mnt/data/music' }}:/music + - /mnt/data/movies:/movies + - /mnt/data/tvshows:/tvshows + - /mnt/object_storage/tvshows:/tvshows_slow + - /mnt/data/music:/music deploy: resources: limits: diff --git a/config/ansible/tasks/servers/services/qdrant/docker-compose.yml.j2 b/config/ansible/tasks/servers/services/qdrant/docker-compose.yml.j2 deleted file mode 100644 index 8e9edde..0000000 --- a/config/ansible/tasks/servers/services/qdrant/docker-compose.yml.j2 +++ /dev/null @@ -1,17 +0,0 @@ -services: - qdrant: - image: qdrant/qdrant:latest - restart: always - ports: - - 6333:6333 - - 6334:6334 - expose: - - 6333 - - 6334 - - 6335 - volumes: - - {{ qdrant_data_dir }}:/qdrant/storage - deploy: - resources: - limits: - memory: 2G diff --git a/config/ansible/tasks/servers/services/qdrant/qdrant.yml b/config/ansible/tasks/servers/services/qdrant/qdrant.yml deleted file mode 100644 index 95c6f5f..0000000 --- a/config/ansible/tasks/servers/services/qdrant/qdrant.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- -- name: Deploy Qdrant service - block: - - name: Set Qdrant directories - ansible.builtin.set_fact: - qdrant_data_dir: "/mnt/services/qdrant" - qdrant_service_dir: "{{ ansible_env.HOME }}/.services/qdrant" - - - name: Create Qdrant directories - ansible.builtin.file: - path: "{{ qdrant_dir }}" - state: directory - mode: "0755" - loop: - - "{{ qdrant_data_dir }}" - - "{{ qdrant_service_dir }}" - loop_control: - loop_var: qdrant_dir - - - name: Deploy Qdrant docker-compose.yml - ansible.builtin.template: - src: docker-compose.yml.j2 - dest: "{{ qdrant_service_dir }}/docker-compose.yml" - mode: "0644" - register: qdrant_compose - - - name: Stop Qdrant service - ansible.builtin.command: docker compose -f "{{ qdrant_service_dir }}/docker-compose.yml" down --remove-orphans - when: qdrant_compose.changed - - - name: Start Qdrant service - ansible.builtin.command: docker compose -f "{{ qdrant_service_dir }}/docker-compose.yml" up -d - when: qdrant_compose.changed - tags: - - services - - qdrant diff --git a/config/home-manager/flake.lock b/config/home-manager/flake.lock index 87294b5..4517577 100644 --- a/config/home-manager/flake.lock +++ b/config/home-manager/flake.lock @@ -25,11 +25,11 @@ ] }, "locked": { - "lastModified": 1756245065, - "narHash": "sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI=", + "lastModified": 1756679287, + "narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "54b2879ce622d44415e727905925e21b8f833a98", + "rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8", "type": "github" }, "original": { @@ -41,11 +41,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756217674, - "narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=", + "lastModified": 1756886854, + "narHash": "sha256-6tooT142NLcFjt24Gi4B0G1pgWLvfw7y93sYEfSHlLI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620", + "rev": "0e6684e6c5755325f801bda1751a8a4038145d7d", "type": "github" }, "original": { @@ -57,11 +57,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1756125398, - "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", "type": "github" }, "original": { diff --git a/vscode/settings.json b/vscode/settings.json index d8946ef..b22d34d 100755 --- a/vscode/settings.json +++ b/vscode/settings.json @@ -78,8 +78,9 @@ "git show", "flutter analyze", "flutter" + "make" ], "kilo-code.deniedCommands": [], "github.copilot.nextEditSuggestions.enabled": true, "workbench.iconTheme": "vscode-icons" -} \ No newline at end of file +}