diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c6f9a44
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.vscode/settings.json
diff --git a/basex/custom/.gitignore b/basex/custom/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/basex/custom/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/basex/data/.gitignore b/basex/data/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/basex/data/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/basex/docker-compose.yml b/basex/docker-compose.yml
new file mode 100644
index 0000000..3bf55e9
--- /dev/null
+++ b/basex/docker-compose.yml
@@ -0,0 +1,16 @@
+version: '3.2'
+# quodatum basex
+services:
+
+ basex:
+ image: "quodatum/basexhttp:latest"
+ container_name: basex-test
+ command: /srv/basex/bin/basexhttp
+ ports:
+ - 8984:8984
+ restart: unless-stopped
+ volumes:
+ - ./data:/srv/basex/data
+ - ./webapp:/srv/basex/webapp
+ - ./repo:/srv/basex/repo
+ - ./custom:/srv/basex/lib/custom
\ No newline at end of file
diff --git a/basex/repo/.gitignore b/basex/repo/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/basex/repo/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/basex/webapp/WEB-INF/jetty.xml b/basex/webapp/WEB-INF/jetty.xml
new file mode 100644
index 0000000..c0dbd03
--- /dev/null
+++ b/basex/webapp/WEB-INF/jetty.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+ 0.0.0.0
+ 8984
+ 60000
+ true
+
+
+
+
diff --git a/basex/webapp/WEB-INF/web.xml b/basex/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0f5e987
--- /dev/null
+++ b/basex/webapp/WEB-INF/web.xml
@@ -0,0 +1,146 @@
+
+
+
+ BaseX: The XML Database and XQuery Processor
+ HTTP Services
+
+
+
+
+
+ org.basex.http.SessionListener
+
+
+ org.basex.http.ServletListener
+
+
+
+
+
+
+ RESTXQ
+ org.basex.http.restxq.RestXqServlet
+
+ org.basex.user
+ admin
+
+ 1
+
+
+ RESTXQ
+ /*
+
+
+
+
+ WebSocket
+ org.basex.http.ws.WsServlet
+
+
+
+ WebSocket
+ /ws/*
+
+
+
+
+ REST
+ org.basex.http.rest.RESTServlet
+
+
+ REST
+ /rest/*
+
+
+
+
+ WebDAV
+ org.basex.http.webdav.WebDAVServlet
+
+
+ WebDAV
+ /webdav/*
+
+
+
+
+ default
+
+ useFileMappedBuffer
+ false
+
+
+
+ default
+ /static/*
+
+
+
diff --git a/basex/webapp/restxq.xqm b/basex/webapp/restxq.xqm
new file mode 100644
index 0000000..4fe7eaf
--- /dev/null
+++ b/basex/webapp/restxq.xqm
@@ -0,0 +1,69 @@
+(:~
+ : This module contains some basic examples for RESTXQ annotations.
+ : @author BaseX Team
+ :)
+module namespace page = 'http://basex.org/examples/web-page';
+
+(:~
+ : Generates a welcome page.
+ : @return HTML page
+ :)
+declare
+ %rest:GET
+ %rest:path('')
+ %output:method('xhtml')
+ %output:omit-xml-declaration('no')
+ %output:doctype-public('-//W3C//DTD XHTML 1.0 Transitional//EN')
+ %output:doctype-system('http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd')
+function page:start(
+) as element(Q{http://www.w3.org/1999/xhtml}html) {
+
+
+ BaseX HTTP Services
+
+
+
+
+ BaseX HTTP Services
+ Welcome to the BaseX HTTP Services. They allow you to:
+
+ create web applications and services with
+ RESTXQ ,
+ use full-duplex communication with
+ WebSockets ,
+ query and modify databases via REST
+ (try here ), and
+ browse and update resources via
+ WebDAV .
+
+
+ Find more information on the
+ Web Application
+ page in our documentation.
+
+ The following sample applications give you a glimpse of how applications
+ can be written with BaseX:
+
+
+
+ The Database Administration interface is completely
+ written in RESTXQ.
+ The source code helps to understand how complex
+ web applications can be built with XQuery.
+
+
+
+
+ The chat application demonstrates how bidirectional communication
+ is realized with BaseX.
+ For a better experience when testing the chat,
+ consider the following steps:
+
+
+
+ Create different database users first (e.g. via the DBA).
+ Open two different browsers and log in with different users.
+
+
+
+};
diff --git a/caddy/.dockerignore b/caddy/.dockerignore
new file mode 100644
index 0000000..ecaa72a
--- /dev/null
+++ b/caddy/.dockerignore
@@ -0,0 +1 @@
+/site
\ No newline at end of file
diff --git a/caddy/Caddyfile b/caddy/Caddyfile
index d5691d8..2729a24 100644
--- a/caddy/Caddyfile
+++ b/caddy/Caddyfile
@@ -1,29 +1,169 @@
-# caddyfile dec 2021
+# caddyfile for omv
+# 2022-04 add domain sites
+# 2022-03 init
{
admin 0.0.0.0:2015
email bunce.andy@gmail.com
- # acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}
-netdata.n2-plus.local {
- reverse_proxy n2-plus.local:9000
+# Physical
+(omv) {
+ reverse_proxy 192.168.1.6:{args.0}
+}
+(n2) {
+ reverse_proxy 192.168.1.4:{args.0}
+}
+(n2plus) {
+ reverse_proxy 192.168.1.10:{args.0}
+}
+(xu4) {
+ reverse_proxy 192.168.1.5:{args.0}
}
-code.n2-plus.local {
- reverse_proxy n2-plus.local:8443
-}
-code4.n2-plus.local {
- reverse_proxy n2-plus.local:8444
+# DNS
+(duckdns) {
+ tls {
+ dns duckdns {
+ api_token 428a1b3b-bc1d-4906-a230-9cd0a72fd06b
+ }
+ }
}
-n2-plus.local {
- encode zstd gzip
- root links
- file_server browse
+# Auth
+(auth_quodatum) {
+ basicauth bcrypt "Quodatum domain access" {
+ andy JDJhJDE0JDFHeUJHdGdZalFRdDg0cWhsRTFXeXU0cWZqZDNCNVV1d2gyRUlaNXhBMDFiZEFBZk5zM2RD
+ guest JDJhJDE0JDVYTENVREtLbG5xdzUyNXFGdm56Ti5rVmFSZ3VoOEZQR015V0F6VjdaMk1SeGM1NXVVeWR1
+ }
+}
+(auth) {
+ basicauth bcrypt "Orlop domain" {
+ andy JDJhJDE0JDFHeUJHdGdZalFRdDg0cWhsRTFXeXU0cWZqZDNCNVV1d2gyRUlaNXhBMDFiZEFBZk5zM2RD
+ solange JDJhJDE0JE9kcjNWY1U4VS54M2IwUmJuV1UwYS41SDRQQi9Kc2lDUDBKUkpkVjNVc1I2dUNyYzl5MU9x
+ }
+}
+# quodatum domain -------------------------------
+quodatum.duckdns.org {
+ redir https://about.quodatum.duckdns.org
}
-fish.local {
- encode zstd gzip
- root .
- file_server browse
-}
\ No newline at end of file
+*.quodatum.duckdns.org {
+ import duckdns
+# import auth_quodatum
+
+ @quodatum host about.quodatum.duckdns.org
+ handle @quodatum {
+ import auth_quodatum
+ encode zstd gzip
+ root * quodatum
+ file_server browse
+ }
+
+ @git host git.quodatum.duckdns.org
+ handle @git {
+ import omv 8300
+ }
+
+ @wiki host wiki.quodatum.duckdns.org
+ handle @wiki {
+# import auth_quodatum
+ import xu4 8088
+ }
+ @wiki_alt host wiki-alt.quodatum.duckdns.org
+ handle @wiki_alt {
+# import auth_quodatum
+ import n2plus 8088
+ }
+
+ @code host code.quodatum.duckdns.org
+ handle @code {
+ import auth_quodatum
+ import n2plus 8444
+ }
+
+ @code-alt host code-alt.quodatum.duckdns.org
+ handle @code-alt {
+ import auth_quodatum
+ import omv 8444
+ }
+
+ @code-bmy host code-bmy.quodatum.duckdns.org
+ handle @code-bmy {
+ import auth_quodatum
+ import omv 8448
+ }
+ @shark host shark.quodatum.duckdns.org
+ handle @shark {
+ import auth_quodatum
+ import xu4 4000
+ }
+ # Fallback for otherwise unhandled domains
+ handle {
+ abort
+ }
+}
+# orlop domain ------------------------------------
+orlop.duckdns.org {
+ redir https://about.orlop.duckdns.org
+}
+
+*.orlop.duckdns.org {
+ import duckdns
+# import auth
+
+ @orlop host about.orlop.duckdns.org
+ handle @orlop {
+ import auth
+ encode zstd gzip
+ root * orlop
+ file_server browse
+ }
+
+ @jellyfin host jellyfin.orlop.duckdns.org
+ handle @jellyfin {
+ import auth
+ import omv 8096
+ }
+ @emby host emby.orlop.duckdns.org
+ handle @emby {
+ import auth
+ import omv 8097
+ }
+ @photoprism host photoprism.orlop.duckdns.org
+ handle @photoprism {
+ import omv 2342
+ }
+ @tvheadend host tvheadend.orlop.duckdns.org
+ handle @tvheadend {
+ import n2plus 9981
+ }
+ @kodi host kodi.orlop.duckdns.org
+ handle @kodi {
+ import n2 8080
+ }
+ @test host test.orlop.duckdns.org
+ handle @test {
+ respond "test, test. Hello, world!"
+ }
+ # Fallback for otherwise unhandled domains
+ handle {
+ abort
+ }
+}
+# local domain
+odroid.local {
+ tls internal
+ import auth
+
+ encode zstd gzip
+ root .
+ file_server browse
+}
+xu4.local {
+ tls internal
+ import auth
+
+ encode zstd gzip
+ root * links
+ file_server browse
+}
diff --git a/caddy/Dockerfile b/caddy/Dockerfile
new file mode 100644
index 0000000..7732c18
--- /dev/null
+++ b/caddy/Dockerfile
@@ -0,0 +1,15 @@
+# caddy with duckdns
+# @created 2022-03
+# author="Andy Bunce"
+
+ARG VERSION=caddy:2.6.2
+FROM $VERSION-builder AS builder
+
+RUN xcaddy build \
+ --with github.com/caddy-dns/duckdns
+ --with github.com/greenpau/caddy-security \
+ --with github.com/greenpau/caddy-trace \
+ --with github.com/greenpau/caddy-git
+FROM $VERSION
+
+COPY --from=builder /usr/bin/caddy /usr/bin/caddy
\ No newline at end of file
diff --git a/caddy/certs.sh b/caddy/certs.sh
new file mode 100755
index 0000000..2364031
--- /dev/null
+++ b/caddy/certs.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+# extract keys
+mkdir ~/backup
+
+docker run --rm --volumes-from caddy -v `pwd`/backup:/backup ubuntu bash -c "cd /data && tar cvf /backup/caddy-data.tar ."
diff --git a/caddy/docker-compose.yml b/caddy/docker-compose.yml
index 3631ddf..473b56e 100644
--- a/caddy/docker-compose.yml
+++ b/caddy/docker-compose.yml
@@ -2,7 +2,8 @@ version: "3.7"
services:
caddy:
- image: caddy:2.4.6
+ image: caddy-saffron:1.0.4
+ build: .
container_name: caddy
restart: unless-stopped
ports:
diff --git a/caddy/readme.md b/caddy/readme.md
index 269a891..68f1060 100644
--- a/caddy/readme.md
+++ b/caddy/readme.md
@@ -1,3 +1,13 @@
-Caddy
+# Caddy
-needs plugins
\ No newline at end of file
+builds docker image with
+* github.com/caddy-dns/duckdns
+* https://github.com/authp/authp.github.io @v1.1.6 https://authp.github.io/
+* https://github.com/greenpau/caddy-trace @v1.1.9
+
+## local
+
+1. use `certs.sh` to get tar of data
+1. extract `caddy-data.tar\.\caddy\pki\authorities\local\root.crt`
+1. right click, install
+1. select "trusted root certification authorities"
diff --git a/caddy/site/orlop/icon.png b/caddy/site/orlop/icon.png
new file mode 100644
index 0000000..3a1ff08
Binary files /dev/null and b/caddy/site/orlop/icon.png differ
diff --git a/caddy/site/orlop/index.html b/caddy/site/orlop/index.html
new file mode 100644
index 0000000..5de9ca6
--- /dev/null
+++ b/caddy/site/orlop/index.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+ Orlop domain
+
+
+
+
+
+
+
+
+
+
+
+
+ Loaded at: {{ loaded }}
+ mdi-clock
+ {{ message }}
+ hits {{ hits }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+ ?
+ {{ item.port }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/caddy/site/orlop/index.js b/caddy/site/orlop/index.js
new file mode 100644
index 0000000..94f8124
--- /dev/null
+++ b/caddy/site/orlop/index.js
@@ -0,0 +1,27 @@
+// app
+var app = new Vue({
+ el: '#app',
+ vuetify: new Vuetify(),
+ data: {
+ message: 'Hello Vue!',
+ links: null,
+ hits:0,
+ loaded: null,
+ target: "caddy",
+ targets: ["srv","top","new"]
+
+ },
+
+ methods:{
+ load() {
+ this.loaded = new Date()
+ this.hits += 1
+ fetch("links.json")
+ .then(response => response.json())
+ .then(data => (this.links = data));
+ }
+ },
+ mounted () {
+ this.load()
+ }
+});
diff --git a/caddy/site/orlop/links.json b/caddy/site/orlop/links.json
new file mode 100644
index 0000000..ef20acd
--- /dev/null
+++ b/caddy/site/orlop/links.json
@@ -0,0 +1,7 @@
+[
+ {"href": "https://about.orlop.duckdns.org", "text": "about", "port": "19999"},
+ {"href": "https://jellyfin.orlop.duckdns.org", "text": "jellyfin", "port": "9000"},
+ {"href": "https://emby.orlop.duckdns.org", "text": "emby", "port": "9981"},
+ {"href": "https://tvheadend.orlop.duckdns.org", "text": "tvheadend", "port": "8088"}
+
+]
\ No newline at end of file
diff --git a/caddy/site/quodatum/icon.png b/caddy/site/quodatum/icon.png
new file mode 100644
index 0000000..876079a
Binary files /dev/null and b/caddy/site/quodatum/icon.png differ
diff --git a/caddy/site/quodatum/index.html b/caddy/site/quodatum/index.html
new file mode 100644
index 0000000..ec867b0
--- /dev/null
+++ b/caddy/site/quodatum/index.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ Quodatum domain
+
+
+
+
+
+
+
+
+
+
+
+
+ Loaded at: {{ loaded }} mdi-clock
+ {{ message }}
+ hits {{ hits }}
+
+
+
+
+
+
+ {{ item.text }}
+
+
+ ?
+ {{ item.port }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/caddy/site/quodatum/index.js b/caddy/site/quodatum/index.js
new file mode 100644
index 0000000..9b5e325
--- /dev/null
+++ b/caddy/site/quodatum/index.js
@@ -0,0 +1,30 @@
+// app
+var app = new Vue({
+ el: '#app',
+ vuetify: new Vuetify(),
+ data: {
+ message: 'Hello Vue!',
+ links: null,
+ hits:0,
+ loaded: null,
+ target: "caddy",
+ targets: ["srv","top","new"],
+ caddy: null
+ },
+
+ methods:{
+ load() {
+ this.loaded = new Date()
+ this.hits += 1
+ fetch("links.json")
+ .then(response => response.json())
+ .then(data => (this.links = data));
+ fetch("http://192.168.1.5:2015/config/")
+ .then(response => response.json())
+ .then(data => (this.caddy = data));
+ }
+ },
+ mounted () {
+ this.load()
+ }
+});
diff --git a/caddy/site/quodatum/links.json b/caddy/site/quodatum/links.json
new file mode 100644
index 0000000..abfd056
--- /dev/null
+++ b/caddy/site/quodatum/links.json
@@ -0,0 +1,8 @@
+[
+ {"href": "https://about.quodatum.duckdns.org", "text": "about", "port": "19999"},
+ {"href": "https://git.quodatum.duckdns.org", "text": "git", "port": "9000"},
+ {"href": "https://wiki.quodatum.duckdns.org", "text": "wiki", "port": "9981"},
+ {"href": "https://wiki-alt.quodatum.duckdns.org", "text": "wiki alt", "port": "8088"},
+ {"href": "https://code.quodatum.duckdns.org", "text": "code", "port": "8002"},
+ {"href": "https://code-alt.quodatum.duckdns.org", "text": "code alt", "port": "3030"}
+]
\ No newline at end of file
diff --git a/cadvisor/docker-compose.yml b/cadvisor/docker-compose.yml
new file mode 100644
index 0000000..e6cd222
--- /dev/null
+++ b/cadvisor/docker-compose.yml
@@ -0,0 +1,36 @@
+version: '3.4'
+
+services:
+ cadvisor:
+ image: zcube/cadvisor:latest
+ ports:
+ - published: 9102
+ target: 9102
+ mode: host
+ command:
+ - "--port=9102"
+ - "--housekeeping_interval=30s"
+ - "--docker_only=true"
+ - "--disable_metrics=percpu,sched,tcp,udp,disk,diskIO,accelerator,hugetlb,referenced_memory,cpu_topology,resctrl"
+ volumes:
+ - /var/lib/docker/:/var/lib/docker:ro
+ - /dev/disk/:/dev/disk:ro
+ - /sys:/sys:ro
+ - /var/run:/var/run:ro
+ - /:/rootfs:ro
+ - /sys/fs/cgroup:/cgroup:ro
+ - /etc/machine-id:/etc/machine-id:ro
+ - /etc/localtime:/etc/localtime:ro
+ deploy:
+ mode: global
+ update_config:
+ order: stop-first
+ resources:
+ reservations:
+ memory: 80M
+ healthcheck:
+ test: wget --quiet --tries=1 --spider http://localhost:9102/healthz || exit 1
+ interval: 15s
+ timeout: 15s
+ retries: 5
+ start_period: 30s
diff --git a/code-bmy/.dockerignore b/code-bmy/.dockerignore
new file mode 100644
index 0000000..f788eea
--- /dev/null
+++ b/code-bmy/.dockerignore
@@ -0,0 +1,2 @@
+# docker ignore
+custom
\ No newline at end of file
diff --git a/code-bmy/Dockerfile b/code-bmy/Dockerfile
new file mode 100644
index 0000000..4fbb597
--- /dev/null
+++ b/code-bmy/Dockerfile
@@ -0,0 +1,58 @@
+# A code-server image with added
+# openjdk@11
+# BaseX installed@9.7.3
+# @author Andy Bunce
+# Bugs:
+# hardcoded for amd64
+
+# Main image
+FROM ghcr.io/linuxserver/code-server:4.5.1
+
+ARG TARGETARCH
+ARG BUILDARCH
+RUN echo "I'm building vscode-basex for ${BUILDARCH} on ${TARGETARCH} User: ${PUID}"
+
+LABEL author="Andy Bunce"
+LABEL company="Quodatum Ltd"
+LABEL maintainer="quodatum@gmail.com"
+
+# Install OpenJDK-8
+RUN apt-get update && \
+ apt-get install -y openjdk-8-jdk-headless;
+
+# Fix certificate issues
+RUN apt-get update && \
+ apt-get install ca-certificates-java && \
+ apt-get clean && \
+ update-ca-certificates -f;
+
+# Setup JAVA_HOME -- useful for docker commandline
+ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
+RUN export JAVA_HOME
+
+# install BaseX to /basex/
+RUN curl https://files.basex.org/releases/9.5.1/BaseX951.zip | jar xv && \
+ chown -R 1000:1000 /basex && chmod a+x /basex/bin/* ;
+ENV PATH=$PATH:/basex/bin
+
+# install docker cli only
+RUN curl https://download.docker.com/linux/static/stable/x86_64/docker-20.10.17.tgz | tar zxv -C /tmp/ && \
+ cp /tmp/docker/docker /usr/local/bin && rm -r /tmp/docker;
+
+# install maven
+RUN curl https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz | \
+ tar zxv -C /usr/local/bin && \
+ cd /usr/local/bin && \
+ ln -s apache-maven-3.8.6 maven
+ENV PATH=$PATH:/usr/local/bin/maven/bin
+
+# install node+npm LTS see https://www.how2shout.com/linux/how-to-install-node-js-npm-on-debian-11-bullseye/
+RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
+ apt install nodejs
+
+#RUN chmod 666 /var/run/docker.sock
+
+#RUN /usr/local/bin/code-server --install-extension vscode-basex-0.0.21.vsix
+
+# ports and volumes
+EXPOSE 8443
\ No newline at end of file
diff --git a/code-bmy/config/.gitignore b/code-bmy/config/.gitignore
new file mode 100644
index 0000000..5a4253a
--- /dev/null
+++ b/code-bmy/config/.gitignore
@@ -0,0 +1,3 @@
+# .gitignore nothing
+###################
+
diff --git a/code-bmy/config/.vscode/buenon.scratchpads-0.0.7.vsix b/code-bmy/config/.vscode/buenon.scratchpads-0.0.7.vsix
new file mode 100644
index 0000000..3359a1c
Binary files /dev/null and b/code-bmy/config/.vscode/buenon.scratchpads-0.0.7.vsix differ
diff --git a/code-bmy/config/.vscode/deltaxml.xslt-xpath-1.1.0.vsix b/code-bmy/config/.vscode/deltaxml.xslt-xpath-1.1.0.vsix
new file mode 100644
index 0000000..ca4d179
Binary files /dev/null and b/code-bmy/config/.vscode/deltaxml.xslt-xpath-1.1.0.vsix differ
diff --git a/code-bmy/config/.vscode/extensions.json b/code-bmy/config/.vscode/extensions.json
new file mode 100644
index 0000000..6084485
--- /dev/null
+++ b/code-bmy/config/.vscode/extensions.json
@@ -0,0 +1,11 @@
+{
+ "recommendations": [
+ "ms-azuretools.vscode-docker",
+ "dbaeumer.vscode-eslint",
+ "eamodio.gitlens",
+ "kelvin.vscode-sshfs",
+ "alefragnani.project-manager",
+ "johnpapa.vscode-peacock",
+ "nonoroazoro.syncing"
+ ]
+}
\ No newline at end of file
diff --git a/code-bmy/config/.vscode/raffazizzi.sxml-0.2.2.vsix b/code-bmy/config/.vscode/raffazizzi.sxml-0.2.2.vsix
new file mode 100644
index 0000000..adee8d6
Binary files /dev/null and b/code-bmy/config/.vscode/raffazizzi.sxml-0.2.2.vsix differ
diff --git a/code-bmy/config/.vscode/vscode-basex-0.0.52.vsix b/code-bmy/config/.vscode/vscode-basex-0.0.52.vsix
new file mode 100644
index 0000000..de023d9
Binary files /dev/null and b/code-bmy/config/.vscode/vscode-basex-0.0.52.vsix differ
diff --git a/code-bmy/config/.vscode/w3c-ebnf-0.2.0.vsix b/code-bmy/config/.vscode/w3c-ebnf-0.2.0.vsix
new file mode 100644
index 0000000..130e6aa
Binary files /dev/null and b/code-bmy/config/.vscode/w3c-ebnf-0.2.0.vsix differ
diff --git a/code-bmy/config/install.sh b/code-bmy/config/install.sh
new file mode 100755
index 0000000..fbf8e33
--- /dev/null
+++ b/code-bmy/config/install.sh
@@ -0,0 +1,26 @@
+# setup
+
+
+#install extensions located in /exts/ folder
+# code-server@4.0.2 omv
+CODE_SERVER="/app/code-server/bin/code-server"
+
+# 4.0.1 n2-plus
+#CODE_SERVER="/usr/local/bin/code-server"
+
+for FILE in .vscode/*.vsix
+do
+ $CODE_SERVER --install-extension $FILE
+done
+
+
+# pull useful projects
+cd /config/workspace
+git clone https://github.com/BloomsburyDigital/XML-CMS.git
+mkdir quodatum
+cd quodatum
+git clone https://github.com/Quodatum/xqlint.git
+git clone https://github.com/Quodatum/xqdoca.git
+git clone https://git.quodatum.duckdns.org/apb/file-samples.git
+
+
diff --git a/code-bmy/custom/saxon-he-10.8.jar b/code-bmy/custom/saxon-he-10.8.jar
new file mode 100644
index 0000000..aae93fa
Binary files /dev/null and b/code-bmy/custom/saxon-he-10.8.jar differ
diff --git a/code-bmy/docker-compose.yml b/code-bmy/docker-compose.yml
new file mode 100644
index 0000000..e194de2
--- /dev/null
+++ b/code-bmy/docker-compose.yml
@@ -0,0 +1,21 @@
+version: '3'
+
+services:
+ vscode-basex:
+ container_name: vscode-bmy
+ image: vscode-bmy
+ build: .
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=Europe/London
+ - SUDO_PASSWORD=password #optional
+ - SUDO_PASSWORD_HASH= #optional
+ volumes:
+ - ./config:/config
+ - ./repo:/basex/repo
+ - ./custom:/basex/lib/custom
+ - /var/run/docker.sock:/var/run/docker.sock
+ ports:
+ - 8448:8443
+ restart: unless-stopped
\ No newline at end of file
diff --git a/code-bmy/readme.md b/code-bmy/readme.md
new file mode 100644
index 0000000..cd86086
--- /dev/null
+++ b/code-bmy/readme.md
@@ -0,0 +1,15 @@
+# A BaseX development environment for vscode
+
+## docker build
+```
+docker build --tag=vscode-basex .
+```
+## compose
+```
+docker-compose up
+```
+## Includes
+* openjdk-11-jdk-headless
+* BaseX
+
+
diff --git a/code-server/README.md b/code-server/README.md
index fc6e6f3..199c727 100644
--- a/code-server/README.md
+++ b/code-server/README.md
@@ -1,3 +1,5 @@
-# code-server
+# code-bmy
+
+Docker vscode build for bloomsbury
Installs `code-server:version-v3.9.1` with JRE and BaseX.
\ No newline at end of file
diff --git a/code-server/docker-compose.yml b/code-server/docker-compose.yml
index 8742daa..d7e1297 100644
--- a/code-server/docker-compose.yml
+++ b/code-server/docker-compose.yml
@@ -12,7 +12,7 @@ services:
- SUDO_PASSWORD_HASH= #optional
volumes:
- ./config:/config
- - /var/run/docker.sock:/var/run/docker.sock:ro
+ - /var/run/docker.sock:/var/run/docker.sock
ports:
- 8443:8443
restart: unless-stopped
diff --git a/code-server4/docker-compose.yml b/code-server4/docker-compose.yml
index 13588dd..42ef18c 100644
--- a/code-server4/docker-compose.yml
+++ b/code-server4/docker-compose.yml
@@ -2,7 +2,7 @@
version: "2.1"
services:
code-server:
- image: ghcr.io/linuxserver/code-server:4.0.1
+ image: ghcr.io/linuxserver/code-server
container_name: code-server4
environment:
- PUID=1000
@@ -12,7 +12,7 @@ services:
- SUDO_PASSWORD_HASH= #optional
volumes:
- ./config:/config
- - /var/run/docker.sock:/var/run/docker.sock:ro
+ - /var/run/docker.sock:/var/run/docker.sock
ports:
- 8444:8443
restart: unless-stopped
diff --git a/code-serverx/Dockerfile b/code-serverx/Dockerfile
index 31cc6eb..499e717 100644
--- a/code-serverx/Dockerfile
+++ b/code-serverx/Dockerfile
@@ -1,14 +1,16 @@
# A code-server image with added
-# openjdk 11
-# BaseX installed
+# openjdk@11
+# BaseX installed@9.7.3
# @author Andy Bunce
+# Bugs:
+# hardcoded for amd64
# Main image
-FROM ghcr.io/linuxserver/code-server:4.1.0
+FROM ghcr.io/linuxserver/code-server:4.5.1
ARG TARGETARCH
ARG BUILDARCH
-RUN echo "I'm building vscode-basex for ${BUILDARCH} on ${TARGETARCH}"
+RUN echo "I'm building vscode-basex for ${BUILDARCH} on ${TARGETARCH} User: ${PUID}"
LABEL author="Andy Bunce"
LABEL company="Quodatum Ltd"
@@ -29,13 +31,25 @@ ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/
RUN export JAVA_HOME
# install BaseX to /basex/
-RUN curl https://files.basex.org/releases/9.6.4/BaseX964.zip | jar xv && \
- chmod a+x /basex/bin/*;
+RUN curl https://files.basex.org/releases/9.7.3/BaseX973.zip | jar xv && \
+ chown -R $PUID:$PGID /basex && chmod a+x /basex/bin/* ;
ENV PATH=$PATH:/basex/bin
# install docker cli only
-RUN curl https://download.docker.com/linux/static/stable/x86_64/docker-20.10.12.tgz | tar zxv -C /tmp/ && \
+RUN curl https://download.docker.com/linux/static/stable/x86_64/docker-20.10.17.tgz | tar zxv -C /tmp/ && \
cp /tmp/docker/docker /usr/local/bin && rm -r /tmp/docker;
+
+# install maven
+RUN curl https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz | \
+ tar zxv -C /usr/local/bin && \
+ cd /usr/local/bin && \
+ ln -s apache-maven-3.8.6 maven
+ENV PATH=$PATH:/usr/local/bin/maven/bin
+
+# install node+npm LTS see https://www.how2shout.com/linux/how-to-install-node-js-npm-on-debian-11-bullseye/
+RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
+ apt install nodejs
+
#RUN chmod 666 /var/run/docker.sock
#RUN /usr/local/bin/code-server --install-extension vscode-basex-0.0.21.vsix
diff --git a/code-serverx/custom/saxon-he-10.8.jar b/code-serverx/custom/saxon-he-10.8.jar
new file mode 100644
index 0000000..aae93fa
Binary files /dev/null and b/code-serverx/custom/saxon-he-10.8.jar differ
diff --git a/code-serverx/custom/saxon-he-11.1.jar b/code-serverx/custom/saxon-he-11.1.jar
deleted file mode 100644
index 84f5bdf..0000000
Binary files a/code-serverx/custom/saxon-he-11.1.jar and /dev/null differ
diff --git a/code-serverx/docker-compose.yml b/code-serverx/docker-compose.yml
index 2b508cd..c924efa 100644
--- a/code-serverx/docker-compose.yml
+++ b/code-serverx/docker-compose.yml
@@ -14,7 +14,7 @@ services:
volumes:
- ./config:/config
- ./custom:/basex/lib/custom
- - /var/run/docker.sock:/var/run/docker.sock:ro
+ - /var/run/docker.sock:/var/run/docker.sock
ports:
- 8444:8443
restart: unless-stopped
\ No newline at end of file
diff --git a/code-serverx/readme.md b/code-serverx/readme.md
index cd86086..a02bd9c 100644
--- a/code-serverx/readme.md
+++ b/code-serverx/readme.md
@@ -2,7 +2,7 @@
## docker build
```
-docker build --tag=vscode-basex .
+docker build --tag=vs451-basex973 .
```
## compose
```
@@ -10,6 +10,8 @@ docker-compose up
```
## Includes
* openjdk-11-jdk-headless
-* BaseX
+* BaseX 9.7.3
+* node+npm v16
+* maven 3.8.6
diff --git a/docker-registry/README.md b/docker-registry/README.md
new file mode 100644
index 0000000..485d038
--- /dev/null
+++ b/docker-registry/README.md
@@ -0,0 +1 @@
+https://joxit.dev/docker-registry-ui/
\ No newline at end of file
diff --git a/docker-registry/docker-compose.yml b/docker-registry/docker-compose.yml
new file mode 100644
index 0000000..01efcb3
--- /dev/null
+++ b/docker-registry/docker-compose.yml
@@ -0,0 +1,19 @@
+version: "3"
+services:
+ docker-registry:
+ image: registry:2
+ container_name: docker-registry
+ ports:
+ - 5000:5000
+ restart: always
+ volumes:
+ - ./docker-registry:/var/lib/registry
+
+ docker-registry-ui:
+ image: konradkleine/docker-registry-frontend:v2
+ container_name: docker-registry-ui
+ ports:
+ - 8090:80
+ environment:
+ ENV_DOCKER_REGISTRY_HOST: docker-registry
+ ENV_DOCKER_REGISTRY_PORT: 5000
\ No newline at end of file
diff --git a/docker-registry/docker-registry/.gitignore b/docker-registry/docker-registry/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/docker-registry/docker-registry/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/drone/docker-compose.yml b/drone/docker-compose.yml
new file mode 100644
index 0000000..1202013
--- /dev/null
+++ b/drone/docker-compose.yml
@@ -0,0 +1,19 @@
+version: '2'
+
+services:
+ drone-server:
+ image: drone/drone
+
+ ports:
+ - 80:80
+ volumes:
+ - ./drone-server-data:/var/lib/drone/
+ restart: always
+ environment:
+ - DRONE_SERVER_HOST=drone.quodatum.duckdns.org
+ - DRONE_SERVER_PROTO=https
+ - DRONE_GITEA_SERVER=https://git.quodatum.duckdns.org/
+ - DRONE_GITEA_CLIENT_ID=607bc1aa-2491-4193-8e6b-a82d2dd05be0
+ - DRONE_GITEA_CLIENT_SECRET=HZgKI4c353aqNPOhTgjJ5WUttYnVKYp9omifezS-dLM=
+ - DRONE_RPC_SECRET=06522d7b764c0d05138e79ab7c8c341e
+ - DRONE_USER_CREATE=username:apb,admin:true
\ No newline at end of file
diff --git a/emby/cache/.gitignore b/emby/cache/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/emby/cache/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/emby/config/.gitignore b/emby/config/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/emby/config/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/emby/docker-compose.yml b/emby/docker-compose.yml
new file mode 100644
index 0000000..2f52fd7
--- /dev/null
+++ b/emby/docker-compose.yml
@@ -0,0 +1,26 @@
+version: "2.3"
+services:
+ emby:
+ image: emby/embyserver
+ container_name: embyserver
+ #runtime: nvidia # Expose NVIDIA GPUs
+ # network_mode: host # Enable DLNA and Wake-on-Lan
+ # https://forums.docker.com/t/docker-errors-invalidargument-host-network-mode-is-incompatible-with-port-bindings/103492/14
+ environment:
+ - UID=1000 # The UID to run emby as (default: 2)
+ - GID=100 # The GID to run emby as (default 2)
+ - GIDLIST=100 # A comma-separated list of additional GIDs to run emby as (default: 2)
+ volumes:
+ - ./config:/config
+ - ./cache:/cache
+ - /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/music:/music
+ - /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/PicasaStarter/pictures/Pictures:/photos
+ - /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/entertain:/entertain
+
+ ports:
+ - 8097:8096 # HTTP port
+ - 8920:8920 # HTTPS port
+ devices:
+ - /dev/dri:/dev/dri # VAAPI/NVDEC/NVENC render nodes
+ #- /dev/vchiq:/dev/vchiq # MMAL/OMX on Raspberry Pi
+ restart: unless-stopped
diff --git a/gerbera/docker-compose.yml b/gerbera/docker-compose.yml
index 2ac9a5a..b13a096 100644
--- a/gerbera/docker-compose.yml
+++ b/gerbera/docker-compose.yml
@@ -5,7 +5,6 @@ services:
gerbera:
image: gerbera/gerbera:1.9.2
container_name: gerbera
- restart: always
volumes:
- "/mnt/media/pictures:/media/pictures:ro"
- "./videos:/media/videos:ro"
diff --git a/gitea/README.md b/gitea/README.md
index a36c52c..1b49308 100644
--- a/gitea/README.md
+++ b/gitea/README.md
@@ -4,6 +4,52 @@
from https://gist.github.com/sinbad/4bb771b916fa8facaf340af3fc49ee43
-### backup_gitea.sh
-writes to `/mnt/drive/backups/gitea/`
-### restore
+### Backup
+
+`backup_gitea.sh` writes to `/mnt/drive/backups/gitea/`
+
+### Restore
+* Requires `7z` (`apt install p7zip-full`)
+
+```bash
+
+#restore_gitea_data.sh [--dry-run]
+ ./restore_gitea_data.sh /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/gitea data
+ ```
+
+## Samples
+### Backup
+```bash
+./backup_gitea.sh
+Backing up Gitea data to /mnt/drive/backups/gitea/gitea_backup.zip via gitea:/tmp/gitea_dump_temp.zip
+2022/03/23 22:49:30 ...dules/setting/log.go:286:newLogService() [I] Gitea v1.15.8 built with GNU Make 4.3, go1.16.12 : bindata, timetzdata, sqlite, sqlite_unlock_notify
+2022/03/23 22:49:30 ...dules/setting/log.go:333:newLogService() [I] Gitea Log Mode: Console(Console:)
+2022/03/23 22:49:30 ...dules/setting/log.go:249:generateNamedLogger() [I] Router Log: Console(console:)
+2022/03/23 22:49:30 ...les/setting/cache.go:78:newCacheService() [I] Cache Service Enabled
+2022/03/23 22:49:30 ...les/setting/cache.go:93:newCacheService() [I] Last Commit Cache Service Enabled
+2022/03/23 22:49:30 ...s/setting/session.go:77:newSessionService() [I] Session Service Enabled
+2022/03/23 22:49:30 ...es/setting/mailer.go:109:newMailService() [I] Mail Service Enabled
+2022/03/23 22:49:30 ...s/storage/storage.go:171:initAttachments() [I] Initialising Attachment storage with type:
+2022/03/23 22:49:30 ...les/storage/local.go:47:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/attachments
+2022/03/23 22:49:30 ...s/storage/storage.go:165:initAvatars() [I] Initialising Avatar storage with type:
+2022/03/23 22:49:30 ...les/storage/local.go:47:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/avatars
+2022/03/23 22:49:30 ...s/storage/storage.go:183:initRepoAvatars() [I] Initialising Repository Avatar storage with type:
+2022/03/23 22:49:30 ...les/storage/local.go:47:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-avatars
+2022/03/23 22:49:30 ...s/storage/storage.go:177:initLFS() [I] Initialising LFS storage with type:
+2022/03/23 22:49:30 ...les/storage/local.go:47:NewLocalStorage() [I] Creating new Local Storage at /data/git/lfs
+2022/03/23 22:49:30 ...s/storage/storage.go:189:initRepoArchives() [I] Initialising Repository Archive storage with type:
+2022/03/23 22:49:30 ...les/storage/local.go:47:NewLocalStorage() [I] Creating new Local Storage at /data/gitea/repo-archive
+2022/03/23 22:49:30 cmd/dump.go:221:runDump() [I] Skip dumping local repositories
+2022/03/23 22:49:30 cmd/dump.go:267:runDump() [I] Dumping database...
+2022/03/23 22:49:30 cmd/dump.go:279:runDump() [I] Adding custom configuration file from /data/gitea/conf/app.ini
+2022/03/23 22:49:30 cmd/dump.go:295:runDump() [I] Custom dir /data/gitea is inside data dir /data/gitea, skipped
+2022/03/23 22:49:30 cmd/dump.go:307:runDump() [I] Packing data directory.../data/gitea
+2022/03/23 22:49:31 cmd/dump.go:352:runDump() [I] Skip dumping log files
+Backing up git repositories
+Backing up LFS data
+Gitea backup completed successfully
+```
+##Restore
+```
+todo
+```
\ No newline at end of file
diff --git a/gitea/backup.sh b/gitea/backup.sh
new file mode 100755
index 0000000..f182149
--- /dev/null
+++ b/gitea/backup.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# backup gitea
+echo "stopping"
+docker-compose stop
+echo "stopping"
+. backup_gitea.sh
+echo "restart"
+docker-compose up -d
diff --git a/gitea/backup_gitea.sh b/gitea/backup_gitea.sh
old mode 100644
new mode 100755
index aded7ab..8299776
--- a/gitea/backup_gitea.sh
+++ b/gitea/backup_gitea.sh
@@ -14,22 +14,22 @@
# * /repositories/ - containing the bundles, structured owner/name.bundle
# * /lfs/ - containing all the direct LFS data
#
-# Stop on errors
-set -e
+# Stop on errors or undefined
+set -e -u
# Gitea config / SQL DB backup rotation
CONTAINER=gitea
# Backup dir from our perspective
-HOST_BACKUP_DIR="/mnt/drive/backups"
+HOST_BACKUP_DIR=$DEST
# Git repo dir from our perspective (it's outside container)
-HOST_GIT_REPO_DIR="/mnt/drive/docker/thedocks/gitea/data/git/repositories"
+HOST_GIT_REPO_DIR="$SRC/git/repositories"
# Git LFS dir from our perspective (it's outside container)
-HOST_GIT_LFS_DIR="/mnt/drive/docker/thedocks/gitea/data/git/lfs"
+HOST_GIT_LFS_DIR="$SRC/git/lfs"
# Where we work on things (host and container)
TEMP_DIR="/tmp"
GITEA_DATA_FILENAME="gitea_backup.zip"
-HOST_BACKUP_FILE="$HOST_BACKUP_DIR/$GITEA_DATA_FILENAME"
+HOST_BACKUP_FILE="$DEST/$GITEA_DATA_FILENAME"
# Back up to temp files then copy on success to prevent syncing incomplete/bad files
CONTAINER_BACKUP_FILE_TEMP="$TEMP_DIR/gitea_dump_temp.zip"
@@ -43,7 +43,7 @@ docker cp $CONTAINER:$CONTAINER_BACKUP_FILE_TEMP $HOST_BACKUP_FILE
echo Backing up git repositories
# Git repos are in 2-level structure, owner/repository
# Again we MUST tar to a TEMP file and move into place when successful
-GITREPO_BACKUP_FILE="$HOST_BACKUP_DIR/gitrepos_backup.tar.bz2"
+GITREPO_BACKUP_FILE="$DEST/gitrepos_backup.tar.bz2"
GITREPO_BACKUP_FILE_TEMP=`mktemp -p $TEMP_DIR gitrepos_backup.tar.bz2.XXXXXX`
tar cjf $GITREPO_BACKUP_FILE_TEMP -C $HOST_GIT_REPO_DIR .
mv -f $GITREPO_BACKUP_FILE_TEMP $GITREPO_BACKUP_FILE
diff --git a/gitea/omv.profile b/gitea/omv.profile
new file mode 100755
index 0000000..a7535fe
--- /dev/null
+++ b/gitea/omv.profile
@@ -0,0 +1,5 @@
+# for gitea_backup
+#!/bin/bash
+
+export SRC="/root/thedocks/gitea/data"
+export DEST="/srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/gitea"
\ No newline at end of file
diff --git a/gitea/restore_gitea_container.sh b/gitea/restore_gitea_container.sh
old mode 100644
new mode 100755
diff --git a/gitea/restore_gitea_data.sh b/gitea/restore_gitea_data.sh
old mode 100644
new mode 100755
index 0c86f26..0b25083
--- a/gitea/restore_gitea_data.sh
+++ b/gitea/restore_gitea_data.sh
@@ -31,11 +31,12 @@ if [[ "$1" == "--help" ]]; then
fi
DRYRUN=0
-SOURCE="gitea"
-DATADIR="data"
+#SOURCE="gitea"
+# /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/gitea
+#DATADIR="data"
SQLDEST=""
USER_UID=1000
-GROUP_GID=1000
+GROUP_GID=100
while (( "$#" )); do
if [[ "$1" == "--dry-run" ]]; then
diff --git a/jellyfin/cache/.gitignore b/jellyfin/cache/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/jellyfin/cache/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/jellyfin/config/.gitignore b/jellyfin/config/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/jellyfin/config/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/jellyfin/docker-compose.yml b/jellyfin/docker-compose.yml
new file mode 100644
index 0000000..a1ecf76
--- /dev/null
+++ b/jellyfin/docker-compose.yml
@@ -0,0 +1,24 @@
+version: "3.5"
+services:
+ jellyfin:
+ image: jellyfin/jellyfin
+ container_name: jellyfin
+ user: 1000:100
+ group_add:
+ - 107
+ network_mode: "host"
+ volumes:
+ - ./config:/config
+ - ./cache:/cache
+ - /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/music:/music
+ - /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/PicasaStarter/pictures/Pictures:/photos
+ - /srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/entertain:/entertain
+
+ restart: "unless-stopped"
+ # Optional - alternative address used for autodiscovery
+ environment:
+ - JELLYFIN_PublishedServerUrl=https://jellyfin.orlop.duckdns.org
+ #devices:
+ # VAAPI Devices (for omv :Intel NUC Board D54250WYK)
+ # - /dev/dri/renderD128:/dev/dri/renderD128
+ # - /dev/dri/card0:/dev/dri/card0
diff --git a/mermaid-server/docker-compose.yml b/mermaid-server/docker-compose.yml
new file mode 100644
index 0000000..e42778b
--- /dev/null
+++ b/mermaid-server/docker-compose.yml
@@ -0,0 +1,13 @@
+---
+version: "2.1"
+services:
+ mermaid:
+ image: tomwright/mermaid-server:latest
+ container_name: mermaid
+ environment:
+ - USER_UID=1000
+ - USER_GID=1000
+ ports:
+ - "4500:80"
+ restart: unless-stopped
+
diff --git a/mermaid-server/readme.md b/mermaid-server/readme.md
new file mode 100644
index 0000000..e144c99
--- /dev/null
+++ b/mermaid-server/readme.md
@@ -0,0 +1 @@
+https://github.com/TomWright/mermaid-server
\ No newline at end of file
diff --git a/netdata/docker-compose.yml b/netdata/docker-compose.yml
new file mode 100644
index 0000000..6294d1a
--- /dev/null
+++ b/netdata/docker-compose.yml
@@ -0,0 +1,27 @@
+version: '3'
+services:
+ netdata:
+ image: netdata/netdata
+ container_name: netdata
+ #hostname: example.com # set to fqdn of host
+ ports:
+ - 19999:19999
+ restart: unless-stopped
+ cap_add:
+ - SYS_PTRACE
+ security_opt:
+ - apparmor:unconfined
+ volumes:
+ - netdataconfig:/etc/netdata
+ - netdatalib:/var/lib/netdata
+ - netdatacache:/var/cache/netdata
+ - /etc/passwd:/host/etc/passwd:ro
+ - /etc/group:/host/etc/group:ro
+ - /proc:/host/proc:ro
+ - /sys:/host/sys:ro
+ - /etc/os-release:/host/etc/os-release:ro
+
+volumes:
+ netdataconfig:
+ netdatalib:
+ netdatacache:
\ No newline at end of file
diff --git a/ntopng/data/.gitignore b/ntopng/data/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/ntopng/data/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/ntopng/docker-compose.yaml b/ntopng/docker-compose.yaml
new file mode 100644
index 0000000..1593ea0
--- /dev/null
+++ b/ntopng/docker-compose.yaml
@@ -0,0 +1,21 @@
+version: '3'
+
+services:
+ redis:
+ image: redis:alpine
+ command: --save 900 1
+ volumes:
+ - ./data/redis:/data
+ restart: on-failure:5
+ network_mode: "host"
+ ntopng:
+ build:
+ context: ntop
+ dockerfile: Dockerfile
+ command: ntopng -r localhost:6379 -d /ntopngcustom
+ volumes:
+ - ./data/ntopng:/var/lib/ntopng
+ restart: on-failure:5
+ network_mode: "host"
+ depends_on:
+ - redis
\ No newline at end of file
diff --git a/ntopng/ntop/Dockerfile b/ntopng/ntop/Dockerfile
new file mode 100644
index 0000000..e986298
--- /dev/null
+++ b/ntopng/ntop/Dockerfile
@@ -0,0 +1,24 @@
+# from: https://github.com/ntop/docker-ntop/blob/master/Dockerfile.ntopng-arm64
+FROM debian:bullseye-slim
+
+# Main dependencies and ntop.org apt package repo installation
+RUN apt-get update && \
+ apt-get -y -q install software-properties-common wget lsb-release gnupg libelf1 && \
+ wget -q http://packages.ntop.org/RaspberryPI/apt-ntop_1.0.190416-469_all.deb && \
+ apt-get -y -q install ./apt-ntop_1.0.190416-469_all.deb
+
+# ntopng, some of its dependencies and libcap2 / libzstd1 need to be armhf
+# architecture, because latest ntopng (4.3) is not available in arm64
+RUN apt-get clean all && \
+ dpkg --add-architecture armhf && \
+ apt-get update && \
+ apt-get -y -q install ntopng:armhf libcap2:armhf libzstd1:armhf
+
+
+RUN echo '#!/bin/bash\n/etc/init.d/redis-server start\nntopng "$@" "$NTOP_CONFIG"' > /run.sh && \
+ chmod +x /run.sh
+
+EXPOSE 3000
+
+ENTRYPOINT ["/run.sh"]
+
\ No newline at end of file
diff --git a/pihole/readme.md b/pihole/readme.md
index 893d5bf..10a98bd 100644
--- a/pihole/readme.md
+++ b/pihole/readme.md
@@ -11,13 +11,15 @@ docker network create -d macvlan \
```
then
-1. sudo ip link set eth0 promisc on
-1. sudo ip link add macvlan-shim link eth0 type macvlan mode bridge
-1. sudo ip addr add 192.168.1.60/28 dev macvlan-shim
-1. sudo ip link set macvlan-shim up
+```
+sudo ip link set eth0 promisc on
+sudo ip link add macvlan-shim link eth0 type macvlan mode bridge
+sudo ip addr add 192.168.1.60/28 dev macvlan-shim
+sudo ip link set macvlan-shim up
+```
Check
- ifconfig macvlan-shim
+ `ifconfig macvlan-shim`
## /usr/local/bin/pi-vlan.sh
diff --git a/prism/database/.gitignore b/prism/database/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/prism/database/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/prism/docker-compose b/prism/docker-compose
new file mode 100644
index 0000000..6e7d018
--- /dev/null
+++ b/prism/docker-compose
@@ -0,0 +1,145 @@
+version: '3.5'
+
+# Example Docker Compose config file for PhotoPrism (Raspberry Pi 3/4 and other ARM64-based devices)
+#
+# Note:
+# - You have to boot your Raspberry Pi 3/4 with the parameter "arm_64bit=1" in config.txt to use our ARM64 (64-bit) image.
+# An "exec format" error will occur otherwise.
+# - Try explicitly pulling the ARM64 version if you've booted your device with the "arm_64bit=1" flag and you see
+# the "no matching manifest" error on Raspberry Pi OS (Raspbian). See documentation for details.
+# - Use https://dl.photoprism.app/docker/armv7/docker-compose.yml to run PhotoPrism and MariaDB on ARMv7-based devices
+# as well as Raspberry Pi OS (Raspbian) installations without 64-bit support.
+# - Running PhotoPrism on a server with less than 4 GB of swap space or setting a memory/swap limit can cause unexpected
+# restarts ("crashes"), for example, when the indexer temporarily needs more memory to process large files.
+# - In case you see Docker errors related to "cgroups", try adding the following parameters to /boot/firmware/cmdline.txt
+# or /boot/cmdline.txt (file location depends on the OS in use): cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
+# - If you install PhotoPrism on a public server outside your home network, please always run it behind a secure
+# HTTPS reverse proxy such as Traefik or Caddy. Your files and passwords will otherwise be transmitted
+# in clear text and can be intercepted by anyone, including your provider, hackers, and governments:
+# https://docs.photoprism.app/getting-started/proxies/traefik/
+#
+# Documentation : https://docs.photoprism.app/getting-started/raspberry-pi/
+# Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/
+#
+# DOCKER COMPOSE COMMAND REFERENCE
+# see https://docs.photoprism.app/getting-started/docker-compose/#command-line-interface
+# --------------------------------------------------------------------------
+# Start | docker-compose up -d
+# Stop | docker-compose stop
+# Update | docker-compose pull
+# Logs | docker-compose logs --tail=25 -f
+# Terminal | docker-compose exec photoprism bash
+# Help | docker-compose exec photoprism photoprism help
+# Config | docker-compose exec photoprism photoprism config
+# Reset | docker-compose exec photoprism photoprism reset
+# Backup | docker-compose exec photoprism photoprism backup -a -i
+# Restore | docker-compose exec photoprism photoprism restore -a -i
+# Index | docker-compose exec photoprism photoprism index
+# Reindex | docker-compose exec photoprism photoprism index -f
+# Import | docker-compose exec photoprism photoprism import
+#
+# To search originals for faces without a complete rescan:
+# docker-compose exec photoprism photoprism faces index
+#
+# All commands may have to be prefixed with "sudo" when not running as root.
+# This will point the home directory shortcut ~ to /root in volume mounts.
+
+services:
+ photoprism:
+ ## Use photoprism/photoprism:preview-arm64 for testing preview builds:
+ image: photoprism/photoprism:arm64
+ depends_on:
+ - mariadb
+ ## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!
+ ## If the service gets stuck in a restart loop, this points to a memory, filesystem, network, or database issue:
+ ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
+ # restart: unless-stopped
+ security_opt:
+ - seccomp:unconfined
+ - apparmor:unconfined
+ ports:
+ - "2342:2342" # HTTP port (host:container)
+ environment:
+ PHOTOPRISM_ADMIN_PASSWORD: "insecure" # !!! PLEASE CHANGE YOUR INITIAL "admin" PASSWORD !!!
+ PHOTOPRISM_SITE_URL: "http://localhost:2342/" # public server URL incl http:// or https:// and /path, :port is optional
+ PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
+ PHOTOPRISM_HTTP_COMPRESSION: "none" # improves transfer speed and bandwidth utilization (none or gzip)
+ PHOTOPRISM_WORKERS: 2 # limits the number of indexing workers to reduce system load
+ PHOTOPRISM_DEBUG: "false" # run in debug mode (shows additional log messages)
+ PHOTOPRISM_PUBLIC: "false" # no authentication required (disables password protection)
+ PHOTOPRISM_READONLY: "false" # don't modify originals directory (reduced functionality)
+ PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
+ PHOTOPRISM_DISABLE_CHOWN: "false" # disables storage permission updates on startup
+ PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
+ PHOTOPRISM_DISABLE_SETTINGS: "false" # disables Settings in Web UI
+ PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
+ PHOTOPRISM_DISABLE_FACES: "false" # disables facial recognition
+ PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification
+ PHOTOPRISM_DARKTABLE_PRESETS: "true" # enables Darktable presets and disables concurrent RAW conversion
+ # PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # FFmpeg AVC encoder for video transcoding (default: libx264)
+ # PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32)
+ PHOTOPRISM_DETECT_NSFW: "false" # flag photos as private that MAY be offensive
+ PHOTOPRISM_UPLOAD_NSFW: "true" # allow uploads that MAY be offensive
+ # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server
+ PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
+ PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server (hostname:port)
+ PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
+ PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
+ PHOTOPRISM_DATABASE_PASSWORD: "insecure" # MariaDB or MySQL database user password
+ PHOTOPRISM_SITE_TITLE: "PhotoPrism"
+ PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
+ PHOTOPRISM_SITE_DESCRIPTION: ""
+ PHOTOPRISM_SITE_AUTHOR: ""
+ ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean):
+ # PHOTOPRISM_INIT: "update clean"
+ ## Run as a specific user, group, or with a custom umask (does not work together with "user:")
+ # PHOTOPRISM_UID: 1000
+ # PHOTOPRISM_GID: 1000
+ # PHOTOPRISM_UMASK: 0000
+ HOME: "/photoprism"
+ ## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
+ # user: "1000:1000"
+ ## Share hardware devices with FFmpeg and TensorFlow (optional):
+ # devices:
+ # - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
+ working_dir: "/photoprism"
+ ## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
+ volumes:
+ # "/host/folder:/photoprism/folder" # example
+ - "./pictures:/photoprism/originals" # original media files (photos and videos)
+ # - "/example/family:/photoprism/originals/family" # *additional* media folders can be mounted like this
+ # - "~/Import:/photoprism/import" # *optional* base folder from which files can be imported to originals
+ - "./storage:/photoprism/storage" # *writable* storage folder for cache, database, and sidecar files (never remove)
+
+ ## Database Server (recommended)
+ ## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
+ mariadb:
+ ## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue:
+ ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
+ restart: unless-stopped
+ image: arm64v8/mariadb:10.6 # this mariadb image runs on ARM64-based devices only
+ security_opt:
+ - seccomp:unconfined
+ - apparmor:unconfined
+ 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
+ ## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
+ volumes:
+ - "./database:/var/lib/mysql" # important, don't remove
+ environment:
+ MYSQL_ROOT_PASSWORD: insecure
+ MYSQL_DATABASE: photoprism
+ MYSQL_USER: photoprism
+ MYSQL_PASSWORD: insecure
+
+ ## Watchtower upgrades services automatically (optional)
+ ## see https://docs.photoprism.app/getting-started/updates/#watchtower
+ #
+ # watchtower:
+ # restart: unless-stopped
+ # image: containrrr/watchtower
+ # environment:
+ # WATCHTOWER_CLEANUP: "true"
+ # WATCHTOWER_POLL_INTERVAL: 7200 # checks for updates every two hours
+ # volumes:
+ # - "/var/run/docker.sock:/var/run/docker.sock"
+ # - "~/.docker/config.json:/config.json" # optional, for authentication if you have a Docker Hub account
diff --git a/prism/pictures/.gitignore b/prism/pictures/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/prism/pictures/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/prism/storage/.gitignore b/prism/storage/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/prism/storage/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/prometheus/docker-compose.yml b/prometheus/docker-compose.yml
new file mode 100644
index 0000000..d58b515
--- /dev/null
+++ b/prometheus/docker-compose.yml
@@ -0,0 +1,16 @@
+version: '3'
+
+services:
+ prometheus:
+ container_name: prometheus
+ image: prom/prometheus:v2.34.0
+ ports:
+ - 9000:9090
+ volumes:
+ - ./prometheus:/etc/prometheus
+ - prometheus-data:/prometheus
+ command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
+
+
+volumes:
+ prometheus-data:
diff --git a/prometheus/prometheus/alert.yml b/prometheus/prometheus/alert.yml
new file mode 100644
index 0000000..a2a4817
--- /dev/null
+++ b/prometheus/prometheus/alert.yml
@@ -0,0 +1,6 @@
+groups:
+ - name: DemoAlerts
+ rules:
+ - alert: InstanceDown
+ expr: up{job="services"} < 1
+ for: 5m
\ No newline at end of file
diff --git a/prometheus/prometheus/prometheus.yml b/prometheus/prometheus/prometheus.yml
new file mode 100644
index 0000000..487befa
--- /dev/null
+++ b/prometheus/prometheus/prometheus.yml
@@ -0,0 +1,16 @@
+global:
+ scrape_interval: 30s
+ scrape_timeout: 10s
+
+rule_files:
+ - alert.yml
+
+scrape_configs:
+ - job_name: services
+ metrics_path: /metrics
+ static_configs:
+ - targets:
+ - 'prometheus:9090'
+ - 'idonotexists:564'
+ - 'localhost:2015'
+
diff --git a/redis/data/.gitignore b/redis/data/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/redis/data/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/redis/docker-compose.yml b/redis/docker-compose.yml
new file mode 100644
index 0000000..e96ccab
--- /dev/null
+++ b/redis/docker-compose.yml
@@ -0,0 +1,14 @@
+version: '3.2'
+# redis for arm7
+services:
+
+ redis:
+ image: "arm32v7/redis"
+ command: redis-server --save 20 1 --loglevel warning
+ container_name: redis-test
+ ports:
+ - '6379:6379'
+ restart: unless-stopped
+ volumes:
+ - ./data:/data
+
\ No newline at end of file
diff --git a/sonarqube/docker-compose.yml b/sonarqube/docker-compose.yml
deleted file mode 100644
index 245166f..0000000
--- a/sonarqube/docker-compose.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-version: "3"
-
-services:
- sonarqube:
- image: sonarqube
- expose:
- - 9005
- ports:
- - "9005:9000"
- networks:
- - sonarnet
- environment:
- - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
- - SONARQUBE_JDBC_USERNAME=sonar
- - SONARQUBE_JDBC_PASSWORD=sonar
- volumes:
- - sonarqube_conf:/opt/sonarqube/conf
- - sonarqube_data:/opt/sonarqube/data
- - sonarqube_extensions:/opt/sonarqube/extensions
- - sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
-
- db:
- image: postgres
- networks:
- - sonarnet
- environment:
- - POSTGRES_USER=sonar
- - POSTGRES_PASSWORD=sonar
- volumes:
- - postgresql:/var/lib/postgresql
- - postgresql_data:/var/lib/postgresql/data
-
-networks:
- sonarnet:
-
-volumes:
- sonarqube_conf:
- sonarqube_data:
- sonarqube_extensions:
- sonarqube_bundled-plugins:
- postgresql:
- postgresql_data:
\ No newline at end of file
diff --git a/sonarqube/readme.md b/sonarqube/readme.md
deleted file mode 100644
index 982f8d8..0000000
--- a/sonarqube/readme.md
+++ /dev/null
@@ -1,3 +0,0 @@
-requires
-
-sysctl vm.max_map_count=262144
\ No newline at end of file
diff --git a/tiddlywiki/Dockerfile b/tiddlywiki/Dockerfile
index b19d28a..a52a7e1 100644
--- a/tiddlywiki/Dockerfile
+++ b/tiddlywiki/Dockerfile
@@ -1,6 +1,6 @@
FROM node:12-alpine
-RUN npm install -g tiddlywiki@5.2.0
+RUN npm install -g tiddlywiki@5.2.3
EXPOSE 8080
diff --git a/tiddlywiki/README.md b/tiddlywiki/README.md
deleted file mode 100644
index 30e8d77..0000000
--- a/tiddlywiki/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# TiddlyWiki Docker
-Run TiddlyWiki 5 via Docker and Docker Compose
-
-## QuickStart
-You should install [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/) first.
-
-```shell
-cp .env-example .env
-docker-compose up -d
-```
-
-Now TiddlyWiki should be running on http://localhost:8080.
-
-## Data
-The directory `./wiki-data` is used for all the data.
-
-## Auth
-default: `user` / `wiki`
-Modify `.env` file to customize
-
-## ToDo
-- [ ] Backup Data Automatically: sync `./wiki-data` with Object Storage Service (Like Amazon S3)
-
-## Related Repo
-* https://github.com/djmaze/tiddlywiki-docker
diff --git a/tiddlywiki/data/.gitignore b/tiddlywiki/data/.gitignore
new file mode 100644
index 0000000..1e04ba0
--- /dev/null
+++ b/tiddlywiki/data/.gitignore
@@ -0,0 +1,8 @@
+# .gitignore sample
+###################
+
+# Ignore all files in this dir...
+*
+
+# ... except for this one.
+!.gitignore
diff --git a/tiddlywiki/docker-compose.yml b/tiddlywiki/docker-compose.yml
index 573ea1e..8e21b85 100644
--- a/tiddlywiki/docker-compose.yml
+++ b/tiddlywiki/docker-compose.yml
@@ -2,7 +2,7 @@ version: '3'
services:
tiddly:
- image: tiddlywiki:5.2.0
+ image: tiddlywiki:5.2.3
build: .
container_name: tiddlywiki-docker
restart: unless-stopped
diff --git a/tiddlywiki/tiddly-backup.sh b/tiddlywiki/tiddly-backup.sh
new file mode 100755
index 0000000..3dea73f
--- /dev/null
+++ b/tiddlywiki/tiddly-backup.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+# tiddlywiki server backup management
+set -e
+
+DATASTORE=/srv/dev-disk-by-uuid-45e2e732-9e00-4a82-a7cc-9c743e033671/datastore/tiddly/
+
+XU4=root@192.168.1.5:/root/thedocks/tiddlywiki/data/
+N2=root@192.168.1.4:/mnt/drive/tiddly
+PLUS=root@192.168.1.10:/home/odroid/thedocks/tiddlywiki/data
+
+sync(){
+ rsync -av --delete $1 $2
+}
+echo "XU4 ->DATASTORE"
+sync $XU4 $DATASTORE
+
+echo "DATASTORE ->PLUS"
+sync $DATASTORE $PLUS
diff --git a/tvheadend/README.md b/tvheadend/README.md
index cd489db..3cd83c8 100644
--- a/tvheadend/README.md
+++ b/tvheadend/README.md
@@ -1,4 +1,9 @@
# tvheadend setup
+```
+ - /mnt/media/recordings:/recordings
+```
+HTS Tvheadend 4.3-1979~g8fc2dfa7e
-HTS Tvheadend 4.3-1979~g8fc2dfa7e
\ No newline at end of file
+## Users
+Jellyfin: jellyfin:jellyfin
\ No newline at end of file
diff --git a/wireguard/docker-compose.yml b/wireguard/docker-compose.yml
index b27e1c5..815ac73 100644
--- a/wireguard/docker-compose.yml
+++ b/wireguard/docker-compose.yml
@@ -18,6 +18,7 @@ services:
volumes:
- ./config:/config
- /lib/modules:/lib/modules
+ - /usr/src:/usr/src
ports:
- 51820:51820/udp
sysctls:
diff --git a/wireshark/config/.gitignore b/wireshark/config/.gitignore
new file mode 100644
index 0000000..9c9c739
--- /dev/null
+++ b/wireshark/config/.gitignore
@@ -0,0 +1,3 @@
+# ignore
+# ... except for this one.
+!.gitignore
diff --git a/wireshark/docker-compose.yml b/wireshark/docker-compose.yml
new file mode 100644
index 0000000..ca6e3e9
--- /dev/null
+++ b/wireshark/docker-compose.yml
@@ -0,0 +1,16 @@
+version: "2.1"
+services:
+ wireshark:
+ image: lscr.io/linuxserver/wireshark:latest
+ container_name: wireshark
+ cap_add:
+ - NET_ADMIN
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=Europe/London
+ volumes:
+ - ./config:/config
+ ports:
+ - 4000:3000 #optional
+ restart: unless-stopped
\ No newline at end of file