Compare commits
	
		
			1 Commits
		
	
	
		
			48dc85476e
			...
			feature/ga
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 299f661f60 | 
							
								
								
									
										15
									
								
								apps/games/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								apps/games/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					apiVersion: kustomize.config.k8s.io/v1beta1
 | 
				
			||||||
 | 
					kind: Kustomization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace: games
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resources: 
 | 
				
			||||||
 | 
					  - namespace.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					helmCharts:
 | 
				
			||||||
 | 
					  - name: games-on-whales
 | 
				
			||||||
 | 
					    releaseName: games-on-whales
 | 
				
			||||||
 | 
					    version: 2.0.0
 | 
				
			||||||
 | 
					    valuesFile: values.yaml
 | 
				
			||||||
 | 
					    repo: https://angelnu.github.io/helm-charts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								apps/games/namespace.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								apps/games/namespace.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: Namespace
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: placeholder
 | 
				
			||||||
 | 
					  labels:
 | 
				
			||||||
 | 
					    pod-security.kubernetes.io/enforce: privileged 
 | 
				
			||||||
							
								
								
									
										143
									
								
								apps/games/values.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								apps/games/values.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,143 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# IMPORTANT NOTE
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This chart inherits from our common library chart. You can check the default values/options here:
 | 
				
			||||||
 | 
					# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ingress:
 | 
				
			||||||
 | 
					  # -- Enable and configure ingress settings for the chart under this key.
 | 
				
			||||||
 | 
					  # @default -- See values.yaml
 | 
				
			||||||
 | 
					  main:
 | 
				
			||||||
 | 
					    enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					service:
 | 
				
			||||||
 | 
					  # -- Enable and configure TCP service settings for the chart under this key.
 | 
				
			||||||
 | 
					  # @default -- See values.yaml
 | 
				
			||||||
 | 
					  main: {}
 | 
				
			||||||
 | 
					  # type: LoadBalancer
 | 
				
			||||||
 | 
					  # loadBalancerIP: 192.168.1.129
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # -- Enable and configure UDP service settings for the chart under this key.
 | 
				
			||||||
 | 
					  # @default -- See values.yaml
 | 
				
			||||||
 | 
					  udp: {}
 | 
				
			||||||
 | 
					  # type: LoadBalancer
 | 
				
			||||||
 | 
					  # loadBalancerIP: 192.168.1.129
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Configure persistence settings for the chart under this key.
 | 
				
			||||||
 | 
					# @default -- See values.yaml
 | 
				
			||||||
 | 
					persistence:
 | 
				
			||||||
 | 
					  home:
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
 | 
					    type: emptyDir
 | 
				
			||||||
 | 
					    mountPath: /home/retro
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- (object) Pass GPU resources to Xorg, steam and retroarch containers
 | 
				
			||||||
 | 
					# See Custom configuration section in the Readme
 | 
				
			||||||
 | 
					graphic_resources:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sunshine:
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- sunshine image repository
 | 
				
			||||||
 | 
					    repository: ghcr.io/games-on-whales/sunshine
 | 
				
			||||||
 | 
					    # -- sunshine image tag
 | 
				
			||||||
 | 
					    tag: 1.0.0
 | 
				
			||||||
 | 
					    # -- sunshine image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					  # -- sunshine web interface user
 | 
				
			||||||
 | 
					  user: admin
 | 
				
			||||||
 | 
					  # -- sunshine web interface pasword
 | 
				
			||||||
 | 
					  password: admin
 | 
				
			||||||
 | 
					  # -- sunshine log level
 | 
				
			||||||
 | 
					  logLevel: info
 | 
				
			||||||
 | 
					  # -- sunshine additional env settings
 | 
				
			||||||
 | 
					  env: {}
 | 
				
			||||||
 | 
					xorg:
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- xorg image repository
 | 
				
			||||||
 | 
					    repository: ghcr.io/games-on-whales/xorg
 | 
				
			||||||
 | 
					    # -- xorg image tag
 | 
				
			||||||
 | 
					    tag: 1.0.0
 | 
				
			||||||
 | 
					    # -- xorg image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					  # -- xorg display ID
 | 
				
			||||||
 | 
					  # display: :99
 | 
				
			||||||
 | 
					  # -- xorg refresh rate
 | 
				
			||||||
 | 
					  # refreshrate: 60
 | 
				
			||||||
 | 
					  # -- xorg resolution
 | 
				
			||||||
 | 
					  resolution: 1920x1080
 | 
				
			||||||
 | 
					pulseaudio:
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- pulseaudio image repository
 | 
				
			||||||
 | 
					    repository: ghcr.io/games-on-whales/pulseaudio
 | 
				
			||||||
 | 
					    # -- pulseaudio image tag
 | 
				
			||||||
 | 
					    tag: 1.0.0
 | 
				
			||||||
 | 
					    # -- pulseaudio image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					retroarch:
 | 
				
			||||||
 | 
					  # -- enable/disable retroarch container
 | 
				
			||||||
 | 
					  enabled: true
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- retroarch image repository
 | 
				
			||||||
 | 
					    repository: ghcr.io/games-on-whales/retroarch
 | 
				
			||||||
 | 
					    # -- retroarch image tag
 | 
				
			||||||
 | 
					    tag: 1.0.0
 | 
				
			||||||
 | 
					    # -- retroarch image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					  # -- retroarch log level
 | 
				
			||||||
 | 
					  logLevel: info
 | 
				
			||||||
 | 
					  # -- retroarch extra volume mounts
 | 
				
			||||||
 | 
					  volumeMounts: []
 | 
				
			||||||
 | 
					steam:
 | 
				
			||||||
 | 
					  # -- enable/disable steam container
 | 
				
			||||||
 | 
					  enabled: true
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- steam image repository
 | 
				
			||||||
 | 
					    repository: ghcr.io/games-on-whales/steam
 | 
				
			||||||
 | 
					    # -- steam image tag
 | 
				
			||||||
 | 
					    tag: 1.0.0
 | 
				
			||||||
 | 
					    # -- steam image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					  # -- enable proton log
 | 
				
			||||||
 | 
					  protonLog: 1
 | 
				
			||||||
 | 
					  # -- steam extra volume mounts
 | 
				
			||||||
 | 
					  volumeMounts: []
 | 
				
			||||||
 | 
					firefox:
 | 
				
			||||||
 | 
					  # -- enable/disable firefox container
 | 
				
			||||||
 | 
					  enabled: true
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- image repository
 | 
				
			||||||
 | 
					    repository: andrewmackrodt/firefox-x11
 | 
				
			||||||
 | 
					    # -- image tag
 | 
				
			||||||
 | 
					    tag: 125.0.2-r1
 | 
				
			||||||
 | 
					    # -- image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					  # -- firefox log level
 | 
				
			||||||
 | 
					  logLevel: info
 | 
				
			||||||
 | 
					  # -- firefox extra volume mounts
 | 
				
			||||||
 | 
					  volumeMounts: []
 | 
				
			||||||
 | 
					mkhomeretrodirs:
 | 
				
			||||||
 | 
					  image:
 | 
				
			||||||
 | 
					    # -- image repository
 | 
				
			||||||
 | 
					    repository: busybox
 | 
				
			||||||
 | 
					    # -- image tag
 | 
				
			||||||
 | 
					    tag: 1.36.1
 | 
				
			||||||
 | 
					    # -- image pull policy
 | 
				
			||||||
 | 
					    pullPolicy: IfNotPresent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Configure pulse audio settings
 | 
				
			||||||
 | 
					# @default -- See values.yaml
 | 
				
			||||||
 | 
					pulse:
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					    default.pa: |-
 | 
				
			||||||
 | 
					      .fail
 | 
				
			||||||
 | 
					          load-module module-null-sink sink_name=sunshine
 | 
				
			||||||
 | 
					          set-default-sink sunshine
 | 
				
			||||||
 | 
					          load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse/pulse-socket
 | 
				
			||||||
 | 
					    client.conf: |-
 | 
				
			||||||
 | 
					      default-sink = sink-sunshine-stereo
 | 
				
			||||||
 | 
					      autospawn = no
 | 
				
			||||||
 | 
					      daemon-binary = /bin/true
 | 
				
			||||||
 | 
					    daemon.conf: |-
 | 
				
			||||||
 | 
					      exit-idle-time = -1
 | 
				
			||||||
 | 
					      flat-volumes = yes
 | 
				
			||||||
							
								
								
									
										106
									
								
								apps/steam/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								apps/steam/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					apiVersion: apps/v1
 | 
				
			||||||
 | 
					kind: Deployment
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: steam-headless
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  replicas: 1
 | 
				
			||||||
 | 
					  selector:
 | 
				
			||||||
 | 
					    matchLabels:
 | 
				
			||||||
 | 
					      app: steam-headless
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    metadata:
 | 
				
			||||||
 | 
					      labels:
 | 
				
			||||||
 | 
					        app: steam-headless
 | 
				
			||||||
 | 
					    spec:
 | 
				
			||||||
 | 
					      hostNetwork: true
 | 
				
			||||||
 | 
					      securityContext:
 | 
				
			||||||
 | 
					        fsGroup: 1000
 | 
				
			||||||
 | 
					      nodeSelector:
 | 
				
			||||||
 | 
					        gpu: full
 | 
				
			||||||
 | 
					      containers:
 | 
				
			||||||
 | 
					      - name: steam-headless
 | 
				
			||||||
 | 
					        securityContext:
 | 
				
			||||||
 | 
					          privileged: true
 | 
				
			||||||
 | 
					        image: josh5/steam-headless:latest
 | 
				
			||||||
 | 
					        resources: #Change CPU and Memory below
 | 
				
			||||||
 | 
					          requests:
 | 
				
			||||||
 | 
					            memory: "4G"
 | 
				
			||||||
 | 
					            cpu: "1"
 | 
				
			||||||
 | 
					          limits:
 | 
				
			||||||
 | 
					            memory: "12G"
 | 
				
			||||||
 | 
					            cpu: "4"
 | 
				
			||||||
 | 
					        # set nodeSelector to the node label that matches the node you want to run the pod on
 | 
				
			||||||
 | 
					        volumeMounts:
 | 
				
			||||||
 | 
					        - name: home-dir
 | 
				
			||||||
 | 
					          mountPath: /home/default/
 | 
				
			||||||
 | 
					        - name: games-dir
 | 
				
			||||||
 | 
					          mountPath: /mnt/games/
 | 
				
			||||||
 | 
					        - name: input-devices
 | 
				
			||||||
 | 
					          mountPath: /dev/input/
 | 
				
			||||||
 | 
					        - name: dshm
 | 
				
			||||||
 | 
					          mountPath: /dev/shm
 | 
				
			||||||
 | 
					        - name: dri
 | 
				
			||||||
 | 
					          mountPath: /dev/dri/
 | 
				
			||||||
 | 
					        env: #Environmental Vars
 | 
				
			||||||
 | 
					        - name: NAME
 | 
				
			||||||
 | 
					          value: 'SteamHeadless'
 | 
				
			||||||
 | 
					        - name: TZ
 | 
				
			||||||
 | 
					          value: 'Europe/Zurich'
 | 
				
			||||||
 | 
					        - name: USER_LOCALES
 | 
				
			||||||
 | 
					          value: 'en_US.UTF-8 UTF-8'
 | 
				
			||||||
 | 
					        - name: DISPLAY
 | 
				
			||||||
 | 
					          value: ':55'
 | 
				
			||||||
 | 
					        - name: SHM_SIZE
 | 
				
			||||||
 | 
					          value: '2G'
 | 
				
			||||||
 | 
					        - name: PUID
 | 
				
			||||||
 | 
					          value: '1000'
 | 
				
			||||||
 | 
					        - name: PGID
 | 
				
			||||||
 | 
					          value: '1000'
 | 
				
			||||||
 | 
					        - name: UMASK
 | 
				
			||||||
 | 
					          value: '000'
 | 
				
			||||||
 | 
					        - name: USER_PASSWORD
 | 
				
			||||||
 | 
					          value: 'password' #changeme
 | 
				
			||||||
 | 
					        - name: MODE
 | 
				
			||||||
 | 
					          value: 'primary'
 | 
				
			||||||
 | 
					        - name: WEB_UI_MODE
 | 
				
			||||||
 | 
					          value: 'vnc'
 | 
				
			||||||
 | 
					        - name: ENABLE_VNC_AUDIO
 | 
				
			||||||
 | 
					          value: 'false'
 | 
				
			||||||
 | 
					        - name: PORT_NOVNC_WEB
 | 
				
			||||||
 | 
					          value: '8083'
 | 
				
			||||||
 | 
					        - name: ENABLE_SUNSHINE
 | 
				
			||||||
 | 
					          value: 'true'
 | 
				
			||||||
 | 
					        - name: SUNSHINE_USER
 | 
				
			||||||
 | 
					          value: 'sam'
 | 
				
			||||||
 | 
					        - name: SUNSHINE_PASS
 | 
				
			||||||
 | 
					          value: 'password'
 | 
				
			||||||
 | 
					        - name: ENABLE_EVDEV_INPUTS
 | 
				
			||||||
 | 
					          value: 'false'
 | 
				
			||||||
 | 
					        ports:
 | 
				
			||||||
 | 
					        # novnc
 | 
				
			||||||
 | 
					        - containerPort: 8083
 | 
				
			||||||
 | 
					        # moonlight webui
 | 
				
			||||||
 | 
					        - containerPort: 47990
 | 
				
			||||||
 | 
					        # moonlight stream
 | 
				
			||||||
 | 
					        - containerPort: 47989
 | 
				
			||||||
 | 
					        - containerPort: 47984
 | 
				
			||||||
 | 
					        - containerPort: 48010
 | 
				
			||||||
 | 
					        - containerPort: 47998
 | 
				
			||||||
 | 
					        - containerPort: 47999
 | 
				
			||||||
 | 
					        - containerPort: 47800
 | 
				
			||||||
 | 
					      volumes:
 | 
				
			||||||
 | 
					      - name: home-dir
 | 
				
			||||||
 | 
					        persistentVolumeClaim:
 | 
				
			||||||
 | 
					          claimName: home
 | 
				
			||||||
 | 
					      - name: games-dir
 | 
				
			||||||
 | 
					        persistentVolumeClaim:
 | 
				
			||||||
 | 
					          claimName: games
 | 
				
			||||||
 | 
					      - name: input-devices
 | 
				
			||||||
 | 
					        hostPath:
 | 
				
			||||||
 | 
					          path: /dev/input/
 | 
				
			||||||
 | 
					      - name: dri
 | 
				
			||||||
 | 
					        hostPath:
 | 
				
			||||||
 | 
					          path: /dev/dri/
 | 
				
			||||||
 | 
					      - name: dshm
 | 
				
			||||||
 | 
					        emptyDir:
 | 
				
			||||||
 | 
					          medium: Memory
 | 
				
			||||||
							
								
								
									
										12
									
								
								apps/steam/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								apps/steam/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					apiVersion: kustomize.config.k8s.io/v1beta1
 | 
				
			||||||
 | 
					kind: Kustomization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace: steam
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resources: 
 | 
				
			||||||
 | 
					  - namespace.yaml
 | 
				
			||||||
 | 
					  - deployment.yaml
 | 
				
			||||||
 | 
					  - service.yaml
 | 
				
			||||||
 | 
					  - pvc.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								apps/steam/namespace.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								apps/steam/namespace.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: Namespace
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: placeholder
 | 
				
			||||||
 | 
					  labels:
 | 
				
			||||||
 | 
					    pod-security.kubernetes.io/enforce: privileged 
 | 
				
			||||||
							
								
								
									
										23
									
								
								apps/steam/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								apps/steam/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: PersistentVolumeClaim
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: games
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  storageClassName: "nfs-client"
 | 
				
			||||||
 | 
					  accessModes:
 | 
				
			||||||
 | 
					    - ReadWriteOnce
 | 
				
			||||||
 | 
					  resources:
 | 
				
			||||||
 | 
					    requests:
 | 
				
			||||||
 | 
					      storage: "25Gi"
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: PersistentVolumeClaim
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: home
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  storageClassName: "nfs-client"
 | 
				
			||||||
 | 
					  accessModes:
 | 
				
			||||||
 | 
					    - ReadWriteOnce
 | 
				
			||||||
 | 
					  resources:
 | 
				
			||||||
 | 
					    requests:
 | 
				
			||||||
 | 
					      storage: "5Gi"
 | 
				
			||||||
							
								
								
									
										38
									
								
								apps/steam/service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								apps/steam/service.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					kind: Service
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: steam-vnc
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  selector:
 | 
				
			||||||
 | 
					    app: steam-headless
 | 
				
			||||||
 | 
					  ports:
 | 
				
			||||||
 | 
					  - port: 8083
 | 
				
			||||||
 | 
					    targetPort: 8083
 | 
				
			||||||
 | 
					    name: novnc
 | 
				
			||||||
 | 
					  - port: 47990
 | 
				
			||||||
 | 
					    targetPort: 47990
 | 
				
			||||||
 | 
					    name: moonlight-web
 | 
				
			||||||
 | 
					  - port: 47989
 | 
				
			||||||
 | 
					    targetPort: 47989
 | 
				
			||||||
 | 
					    name: moonlight0
 | 
				
			||||||
 | 
					  - port: 47984
 | 
				
			||||||
 | 
					    targetPort: 47984
 | 
				
			||||||
 | 
					    name: moonlight1
 | 
				
			||||||
 | 
					  - port: 48010
 | 
				
			||||||
 | 
					    targetPort: 48010
 | 
				
			||||||
 | 
					    name: moonlight2
 | 
				
			||||||
 | 
					    protocol: UDP
 | 
				
			||||||
 | 
					  - port: 47998
 | 
				
			||||||
 | 
					    targetPort: 47998
 | 
				
			||||||
 | 
					    name: moonlight3
 | 
				
			||||||
 | 
					    protocol: UDP
 | 
				
			||||||
 | 
					  - port: 47999
 | 
				
			||||||
 | 
					    targetPort: 47999
 | 
				
			||||||
 | 
					    name: moonlight4
 | 
				
			||||||
 | 
					    protocol: UDP
 | 
				
			||||||
 | 
					  - port: 47800
 | 
				
			||||||
 | 
					    targetPort: 47800
 | 
				
			||||||
 | 
					    name: moonlight5
 | 
				
			||||||
 | 
					    protocol: UDP
 | 
				
			||||||
 | 
					  type: LoadBalancer
 | 
				
			||||||
 | 
					  loadBalancerIP: 192.168.3.5
 | 
				
			||||||
		Reference in New Issue
	
	Block a user