openmediavault 7.4.9
- Update locale files.
- Several improvements.
openmediavault-onedrive 7.1.0
- Upgrade to
onedrive 2.5.2
. - Update locale files.
- Add
Cleanup local files
andExtra options
configuration
settings to the UI.
openmediavault is the next generation network attached storage (NAS) solution based on Debian Linux. It contains services like SSH, (S)FTP, SMB/CIFS, RSync and many more ready to use. Thanks to the modular design of the framework it can be enhanced via plugins. openmediavault is primarily designed to be used in small offices or home offices, but is not limited to those scenarios. It is a simple and easy to use out-of-the-box solution that will allow everyone to install and administrate a Network Attached Storage without deeper knowledge.
openmediavault 7.4.9
openmediavault-onedrive 7.1.0
onedrive 2.5.2
.Cleanup local files
and Extra options
configurationThe recipe editor of the openmediavault-k8s has a DSL (Domain Specific Language) that supports the user in getting specific information from their openmediavault host system in Kubernetes manifests.
The following functions are currently available:
hostname()
– Get the hostname of the host.domain()
– Get the domain name of the host.fqdn()
– Get the FQDN of the host.ipaddr(name=NULL)
– Get the IPv4 address of the specified network interface. If not set, the IPv4 address of the interface of the first default route is used.ipaddr6(name=NULL)
– Get the IPv6 address of the specified network interface. If not set, the IPv6 address of the interface of the first default route is used.uid(name)
– Get the UID of the specified user.gid(name)
– Get the GID of the specified group.sharedfolder_path(name)
– Get the full path of the specified shared folder.conf_get(id, uuid=NULL)
– Get the specified database configuration object.tz()
– Get the time zone of the host.The following filters are currently available:
get(key, default=NULL)
– Get the specified key, e.g. foo.bar.baz
from a dictionary.For the built-in features of the used template engine please have a look here:
Here are several examples that make use of the DSL:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: wetty
app.kubernetes.io/name: wetty
name: wetty
namespace: wetty-app
spec:
...
template:
...
spec:
containers:
- image: docker.io/wettyoss/wetty:latest
imagePullPolicy: IfNotPresent
name: wetty
ports:
- containerPort: 3000
securityContext:
runAsNonRoot: true
runAsUser: {{ uid('nobody') }}
runAsGroup: {{ gid('nogroup') }}
args:
- "--port=3000"
- "--base=/"
- "--force-ssh"
- "--ssh-port={{ conf_get('conf.service.ssh') | get('port') }}"
- "--ssh-host={{ hostname() }}"
restartPolicy: Always
...
persistence:
import:
enabled: true
type: hostPath
readOnly: true
mountPath: /srv/import
hostPath: {{ sharedfolder_path('images') }}
hostPathType: Directory
apiVersion: v1
kind: PersistentVolume
metadata:
name: config-dir
labels:
app.kubernetes.io/instance: plex-media-server
app.kubernetes.io/name: plex-media-server
spec:
storageClassName: shared-folder
capacity:
storage: 2Gi
hostPath:
path: {{ sharedfolder_path('media') }}
type: Directory
accessModes:
- ReadWriteMany
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: immich-websecure
namespace: immich-app
...
spec:
entryPoints:
- websecure
routes:
- match: Host(`immich.{{ ipaddr() }}.sslip.io`)
kind: Rule
services:
- name: immich-server
port: 3001