mirror of
https://github.com/okxlin/appstore.git
synced 2026-09-22 08:00:59 +00:00
Add shadPS4 LinuxServer app
This commit is contained in:
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
docker-compose down --volumes
|
||||
+57
@@ -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 |
Reference in New Issue
Block a user