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:
|
||||
push:
|
||||
branches: [dev]
|
||||
branches: [main]
|
||||
tags: ['v*']
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: server-up-deploy-dev
|
||||
group: server-up-deploy
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: [self-hosted, dev]
|
||||
runs-on: self-hosted
|
||||
timeout-minutes: 20
|
||||
|
||||
env:
|
||||
DEPLOY_DIR: /opt/docker/server-up
|
||||
DEPLOY_DIR: /opt/server-up
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
@ -36,14 +37,12 @@ jobs:
|
|||
fi
|
||||
echo "VERSION=${VERSION}" >> "$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})"
|
||||
|
||||
- name: Sync code naar deploy-directory
|
||||
run: |
|
||||
set -euo pipefail
|
||||
rsync -a --no-group --delete \
|
||||
rsync -a --delete \
|
||||
--exclude='.git/' \
|
||||
--exclude='.forgejo/' \
|
||||
./ "$DEPLOY_DIR/"
|
||||
|
|
@ -56,9 +55,9 @@ jobs:
|
|||
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}"
|
||||
# Extra tags zodat 'latest' altijd op de laatste deploy wijst
|
||||
docker tag "server-up:${VERSION}" server-up:latest
|
||||
docker tag "server-up:${VERSION}" "server-up:${CHANNEL}"
|
||||
|
||||
- name: Deploy
|
||||
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_ssh >>:22"
|
||||
environment:
|
||||
- USER_UID=<< puid >>
|
||||
- USER_GID=<< pgid >>
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- FORGEJO__server__SSH_PORT=<< port_ssh >>
|
||||
- TZ=<< timezone >>
|
||||
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",
|
||||
"items": [
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ services:
|
|||
- "<< port >>:32400"
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
<% if plex_claim %>
|
||||
- PLEX_CLAIM=<< plex_claim >>
|
||||
<% 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",
|
||||
"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"
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- APP_KEY=<< app_key >>
|
||||
- DB_CONNECTION=sqlite
|
||||
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",
|
||||
"items": [
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ services:
|
|||
- "<< sync_port >>:22000/udp"
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << sync_dir >>:/data
|
||||
|
|
|
|||
|
|
@ -57,27 +57,6 @@
|
|||
"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