Compare commits
No commits in common. "5c174cecbcc1200dacdd1ec466c2092269669c33" and "9fb96fe1bcf2d7b35a3d529422d902494d54e5ab" have entirely different histories.
5c174cecbc
...
9fb96fe1bc
18 changed files with 18 additions and 760 deletions
|
|
@ -1,94 +0,0 @@
|
||||||
name: Deploy server-up (prod)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
tags: ['v*']
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: server-up-deploy-prod
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: [self-hosted, prod]
|
|
||||||
timeout-minutes: 20
|
|
||||||
|
|
||||||
env:
|
|
||||||
DEPLOY_DIR: /opt/server-up
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Bepaal versie
|
|
||||||
id: version
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
|
||||||
VERSION="${GITHUB_REF_NAME}"
|
|
||||||
CHANNEL="release"
|
|
||||||
else
|
|
||||||
VERSION="main-${GITHUB_SHA:0:8}"
|
|
||||||
CHANNEL="main"
|
|
||||||
fi
|
|
||||||
echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
|
|
||||||
echo "CHANNEL=${CHANNEL}" >> "$GITHUB_ENV"
|
|
||||||
echo "SU_VERSION=${VERSION}" >> "$GITHUB_ENV"
|
|
||||||
echo "Deploying version: ${VERSION} (${CHANNEL})"
|
|
||||||
|
|
||||||
- name: Sync code naar deploy-directory
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
rsync -a --delete \
|
|
||||||
--exclude='.git/' \
|
|
||||||
--exclude='.forgejo/' \
|
|
||||||
./ "$DEPLOY_DIR/"
|
|
||||||
|
|
||||||
- name: Schrijf VERSION-bestand
|
|
||||||
working-directory: ${{ env.DEPLOY_DIR }}
|
|
||||||
run: echo "${VERSION}" > VERSION
|
|
||||||
|
|
||||||
- name: Build image
|
|
||||||
working-directory: ${{ env.DEPLOY_DIR }}
|
|
||||||
run: |
|
|
||||||
docker compose build --pull
|
|
||||||
# docker compose bouwt als server-up:latest; voeg versie- en channel-tags toe
|
|
||||||
docker tag server-up:latest "server-up:${VERSION}"
|
|
||||||
docker tag server-up:latest "server-up:${CHANNEL}"
|
|
||||||
|
|
||||||
- name: Deploy
|
|
||||||
working-directory: ${{ env.DEPLOY_DIR }}
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
docker compose up -d --remove-orphans
|
|
||||||
docker compose ps
|
|
||||||
|
|
||||||
- name: Wachten op healthcheck
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
for i in {1..40}; do
|
|
||||||
status=$(docker inspect --format '{{.State.Health.Status}}' server-up 2>/dev/null || echo "starting")
|
|
||||||
echo "poll $i: $status"
|
|
||||||
if [ "$status" = "healthy" ]; then
|
|
||||||
echo "server-up is healthy als versie ${VERSION}"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
sleep 3
|
|
||||||
done
|
|
||||||
echo "server-up werd niet healthy in tijd — logs:"
|
|
||||||
cd "$DEPLOY_DIR" && docker compose logs --tail=200
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
- name: Oude images opruimen (behoud laatste 5)
|
|
||||||
if: success()
|
|
||||||
run: |
|
|
||||||
docker images server-up --format '{{.Tag}} {{.ID}}' \
|
|
||||||
| grep -vE '^(latest|release|main) ' \
|
|
||||||
| tail -n +6 \
|
|
||||||
| awk '{print $2}' \
|
|
||||||
| xargs -r docker rmi -f || true
|
|
||||||
docker image prune -f
|
|
||||||
|
|
@ -1,21 +1,22 @@
|
||||||
name: Deploy server-up (dev)
|
name: Deploy server-up
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [dev]
|
branches: [main]
|
||||||
|
tags: ['v*']
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: server-up-deploy-dev
|
group: server-up-deploy
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: [self-hosted, dev]
|
runs-on: self-hosted
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
|
|
||||||
env:
|
env:
|
||||||
DEPLOY_DIR: /opt/docker/server-up
|
DEPLOY_DIR: /opt/server-up
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|
@ -36,14 +37,12 @@ jobs:
|
||||||
fi
|
fi
|
||||||
echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
|
echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
|
||||||
echo "CHANNEL=${CHANNEL}" >> "$GITHUB_ENV"
|
echo "CHANNEL=${CHANNEL}" >> "$GITHUB_ENV"
|
||||||
# SU_VERSION wordt door docker compose gebruikt als build-arg
|
|
||||||
echo "SU_VERSION=${VERSION}" >> "$GITHUB_ENV"
|
|
||||||
echo "Deploying version: ${VERSION} (${CHANNEL})"
|
echo "Deploying version: ${VERSION} (${CHANNEL})"
|
||||||
|
|
||||||
- name: Sync code naar deploy-directory
|
- name: Sync code naar deploy-directory
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
rsync -a --no-group --delete \
|
rsync -a --delete \
|
||||||
--exclude='.git/' \
|
--exclude='.git/' \
|
||||||
--exclude='.forgejo/' \
|
--exclude='.forgejo/' \
|
||||||
./ "$DEPLOY_DIR/"
|
./ "$DEPLOY_DIR/"
|
||||||
|
|
@ -56,9 +55,9 @@ jobs:
|
||||||
working-directory: ${{ env.DEPLOY_DIR }}
|
working-directory: ${{ env.DEPLOY_DIR }}
|
||||||
run: |
|
run: |
|
||||||
docker compose build --pull
|
docker compose build --pull
|
||||||
# docker compose bouwt als server-up:latest; voeg versie- en channel-tags toe
|
# Extra tags zodat 'latest' altijd op de laatste deploy wijst
|
||||||
docker tag server-up:latest "server-up:${VERSION}"
|
docker tag "server-up:${VERSION}" server-up:latest
|
||||||
docker tag server-up:latest "server-up:${CHANNEL}"
|
docker tag "server-up:${VERSION}" "server-up:${CHANNEL}"
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
working-directory: ${{ env.DEPLOY_DIR }}
|
working-directory: ${{ env.DEPLOY_DIR }}
|
||||||
|
|
|
||||||
|
|
@ -1,99 +0,0 @@
|
||||||
services:
|
|
||||||
<< service_name >>-radarr:
|
|
||||||
image: lscr.io/linuxserver/radarr:latest
|
|
||||||
container_name: << service_name >>-radarr
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/radarr:/config
|
|
||||||
- << media_dir >>/films:/movies
|
|
||||||
- << downloads_dir >>:/downloads
|
|
||||||
ports:
|
|
||||||
- "<< port_radarr >>:7878"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-sonarr:
|
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
|
||||||
container_name: << service_name >>-sonarr
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/sonarr:/config
|
|
||||||
- << media_dir >>/series:/tv
|
|
||||||
- << downloads_dir >>:/downloads
|
|
||||||
ports:
|
|
||||||
- "<< port_sonarr >>:8989"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-lidarr:
|
|
||||||
image: lscr.io/linuxserver/lidarr:latest
|
|
||||||
container_name: << service_name >>-lidarr
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/lidarr:/config
|
|
||||||
- << media_dir >>/muziek:/music
|
|
||||||
- << downloads_dir >>:/downloads
|
|
||||||
ports:
|
|
||||||
- "<< port_lidarr >>:8686"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-readarr:
|
|
||||||
image: lscr.io/linuxserver/readarr:develop
|
|
||||||
container_name: << service_name >>-readarr
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/readarr:/config
|
|
||||||
- << media_dir >>/boeken:/books
|
|
||||||
- << downloads_dir >>:/downloads
|
|
||||||
ports:
|
|
||||||
- "<< port_readarr >>:8787"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-prowlarr:
|
|
||||||
image: lscr.io/linuxserver/prowlarr:latest
|
|
||||||
container_name: << service_name >>-prowlarr
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/prowlarr:/config
|
|
||||||
ports:
|
|
||||||
- "<< port_prowlarr >>:9696"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-bazarr:
|
|
||||||
image: lscr.io/linuxserver/bazarr:latest
|
|
||||||
container_name: << service_name >>-bazarr
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/bazarr:/config
|
|
||||||
- << media_dir >>/films:/movies
|
|
||||||
- << media_dir >>/series:/tv
|
|
||||||
ports:
|
|
||||||
- "<< port_bazarr >>:6767"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-jellyseerr:
|
|
||||||
image: fallenbagel/jellyseerr:latest
|
|
||||||
container_name: << service_name >>-jellyseerr
|
|
||||||
environment:
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/jellyseerr:/app/config
|
|
||||||
ports:
|
|
||||||
- "<< port_jellyseerr >>:5055"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
@ -1,132 +0,0 @@
|
||||||
{
|
|
||||||
"kind": "compose",
|
|
||||||
"metadata": {
|
|
||||||
"name": "ARR-stack",
|
|
||||||
"description": "Complete media-automatiseringsstack: Radarr (films), Sonarr (series), Lidarr (muziek), Readarr (boeken), Prowlarr (indexers), Bazarr (ondertitels) en Jellyseerr (verzoeken).",
|
|
||||||
"tags": ["media", "automatisering", "radarr", "sonarr", "prowlarr", "bazarr", "jellyseerr"],
|
|
||||||
"icon": {"provider": "selfhst", "id": "radarr"},
|
|
||||||
"version": {"name": "latest"}
|
|
||||||
},
|
|
||||||
"variables": [
|
|
||||||
{
|
|
||||||
"title": "Algemeen",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "service_name",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Servicenaam (prefix)",
|
|
||||||
"default": "arr",
|
|
||||||
"required": true,
|
|
||||||
"description": "Prefix voor alle containers in de stack, bijv. 'arr' geeft arr-radarr, arr-sonarr, etc."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Config directory",
|
|
||||||
"default": "/opt/serverup/appdata",
|
|
||||||
"required": true,
|
|
||||||
"description": "Basismap voor configuratiebestanden van alle ARR-apps"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "media_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Media directory",
|
|
||||||
"default": "/mnt/media",
|
|
||||||
"required": true,
|
|
||||||
"description": "Map voor films, series en muziek. Moet ook zichtbaar zijn voor de download-client."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "downloads_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Downloads directory",
|
|
||||||
"default": "/mnt/downloads",
|
|
||||||
"required": true,
|
|
||||||
"description": "Map waar de download-client bestanden neerzet (qBittorrent of SABnzbd). Moet overeenkomen met het pad in de download-client."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "timezone",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Tijdzone",
|
|
||||||
"default": "Europe/Amsterdam",
|
|
||||||
"required": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Poorten",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "port_radarr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Radarr poort",
|
|
||||||
"default": 7878,
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_sonarr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Sonarr poort",
|
|
||||||
"default": 8989,
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_lidarr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Lidarr poort",
|
|
||||||
"default": 8686,
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_readarr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Readarr poort",
|
|
||||||
"default": 8787,
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_prowlarr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Prowlarr poort",
|
|
||||||
"default": 9696,
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_bazarr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Bazarr poort",
|
|
||||||
"default": 6767,
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_jellyseerr",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Jellyseerr poort",
|
|
||||||
"default": 5055,
|
|
||||||
"required": true,
|
|
||||||
"description": "Webinterface voor gebruikers om films en series aan te vragen"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -6,8 +6,8 @@ services:
|
||||||
- "<< port_web >>:3000"
|
- "<< port_web >>:3000"
|
||||||
- "<< port_ssh >>:22"
|
- "<< port_ssh >>:22"
|
||||||
environment:
|
environment:
|
||||||
- USER_UID=<< puid >>
|
- USER_UID=1000
|
||||||
- USER_GID=<< pgid >>
|
- USER_GID=1000
|
||||||
- FORGEJO__server__SSH_PORT=<< port_ssh >>
|
- FORGEJO__server__SSH_PORT=<< port_ssh >>
|
||||||
- TZ=<< timezone >>
|
- TZ=<< timezone >>
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
||||||
|
|
@ -34,27 +34,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "Poorten",
|
"title": "Poorten",
|
||||||
"items": [
|
"items": [
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ services:
|
||||||
- "<< port >>:32400"
|
- "<< port >>:32400"
|
||||||
environment:
|
environment:
|
||||||
- TZ=<< timezone >>
|
- TZ=<< timezone >>
|
||||||
- PUID=<< puid >>
|
- PUID=1000
|
||||||
- PGID=<< pgid >>
|
- PGID=1000
|
||||||
<% if plex_claim %>
|
<% if plex_claim %>
|
||||||
- PLEX_CLAIM=<< plex_claim >>
|
- PLEX_CLAIM=<< plex_claim >>
|
||||||
<% endif %>
|
<% endif %>
|
||||||
|
|
|
||||||
|
|
@ -42,27 +42,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "Media",
|
"title": "Media",
|
||||||
"items": [
|
"items": [
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
services:
|
|
||||||
<< service_name >>:
|
|
||||||
image: lscr.io/linuxserver/qbittorrent:latest
|
|
||||||
container_name: << service_name >>
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
- WEBUI_PORT=<< port_ui >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/config:/config
|
|
||||||
- << downloads_dir >>:/downloads
|
|
||||||
ports:
|
|
||||||
- "<< port_ui >>:<< port_ui >>"
|
|
||||||
- "<< port_torrent >>:6881"
|
|
||||||
- "<< port_torrent >>:6881/udp"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
{
|
|
||||||
"kind": "compose",
|
|
||||||
"metadata": {
|
|
||||||
"name": "qBittorrent",
|
|
||||||
"description": "Open-source torrent-client met webinterface. Werkt goed samen met de ARR-stack.",
|
|
||||||
"tags": ["downloaden", "torrents", "media"],
|
|
||||||
"icon": {"provider": "selfhst", "id": "qbittorrent"},
|
|
||||||
"version": {"name": "latest"}
|
|
||||||
},
|
|
||||||
"variables": [
|
|
||||||
{
|
|
||||||
"title": "Algemeen",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "service_name",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Servicenaam",
|
|
||||||
"default": "qbittorrent",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_ui",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Web UI poort",
|
|
||||||
"default": 8080,
|
|
||||||
"required": true,
|
|
||||||
"description": "Poort voor de webinterface"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_torrent",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Torrent poort",
|
|
||||||
"default": 6881,
|
|
||||||
"required": true,
|
|
||||||
"description": "Poort voor torrent-verbindingen (TCP en UDP). Zet deze poort open in je firewall/router voor betere download-snelheid."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Config directory",
|
|
||||||
"default": "/opt/serverup/appdata",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "downloads_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Downloads directory",
|
|
||||||
"default": "/mnt/downloads",
|
|
||||||
"required": true,
|
|
||||||
"description": "Map waar downloads worden opgeslagen. Gebruik hetzelfde pad als in Radarr/Sonarr."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "timezone",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Tijdzone",
|
|
||||||
"default": "Europe/Amsterdam",
|
|
||||||
"required": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
services:
|
|
||||||
<< service_name >>:
|
|
||||||
image: lscr.io/linuxserver/sabnzbd:latest
|
|
||||||
container_name: << service_name >>
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/config:/config
|
|
||||||
- << downloads_dir >>:/downloads
|
|
||||||
ports:
|
|
||||||
- "<< port >>:8080"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
{
|
|
||||||
"kind": "compose",
|
|
||||||
"metadata": {
|
|
||||||
"name": "SABnzbd",
|
|
||||||
"description": "Usenet download-client met webinterface. Werkt samen met de ARR-stack voor automatisch downloaden via Usenet.",
|
|
||||||
"tags": ["downloaden", "usenet", "nzb", "media"],
|
|
||||||
"icon": {"provider": "selfhst", "id": "sabnzbd"},
|
|
||||||
"version": {"name": "latest"}
|
|
||||||
},
|
|
||||||
"variables": [
|
|
||||||
{
|
|
||||||
"title": "Algemeen",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "service_name",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Servicenaam",
|
|
||||||
"default": "sabnzbd",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Web UI poort",
|
|
||||||
"default": 8081,
|
|
||||||
"required": true,
|
|
||||||
"description": "Poort voor de webinterface"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Config directory",
|
|
||||||
"default": "/opt/serverup/appdata",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "downloads_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Downloads directory",
|
|
||||||
"default": "/mnt/downloads",
|
|
||||||
"required": true,
|
|
||||||
"description": "Map waar downloads worden opgeslagen. Gebruik hetzelfde pad als in Radarr/Sonarr."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "timezone",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Tijdzone",
|
|
||||||
"default": "Europe/Amsterdam",
|
|
||||||
"required": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -6,8 +6,8 @@ services:
|
||||||
- "<< port >>:80"
|
- "<< port >>:80"
|
||||||
environment:
|
environment:
|
||||||
- TZ=<< timezone >>
|
- TZ=<< timezone >>
|
||||||
- PUID=<< puid >>
|
- PUID=1000
|
||||||
- PGID=<< pgid >>
|
- PGID=1000
|
||||||
- APP_KEY=<< app_key >>
|
- APP_KEY=<< app_key >>
|
||||||
- DB_CONNECTION=sqlite
|
- DB_CONNECTION=sqlite
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
||||||
|
|
@ -41,27 +41,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "Beveiliging",
|
"title": "Beveiliging",
|
||||||
"items": [
|
"items": [
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ services:
|
||||||
- "<< sync_port >>:22000/udp"
|
- "<< sync_port >>:22000/udp"
|
||||||
environment:
|
environment:
|
||||||
- TZ=<< timezone >>
|
- TZ=<< timezone >>
|
||||||
- PUID=<< puid >>
|
- PUID=1000
|
||||||
- PGID=<< pgid >>
|
- PGID=1000
|
||||||
volumes:
|
volumes:
|
||||||
- << data_dir >>/<< service_name >>/config:/config
|
- << data_dir >>/<< service_name >>/config:/config
|
||||||
- << sync_dir >>:/data
|
- << sync_dir >>:/data
|
||||||
|
|
|
||||||
|
|
@ -57,27 +57,6 @@
|
||||||
"required": true
|
"required": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker (id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
services:
|
|
||||||
<< service_name >>:
|
|
||||||
image: lscr.io/linuxserver/unifi-network-application:latest
|
|
||||||
container_name: << service_name >>
|
|
||||||
environment:
|
|
||||||
- PUID=<< puid >>
|
|
||||||
- PGID=<< pgid >>
|
|
||||||
- TZ=<< timezone >>
|
|
||||||
- MONGO_USER=unifi
|
|
||||||
- MONGO_PASS=<< mongo_password >>
|
|
||||||
- MONGO_HOST=<< service_name >>-mongo
|
|
||||||
- MONGO_PORT=27017
|
|
||||||
- MONGO_DBNAME=unifi
|
|
||||||
volumes:
|
|
||||||
- << data_dir >>/<< service_name >>/config:/config
|
|
||||||
ports:
|
|
||||||
- "<< port_ui >>:8443"
|
|
||||||
- "<< port_inform >>:8080"
|
|
||||||
- "<< port_stun >>:3478/udp"
|
|
||||||
- "<< port_discovery >>:10001/udp"
|
|
||||||
depends_on:
|
|
||||||
- << service_name >>-mongo
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
<< service_name >>-mongo:
|
|
||||||
image: mongo:4.4
|
|
||||||
container_name: << service_name >>-mongo
|
|
||||||
environment:
|
|
||||||
- MONGO_INITDB_ROOT_USERNAME=unifi
|
|
||||||
- MONGO_INITDB_ROOT_PASSWORD=<< mongo_password >>
|
|
||||||
- MONGO_INITDB_DATABASE=unifi
|
|
||||||
volumes:
|
|
||||||
- << service_name >>_mongodata:/data/db
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
<< service_name >>_mongodata:
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
{
|
|
||||||
"kind": "compose",
|
|
||||||
"metadata": {
|
|
||||||
"name": "Unifi Network Application",
|
|
||||||
"description": "Unifi netwerkconfiguratie en -beheer. Beheert access points, switches en gateways van Ubiquiti.",
|
|
||||||
"tags": ["netwerk", "unifi", "ubiquiti", "wifi"],
|
|
||||||
"icon": {"provider": "selfhst", "id": "unifi"},
|
|
||||||
"version": {"name": "latest"}
|
|
||||||
},
|
|
||||||
"variables": [
|
|
||||||
{
|
|
||||||
"title": "Algemeen",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "service_name",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Servicenaam",
|
|
||||||
"default": "unifi",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_ui",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Web UI poort (HTTPS)",
|
|
||||||
"default": 8443,
|
|
||||||
"required": true,
|
|
||||||
"description": "Poort voor de Unifi-webinterface"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_inform",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Inform poort",
|
|
||||||
"default": 8080,
|
|
||||||
"required": true,
|
|
||||||
"description": "Poort waarop Unifi-apparaten inchecken. Moet bereikbaar zijn voor alle access points en switches."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_stun",
|
|
||||||
"type": "int",
|
|
||||||
"title": "STUN poort (UDP)",
|
|
||||||
"default": 3478,
|
|
||||||
"required": true,
|
|
||||||
"description": "Gebruikt voor NAT traversal. Vereist voor correct functioneren van Unifi-apparaten."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "port_discovery",
|
|
||||||
"type": "int",
|
|
||||||
"title": "Discovery poort (UDP)",
|
|
||||||
"default": 10001,
|
|
||||||
"required": true,
|
|
||||||
"description": "Gebruikt om Unifi-apparaten op het lokale netwerk automatisch te ontdekken."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_dir",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Data directory",
|
|
||||||
"default": "/opt/serverup/appdata",
|
|
||||||
"required": true,
|
|
||||||
"description": "Basismap voor configuratie en database"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "timezone",
|
|
||||||
"type": "str",
|
|
||||||
"title": "Tijdzone",
|
|
||||||
"default": "Europe/Amsterdam",
|
|
||||||
"required": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Gebruiker",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "puid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PUID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "User ID van de systeemgebruiker die de container beheert (whoami → id -u)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pgid",
|
|
||||||
"type": "int",
|
|
||||||
"title": "PGID",
|
|
||||||
"default": 1000,
|
|
||||||
"required": true,
|
|
||||||
"description": "Group ID van de systeemgebruiker (id -g)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Database",
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"name": "mongo_password",
|
|
||||||
"type": "str",
|
|
||||||
"title": "MongoDB wachtwoord",
|
|
||||||
"default": "unifi_mongo_pass",
|
|
||||||
"required": true,
|
|
||||||
"description": "Wachtwoord voor de interne MongoDB database",
|
|
||||||
"config": {"placeholder": "sterk-wachtwoord"}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue