apiVersion: apps/v1 kind: Deployment metadata: name: syncthing namespace: home-server labels: app: syncthing spec: replicas: 1 selector: matchLabels: app: syncthing template: metadata: labels: app: syncthing spec: containers: - name: syncthing image: linuxserver/syncthing:latest imagePullPolicy: Always ports: - containerPort: 8384 # Web GUI - containerPort: 22000 # Sync TCP - containerPort: 22000 # Sync UDP (same port, different protocol) protocol: UDP - containerPort: 21027 # Local discovery protocol: UDP env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Australia/Sydney" volumeMounts: - name: config mountPath: /config - name: data mountPath: /data volumes: - name: config hostPath: path: /dpool/services/syncthing/config type: DirectoryOrCreate - name: data hostPath: path: /dpool/services/syncthing/data type: DirectoryOrCreate --- apiVersion: v1 kind: Service metadata: name: syncthing namespace: home-server spec: selector: app: syncthing ports: - name: web port: 8384 targetPort: 8384 - name: sync-tcp port: 22000 targetPort: 22000 protocol: TCP - name: sync-udp port: 22000 targetPort: 22000 protocol: UDP - name: discovery port: 21027 targetPort: 21027 protocol: UDP type: ClusterIP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: syncthing namespace: home-server annotations: external-dns.alpha.kubernetes.io/hostname: syncthing.hxme.net spec: tls: - hosts: - syncthing.hxme.net secretName: wildcard-hxme-net rules: - host: syncthing.hxme.net http: paths: - path: / pathType: Prefix backend: service: name: syncthing port: number: 8384