Merge branch 'master' into app/gandi-livedns

This commit is contained in:
Andrew Brereton 2022-11-18 11:11:17 +11:00
commit a575d6e7d1
139 changed files with 1325 additions and 257 deletions

39
.github/workflows/renovate-app-version.sh vendored Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# This script copies the version from docker-compose.yml to config.json.
app_name=$1
# find all docker-compose files under apps/$app_name (there should be only one)
docker_compose_files=$(find apps/$app_name -name docker-compose.yml)
for docker_compose_file in $docker_compose_files
do
# Assuming that the app version will be from the first docker image
first_service=$(yq '.services | keys | .[0]' $docker_compose_file)
image=$(yq .services.$first_service.image $docker_compose_file)
# Only apply changes if the format is <image>:<version>
if [[ "$image" == *":"* ]]; then
version=$(cut -d ":" -f2- <<< "$image")
# Trim the "v" prefix
trimmed_version=${version/#"v"}
# Find config file
config_file=${docker_compose_file/docker-compose.yml/config.json}
current_config_version=$(jq -r '.version' $config_file)
# Update the version in config.json, but only if there's a change
if [[ "$current_config_version" != "$trimmed_version" ]]; then
contents="$(jq --arg trimmed_version "$trimmed_version" '.version=$trimmed_version' $config_file)"
echo "${contents}" > $config_file
tipi_version=$(jq -r '.tipi_version' $config_file)
tipi_version=$((tipi_version + 1))
contents="$(jq --argjson tipi_version $tipi_version '.tipi_version=$tipi_version' $config_file)"
echo "${contents}" > $config_file
fi
fi
done

View File

@ -0,0 +1,39 @@
name: Update app version in Renovate Branches
on:
push:
branches: [ 'renovate/*' ]
jobs:
update-app-version:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Configure repo
run: |
git config --local user.email "githubaction@githubaction.com"
git config --local user.name "github-action update-app-version"
- name: Get list of updated files by the last commit in this branch separated by space
id: updated-files
run: |
echo "::set-output name=files::$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} | tr '\n' ' ')"
- name: Run renovate-app-version.sh on updated files
run: |
IFS=' ' read -ra files <<< "${{ steps.updated-files.outputs.files }}"
for file in "${files[@]}"; do
if [[ $file == *"docker-compose.yml"* ]]; then
app_name=$(echo $file | cut -d'/' -f 2)
./.github/workflows/renovate-app-version.sh $app_name
fi
done
- name: Commit & Push Changes
run: |
git add "apps/*/config.json" && git commit -m "Update app version" --no-verify && git push || true

30
.github/workflows/renovate.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Renovate
on:
workflow_dispatch:
inputs:
log-level:
type: choice
description: Select log level for Renovate
options:
- trace
- debug
- info
- warn
- error
default: into
required: false
schedule:
# The "*" (#42, asterisk) character has special semantics in YAML, so this
# string has to be quoted.
- cron: '0/15 * * * *'
jobs:
renovate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.0.0
- name: Self-hosted Renovate
uses: renovatebot/github-action@v32.118.0
with:
token: ${{ secrets.RENOVATE_TOKEN }}

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
node_modules/
package-lock.json
github.secrets

View File

@ -17,6 +17,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
- [Ghost](https://github.com/TryGhost/Ghost) - Ghost - Turn your audience into a business
- [Gitea](https://github.com/go-gitea/gitea) - Gitea - A painless self-hosted Git service
- [Gotify](https://github.com/gotify/server) - Gotify - Simple server for sending and receiving notification messages
- [Haven](https://github.com/havenweb/haven) - Haven is a self-hosted private blog and feedreader you can use instead of Facebook
- [Headscale](https://github.com/juanfont/headscale) - An open source, self-hosted implementation of the Tailscale control server
- [Homarr](https://github.com/ajnart/homarr) - A homepage for your server
- [Home Assistant](https://github.com/home-assistant/core) - Open source home automation that puts local control and privacy first
@ -26,6 +27,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
- [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app
- [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit
- [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) - Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup
- [Lidarr](https://github.com/Lidarr/Lidarr) - Looks and smells like Sonarr but made for music.
- [Mealie](https://github.com/hay-kot/mealie) - Self-hosted recipe manager and meal planner.
- [Monero Daemon](https://github.com/monero-project/monero/) - A network daemon for Monero: the secure, private, untraceable cryptocurrency
- [Monero p2pool Daemon](https://github.com/SChernykh/p2pool) - Decentralized pool for Monero mining
@ -41,6 +43,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
- [PrivateBin](https://github.com/PrivateBin/PrivateBin) - A minimalist, open source online pastebin where the server has zero knowledge of pasted data
- [Prowlarr](https://github.com/Prowlarr/Prowlarr/) - A torrent/usenet indexer manager/proxy
- [Proxitok](https://github.com/pablouser1/ProxiTok) - Open source alternative frontend for TikTok made using PHP
- [qBittorrent](https://github.com/qbittorrent/qBittorrent) - BitTorrent client
- [Radarr](https://github.com/Radarr/Radarr) - Movie collection manager for Usenet and BitTorrent users
- [Readarr](https://github.com/Readarr/Readarr) - Book Manager and Automation (Sonarr for Ebooks)
- [Resilio Sync](https://github.com/bt-sync) - Fast, reliable, and simple file sync and share solution

View File

@ -2,8 +2,9 @@
"$schema": "../schema.json",
"name": "Adguard",
"available": true,
"tipi_version": 2,
"version": "0.107.13",
"exposable": true,
"tipi_version": 5,
"version": "0.107.18",
"port": 8104,
"id": "adguard",
"categories": ["network", "security"],

View File

@ -2,7 +2,7 @@
version: "3.7"
services:
adguard:
image: adguard/adguardhome:v0.107.13
image: adguard/adguardhome:v0.107.18
container_name: adguard
volumes:
- "${APP_DATA_DIR}/data/work:/opt/adguardhome/work"
@ -14,3 +14,10 @@ services:
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/tcp
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/udp
- ${APP_PORT}:80
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.adguard.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.adguard.entrypoints: websecure
traefik.http.routers.adguard.service: adguard
traefik.http.routers.adguard.tls.certresolver: myresolver
traefik.http.services.adguard.loadbalancer.server.port: 80

16
apps/bazarr/config.json Normal file
View File

@ -0,0 +1,16 @@
{
"$schema": "../schema.json",
"name": "Bazarr",
"available": true,
"exposable": true,
"port": 6767,
"id": "bazarr",
"tipi_version": 3,
"version": "1.1.2",
"categories": ["media", "utilities"],
"description": "Bazarr is a companion application to Sonarr and Radarr that manages and downloads subtitles based on your requirements.",
"short_desc": "A companion application to Sonarr and Radarr that manages and downloads subtitles",
"author": "morpheus65535",
"source": "https://github.com/morpheus65535/bazarr",
"form_fields": []
}

View File

@ -0,0 +1,27 @@
version: "3.7"
services:
bazarr:
image: lscr.io/linuxserver/bazarr:1.1.2
container_name: bazarr
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
dns:
- ${DNS_IP}
volumes:
- /etc/localtime:/etc/localtime:ro
- ${APP_DATA_DIR}/data:/config
- ${ROOT_FOLDER_HOST}/media:/media
ports:
- ${APP_PORT}:6767
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.bazarr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.bazarr.entrypoints: websecure
traefik.http.routers.bazarr.service: bazarr
traefik.http.routers.bazarr.tls.certresolver: myresolver
traefik.http.services.bazarr.loadbalancer.server.port: 6767

View File

@ -0,0 +1,66 @@
# Bazarr
Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.
Be aware that Bazarr doesn't scan disk to detect series and movies: It only takes care of the series and movies that are indexed in Sonarr and Radarr.
## Major Features Include:
- Support for major platforms: Windows, Linux, macOS, Raspberry Pi, etc.
- Automatically add new series and episodes from Sonarr
- Automatically add new movies from Radarr
- Series or movies based configuration for subtitles languages
- Scan your existing library for internal and external subtitles and download any missing
- Keep history of what was downloaded from where and when
- Manual search so you can download subtitles on demand
- Upgrade subtitles previously downloaded when a better one is found
- Ability to delete external subtitles from disk
- Currently support 184 subtitles languages with support for forced/foreign subtitles (depending of providers)
- And a beautiful UI based on Sonarr
## Supported subtitles providers:
- Addic7ed
- Argenteam
- Assrt
- BetaSeries
- BSplayer
- Embedded Subtitles
- Gestdown.info
- GreekSubtitles
- Hosszupuska
- LegendasDivx
- LegendasTV
- Karagarga.in
- Ktuvit (Get `hashed_password` using method described [here](https://github.com/XBMCil/service.subtitles.ktuvit))
- Napiprojekt
- Napisy24
- Nekur
- OpenSubtitles.org
- Podnapisi
- RegieLive
- Sous-Titres.eu
- Subdivx
- subf2m.co
- Subs.sab.bz
- Subs4Free
- Subs4Series
- Subscene
- Subscenter
- Subsunacs.net
- SubSynchro
- Subtitrari-noi.ro
- subtitri.id.lv
- Subtitulamos.tv
- Sucha
- Supersubtitles
- Titlovi
- Titrari.ro
- Titulky.com
- TuSubtitulo
- TVSubtitles
- Wizdom
- XSubs
- Yavka.net
- YIFY Subtitles
- Zimuku

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -2,8 +2,9 @@
"$schema": "../schema.json",
"name": "Booksonic",
"available": true,
"exposable": true,
"port": 8040,
"tipi_version": 2,
"tipi_version": 3,
"version": "latest",
"id": "booksonic",
"categories": ["books", "media"],

View File

@ -16,4 +16,11 @@ services:
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.booksonic.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.booksonic.entrypoints: websecure
traefik.http.routers.booksonic.service: booksonic
traefik.http.routers.booksonic.tls.certresolver: myresolver
traefik.http.services.booksonic.loadbalancer.server.port: 4040

View File

@ -2,10 +2,11 @@
"$schema": "../schema.json",
"name": "Bookstack",
"available": true,
"exposable": true,
"port": 8119,
"id": "bookstack",
"tipi_version": 2,
"version": "22.07.3",
"tipi_version": 5,
"version": "22.10.20221021",
"description": "BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information. Default login: admin@admin.com password: password",
"short_desc": "BookStack is a self-hosted platform for organising and storing information.",
"author": "Dan Brown",

View File

@ -1,7 +1,7 @@
version: "3.7"
services:
bookstack:
image: lscr.io/linuxserver/bookstack:22.07.3
image: lscr.io/linuxserver/bookstack:22.10.20221021
container_name: bookstack
environment:
- APP_URL=http://${INTERNAL_IP}:${APP_PORT}
@ -20,6 +20,13 @@ services:
- bookstack-db
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.bookstack.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.bookstack.entrypoints: websecure
traefik.http.routers.bookstack.service: bookstack
traefik.http.routers.bookstack.tls.certresolver: myresolver
traefik.http.services.bookstack.loadbalancer.server.port: 80
bookstack-db:
image: lscr.io/linuxserver/mariadb

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -2,9 +2,10 @@
"$schema": "../schema.json",
"name": "Calibre-Web - EBook Reader",
"available": true,
"exposable": true,
"port": 8100,
"tipi_version": 1,
"version": "0.6.18",
"tipi_version": 3,
"version": "0.6.19",
"id": "calibre-web",
"categories": ["books"],
"description": "On the initial setup screen, enter /books as your calibre library location. \n Default admin login: Username: admin Password: admin123",

View File

@ -1,7 +1,7 @@
version: "3.7"
services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:0.6.18
image: lscr.io/linuxserver/calibre-web:0.6.19
container_name: calibre-web
environment:
- PUID=1000
@ -15,3 +15,10 @@ services:
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.calibre-web.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.calibre-web.entrypoints: websecure
traefik.http.routers.calibre-web.service: calibre-web
traefik.http.routers.calibre-web.tls.certresolver: myresolver
traefik.http.services.calibre-web.loadbalancer.server.port: 8083

View File

@ -2,11 +2,14 @@
"$schema": "../schema.json",
"name": "Code-Server - Web VS Code",
"available": true,
"exposable": true,
"port": 8101,
"id": "code-server",
"tipi_version": 1,
"version": "4.5.1",
"categories": ["development"],
"tipi_version": 5,
"version": "4.8.3",
"categories": [
"development"
],
"description": "",
"short_desc": "Code-server is VS Code running on a remote server, accessible through the browser.",
"author": "https://github.com/coder",

View File

@ -1,7 +1,7 @@
version: "3.7"
services:
code-server:
image: lscr.io/linuxserver/code-server:4.5.1
image: lscr.io/linuxserver/code-server:4.8.3
container_name: code-server
environment:
- PUID=1000
@ -17,3 +17,10 @@ services:
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.code-server.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.code-server.entrypoints: websecure
traefik.http.routers.code-server.service: code-server
traefik.http.routers.code-server.tls.certresolver: myresolver
traefik.http.services.code-server.loadbalancer.server.port: 8443

View File

@ -2,9 +2,10 @@
"$schema": "../schema.json",
"name": "File Browser",
"available": true,
"exposable": true,
"port": 8096,
"id": "filebrowser",
"tipi_version": 1,
"tipi_version": 2,
"version": "s6",
"categories": ["utilities"],
"description": "Reliable and Performant File Management Desktop Sync and File Sharing\n Default credentials: admin / admin",

View File

@ -15,3 +15,10 @@ services:
- ${APP_DATA_DIR}/data/config:/config
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.filebrowser.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.filebrowser.entrypoints: websecure
traefik.http.routers.filebrowser.service: filebrowser
traefik.http.routers.filebrowser.tls.certresolver: myresolver
traefik.http.services.filebrowser.loadbalancer.server.port: 80

View File

@ -2,9 +2,10 @@
"$schema": "../schema.json",
"name": "Firefly III",
"available": true,
"exposable": true,
"port": 8115,
"tipi_version": 1,
"version": "latest",
"tipi_version": 3,
"version": "version-5.7.11",
"id": "firefly-iii",
"categories": ["finance"],
"description": "",

View File

@ -2,7 +2,7 @@ version: '3.9'
services:
firefly-iii:
image: fireflyiii/core:latest
image: fireflyiii/core:version-5.7.11
container_name: firefly-iii
restart: unless-stopped
volumes:
@ -42,6 +42,13 @@ services:
- APP_URL=http://localhost:${APP_PORT}
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.firefly-iii.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.firefly-iii.entrypoints: websecure
traefik.http.routers.firefly-iii.service: firefly-iii
traefik.http.routers.firefly-iii.tls.certresolver: myresolver
traefik.http.services.firefly-iii.loadbalancer.server.port: 8080
firefly-iii-db:
container_name: firefly-iii-db

View File

@ -5,8 +5,8 @@
"exposable": true,
"port": 8086,
"id": "freshrss",
"tipi_version": 2,
"version": "1.19.2",
"tipi_version": 3,
"version": "1.20.0",
"categories": ["utilities"],
"description": "FreshRSS is a self-hosted RSS feed aggregator like Leed or Kriss Feed.\nIt is lightweight, easy to work with, powerful, and customizable.\n\nIt is a multi-user application with an anonymous reading mode. It supports custom tags. There is an API for (mobile) clients, and a Command-Line Interface.\n\nThanks to the WebSub standard (formerly PubSubHubbub), FreshRSS is able to receive instant push notifications from compatible sources, such as Mastodon, Friendica, WordPress, Blogger, FeedBurner, etc.\n\nFreshRSS natively supports basic Web scraping, based on XPath, for Web sites not providing any RSS / Atom feed.\n\nFinally, it supports extensions for further tuning.",
"short_desc": "A free, self-hostable aggregator… ",

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
freshrss:
image: lscr.io/linuxserver/freshrss:1.19.2
image: lscr.io/linuxserver/freshrss:1.20.0
container_name: freshrss
environment:
- PUID=1000
@ -21,12 +21,4 @@ services:
traefik.http.routers.freshrss.entrypoints: websecure
traefik.http.routers.freshrss.service: freshrss
traefik.http.routers.freshrss.tls.certresolver: myresolver
traefik.http.services.freshrss.loadbalancer.server.port: 80
# labels:
# traefik.enable: true
# traefik.http.routers.freshrss.rule: Host(`freshrss.tipi.home`)
# traefik.http.routers.freshrss.service: freshrss
# traefik.http.routers.freshrss.tls: true
# traefik.http.routers.freshrss.entrypoints: websecure
# traefik.http.services.freshrss.loadbalancer.server.port: 80
traefik.http.services.freshrss.loadbalancer.server.port: 80

View File

@ -5,9 +5,12 @@
"available": true,
"exposable": true,
"id": "ghost",
"tipi_version": 2,
"version": "5.7.0",
"categories": ["social", "media"],
"tipi_version": 6,
"version": "5.22.9",
"categories": [
"social",
"media"
],
"description": "Ghost is a powerful app for new-media creators to publish, share, and grow a business around their content. It comes with modern tools to build a website, publish content, send newsletters & offer paid subscriptions to members.",
"short_desc": "Ghost - Turn your audience into a business.",
"author": "TryGhost",

View File

@ -3,7 +3,7 @@ version: '3.9'
services:
ghost:
image: ghost:5.7.0
image: ghost:5.22.9
container_name: ghost
depends_on:
- ghostdb

View File

@ -3,9 +3,10 @@
"name": "Gitea",
"port": 8108,
"available": true,
"exposable": true,
"id": "gitea",
"tipi_version": 1,
"version": "1.16.8",
"tipi_version": 3,
"version": "1.17.3",
"categories": ["development"],
"description": "Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket, and GitLab. Gitea is a fork of Gogs. See the Gitea Announcement blog post to read about the justification for a fork.",
"short_desc": "Gitea - Git with a cup of tea · A painless self-hosted Git service. · Cross-platform · Easy to install · Lightweight · Open Source.",

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
gitea:
image: gitea/gitea:1.16.8
image: gitea/gitea:1.17.3
container_name: gitea
environment:
- USER_UID=1000
@ -13,8 +13,6 @@ services:
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: unless-stopped
networks:
- tipi_main_network
volumes:
- ${APP_DATA_DIR}/data/gitea:/data
ports:
@ -22,6 +20,15 @@ services:
- "222:22"
depends_on:
- gitea-db
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.gitea.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.gitea.entrypoints: websecure
traefik.http.routers.gitea.service: gitea
traefik.http.routers.gitea.tls.certresolver: myresolver
traefik.http.services.gitea.loadbalancer.server.port: 3000
gitea-db:
container_name: gitea-db

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -2,9 +2,9 @@
"$schema": "../schema.json",
"name": "Haven",
"available": true,
"exposable": true,
"port": 8130,
"id": "haven",
"exposable": true,
"tipi_version": 1,
"version": "a0280ce",
"categories": ["social"],

View File

@ -2,10 +2,11 @@
"$schema": "../schema.json",
"name": "Homarr",
"available": true,
"exposable": true,
"port": 8102,
"id": "homarr",
"tipi_version": 2,
"version": "0.9.2",
"tipi_version": 4,
"version": "0.10.3",
"categories": ["utilities"],
"description": "A homepage for your server.",
"short_desc": "Homarr is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place.",

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:0.9.2
image: ghcr.io/ajnart/homarr:0.10.3
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data/config:/app/data/configs
@ -11,3 +11,10 @@ services:
- ${APP_PORT}:7575
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.homarr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.homarr.entrypoints: websecure
traefik.http.routers.homarr.service: homarr
traefik.http.routers.homarr.tls.certresolver: myresolver
traefik.http.services.homarr.loadbalancer.server.port: 7575

View File

@ -1,6 +1,25 @@
version: "3.7"
services:
immich:
container_name: immich
image: altran1502/immich-proxy:release
ports:
- ${APP_PORT}:8080
depends_on:
- immich-web
- immich-server
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.immich.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.immich.entrypoints: websecure
traefik.http.routers.immich.service: immich
traefik.http.routers.immich.tls.certresolver: myresolver
traefik.http.services.immich.loadbalancer.server.port: 8080
immich-server:
container_name: immich-server
image: altran1502/immich-server:release
@ -93,23 +112,6 @@ services:
networks:
- tipi_main_network
immich:
container_name: immich
image: altran1502/immich-proxy:release
ports:
- ${APP_PORT}:8080
depends_on:
- immich-web
- immich-server
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.immich.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.immich.entrypoints: websecure
traefik.http.routers.immich.service: immich
traefik.http.routers.immich.tls.certresolver: myresolver
traefik.http.services.immich.loadbalancer.server.port: 8080

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -6,7 +6,8 @@
"port": 8095,
"id": "invidious",
"version": "latest",
"tipi_version": 2,
"tipi_version": 4,
"supported_architectures": ["arm64", "amd64"],
"categories": ["media", "social"],
"description": "Invidious is an open source alternative front-end to YouTube.",
"short_desc": "An alternative front-end to YouTube",

View File

@ -1,7 +1,6 @@
version: "3.7"
services:
invidious:
user: 1000:1000
container_name: invidious
image: quay.io/invidious/invidious:latest-arm64
restart: unless-stopped
@ -24,7 +23,8 @@ services:
timeout: 5s
retries: 2
depends_on:
- invidious-db
invidious-db:
condition: service_healthy
networks:
- tipi_main_network
labels:
@ -36,9 +36,8 @@ services:
traefik.http.services.invidious.loadbalancer.server.port: 3000
invidious-db:
user: 1000:1000
container_name: invidious-db
image: docker.io/library/postgres:14
image: postgres:14
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data

View File

@ -1,7 +1,6 @@
version: "3.7"
services:
invidious:
user: 1000:1000
container_name: invidious
image: quay.io/invidious/invidious:latest
restart: unless-stopped
@ -25,7 +24,8 @@ services:
timeout: 5s
retries: 2
depends_on:
- invidious-db
invidious-db:
condition: service_healthy
networks:
- tipi_main_network
labels:
@ -37,9 +37,8 @@ services:
traefik.http.services.invidious.loadbalancer.server.port: 3000
invidious-db:
user: 1000:1000
container_name: invidious-db
image: docker.io/library/postgres:14
image: postgres:14
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data

View File

@ -2,10 +2,11 @@
"$schema": "../schema.json",
"name": "Jackett",
"available": true,
"exposable": true,
"port": 8097,
"id": "jackett",
"tipi_version": 1,
"version": "0.20.1342",
"tipi_version": 4,
"version": "0.20.2236",
"description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar3, Lidarr, DuckieTV, qBittorrent, Nefarious etc.) into tracker-site-specific http queries, parses the html or json response, and then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches.",
"short_desc": "API Support for your favorite torrent trackers ",
"categories": ["media", "utilities"],

View File

@ -1,7 +1,7 @@
version: "3.7"
services:
jackett:
image: lscr.io/linuxserver/jackett:0.20.1342
image: lscr.io/linuxserver/jackett:0.20.2236
container_name: jackett
environment:
- PUID=1000
@ -18,3 +18,10 @@ services:
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.jackett.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.jackett.entrypoints: websecure
traefik.http.routers.jackett.service: jackett
traefik.http.routers.jackett.tls.certresolver: myresolver
traefik.http.services.jackett.loadbalancer.server.port: 9117

View File

@ -5,8 +5,8 @@
"exposable": true,
"port": 8091,
"id": "jellyfin",
"tipi_version": 2,
"version": "10.8.4",
"tipi_version": 4,
"version": "10.8.7",
"categories": ["media"],
"description": "Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!",
"short_desc": "A media server for your home collection",

View File

@ -1,7 +1,7 @@
version: "3.7"
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:10.8.4
image: lscr.io/linuxserver/jellyfin:10.8.7
container_name: jellyfin
volumes:
- ${APP_DATA_DIR}/data/config:/config

View File

@ -5,8 +5,8 @@
"exposable": true,
"port": 8099,
"id": "joplin",
"tipi_version": 2,
"version": "2.7.4",
"tipi_version": 4,
"version": "2.9.7",
"categories": ["utilities"],
"description": "Default credentials: admin@localhost / admin",
"short_desc": "Note taking and to-do application with synchronisation",

View File

@ -1,22 +1,9 @@
version: "3.7"
services:
db-joplin:
container_name: db-joplin
image: postgres:14.2
volumes:
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${JOPLIN_DB_PASSWORD}
- POSTGRES_USER=tipi
- POSTGRES_DB=joplin
networks:
- tipi_main_network
joplin:
container_name: joplin
image: florider89/joplin-server:2.7.4
image: florider89/joplin-server:2.9.7
restart: unless-stopped
depends_on:
- db-joplin
@ -46,3 +33,16 @@ services:
traefik.http.services.joplin.loadbalancer.passhostheader: true
traefik.http.middlewares.joplin-sslheader.headers.customrequestheaders.X-Forwarded-Proto: http
traefik.http.routers.joplin-sslheader.middlewares: joplin-sslheader@docker
db-joplin:
container_name: db-joplin
image: postgres:14.2
volumes:
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${JOPLIN_DB_PASSWORD}
- POSTGRES_USER=tipi
- POSTGRES_DB=joplin
networks:
- tipi_main_network

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
libreddit:
container_name: libreddit
image: spikecodes/libreddit:arm
image: spikecodes/libreddit:armv7
dns:
- ${DNS_IP}
ports:

View File

@ -0,0 +1,19 @@
version: "3.7"
services:
libreddit:
container_name: libreddit
image: spikecodes/libreddit:arm
dns:
- ${DNS_IP}
ports:
- ${APP_PORT}:8080
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.libreddit.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.libreddit.entrypoints: websecure
traefik.http.routers.libreddit.service: libreddit
traefik.http.routers.libreddit.tls.certresolver: myresolver
traefik.http.services.libreddit.loadbalancer.server.port: 8080

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
libreddit:
container_name: libreddit
image: spikecodes/libreddit
image: spikecodes/libreddit:latest
dns:
- ${DNS_IP}
ports:

View File

@ -0,0 +1,50 @@
{
"$schema": "../schema.json",
"name": "LibrePhotos",
"port": 8132,
"available": true,
"exposable": true,
"id": "librephotos",
"tipi_version": 4,
"version": "2022w41",
"supported_architectures": ["amd64", "arm64"],
"categories": ["photography"],
"description": "",
"short_desc": "",
"author": "Niaz Faridani-Rad",
"source": "https://github.com/LibrePhotos/librephotos",
"form_fields": [
{
"type": "email",
"label": "LibrePhotos admin email",
"required": true,
"env_variable": "LIBREPHOTOS_EMAIL"
},
{
"type": "text",
"label": "LibrePhotos admin username",
"max": 50,
"min": 3,
"required": true,
"env_variable": "LIBREPHOTOS_USERNAME"
},
{
"type": "password",
"label": "LibrePhotos admin password",
"max": 50,
"min": 8,
"required": true,
"env_variable": "LIBREPHOTOS_PASSWORD"
},
{
"type": "random",
"label": "DB password",
"env_variable": "LIBREPHOTOS_DB_PASSWORD"
},
{
"type": "random",
"label": "Secret key",
"env_variable": "LIBREPHOTOS_SECRET_KEY"
}
]
}

0
apps/librephotos/data/cache/.gitkeep vendored Normal file
View File

View File

View File

@ -0,0 +1,62 @@
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
# React routes are entirely on the App side in the web broswer
# Always proxy to root with the same page request when nginx 404s
error_page 404 /;
proxy_intercept_errors on;
proxy_set_header Host $host;
proxy_pass http://librephotos-frontend:3000/;
}
location ~ ^/(api|media)/ {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host librephotos-backend;
include uwsgi_params;
proxy_pass http://librephotos-backend:8001;
}
# needed for webpack-dev-server
location /ws {
proxy_pass http://librephotos-frontend:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# Django media
location /protected_media {
internal;
alias /protected_media/;
}
location /static/drf-yasg {
proxy_pass http://librephotos-backend:8001;
}
location /data {
internal;
alias /data/;
}
# Original Photos
location /original {
internal;
alias /data/;
}
# Nextcloud Original Photos
location /nextcloud_original {
internal;
alias /data/nextcloud_media/;
}
}
}

View File

View File

@ -0,0 +1,91 @@
version: "3.7"
services:
librephotos:
image: reallibrephotos/librephotos-proxy:2022w41
container_name: librephotos
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data/scan:/data
- ${APP_DATA_DIR}/data/protected_media:/protected_media
- ${APP_DATA_DIR}/data/proxy/nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- ${APP_PORT}:80
depends_on:
- librephotos-backend
- librephotos-frontend
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.librephotos.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.librephotos.entrypoints: websecure
traefik.http.routers.librephotos.service: librephotos
traefik.http.routers.librephotos.tls.certresolver: myresolver
traefik.http.services.librephotos.loadbalancer.server.port: 80
librephotos-db:
image: postgres:14
container_name: librephotos-db
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${LIBREPHOTOS_DB_PASSWORD}
POSTGRES_USER: tipi
POSTGRES_DB: librephotos
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
#Checking health of Postgres db
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 5s
timeout: 5s
retries: 5
networks:
- tipi_main_network
librephotos-frontend:
image: reallibrephotos/librephotos-frontend:2022w41
container_name: librephotos-frontend
restart: unless-stopped
depends_on:
- librephotos-backend
networks:
- tipi_main_network
librephotos-backend:
image: reallibrephotos/librephotos:2022w41
container_name: librephotos-backend
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data/scan:/data
- ${APP_DATA_DIR}/data/protected_media:/protected_media
- ${APP_DATA_DIR}/data/logs:/logs
- ${APP_DATA_DIR}/data/cache:/root/.cache
environment:
- SECRET_KEY=${LIBREPHOTOS_SECRET_KEY}
- BACKEND_HOST=librephotos-backend
- ADMIN_EMAIL=${LIBREPHOTOS_EMAIL}
- ADMIN_USERNAME=${LIBREPHOTOS_USERNAME}
- ADMIN_PASSWORD=${LIBREPHOTOS_PASSWORD}
- DB_BACKEND=postgresql
- DB_NAME=librephotos
- DB_USER=tipi
- DB_PASS=${LIBREPHOTOS_DB_PASSWORD}
- DB_HOST=librephotos-db
- DB_PORT=5432
- REDIS_HOST=librephotos-redis
- REDIS_PORT=6379
- ALLOW_UPLOAD=true
- DEBUG=0
# Wait for Postgres
depends_on:
librephotos-db:
condition: service_healthy
networks:
- tipi_main_network
librephotos-redis:
image: redis:6
container_name: librephotos-redis
restart: unless-stopped
networks:
- tipi_main_network

View File

@ -0,0 +1,24 @@
- The [demo is available here](https://demo2.librephotos.com/). User is ```demo```, password is ```demo1234```.
- You can watch development videos on [Niaz Faridani-Rad's channel](https://www.youtube.com/channel/UCZJ2pk2BPKxwbuCV9LWDR0w)
- You can join our [Discord](https://discord.gg/xwRvtSDGWb).
![](https://github.com/LibrePhotos/librephotos/blob/dev/screenshots/mockups_main_fhd.png?raw=true)
<sub>Mockup designed by rawpixel.com / Freepik</sub>
## Installation
Step-by-step installation instructions are available in our [documentation](https://docs.librephotos.com/1/)
## Features
- Support for all types of photos including raw photos
- Support for videos
- Timeline view
- Scans pictures on the file system
- Multiuser support
- Generate albums based on events like "Thursday in Berlin"
- Face recognition / Face classification
- Reverse geocoding
- Object / Scene detection
- Semantic image search
- Search by metadata

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -5,8 +5,8 @@
"exposable": true,
"port": 8121,
"id": "libretranslate",
"tipi_version": 1,
"version": "v1.2.9",
"tipi_version": 2,
"version": "1.3.1",
"categories": ["utilities"],
"description": "Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source Argos Translate library.",
"short_desc": "Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup.",

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
libretranslate:
container_name: libretranslate
image: libretranslate/libretranslate:v1.2.9
image: libretranslate/libretranslate:v1.3.1
dns:
- ${DNS_IP}
ports:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

16
apps/lidarr/config.json Normal file
View File

@ -0,0 +1,16 @@
{
"$schema": "../schema.json",
"name": "Lidarr",
"available": true,
"exposable": true,
"port": 8131,
"id": "lidarr",
"tipi_version": 1,
"version": "1.0.2.2592",
"categories": ["media", "music"],
"description": "Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.",
"short_desc": " Looks and smells like Sonarr but made for music.",
"author": "lidarr.audio",
"source": "https://github.com/Lidarr/Lidarr",
"form_fields": []
}

View File

@ -0,0 +1,25 @@
version: "3.7"
services:
lidarr:
image: lscr.io/linuxserver/lidarr:1.0.2
container_name: lidarr
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
volumes:
- /etc/localtime:/etc/localtime:ro
- ${APP_DATA_DIR}/data:/config
- ${ROOT_FOLDER_HOST}/media:/media
ports:
- ${APP_PORT}:8686
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.lidarr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.lidarr.entrypoints: websecure
traefik.http.routers.lidarr.service: lidarr
traefik.http.routers.lidarr.tls.certresolver: myresolver
traefik.http.services.lidarr.loadbalancer.server.port: 8686

View File

@ -0,0 +1,17 @@
## Looks and smells like Sonarr but made for music.
Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
### Major Features Include
- Support for major platforms: Windows, Linux, macOS, Raspberry Pi, etc.
- Automatically detects new tracks.
- Can scan your existing library and download any missing tracks.
- Can watch for better quality of the tracks you already have and do an automatic upgrade.
- Automatic failed download handling will try another release if one fails
- Manual search so you can pick any release or to see why a release was not downloaded automatically
- Fully configurable track renaming
- Full integration with SABnzbd and NZBGet
- Full integration with Kodi, Plex (notification, library update, metadata)
- Full support for specials and multi-album releases
- And a beautiful UI

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -3,8 +3,9 @@
"name": "Mealie",
"port": 8114,
"available": true,
"exposable": true,
"id": "mealie",
"tipi_version": 1,
"tipi_version": 2,
"version": "v0.5.6",
"description": "Mealie is a self-hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and Mealie will automatically import the relevant data or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications. Default username / password is changeme@email.com / MyPassword",
"short_desc": "Mealie is a self-hosted recipe manager and meal planner.",

View File

@ -12,4 +12,11 @@ services:
volumes:
- ${APP_DATA_DIR}/data:/app/data
networks:
- tipi_main_network
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.mealie.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.mealie.entrypoints: websecure
traefik.http.routers.mealie.service: mealie
traefik.http.routers.mealie.tls.certresolver: myresolver
traefik.http.services.mealie.loadbalancer.server.port: 80

18
apps/memos/config.json Normal file
View File

@ -0,0 +1,18 @@
{
"$schema": "../schema.json",
"name": "Memos",
"available": true,
"exposable": true,
"port": 5230,
"id": "memos",
"tipi_version": 1,
"version": "0.7.2",
"categories": ["utilities"],
"description": "Memo hub for knowledge management and collaboration.",
"short_desc": "Memo hub for knowledge management and collaboration.",
"author": "boojack",
"website": "https://usememos.com/",
"source": "https://github.com/usememos/memos",
"supported_architectures": ["arm64", "amd64"],
"form_fields": []
}

View File

@ -0,0 +1,19 @@
version: "3.7"
services:
memos:
image: neosmemo/memos:0.7.2
container_name: memos
volumes:
- ${APP_DATA_DIR}/memos:/var/opt/memos
ports:
- ${APP_PORT}:5230
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.memos.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.memos.entrypoints: websecure
traefik.http.routers.memos.service: memos
traefik.http.routers.memos.tls.certresolver: myresolver
traefik.http.services.memos.loadbalancer.server.port: 5230

View File

@ -0,0 +1,10 @@
## An open-source, self-hosted memo hub for knowledge management and collaboration.
- Open source and free forever;
- Support for self-hosting with Docker in seconds;
- Plain textarea first and support some useful markdown syntax;
- Collaborate and share with your teammates;
- RESTful API for self-service.
![Screenshot](https://raw.githubusercontent.com/usememos/memos/main/resources/demo.webp)

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,26 @@
{
"$schema": "../schema.json",
"name": "Minecraft Server",
"available": true,
"exposable": true,
"no_gui": true,
"port": 25565,
"id": "minecraft-server",
"tipi_version": 1,
"version": "latest",
"categories": ["gaming"],
"description": "Minecraft Server",
"short_desc": "Run a minecraft server",
"author": "Geoff Bourne",
"source": "https://github.com/itzg/docker-minecraft-server",
"form_fields": [
{
"type": "text",
"label": "Minecraft version",
"hint": "The version of Minecraft to use, leave empty for latest",
"placeholder": "1.18.2",
"required": false,
"env_variable": "MC_VERSION"
}
]
}

View File

@ -0,0 +1,25 @@
version: "3.7"
services:
minecraft-server:
container_name: minecraft-server
image: itzg/minecraft-server
ports:
- ${APP_PORT}:25565
environment:
EULA: "TRUE"
VERSION: ${MC_VERSION:-LATEST}
tty: true
stdin_open: true
restart: unless-stopped
volumes:
- ${APP_DATA_DIR}/data/minecraft-data:/data
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.minecraft-server.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.minecraft-server.entrypoints: websecure
traefik.http.routers.minecraft-server.service: minecraft-server
traefik.http.routers.minecraft-server.tls.certresolver: myresolver
traefik.http.services.minecraft-server.loadbalancer.server.port: 25565

View File

@ -0,0 +1,9 @@
Minecraft Server that will automatically download selected version at startup
Once you have installed the app, the server will be available on port 25565 (default Minecraft port).
In order to enter the server console run the following command on your server:
```
docker exec -i mc rcon-cli
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -5,12 +5,14 @@
"exposable": true,
"port": 18080,
"id": "monerod",
"tipi_version": 1,
"version": "latest",
"tipi_version": 2,
"version": "v0.18.1.1",
"categories": ["finance"],
"description": "A device on the Internet running the Monero software, with a full copy of the Monero blockchain, actively assisting the Monero network. This is a simple and straightforward Dockerized monerod built from source and exposing standard ports. Please note that running this requires >50GB of free disk space and is best run on solid-state (SSD) storage.",
"short_desc": "Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure.",
"author": "sethforprivacy",
"source": "https://github.com/sethforprivacy/simple-monerod-docker",
"form_fields": []
"form_fields": [],
"uid": 1000,
"gid": 1000
}

View File

@ -1,7 +1,7 @@
version: "3.7"
services:
monerod:
image: sethsimmons/simple-monerod:latest
image: sethsimmons/simple-monerod:v0.18.1.1
dns:
- ${DNS_IP}
ports:

View File

@ -2,11 +2,14 @@
"$schema": "../schema.json",
"name": "n8n",
"available": true,
"exposable": true,
"port": 8094,
"id": "n8n",
"tipi_version": 2,
"version": "0.195.5",
"categories": ["automation"],
"tipi_version": 9,
"version": "0.202.1",
"categories": [
"automation"
],
"description": "n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly versatile, enabling you to connect anything to everything.",
"short_desc": "Workflow Automation Tool. Alternative to Zapier",
"author": "n8n.io",

View File

@ -1,22 +1,9 @@
version: "3.7"
services:
db-n8n:
container_name: db-n8n
image: postgres:14.2
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_USER=tipi
- POSTGRES_DB=n8n
networks:
- tipi_main_network
n8n:
container_name: n8n
image: n8nio/n8n:0.195.5
image: n8nio/n8n:0.202.1
restart: unless-stopped
ports:
- ${APP_PORT}:5678
@ -34,3 +21,25 @@ services:
- db-n8n
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.n8n.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.n8n.entrypoints: websecure
traefik.http.routers.n8n.service: n8n
traefik.http.routers.n8n.tls.certresolver: myresolver
traefik.http.services.n8n.loadbalancer.server.port: 5678
db-n8n:
container_name: db-n8n
image: postgres:14.2
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_USER=tipi
- POSTGRES_DB=n8n
networks:
- tipi_main_network

View File

@ -5,9 +5,12 @@
"exposable": true,
"id": "navidrome",
"description": "Modern Music Server and Streamer compatible with Subsonic/Airsonic",
"tipi_version": 1,
"version": "0.47.5",
"categories": ["media", "music"],
"tipi_version": 3,
"version": "0.48.0",
"categories": [
"media",
"music"
],
"short_desc": "A selfhosted music server",
"author": "https://github.com/Bvoxl",
"source": "https://github.com/navidrome/navidrome/",

View File

@ -2,7 +2,7 @@ version: "3"
services:
navidrome:
container_name: navidrome
image: deluan/navidrome:latest
image: deluan/navidrome:0.48.0
ports:
- ${APP_PORT}:4533
restart: unless-stopped

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -5,9 +5,11 @@
"exposable": true,
"port": 8083,
"id": "nextcloud",
"tipi_version": 4,
"version": "24.0.4",
"categories": ["data"],
"tipi_version": 6,
"version": "25.0.0-apache",
"categories": [
"data"
],
"description": "Nextcloud is a self-hosted, open source, and fully-featured cloud storage solution for your personal files, office documents, and photos.",
"short_desc": "Productivity platform that keeps you in control",
"author": "Nextcloud GmbH",

View File

@ -1,44 +1,9 @@
version: "3.7"
services:
db-nextcloud:
container_name: db-nextcloud
image: postgres:14.2
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=tipi
- POSTGRES_USER=tipi
- POSTGRES_DB=nextcloud
networks:
- tipi_main_network
redis-nextcloud:
container_name: redis-nextcloud
user: "1000:1000"
image: redis:6.2.6
restart: on-failure
volumes:
- "${APP_DATA_DIR}/data/redis:/data"
networks:
- tipi_main_network
cron:
image: nextcloud:24.0.4-apache
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/nextcloud:/var/www/html
entrypoint: /cron.sh
depends_on:
- db-nextcloud
- redis-nextcloud
networks:
- tipi_main_network
nextcloud:
container_name: nextcloud
image: nextcloud:24.0.4-apache
image: nextcloud:25.0.0-apache
restart: unless-stopped
ports:
- ${APP_PORT}:80
@ -80,3 +45,40 @@ services:
traefik.http.middlewares.nextcloud.headers.customRequestHeaders.X-Forwarded-Proto: https
traefik.http.middlewares.nextcloud-https.redirectscheme.scheme: https
traefik.http.routers.nextcloud-http.middlewares: nextcloud-https@docker
db-nextcloud:
container_name: db-nextcloud
image: postgres:14.2
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=tipi
- POSTGRES_USER=tipi
- POSTGRES_DB=nextcloud
networks:
- tipi_main_network
redis-nextcloud:
container_name: redis-nextcloud
user: "1000:1000"
image: redis:6.2.6
restart: on-failure
volumes:
- "${APP_DATA_DIR}/data/redis:/data"
networks:
- tipi_main_network
cron:
image: nextcloud:25.0.0-apache
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/nextcloud:/var/www/html
entrypoint: /cron.sh
depends_on:
- db-nextcloud
- redis-nextcloud
networks:
- tipi_main_network

View File

@ -3,9 +3,10 @@
"name": "Node-RED",
"port": 8111,
"available": true,
"exposable": true,
"id": "nodered",
"tipi_version": 1,
"version": "3.0.0",
"tipi_version": 3,
"version": "3.0.2",
"categories": ["automation"],
"description": "Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.",
"short_desc": "Low-code programming for event-driven applications",

View File

@ -3,11 +3,18 @@ version: "3.7"
services:
nodered:
container_name: nodered
image: nodered/node-red:3.0.0
image: nodered/node-red:3.0.2
restart: unless-stopped
ports:
- ${APP_PORT}:1880
volumes:
- ${APP_DATA_DIR}/data:/data
networks:
- tipi_main_network
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.nodered.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.nodered.entrypoints: websecure
traefik.http.routers.nodered.service: nodered
traefik.http.routers.nodered.tls.certresolver: myresolver
traefik.http.services.nodered.loadbalancer.server.port: 1880

View File

@ -1,15 +1,16 @@
{
"$schema": "../schema.json",
"name": "Overseerr",
"available": true,
"port": 8116,
"id": "overseerr",
"tipi_version": 1,
"version": "1.29.0",
"categories": ["media", "utilities"],
"description": "Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex!",
"short_desc": "Request management and media discovery tool for the Plex ecosystem",
"author": "sct",
"source": "https://github.com/sct/overseerr",
"form_fields": []
}
{
"$schema": "../schema.json",
"name": "Overseerr",
"available": true,
"exposable": true,
"port": 8116,
"id": "overseerr",
"tipi_version": 3,
"version": "1.30.1",
"categories": ["media", "utilities"],
"description": "Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex!",
"short_desc": "Request management and media discovery tool for the Plex ecosystem",
"author": "sct",
"source": "https://github.com/sct/overseerr",
"form_fields": []
}

View File

@ -2,7 +2,7 @@ version: "3"
services:
overseerr:
container_name: overseerr
image: sctx/overseerr:1.29.0
image: sctx/overseerr:1.30.1
environment:
- TZ=${TZ}
volumes:
@ -14,3 +14,10 @@ services:
- ${DNS_IP}
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.overseerr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.overseerr.entrypoints: websecure
traefik.http.routers.overseerr.service: overseerr
traefik.http.routers.overseerr.tls.certresolver: myresolver
traefik.http.services.overseerr.loadbalancer.server.port: 5055

View File

@ -0,0 +1,64 @@
version: "3.7"
services:
photoprism:
image: photoprism/photoprism:armv7
container_name: photoprism
depends_on:
- photoprism-db
restart: unless-stopped
ports:
- "${APP_PORT}:2342"
environment:
PHOTOPRISM_ADMIN_PASSWORD: ${PHOTOPRISM_ADMIN_PASSWORD}
PHOTOPRISM_SITE_URL: "${APP_PROTOCOL:-http}://${APP_DOMAIN}/"
PHOTOPRISM_ORIGINALS_LIMIT: 5000
PHOTOPRISM_HTTP_COMPRESSION: "gzip"
PHOTOPRISM_LOG_LEVEL: "info"
PHOTOPRISM_PUBLIC: "false"
PHOTOPRISM_READONLY: "false"
PHOTOPRISM_EXPERIMENTAL: "false"
PHOTOPRISM_DISABLE_CHOWN: "false"
PHOTOPRISM_DISABLE_WEBDAV: "false"
PHOTOPRISM_DISABLE_SETTINGS: "false"
PHOTOPRISM_DISABLE_TENSORFLOW: "false"
PHOTOPRISM_DISABLE_FACES: "false"
PHOTOPRISM_DISABLE_CLASSIFICATION: "false"
PHOTOPRISM_DISABLE_RAW: "false"
PHOTOPRISM_RAW_PRESETS: "false"
PHOTOPRISM_JPEG_QUALITY: 85
PHOTOPRISM_DETECT_NSFW: "false"
PHOTOPRISM_UPLOAD_NSFW: "true"
PHOTOPRISM_DATABASE_DRIVER: "mysql"
PHOTOPRISM_DATABASE_SERVER: "photoprism-db:3306"
PHOTOPRISM_DATABASE_NAME: "photoprism"
PHOTOPRISM_DATABASE_USER: "photoprism"
PHOTOPRISM_DATABASE_PASSWORD: "${DB_PASSWORD}"
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
working_dir: "/photoprism"
volumes:
- "${ROOT_FOLDER_HOST}/media/data/images:/photoprism/originals"
- "${APP_DATA_DIR}/data/photoprism/storage:/photoprism/storage"
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.photoprism.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.photoprism.entrypoints: websecure
traefik.http.routers.photoprism.service: photoprism
traefik.http.routers.photoprism.tls.certresolver: myresolver
traefik.http.services.photoprism.loadbalancer.server.port: 2342
photoprism-db:
restart: unless-stopped
image: mariadb:10.8
container_name: photoprism-db
command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "${APP_DATA_DIR}/data/mariadb:/var/lib/mysql"
environment:
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: "${DB_PASSWORD}"
MARIADB_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
networks:
- tipi_main_network

View File

@ -0,0 +1,64 @@
version: "3.7"
services:
photoprism:
image: photoprism/photoprism:latest
container_name: photoprism
depends_on:
- photoprism-db
restart: unless-stopped
ports:
- "${APP_PORT}:2342"
environment:
PHOTOPRISM_ADMIN_PASSWORD: ${PHOTOPRISM_ADMIN_PASSWORD}
PHOTOPRISM_SITE_URL: "${APP_PROTOCOL:-http}://${APP_DOMAIN}/"
PHOTOPRISM_ORIGINALS_LIMIT: 5000
PHOTOPRISM_HTTP_COMPRESSION: "gzip"
PHOTOPRISM_LOG_LEVEL: "info"
PHOTOPRISM_PUBLIC: "false"
PHOTOPRISM_READONLY: "false"
PHOTOPRISM_EXPERIMENTAL: "false"
PHOTOPRISM_DISABLE_CHOWN: "false"
PHOTOPRISM_DISABLE_WEBDAV: "false"
PHOTOPRISM_DISABLE_SETTINGS: "false"
PHOTOPRISM_DISABLE_TENSORFLOW: "false"
PHOTOPRISM_DISABLE_FACES: "false"
PHOTOPRISM_DISABLE_CLASSIFICATION: "false"
PHOTOPRISM_DISABLE_RAW: "false"
PHOTOPRISM_RAW_PRESETS: "false"
PHOTOPRISM_JPEG_QUALITY: 85
PHOTOPRISM_DETECT_NSFW: "false"
PHOTOPRISM_UPLOAD_NSFW: "true"
PHOTOPRISM_DATABASE_DRIVER: "mysql"
PHOTOPRISM_DATABASE_SERVER: "photoprism-db:3306"
PHOTOPRISM_DATABASE_NAME: "photoprism"
PHOTOPRISM_DATABASE_USER: "photoprism"
PHOTOPRISM_DATABASE_PASSWORD: "${DB_PASSWORD}"
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
working_dir: "/photoprism"
volumes:
- "${ROOT_FOLDER_HOST}/media/data/images:/photoprism/originals"
- "${APP_DATA_DIR}/data/photoprism/storage:/photoprism/storage"
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.photoprism.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.photoprism.entrypoints: websecure
traefik.http.routers.photoprism.service: photoprism
traefik.http.routers.photoprism.tls.certresolver: myresolver
traefik.http.services.photoprism.loadbalancer.server.port: 2342
photoprism-db:
restart: unless-stopped
image: mariadb:10.8
container_name: photoprism-db
command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "${APP_DATA_DIR}/data/mariadb:/var/lib/mysql"
environment:
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: "${DB_PASSWORD}"
MARIADB_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
networks:
- tipi_main_network

View File

@ -2,12 +2,13 @@
"$schema": "../schema.json",
"name": "Pi-hole",
"available": true,
"exposable": true,
"port": 8081,
"requirements": {
"ports": [53]
},
"id": "pihole",
"tipi_version": 2,
"tipi_version": 3,
"version": "2022.09.4",
"categories": ["network", "security"],
"description": "The Pi-hole® is a DNS sinkhole that protects your devices from unwanted content without installing any client-side software.",
@ -22,7 +23,7 @@
"min": 3,
"required": true,
"env_variable": "APP_PASSWORD"
},
},
{
"type": "ip",
"label": "Network Interface (default: 0.0.0.0)",

View File

@ -1,25 +1,13 @@
version: "3.7"
services:
# unbound:
# image: "klutchell/unbound"
# container_name: unbound
# restart: unless-stopped
# volumes:
# - "${APP_DATA_DIR}/data/unbound:/etc/unbound"
# networks:
# tipi_main_network:
# ipv4_address: 10.21.21.200
pihole:
# depends_on: [unbound]
container_name: pihole
image: pihole/pihole:2022.09.4
restart: unless-stopped
hostname: pihole
dns:
- 127.0.0.1
# - 10.21.21.200 # Points to unbound
ports:
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/tcp
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/udp
@ -30,10 +18,16 @@ services:
environment:
TZ: ${TZ}
WEBPASSWORD: ${APP_PASSWORD}
# PIHOLE_DNS_: 10.21.21.200 # Points to unbound
FTLCONF_REPLY_ADDR4: 10.21.21.201
cap_add:
- NET_ADMIN
networks:
tipi_main_network:
ipv4_address: 10.21.21.201
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.pihole.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.pihole.entrypoints: websecure
traefik.http.routers.pihole.service: pihole
traefik.http.routers.pihole.tls.certresolver: myresolver
traefik.http.services.pihole.loadbalancer.server.port: 80

View File

@ -5,10 +5,12 @@
"exposable": true,
"port": 32400,
"id": "plex",
"tipi_version": 5,
"version": "1.28.2",
"tipi_version": 7,
"version": "1.29.2",
"url_suffix": "/web",
"categories": ["media"],
"categories": [
"media"
],
"description": "",
"short_desc": "Stream Movies & TV Shows",
"author": "plexinc",

View File

@ -2,7 +2,7 @@ version: "3.7"
services:
plex:
image: lscr.io/linuxserver/plex:1.28.2
image: lscr.io/linuxserver/plex:1.29.2
container_name: plex
network_mode: host
environment:

View File

@ -3,10 +3,11 @@
"name": "Portainer",
"port": 9443,
"available": true,
"exposable": true,
"https": true,
"id": "portainer",
"tipi_version": 4,
"version": "2.15.1",
"tipi_version": 6,
"version": "2.16.0-alpine",
"categories": ["utilities"],
"description": "",
"short_desc": "Making Docker and Kubernetes management easy.",

View File

@ -2,13 +2,20 @@ version: "3.7"
services:
portainer:
image: portainer/portainer-ce:2.15.1-alpine
image: portainer/portainer-ce:2.16.0-alpine
container_name: portainer
restart: unless-stopped
ports:
- "${APP_PORT}:9443"
- ${APP_PORT}:9443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- "${APP_DATA_DIR}/data:/data"
networks:
- tipi_main_network
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.portainer.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.portainer.entrypoints: websecure
traefik.http.routers.portainer.service: portainer
traefik.http.routers.portainer.tls.certresolver: myresolver
traefik.http.services.portainer.loadbalancer.server.port: 9443

View File

@ -12,5 +12,7 @@
"short_desc": "A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.",
"author": "PrivateBin",
"source": "https://github.com/PrivateBin/PrivateBin",
"form_fields": []
"form_fields": [],
"uid": 65534,
"gid": 82
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -2,9 +2,10 @@
"$schema": "../schema.json",
"name": "Prowlarr",
"available": true,
"exposable": true,
"port": 8109,
"id": "prowlarr",
"tipi_version": 1,
"tipi_version": 2,
"version": "develop",
"categories": ["media", "utilities"],
"description": "Prowlarr is an indexer manager/proxy built on the popular *arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Lidarr, Mylar3, Radarr, Readarr, and Sonarr offering complete management of your indexers with no per app Indexer setup required (we do it all).",

View File

@ -14,3 +14,10 @@ services:
restart: unless-stopped
networks:
- tipi_main_network
labels:
traefik.enable: ${APP_EXPOSED}
traefik.http.routers.prowlarr.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.prowlarr.entrypoints: websecure
traefik.http.routers.prowlarr.service: prowlarr
traefik.http.routers.prowlarr.tls.certresolver: myresolver
traefik.http.services.prowlarr.loadbalancer.server.port: 9696

Some files were not shown because too many files have changed in this diff Show More