Add shadPS4 LinuxServer app

This commit is contained in:
okxlin
2026-06-26 00:32:10 +08:00
parent b3d8ee0902
commit 56371afefa
9 changed files with 333 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
# shadPS4
## 产品介绍
shadPS4 是一个早期的 PlayStation 4 模拟器,本应用通过 LinuxServer.io 镜像提供浏览器访问的桌面环境。
## 主要功能
- 通过浏览器访问 shadPS4 桌面界面。
- 使用 `/config` 持久化用户目录、配置和游戏相关文件。
- 通过 Basic Auth 保护 Web 桌面入口。
## 访问说明
安装完成后,通过应用表单中的 HTTP 或 HTTPS 端口访问 Web 桌面,并使用安装时填写的 Basic Auth 用户名和密码登录。
## Introduction
shadPS4 is an early PlayStation 4 emulator. This app packages the LinuxServer.io image as a browser-accessible desktop environment.
## Features
- Access the shadPS4 desktop from a browser.
- Persist the user home, settings, and game files under `/config`.
- Protect the Web desktop entrypoint with Basic Auth.
## 应用简介
shadPS4 PlayStation 4 模拟器桌面。
英文说明:PlayStation 4 emulator desktop maintained by LinuxServer.io.
## 部署说明
- 本应用使用 Docker Compose 在 1Panel 中部署。
- 应用分类:游戏。
- 支持架构:amd64。
- 可选版本:`latest`
- 安装后按应用表单中的端口访问 Web 桌面。
## 端口
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| PANEL_APP_PORT_HTTP | HTTP 端口 | 3000 | 是 |
| PANEL_APP_PORT_HTTPS | HTTPS 端口 | 3001 | 是 |
## 数据持久化
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| CONFIG_PATH | 配置文件路径 | ./data/config | 是 |
升级或迁移前,请在 1Panel 中备份上述数据目录。
## 配置项
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| TIME_ZONE | 时区 | Asia/Shanghai | 是 |
| CUSTOM_USER | Basic Auth 用户名 | admin | 是 |
| PASSWORD | Basic Auth 密码 | 随机生成 | 是 |
| LC_ALL | 桌面语言区域,例如 zh_CN.UTF-8 | zh_CN.UTF-8 | 否 |
| SHM_SIZE | 共享内存大小 | 1gb | 是 |
## 使用说明
- 浏览器/桌面类 LinuxServer 镜像默认无认证,本适配启用 Basic Auth,请使用 CUSTOM_USER 和 PASSWORD 登录。
- 如需公网访问,请优先放在带强认证的反向代理之后。
- 如需对外开放访问,请同步检查防火墙、安全组和反向代理配置。
## 参考资料
- 官网: <https://shadps4.net/>
- 文档: <https://docs.linuxserver.io/images/docker-shadps4/>
- 源码: <https://github.com/linuxserver/docker-shadps4>
+29
View File
@@ -0,0 +1,29 @@
name: shadPS4
tags:
- Game
title: shadPS4 PlayStation 4 模拟器桌面
description: shadPS4 PlayStation 4 模拟器桌面
additionalProperties:
key: shadps4-linuxserver
name: shadPS4
tags:
- Game
shortDescZh: shadPS4 PlayStation 4 模拟器桌面
shortDescEn: PlayStation 4 emulator desktop maintained by LinuxServer.io
description:
en: PlayStation 4 emulator desktop maintained by LinuxServer.io
zh: shadPS4 PlayStation 4 模拟器桌面
zh-Hant: shadPS4 PlayStation 4 模擬器桌面
ja: LinuxServer.io が保守する PlayStation 4 エミュレーターデスクトップ
ko: LinuxServer.io에서 유지 관리하는 PlayStation 4 에뮬레이터 데스크톱
ru: Рабочий стол эмулятора PlayStation 4, поддерживаемый LinuxServer.io
ms: Desktop emulator PlayStation 4 yang diselenggara oleh LinuxServer.io
pt-br: Desktop de emulador PlayStation 4 mantido pela LinuxServer.io
type: tool
crossVersionUpdate: true
limit: 0
website: https://shadps4.net/
github: https://github.com/linuxserver/docker-shadps4
document: https://docs.linuxserver.io/images/docker-shadps4/
architectures:
- amd64
@@ -0,0 +1,9 @@
CONTAINER_NAME=
PANEL_APP_PORT_HTTP=3000
PANEL_APP_PORT_HTTPS=3001
CONFIG_PATH=./data/config
CUSTOM_USER=admin
PASSWORD=linuxserver-change-me
LC_ALL=zh_CN.UTF-8
SHM_SIZE=1gb
TIME_ZONE=Asia/Shanghai
+134
View File
@@ -0,0 +1,134 @@
additionalProperties:
formFields:
- default: 3000
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
zh: HTTP 端口
zh-Hant: HTTP 連接埠
ja: HTTP ポート
ko: HTTP 포트
ru: HTTP-порт
ms: Port HTTP
pt-br: Porta HTTP
required: true
type: number
rule: paramPort
- default: 3001
edit: true
envKey: PANEL_APP_PORT_HTTPS
labelEn: HTTPS Port
labelZh: HTTPS 端口
label:
en: HTTPS Port
zh: HTTPS 端口
zh-Hant: HTTPS 連接埠
ja: HTTPS ポート
ko: HTTPS 포트
ru: HTTPS-порт
ms: Port HTTPS
pt-br: Porta HTTPS
required: true
type: number
rule: paramPort
- default: ./data/config
edit: true
envKey: CONFIG_PATH
labelEn: Config folder path
labelZh: 配置文件路径
label:
en: Config folder path
zh: 配置文件路径
zh-Hant: 設定檔資料夾路徑
ja: 設定フォルダーのパス
ko: 설정 폴더 경로
ru: Путь к папке конфигурации
ms: Laluan folder konfigurasi
pt-br: Caminho da pasta de configuração
required: true
type: text
- default: admin
edit: true
envKey: CUSTOM_USER
labelEn: Basic Auth Username
labelZh: 访问用户名(Basic Auth
label:
en: Basic Auth Username
zh: 访问用户名(Basic Auth
zh-Hant: 存取使用者名稱(Basic Auth
ja: ベーシック認証ユーザー名
ko: 기본 인증 사용자명
ru: Имя пользователя (Basic Auth)
ms: Nama pengguna Basic Auth
pt-br: Usuario Basic Auth
required: true
type: text
- default: linuxserver-change-me
edit: true
envKey: PASSWORD
labelEn: Basic Auth Password
labelZh: 访问密码(Basic Auth
label:
en: Basic Auth Password
zh: 访问密码(Basic Auth
zh-Hant: 存取密碼(Basic Auth
ja: ベーシック認証パスワード
ko: 기본 인증 비밀번호
ru: Пароль Basic Auth
ms: Kata laluan Basic Auth
pt-br: Senha Basic Auth
random: true
required: true
rule: paramComplexity
type: password
- default: zh_CN.UTF-8
edit: true
envKey: LC_ALL
labelEn: Desktop language locale
labelZh: 桌面语言区域
label:
en: Desktop language locale
zh: 桌面语言区域
zh-Hant: 桌面語言區域
ja: デスクトップ言語ロケール
ko: 데스크톱 언어 로케일
ru: Локаль языка рабочего стола
ms: Lokal bahasa desktop
pt-br: Localidade do idioma da area de trabalho
required: false
type: text
- default: 1gb
edit: true
envKey: SHM_SIZE
labelEn: Shared memory size
labelZh: 共享内存大小
label:
en: Shared memory size
zh: 共享内存大小
zh-Hant: 共享記憶體大小
ja: 共有メモリサイズ
ko: 공유 메모리 크기
ru: Размер общей памяти
ms: Saiz memori kongsi
pt-br: Tamanho da memoria compartilhada
required: true
type: text
- default: Asia/Shanghai
edit: true
envKey: TIME_ZONE
labelEn: Time zone
labelZh: 时区
label:
en: Time zone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
required: true
type: text
@@ -0,0 +1,25 @@
networks:
1panel-network:
external: true
services:
shadps4:
image: "linuxserver/shadps4:latest"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:3000"
- "${PANEL_APP_PORT_HTTPS}:3001"
volumes:
- "${CONFIG_PATH}:/config"
environment:
- PUID=1000
- PGID=1000
- TZ=${TIME_ZONE}
- CUSTOM_USER=${CUSTOM_USER}
- PASSWORD=${PASSWORD}
- LC_ALL=${LC_ALL:-zh_CN.UTF-8}
shm_size: ${SHM_SIZE}
labels:
createdBy: "Apps"
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -euo pipefail
paths=(
"${CONFIG_PATH:-./data/config}"
)
mkdir -p "${paths[@]}"
for path in "${paths[@]}"; do
case "$path" in
./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;;
esac
done
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
docker-compose down --volumes
+57
View File
@@ -0,0 +1,57 @@
#!/usr/bin/env bash
set -euo pipefail
ENV_FILE="${ENV_FILE:-./.env}"
generate_secret() {
if [[ -r /dev/urandom ]]; then
local secret=""
local chunk=""
while [[ ${#secret} -lt 24 ]]; do
chunk="$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c $((24 - ${#secret})) || true)"
secret="${secret}${chunk}"
done
printf '%s\n' "$secret"
else
printf '%s\n' 'linuxserver-change-me'
fi
}
ensure_env_default() {
local key="$1"
local value="$2"
local fill_empty="${3:-false}"
if [[ ! -f "$ENV_FILE" ]]; then
echo "$ENV_FILE not found; skipped $key migration"
return
fi
if grep -qE "^${key}=" "$ENV_FILE"; then
local current
current="$(sed -n -E "s/^${key}=//p" "$ENV_FILE" | tail -n 1)"
current="${current%\"}"
current="${current#\"}"
current="${current%'}"
current="${current#'}"
if [[ "$fill_empty" == "true" && -z "$current" ]]; then
sed -i -E "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
echo "Updated empty $key"
else
echo "$key already exists"
fi
return
fi
printf '%s=%s\n' "$key" "$value" >> "$ENV_FILE"
echo "Added $key"
}
if [[ -f "$ENV_FILE" ]]; then
ensure_env_default "CUSTOM_USER" "admin" true
ensure_env_default "PASSWORD" "$(generate_secret)" true
ensure_env_default "LC_ALL" "zh_CN.UTF-8" false
ensure_env_default "SHM_SIZE" "1gb" false
else
echo "$ENV_FILE not found; skipped LinuxServer environment migration"
fi
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB