I'm sorry Linus, again, for abandoning C to create reliable and maintainable dashboard that supports video streaming and chat
-## Documentation
+# site
+
+[feebdaed.xyz](https://feebdaed.xyz)
+
+
+# video chat
+
+
+https://github.com/user-attachments/assets/b6ca19dc-2a87-422c-acd3-381d71b70e82
+
+
+
+# stream CCTV
+
+
+https://github.com/user-attachments/assets/6856c1c1-a897-4265-ac4f-62ab333ec9c9
-See [sorrylinus](https://github.com/seantywork/sorrylinus?tab=readme-ov-file#web)
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+set -euxo pipefail
+
+######## wj
+
+
+
+local_ip=$1
+
+HOME="/root"
+
+
+sudo swapoff -a
+
+
+(crontab -l 2>/dev/null; echo "@reboot /sbin/swapoff -a") | crontab - || true
+sudo apt-get update -y
+
+
+
+OS="Debian_12"
+
+VERSION="1.28"
+
+
+
+cat <<EOF | sudo tee /etc/modules-load.d/crio.conf
+overlay
+br_netfilter
+EOF
+
+sudo modprobe overlay
+sudo modprobe br_netfilter
+
+
+cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
+net.bridge.bridge-nf-call-iptables = 1
+net.ipv4.ip_forward = 1
+net.bridge.bridge-nf-call-ip6tables = 1
+EOF
+
+sudo sysctl --system
+
+cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
+deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /
+EOF
+cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
+deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /
+EOF
+
+curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
+curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
+
+sudo apt-get update
+sudo apt-get install cri-o cri-o-runc -y
+
+sudo systemctl daemon-reload
+sudo systemctl enable crio --now
+
+echo "Container runtime installed susccessfully"
+
+
+
+sudo apt-get update
+sudo apt-get install -y apt-transport-https ca-certificates curl
+
+sudo mkdir -p /etc/apt/keyrings
+
+
+sudo curl -fsSL "https://pkgs.k8s.io/core:/stable:/v$VERSION/deb/Release.key" | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
+
+echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v$VERSION/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
+
+sudo apt-get update -y
+sudo apt-get install -y kubelet kubectl kubeadm
+sudo apt-get update -y
+sudo apt-get install -y jq
+
+
+
+cat > /etc/default/kubelet << EOF
+KUBELET_EXTRA_ARGS=--node-ip=$local_ip
+EOF
+
+
+
+
+########
+
+
+MASTER_IP=$local_ip
+LB_IP=$local_ip
+IP_NO_DOT=$(echo "$local_ip" | sed "s/\./-/g")
+PORT="6443"
+NODENAME="$(hostname -s)"
+NODENAME="ctrlwk-$NODENAME-$IP_NO_DOT-$(openssl rand -hex 8)"
+POD_CIDR="10.10.0.0/16"
+
+sudo kubeadm config images pull --cri-socket=unix:///var/run/crio/crio.sock
+
+echo "Preflight Check Passed: Downloaded All Required Images"
+
+sudo kubeadm init --apiserver-advertise-address=$MASTER_IP --apiserver-cert-extra-sans="$MASTER_IP,$LB_IP" --pod-network-cidr=$POD_CIDR --node-name "$NODENAME" --control-plane-endpoint "$LB_IP:$PORT" --ignore-preflight-errors Swap --cri-socket=unix:///var/run/crio/crio.sock
+mkdir -p "$HOME"/.kube
+sudo cp -i /etc/kubernetes/admin.conf "$HOME"/.kube/config
+sudo chown "$(id -u)":"$(id -g)" "$HOME"/.kube/config
+
+
+
+#curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O
+
+#kubectl apply -f calico.yaml
+
+CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
+CLI_ARCH=amd64
+if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
+curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
+sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
+sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
+rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
+
+cilium install --version 1.14.5
+
+
+kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
+
+
+
+kubectl label node $NODENAME ingress-ready=true
+
+kubectl taint node $NODENAME node-role.kubernetes.io/control-plane:NoSchedule-
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+# nginx
+
+sudo apt update
+sudo apt install nginx
+
+
+# certbot
+
+sudo snap install --classic certbot
+
+sudo ln -s /snap/bin/certbot /usr/bin/certbot
+
+# firewall
+
+
+# sudo ufw allow 22
+
+# sudo ufw allow 80
+
+# sudo ufw allow 443
+
+# sudo ufw allow 3000
+
+# sudo ufw allow 3001
--- /dev/null
+#!/bin/bash
+
+set -euxo pipefail
+
+PW="$1"
+
+
+kubectl create namespace frank
+
+echo "$PW"
+
+kubectl -n frank create secret docker-registry docker-secret \
+ --docker-server=registry.gitlab.com \
+ --docker-username=seantywork \
+ --docker-password="$1" \
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+
+
+
+/bin/cp -Rf ../nginx/fd.conf /etc/nginx/conf.d/fd.conf
+
+/bin/cp -Rf ../nginx/nginx.conf /etc/nginx/nginx.conf
+
+systemctl restart nginx
+
+certbot --nginx --rsa-key-size 4096 --no-redirect
+
+
+systemctl restart nginx
--- /dev/null
+#!/bin/bash
+
+
+kubectl -n frank delete -f ../k8s/app.yaml
+
+kubectl -n frank apply -f ../k8s/app.yaml
+
+kubectl -n kube-system rollout restart deployment/coredns
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+# docker
+
+sudo apt-get update
+sudo apt-get install ca-certificates curl
+sudo install -m 0755 -d /etc/apt/keyrings
+sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
+sudo chmod a+r /etc/apt/keyrings/docker.asc
+
+echo \
+ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
+ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
+ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+
+sudo apt-get update
+
+
+sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
+
+
+# #kind
+
+# #[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
+
+
+# chmod +x ./kind
+
+# sudo mv ./kind /usr/local/bin/kind
+
+
+# helm
+
+curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
+
+chmod 700 get_helm.sh
+
+./get_helm.sh
+
+rm ./get_helm.sh
+
--- /dev/null
+#!/bin/bash
+
+
+set -euxo pipefail
+
+#######
+
+# nfs
+
+local_ip=$1
+
+apt-get update
+
+apt-get install -y nfs-kernel-server
+
+apt-get install -y nfs-common
+
+mkdir -p /data
+
+chown -R root:root /data
+
+chmod -R 777 /data
+
+
+
+IP=$local_ip
+
+cat << EOF > /etc/exports
+
+/data $IP/24(rw,sync,no_subtree_check,no_root_squash) 10.10.0.0/16(rw,sync,no_subtree_check,no_root_squash)
+
+EOF
+
+exportfs -a
+
+systemctl restart nfs-kernel-server
+
+
+# nfs provisioner
+
+set -euxo pipefail
+
+#######
+
+server_ip=$1
+
+
+sudo helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
+
+
+sudo helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=$server_ip --set nfs.path=/data
+
+
+sudo kubectl apply -f ../k8s/default-storage-class.yaml
+
+
+######
+
+
--- /dev/null
+#!/bin/bash
+
+
+sudo mkdir -p /data/sorrylinus-again
+
+
+sudo mkdir -p /data/sorrylinus-again/admin
+
+sudo echo '{}' | sudo tee /data/sorrylinus-again/admin/seantywork@gmail.com.json
+
+sudo mkdir -p /data/sorrylinus-again/media
+
+sudo mkdir -p /data/sorrylinus-again/media/article
+
+sudo mkdir -p /data/sorrylinus-again/media/image
+
+sudo mkdir -p /data/sorrylinus-again/media/video
+
+sudo mkdir -p /data/sorrylinus-again/session
+
+
+sudo mkdir -p /data/sorrylinus-again/user
+
+sudo mkdir -p /data/sorrylinus-again/log
+
+sudo echo '{}' | sudo tee /data/sorrylinus-again/log/stat.json
+
+
+
+sudo chmod -R 777 /data/sorrylinus-again
+
+sudo kubectl apply -n frank -f ../k8s/app-volume.yaml
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+function usage_helper(){
+
+ echo "usage:"
+ echo " again : follow sorrylinus-again log"
+ echo " hub : follow sorrylinus-hub log"
+}
+
+if [ -z "$1" ]
+then
+
+ echo "argument is empty"
+
+ usage_helper
+
+ exit 1
+fi
+
+
+
+if [ "$1" == "again" ]
+then
+
+ TARGET_POD=$(sudo kubectl -n frank get pods --no-headers -o custom-columns=":metadata.name" | grep 'sorrylinus-again')
+
+ echo "your follow target name: ${TARGET_POD}"
+
+ sudo kubectl -n frank logs "${TARGET_POD}" --follow
+
+
+elif [ "$1" == "hub" ]
+then
+
+ TARGET_POD=$(sudo kubectl -n frank get pods --no-headers -o custom-columns=":metadata.name" | grep 'sorrylinus-hub')
+
+ echo "your follow target name: ${TARGET_POD}"
+
+ sudo kubectl -n frank logs "${TARGET_POD}" --follow
+
+else
+
+ echo "wrong argument: $1"
+
+ usage_helper
+
+ exit 1
+
+fi
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+function usage_helper(){
+
+ echo "usage:"
+ echo " soli : do ci cd"
+ echo " test : for test "
+}
+
+function build_sorrylinus_again(){
+
+ echo "======BUILD SORRYLINUS AGAIN START======"
+
+
+ DST_OJSON="${SOLI_AGAIN_PROD_DIR}/${SOLI_AGAIN_OAUTH_JSON}"
+ DST_CYAML="${SOLI_AGAIN_PROD_DIR}/${SOLI_AGAIN_CONFIG_YAML}"
+
+ isDebugOn=$(cat "${DST_CYAML}" | grep -c "debug: true")
+
+ if [ $isDebugOn -eq 1 ]
+ then
+ echo "sorrylinus-again: check debug flag"
+ exit 1
+ fi
+
+ pushd "${SOLI_AGAIN_PROD_VENDOR_TUICSS_DIR}"
+
+ git pull
+
+ popd
+
+ pushd "${SOLI_AGAIN_PROD_DIR}"
+
+ git pull
+
+ sudo docker compose -f docker-compose.yaml.build up --build -d
+
+ sudo docker compose -f docker-compose.yaml.build down
+
+ sudo docker tag sorrylinus-again-sorrylinus-again "${SOLI_AGAIN_IMG_ADDR}"
+
+ sudo docker push "${SOLI_AGAIN_IMG_ADDR}"
+
+ popd
+
+ echo "======BUILD SORRYLINUS AGAIN END======"
+
+}
+
+
+
+
+
+function deploy_sorrylinus_again(){
+
+ echo "======DEPLOY SORRYLINUS AGAIN START======"
+
+ EXEC_DEPLOY="${SSHX} '${SSHY} ${SOLI_AGAIN_DEPLOY_CMD}'"
+
+ /bin/bash -c "${EXEC_DEPLOY}"
+
+ echo "======DEPLOY SORRYLINUS AGAIN END======"
+
+}
+
+
+
+function test_part(){
+
+ echo "add whatever you want"
+}
+
+if [ ! -f "./cicd.conf" ]
+then
+ echo "cicd.conf not found"
+ exit 1
+fi
+
+
+
+if [ -z "$1" ]
+then
+
+ echo "argument is empty"
+
+ usage_helper
+
+ exit 1
+fi
+
+source ./cicd.conf
+
+
+
+if [ "$1" == "soli" ]
+then
+
+ build_sorrylinus_again
+
+ deploy_sorrylinus_again
+
+
+elif [ "$1" == "test" ]
+then
+
+ test_part
+
+else
+
+ echo "wrong argument: $1"
+
+ usage_helper
+
+ exit 1
+
+fi
+
+echo "finished running cicd pipeline"
+
+
+
--- /dev/null
+SOLI_AGAIN_IMG_ADDR="registry.gitlab.com/seantywork/sorrylinus-again"
+SOLI_AGAIN_OAUTH_JSON="oauth.json"
+SOLI_AGAIN_CONFIG_YAML="config.yaml"
+SOLI_AGAIN_PROD_DIR="../"
+SOLI_AGAIN_PROD_VENDOR_TUICSS_DIR="../public/vendor/TuiCss"
+SSHX="ssh seantywork@seantywork.feebdaed.xyz -p 22222"
+SSHY="ssh seantywork@192.168.0.32"
+SOLI_AGAIN_DEPLOY_CMD="kubectl -n frank rollout restart deployment/sorrylinus-again"
--- /dev/null
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: sorrylinus-again-pv
+spec:
+ capacity:
+ storage: 16Gi
+ volumeMode: Filesystem
+ accessModes:
+ - ReadWriteOnce
+ persistentVolumeReclaimPolicy: Delete
+ storageClassName: nfs-default-storageclass
+ mountOptions:
+ - hard
+ - nfsvers=4.1
+ nfs:
+ path: /data/sorrylinus-again
+ server: 192.168.0.32
+
+---
+
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: sorrylinus-again-pvc
+spec:
+ storageClassName: nfs-default-storageclass
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 16Gi
\ No newline at end of file
--- /dev/null
+---
+kind: Service
+apiVersion: v1
+metadata:
+ name: sorrylinus-again-web
+spec:
+ type: NodePort
+ selector:
+ app: sorrylinus-again
+ ports:
+ - name: sorrylinus-again-8000
+ nodePort: 30010
+ port: 8000
+ targetPort: 8000
+ - name: sorrylinus-again-8002
+ nodePort: 30012
+ port: 8002
+ targetPort: 8002
+ - name: sorrylinus-again-8004
+ nodePort: 30014
+ port: 8004
+ targetPort: 8004
+
+---
+kind: Service
+apiVersion: v1
+metadata:
+ name: sorrylinus-again-rtc
+spec:
+ type: NodePort
+ selector:
+ app: sorrylinus-again
+ ports:
+ - name: sorrylinus-again-8006
+ nodePort: 30016
+ port: 8006
+ targetPort: 8006
+ protocol: UDP
+ {{- range seq 0 100}}
+ - name: sorrylinus-again-{{add 31000 .}}
+ nodePort: {{add 31000 .}}
+ port: {{add 31000 .}}
+ targetPort: {{add 31000 .}}
+ protocol: UDP
+ {{- end -}}
+ {{ print "\n" }}
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: sorrylinus-again
+spec:
+ selector:
+ matchLabels:
+ app: sorrylinus-again
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: sorrylinus-again
+ spec:
+ imagePullSecrets:
+ - name: docker-secret
+ restartPolicy: Always
+ volumes:
+ - name: sorrylinus-again-storage
+ persistentVolumeClaim:
+ claimName: sorrylinus-again-pvc
+ containers:
+ - name: sorrylinus-again
+ imagePullPolicy: Always
+ image: registry.gitlab.com/seantywork/sorrylinus-again
+ tty: true
+ volumeMounts:
+ - mountPath: "/home/data"
+ name: sorrylinus-again-storage
+ ports:
+ - containerPort: 8000
+ protocol: TCP
+ - containerPort: 8002
+ protocol: TCP
+ - containerPort: 8004
+ protocol: TCP
+ - containerPort: 8006
+ protocol: UDP
+ {{- range seq 0 100}}
+ - containerPort: {{add 31000 .}}
+ protocol: UDP
+ {{- end -}}
+ {{ print "\n" }}
+
--- /dev/null
+---
+kind: Service
+apiVersion: v1
+metadata:
+ name: sorrylinus-again-web
+spec:
+ type: NodePort
+ selector:
+ app: sorrylinus-again
+ ports:
+ - name: sorrylinus-again-8000
+ nodePort: 30010
+ port: 8000
+ targetPort: 8000
+ - name: sorrylinus-again-8002
+ nodePort: 30012
+ port: 8002
+ targetPort: 8002
+ - name: sorrylinus-again-8004
+ nodePort: 30014
+ port: 8004
+ targetPort: 8004
+
+---
+kind: Service
+apiVersion: v1
+metadata:
+ name: sorrylinus-again-rtc
+spec:
+ type: NodePort
+ selector:
+ app: sorrylinus-again
+ ports:
+ - name: sorrylinus-again-8006
+ nodePort: 30016
+ port: 8006
+ targetPort: 8006
+ protocol: UDP
+ - name: sorrylinus-again-31000
+ nodePort: 31000
+ port: 31000
+ targetPort: 31000
+ protocol: UDP
+ - name: sorrylinus-again-31001
+ nodePort: 31001
+ port: 31001
+ targetPort: 31001
+ protocol: UDP
+ - name: sorrylinus-again-31002
+ nodePort: 31002
+ port: 31002
+ targetPort: 31002
+ protocol: UDP
+ - name: sorrylinus-again-31003
+ nodePort: 31003
+ port: 31003
+ targetPort: 31003
+ protocol: UDP
+ - name: sorrylinus-again-31004
+ nodePort: 31004
+ port: 31004
+ targetPort: 31004
+ protocol: UDP
+ - name: sorrylinus-again-31005
+ nodePort: 31005
+ port: 31005
+ targetPort: 31005
+ protocol: UDP
+ - name: sorrylinus-again-31006
+ nodePort: 31006
+ port: 31006
+ targetPort: 31006
+ protocol: UDP
+ - name: sorrylinus-again-31007
+ nodePort: 31007
+ port: 31007
+ targetPort: 31007
+ protocol: UDP
+ - name: sorrylinus-again-31008
+ nodePort: 31008
+ port: 31008
+ targetPort: 31008
+ protocol: UDP
+ - name: sorrylinus-again-31009
+ nodePort: 31009
+ port: 31009
+ targetPort: 31009
+ protocol: UDP
+ - name: sorrylinus-again-31010
+ nodePort: 31010
+ port: 31010
+ targetPort: 31010
+ protocol: UDP
+ - name: sorrylinus-again-31011
+ nodePort: 31011
+ port: 31011
+ targetPort: 31011
+ protocol: UDP
+ - name: sorrylinus-again-31012
+ nodePort: 31012
+ port: 31012
+ targetPort: 31012
+ protocol: UDP
+ - name: sorrylinus-again-31013
+ nodePort: 31013
+ port: 31013
+ targetPort: 31013
+ protocol: UDP
+ - name: sorrylinus-again-31014
+ nodePort: 31014
+ port: 31014
+ targetPort: 31014
+ protocol: UDP
+ - name: sorrylinus-again-31015
+ nodePort: 31015
+ port: 31015
+ targetPort: 31015
+ protocol: UDP
+ - name: sorrylinus-again-31016
+ nodePort: 31016
+ port: 31016
+ targetPort: 31016
+ protocol: UDP
+ - name: sorrylinus-again-31017
+ nodePort: 31017
+ port: 31017
+ targetPort: 31017
+ protocol: UDP
+ - name: sorrylinus-again-31018
+ nodePort: 31018
+ port: 31018
+ targetPort: 31018
+ protocol: UDP
+ - name: sorrylinus-again-31019
+ nodePort: 31019
+ port: 31019
+ targetPort: 31019
+ protocol: UDP
+ - name: sorrylinus-again-31020
+ nodePort: 31020
+ port: 31020
+ targetPort: 31020
+ protocol: UDP
+ - name: sorrylinus-again-31021
+ nodePort: 31021
+ port: 31021
+ targetPort: 31021
+ protocol: UDP
+ - name: sorrylinus-again-31022
+ nodePort: 31022
+ port: 31022
+ targetPort: 31022
+ protocol: UDP
+ - name: sorrylinus-again-31023
+ nodePort: 31023
+ port: 31023
+ targetPort: 31023
+ protocol: UDP
+ - name: sorrylinus-again-31024
+ nodePort: 31024
+ port: 31024
+ targetPort: 31024
+ protocol: UDP
+ - name: sorrylinus-again-31025
+ nodePort: 31025
+ port: 31025
+ targetPort: 31025
+ protocol: UDP
+ - name: sorrylinus-again-31026
+ nodePort: 31026
+ port: 31026
+ targetPort: 31026
+ protocol: UDP
+ - name: sorrylinus-again-31027
+ nodePort: 31027
+ port: 31027
+ targetPort: 31027
+ protocol: UDP
+ - name: sorrylinus-again-31028
+ nodePort: 31028
+ port: 31028
+ targetPort: 31028
+ protocol: UDP
+ - name: sorrylinus-again-31029
+ nodePort: 31029
+ port: 31029
+ targetPort: 31029
+ protocol: UDP
+ - name: sorrylinus-again-31030
+ nodePort: 31030
+ port: 31030
+ targetPort: 31030
+ protocol: UDP
+ - name: sorrylinus-again-31031
+ nodePort: 31031
+ port: 31031
+ targetPort: 31031
+ protocol: UDP
+ - name: sorrylinus-again-31032
+ nodePort: 31032
+ port: 31032
+ targetPort: 31032
+ protocol: UDP
+ - name: sorrylinus-again-31033
+ nodePort: 31033
+ port: 31033
+ targetPort: 31033
+ protocol: UDP
+ - name: sorrylinus-again-31034
+ nodePort: 31034
+ port: 31034
+ targetPort: 31034
+ protocol: UDP
+ - name: sorrylinus-again-31035
+ nodePort: 31035
+ port: 31035
+ targetPort: 31035
+ protocol: UDP
+ - name: sorrylinus-again-31036
+ nodePort: 31036
+ port: 31036
+ targetPort: 31036
+ protocol: UDP
+ - name: sorrylinus-again-31037
+ nodePort: 31037
+ port: 31037
+ targetPort: 31037
+ protocol: UDP
+ - name: sorrylinus-again-31038
+ nodePort: 31038
+ port: 31038
+ targetPort: 31038
+ protocol: UDP
+ - name: sorrylinus-again-31039
+ nodePort: 31039
+ port: 31039
+ targetPort: 31039
+ protocol: UDP
+ - name: sorrylinus-again-31040
+ nodePort: 31040
+ port: 31040
+ targetPort: 31040
+ protocol: UDP
+ - name: sorrylinus-again-31041
+ nodePort: 31041
+ port: 31041
+ targetPort: 31041
+ protocol: UDP
+ - name: sorrylinus-again-31042
+ nodePort: 31042
+ port: 31042
+ targetPort: 31042
+ protocol: UDP
+ - name: sorrylinus-again-31043
+ nodePort: 31043
+ port: 31043
+ targetPort: 31043
+ protocol: UDP
+ - name: sorrylinus-again-31044
+ nodePort: 31044
+ port: 31044
+ targetPort: 31044
+ protocol: UDP
+ - name: sorrylinus-again-31045
+ nodePort: 31045
+ port: 31045
+ targetPort: 31045
+ protocol: UDP
+ - name: sorrylinus-again-31046
+ nodePort: 31046
+ port: 31046
+ targetPort: 31046
+ protocol: UDP
+ - name: sorrylinus-again-31047
+ nodePort: 31047
+ port: 31047
+ targetPort: 31047
+ protocol: UDP
+ - name: sorrylinus-again-31048
+ nodePort: 31048
+ port: 31048
+ targetPort: 31048
+ protocol: UDP
+ - name: sorrylinus-again-31049
+ nodePort: 31049
+ port: 31049
+ targetPort: 31049
+ protocol: UDP
+ - name: sorrylinus-again-31050
+ nodePort: 31050
+ port: 31050
+ targetPort: 31050
+ protocol: UDP
+ - name: sorrylinus-again-31051
+ nodePort: 31051
+ port: 31051
+ targetPort: 31051
+ protocol: UDP
+ - name: sorrylinus-again-31052
+ nodePort: 31052
+ port: 31052
+ targetPort: 31052
+ protocol: UDP
+ - name: sorrylinus-again-31053
+ nodePort: 31053
+ port: 31053
+ targetPort: 31053
+ protocol: UDP
+ - name: sorrylinus-again-31054
+ nodePort: 31054
+ port: 31054
+ targetPort: 31054
+ protocol: UDP
+ - name: sorrylinus-again-31055
+ nodePort: 31055
+ port: 31055
+ targetPort: 31055
+ protocol: UDP
+ - name: sorrylinus-again-31056
+ nodePort: 31056
+ port: 31056
+ targetPort: 31056
+ protocol: UDP
+ - name: sorrylinus-again-31057
+ nodePort: 31057
+ port: 31057
+ targetPort: 31057
+ protocol: UDP
+ - name: sorrylinus-again-31058
+ nodePort: 31058
+ port: 31058
+ targetPort: 31058
+ protocol: UDP
+ - name: sorrylinus-again-31059
+ nodePort: 31059
+ port: 31059
+ targetPort: 31059
+ protocol: UDP
+ - name: sorrylinus-again-31060
+ nodePort: 31060
+ port: 31060
+ targetPort: 31060
+ protocol: UDP
+ - name: sorrylinus-again-31061
+ nodePort: 31061
+ port: 31061
+ targetPort: 31061
+ protocol: UDP
+ - name: sorrylinus-again-31062
+ nodePort: 31062
+ port: 31062
+ targetPort: 31062
+ protocol: UDP
+ - name: sorrylinus-again-31063
+ nodePort: 31063
+ port: 31063
+ targetPort: 31063
+ protocol: UDP
+ - name: sorrylinus-again-31064
+ nodePort: 31064
+ port: 31064
+ targetPort: 31064
+ protocol: UDP
+ - name: sorrylinus-again-31065
+ nodePort: 31065
+ port: 31065
+ targetPort: 31065
+ protocol: UDP
+ - name: sorrylinus-again-31066
+ nodePort: 31066
+ port: 31066
+ targetPort: 31066
+ protocol: UDP
+ - name: sorrylinus-again-31067
+ nodePort: 31067
+ port: 31067
+ targetPort: 31067
+ protocol: UDP
+ - name: sorrylinus-again-31068
+ nodePort: 31068
+ port: 31068
+ targetPort: 31068
+ protocol: UDP
+ - name: sorrylinus-again-31069
+ nodePort: 31069
+ port: 31069
+ targetPort: 31069
+ protocol: UDP
+ - name: sorrylinus-again-31070
+ nodePort: 31070
+ port: 31070
+ targetPort: 31070
+ protocol: UDP
+ - name: sorrylinus-again-31071
+ nodePort: 31071
+ port: 31071
+ targetPort: 31071
+ protocol: UDP
+ - name: sorrylinus-again-31072
+ nodePort: 31072
+ port: 31072
+ targetPort: 31072
+ protocol: UDP
+ - name: sorrylinus-again-31073
+ nodePort: 31073
+ port: 31073
+ targetPort: 31073
+ protocol: UDP
+ - name: sorrylinus-again-31074
+ nodePort: 31074
+ port: 31074
+ targetPort: 31074
+ protocol: UDP
+ - name: sorrylinus-again-31075
+ nodePort: 31075
+ port: 31075
+ targetPort: 31075
+ protocol: UDP
+ - name: sorrylinus-again-31076
+ nodePort: 31076
+ port: 31076
+ targetPort: 31076
+ protocol: UDP
+ - name: sorrylinus-again-31077
+ nodePort: 31077
+ port: 31077
+ targetPort: 31077
+ protocol: UDP
+ - name: sorrylinus-again-31078
+ nodePort: 31078
+ port: 31078
+ targetPort: 31078
+ protocol: UDP
+ - name: sorrylinus-again-31079
+ nodePort: 31079
+ port: 31079
+ targetPort: 31079
+ protocol: UDP
+ - name: sorrylinus-again-31080
+ nodePort: 31080
+ port: 31080
+ targetPort: 31080
+ protocol: UDP
+ - name: sorrylinus-again-31081
+ nodePort: 31081
+ port: 31081
+ targetPort: 31081
+ protocol: UDP
+ - name: sorrylinus-again-31082
+ nodePort: 31082
+ port: 31082
+ targetPort: 31082
+ protocol: UDP
+ - name: sorrylinus-again-31083
+ nodePort: 31083
+ port: 31083
+ targetPort: 31083
+ protocol: UDP
+ - name: sorrylinus-again-31084
+ nodePort: 31084
+ port: 31084
+ targetPort: 31084
+ protocol: UDP
+ - name: sorrylinus-again-31085
+ nodePort: 31085
+ port: 31085
+ targetPort: 31085
+ protocol: UDP
+ - name: sorrylinus-again-31086
+ nodePort: 31086
+ port: 31086
+ targetPort: 31086
+ protocol: UDP
+ - name: sorrylinus-again-31087
+ nodePort: 31087
+ port: 31087
+ targetPort: 31087
+ protocol: UDP
+ - name: sorrylinus-again-31088
+ nodePort: 31088
+ port: 31088
+ targetPort: 31088
+ protocol: UDP
+ - name: sorrylinus-again-31089
+ nodePort: 31089
+ port: 31089
+ targetPort: 31089
+ protocol: UDP
+ - name: sorrylinus-again-31090
+ nodePort: 31090
+ port: 31090
+ targetPort: 31090
+ protocol: UDP
+ - name: sorrylinus-again-31091
+ nodePort: 31091
+ port: 31091
+ targetPort: 31091
+ protocol: UDP
+ - name: sorrylinus-again-31092
+ nodePort: 31092
+ port: 31092
+ targetPort: 31092
+ protocol: UDP
+ - name: sorrylinus-again-31093
+ nodePort: 31093
+ port: 31093
+ targetPort: 31093
+ protocol: UDP
+ - name: sorrylinus-again-31094
+ nodePort: 31094
+ port: 31094
+ targetPort: 31094
+ protocol: UDP
+ - name: sorrylinus-again-31095
+ nodePort: 31095
+ port: 31095
+ targetPort: 31095
+ protocol: UDP
+ - name: sorrylinus-again-31096
+ nodePort: 31096
+ port: 31096
+ targetPort: 31096
+ protocol: UDP
+ - name: sorrylinus-again-31097
+ nodePort: 31097
+ port: 31097
+ targetPort: 31097
+ protocol: UDP
+ - name: sorrylinus-again-31098
+ nodePort: 31098
+ port: 31098
+ targetPort: 31098
+ protocol: UDP
+ - name: sorrylinus-again-31099
+ nodePort: 31099
+ port: 31099
+ targetPort: 31099
+ protocol: UDP
+ - name: sorrylinus-again-31100
+ nodePort: 31100
+ port: 31100
+ targetPort: 31100
+ protocol: UDP
+
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: sorrylinus-again
+spec:
+ selector:
+ matchLabels:
+ app: sorrylinus-again
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: sorrylinus-again
+ spec:
+ imagePullSecrets:
+ - name: docker-secret
+ restartPolicy: Always
+ volumes:
+ - name: sorrylinus-again-storage
+ persistentVolumeClaim:
+ claimName: sorrylinus-again-pvc
+ containers:
+ - name: sorrylinus-again
+ imagePullPolicy: Always
+ image: registry.gitlab.com/seantywork/sorrylinus-again
+ tty: true
+ volumeMounts:
+ - mountPath: "/home/data"
+ name: sorrylinus-again-storage
+ ports:
+ - containerPort: 8000
+ protocol: TCP
+ - containerPort: 8002
+ protocol: TCP
+ - containerPort: 8004
+ protocol: TCP
+ - containerPort: 8006
+ protocol: UDP
+ - containerPort: 31000
+ protocol: UDP
+ - containerPort: 31001
+ protocol: UDP
+ - containerPort: 31002
+ protocol: UDP
+ - containerPort: 31003
+ protocol: UDP
+ - containerPort: 31004
+ protocol: UDP
+ - containerPort: 31005
+ protocol: UDP
+ - containerPort: 31006
+ protocol: UDP
+ - containerPort: 31007
+ protocol: UDP
+ - containerPort: 31008
+ protocol: UDP
+ - containerPort: 31009
+ protocol: UDP
+ - containerPort: 31010
+ protocol: UDP
+ - containerPort: 31011
+ protocol: UDP
+ - containerPort: 31012
+ protocol: UDP
+ - containerPort: 31013
+ protocol: UDP
+ - containerPort: 31014
+ protocol: UDP
+ - containerPort: 31015
+ protocol: UDP
+ - containerPort: 31016
+ protocol: UDP
+ - containerPort: 31017
+ protocol: UDP
+ - containerPort: 31018
+ protocol: UDP
+ - containerPort: 31019
+ protocol: UDP
+ - containerPort: 31020
+ protocol: UDP
+ - containerPort: 31021
+ protocol: UDP
+ - containerPort: 31022
+ protocol: UDP
+ - containerPort: 31023
+ protocol: UDP
+ - containerPort: 31024
+ protocol: UDP
+ - containerPort: 31025
+ protocol: UDP
+ - containerPort: 31026
+ protocol: UDP
+ - containerPort: 31027
+ protocol: UDP
+ - containerPort: 31028
+ protocol: UDP
+ - containerPort: 31029
+ protocol: UDP
+ - containerPort: 31030
+ protocol: UDP
+ - containerPort: 31031
+ protocol: UDP
+ - containerPort: 31032
+ protocol: UDP
+ - containerPort: 31033
+ protocol: UDP
+ - containerPort: 31034
+ protocol: UDP
+ - containerPort: 31035
+ protocol: UDP
+ - containerPort: 31036
+ protocol: UDP
+ - containerPort: 31037
+ protocol: UDP
+ - containerPort: 31038
+ protocol: UDP
+ - containerPort: 31039
+ protocol: UDP
+ - containerPort: 31040
+ protocol: UDP
+ - containerPort: 31041
+ protocol: UDP
+ - containerPort: 31042
+ protocol: UDP
+ - containerPort: 31043
+ protocol: UDP
+ - containerPort: 31044
+ protocol: UDP
+ - containerPort: 31045
+ protocol: UDP
+ - containerPort: 31046
+ protocol: UDP
+ - containerPort: 31047
+ protocol: UDP
+ - containerPort: 31048
+ protocol: UDP
+ - containerPort: 31049
+ protocol: UDP
+ - containerPort: 31050
+ protocol: UDP
+ - containerPort: 31051
+ protocol: UDP
+ - containerPort: 31052
+ protocol: UDP
+ - containerPort: 31053
+ protocol: UDP
+ - containerPort: 31054
+ protocol: UDP
+ - containerPort: 31055
+ protocol: UDP
+ - containerPort: 31056
+ protocol: UDP
+ - containerPort: 31057
+ protocol: UDP
+ - containerPort: 31058
+ protocol: UDP
+ - containerPort: 31059
+ protocol: UDP
+ - containerPort: 31060
+ protocol: UDP
+ - containerPort: 31061
+ protocol: UDP
+ - containerPort: 31062
+ protocol: UDP
+ - containerPort: 31063
+ protocol: UDP
+ - containerPort: 31064
+ protocol: UDP
+ - containerPort: 31065
+ protocol: UDP
+ - containerPort: 31066
+ protocol: UDP
+ - containerPort: 31067
+ protocol: UDP
+ - containerPort: 31068
+ protocol: UDP
+ - containerPort: 31069
+ protocol: UDP
+ - containerPort: 31070
+ protocol: UDP
+ - containerPort: 31071
+ protocol: UDP
+ - containerPort: 31072
+ protocol: UDP
+ - containerPort: 31073
+ protocol: UDP
+ - containerPort: 31074
+ protocol: UDP
+ - containerPort: 31075
+ protocol: UDP
+ - containerPort: 31076
+ protocol: UDP
+ - containerPort: 31077
+ protocol: UDP
+ - containerPort: 31078
+ protocol: UDP
+ - containerPort: 31079
+ protocol: UDP
+ - containerPort: 31080
+ protocol: UDP
+ - containerPort: 31081
+ protocol: UDP
+ - containerPort: 31082
+ protocol: UDP
+ - containerPort: 31083
+ protocol: UDP
+ - containerPort: 31084
+ protocol: UDP
+ - containerPort: 31085
+ protocol: UDP
+ - containerPort: 31086
+ protocol: UDP
+ - containerPort: 31087
+ protocol: UDP
+ - containerPort: 31088
+ protocol: UDP
+ - containerPort: 31089
+ protocol: UDP
+ - containerPort: 31090
+ protocol: UDP
+ - containerPort: 31091
+ protocol: UDP
+ - containerPort: 31092
+ protocol: UDP
+ - containerPort: 31093
+ protocol: UDP
+ - containerPort: 31094
+ protocol: UDP
+ - containerPort: 31095
+ protocol: UDP
+ - containerPort: 31096
+ protocol: UDP
+ - containerPort: 31097
+ protocol: UDP
+ - containerPort: 31098
+ protocol: UDP
+ - containerPort: 31099
+ protocol: UDP
+ - containerPort: 31100
+ protocol: UDP
+
+
--- /dev/null
+kind: StorageClass
+apiVersion: storage.k8s.io/v1
+metadata:
+ annotations:
+ storageclass.kubernetes.io/is-default-class: "true"
+ name: nfs-default-storageclass
+provisioner: cluster.local/nfs-subdir-external-provisioner
+reclaimPolicy: Delete
+allowVolumeExpansion: true
+volumeBindingMode: Immediate
\ No newline at end of file
--- /dev/null
+kind: Cluster
+
+apiVersion: kind.x-k8s.io/v1alpha4
+
+networking:
+ apiServerAddress: "0.0.0.0"
+
+nodes:
+
+ - role: control-plane
+ kubeadmConfigPatches:
+ - |
+ kind: InitConfiguration
+ nodeRegistration:
+ kubeletExtraArgs:
+ node-labels: "ingress-ready=true"
+ extraPortMappings:
+ - containerPort: 80
+ hostPort: 8888
+ protocol: TCP
+ - containerPort: 30011
+ hostPort: 3011
+ protocol: TCP
+
+
+
+ - role: worker
\ No newline at end of file
--- /dev/null
+apiVersion: v1
+kind: Service
+metadata:
+ name: frankthecloud
+ labels:
+ app: frankthecloud
+spec:
+ type: ClusterIP
+ ports:
+ - port: 8000
+ targetPort: 8000
+ protocol: TCP
+ selector:
+ app: frankthecloud
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: frankthecloud
+spec:
+ selector:
+ matchLabels:
+ app: frankthecloud
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: frankthecloud
+ spec:
+ imagePullSecrets:
+ - name: docker-secret
+ restartPolicy: Always
+ containers:
+ - name: frankthecloud
+ imagePullPolicy: Always
+ image: registry.gitlab.com/seantywork/frankthecloud
+ tty: true
+ ports:
+ - containerPort: 8000
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: frankhub
+ labels:
+ app: frankhub
+spec:
+ type: ClusterIP
+ ports:
+ - name: frankhub-admin
+ port: 2999
+ targetPort: 2999
+ protocol: TCP
+ - name: frankhub-front
+ port: 3000
+ targetPort: 3000
+ protocol: TCP
+ - name: frankhub-hub
+ port: 3001
+ targetPort: 3001
+ protocol: TCP
+ selector:
+ app: frankhub
+---
+kind: Service
+apiVersion: v1
+metadata:
+ name: frankhub-sock
+spec:
+ type: NodePort
+ selector:
+ app: frankhub
+ ports:
+ - nodePort: 30011
+ port: 3001
+ targetPort: 3001
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: frankhub
+spec:
+ selector:
+ matchLabels:
+ app: frankhub
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: frankhub
+ spec:
+ imagePullSecrets:
+ - name: docker-secret
+ restartPolicy: Always
+ containers:
+ - name: frankhub
+ imagePullPolicy: Always
+ image: registry.gitlab.com/seantywork/frankhub
+ tty: true
+ ports:
+ - containerPort: 2999
+ - containerPort: 3000
+ - containerPort: 3001
\ No newline at end of file
--- /dev/null
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: ingress-uc-front
+ annotations:
+ nginx.ingress.kubernetes.io/proxy-body-size: "0"
+ nginx.ingress.kubernetes.io/proxy-http-version : "1.1"
+ nginx.ingress.kubernetes.io/proxy-read-timeout: "15552000"
+ nginx.ingress.kubernetes.io/proxy-send-timeout: "15552000"
+
+spec:
+ tls:
+ - hosts:
+ - "feebdaed.xyz"
+ - "www.feebdaed.xyz"
+ secretName: frank-tls-secret
+ rules:
+ - host: "feebdaed.xyz"
+ http:
+ paths:
+ - path: /front-client
+ pathType: Prefix
+ backend:
+ service:
+ name: frankthecloud
+ port:
+ number: 8000
+ - host: "www.feebdaed.xyz"
+ http:
+ paths:
+ - path: /front-client
+ pathType: Prefix
+ backend:
+ service:
+ name: frankthecloud
+ port:
+ number: 8000
--- /dev/null
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: ingress-uc
+
+spec:
+ tls:
+ - hosts:
+ - "feebdaed.xyz"
+ - "www.feebdaed.xyz"
+ secretName: frank-tls-secret
+ rules:
+ - host: "feebdaed.xyz"
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: frankthecloud
+ port:
+ number: 8000
+ - host: "www.feebdaed.xyz"
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: frankthecloud
+ port:
+ number: 8000
\ No newline at end of file
--- /dev/null
+
+server
+{
+ listen 80;
+ server_name feebdaed.xyz www.feebdaed.xyz;
+ return 301 https://$host$request_uri;
+}
+
+
+
+server
+{
+ server_name feebdaed.xyz feebdaed.xyz;
+ client_max_body_size 0;
+
+ location / {
+ # add_header Content-Type text/plain;
+ #return 200 'okay';
+
+ proxy_pass http://0.0.0.0:30010;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-For $remote_addr;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header Host $http_host;
+
+ # proxy_buffering off;
+ # proxy_request_buffering off;
+
+ proxy_http_version 1.1;
+ # proxy_set_header Upgrade $http_upgrade;
+ # proxy_set_header Connection "upgrade";
+ }
+
+
+ listen 443 ssl; # managed by Certbot
+ ssl_certificate /etc/letsencrypt/live/feebdaed.xyz/fullchain.pem; # managed by Certbot
+ ssl_certificate_key /etc/letsencrypt/live/feebdaed.xyz/privkey.pem; # managed by Certbot
+ include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+ ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
+
+
+
+server
+{
+ server_name feebdaed.xyz www.feebdaed.xyz;
+ client_max_body_size 0;
+
+ location / {
+ # add_header Content-Type text/plain;
+ #return 200 'okay';
+
+ proxy_pass http://0.0.0.0:30012;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-For $remote_addr;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header Host $http_host;
+
+ # proxy_buffering off;
+ # proxy_request_buffering off;
+
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+
+ proxy_read_timeout 180d;
+ proxy_send_timeout 180d;
+
+ }
+
+
+
+ listen 8022 ssl; # managed by Certbot
+ ssl_certificate /etc/letsencrypt/live/feebdaed.xyz/fullchain.pem; # managed by Certbot
+ ssl_certificate_key /etc/letsencrypt/live/feebdaed.xyz/privkey.pem; # managed by Certbot
+ include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
+ ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
+
+}
\ No newline at end of file
--- /dev/null
+user www-data;
+worker_processes auto;
+pid /run/nginx.pid;
+include /etc/nginx/modules-enabled/*.conf;
+
+events {
+ worker_connections 768;
+ # multi_accept on;
+}
+
+
+stream
+{
+
+
+ #access_log /var/log/nginx/access_stream.log;
+
+
+
+ server{
+ listen 8024 ssl;
+ proxy_timeout 180d;
+ #listen 6612;
+ proxy_pass 192.168.0.32:30014;
+
+ ssl_certificate /etc/letsencrypt/live/feebdaed.xyz/fullchain.pem; # managed by Certbot
+ ssl_certificate_key /etc/letsencrypt/live/feebdaed.xyz/privkey.pem; # managed by Certbot
+ }
+
+
+ server{
+ listen 8006 udp;
+ proxy_pass 192.168.0.32:30016;
+ }
+
+
+
+
+}
+
+http {
+
+ ##
+ # Basic Settings
+ ##
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ # server_tokens off;
+
+ # server_names_hash_bucket_size 64;
+ # server_name_in_redirect off;
+
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ ##
+ # SSL Settings
+ ##
+
+ ssl_protocols TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
+ ssl_prefer_server_ciphers on;
+
+ ##
+ # Logging Settings
+ ##
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ ##
+ # Gzip Settings
+ ##
+
+ gzip on;
+
+ # gzip_vary on;
+ # gzip_proxied any;
+ # gzip_comp_level 6;
+ # gzip_buffers 16 8k;
+ # gzip_http_version 1.1;
+ # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
+ ##
+ # Virtual Host Configs
+ ##
+
+ include /etc/nginx/conf.d/*.conf;
+ # include /etc/nginx/sites-enabled/*;
+}
+
+
+#mail {
+# # See sample authentication script at:
+# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
+#
+# # auth_http localhost/auth.php;
+# # pop3_capabilities "TOP" "USER";
+# # imap_capabilities "IMAP4rev1" "UIDPLUS";
+#
+# server {
+# listen localhost:110;
+# protocol pop3;
+# proxy on;
+# }
+#
+# server {
+# listen localhost:143;
+# protocol imap;
+# proxy on;
+# }
+#}
\ No newline at end of file
--- /dev/null
+
+sudo vim /etc/default/coturn
+
+TURNSERVER_ENABLED=1
+
+sudo systemctl start coturn
+
+
+sudo vim /etc/turnserver.conf
+
+listening-ip=0.0.0.0
+
+listening-port=3478
+
+external-ip=feebdaed.xyz/192.168.0.1
+min-port=3479
+max-port=3579
+
+verbose
+
+lt-cred-mech
+
+user=MYUSER:MYPASS
+
+realm=feebdaed.xyz
+
+sudo systemctl restart coturn
\ No newline at end of file