Skip to content

Commit 1d72607

Browse files
Bot Updating Documentation
1 parent 20fabcc commit 1d72607

File tree

1 file changed

+359
-0
lines changed

1 file changed

+359
-0
lines changed

docs/images/docker-retroarch.md

Lines changed: 359 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,359 @@
1+
---
2+
title: retroarch
3+
description: "[RetroArch](https://retroarch.com/) is a frontend for emulators, game engines and media players. It enables you to run classic games on a wide range of computers and consoles through its slick graphical interface."
4+
---
5+
<!-- DO NOT EDIT THIS FILE MANUALLY -->
6+
<!-- Please read https://github.com/linuxserver/docker-retroarch/blob/master/.github/CONTRIBUTING.md -->
7+
# [linuxserver/retroarch](https://github.com/linuxserver/docker-retroarch)
8+
9+
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fretroarch?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
10+
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-retroarch.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-retroarch)
11+
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-retroarch.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-retroarch/releases)
12+
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-retroarch/packages)
13+
[![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/linuxserver.io/docker-retroarch/container_registry)
14+
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/retroarch)
15+
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/retroarch.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/retroarch)
16+
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/retroarch.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/retroarch)
17+
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-retroarch%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-retroarch/job/master/)
18+
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fretroarch%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/retroarch/latest/index.html)
19+
20+
[RetroArch](https://retroarch.com/) is a frontend for emulators, game engines and media players. It enables you to run classic games on a wide range of computers and consoles through its slick graphical interface.
21+
22+
[![retroarch](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/retroarch-logo.png)](https://retroarch.com/)
23+
24+
## Supported Architectures
25+
26+
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
27+
28+
Simply pulling `lscr.io/linuxserver/retroarch:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
29+
30+
The architectures supported by this image are:
31+
32+
| Architecture | Available | Tag |
33+
| :----: | :----: | ---- |
34+
| x86-64 || amd64-\<version tag\> |
35+
| arm64 || arm64v8-\<version tag\> |
36+
| armhf || |
37+
38+
## Application Setup
39+
40+
The application can be accessed at:
41+
42+
* https://yourhost:3001/
43+
44+
### Strict reverse proxies
45+
46+
This image uses a self-signed certificate by default. This naturally means the scheme is `https`.
47+
If you are using a reverse proxy which validates certificates, you need to [disable this check for the container](https://docs.linuxserver.io/faq#strict-proxy).
48+
49+
## Usage
50+
51+
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
52+
53+
!!! info
54+
55+
Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.
56+
57+
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
58+
59+
```yaml
60+
---
61+
services:
62+
retroarch:
63+
image: lscr.io/linuxserver/retroarch:latest
64+
container_name: retroarch
65+
security_opt:
66+
- seccomp:unconfined #optional
67+
environment:
68+
- PUID=1000
69+
- PGID=1000
70+
- TZ=Etc/UTC
71+
volumes:
72+
- /path/to/config:/config
73+
ports:
74+
- 3000:3000
75+
- 3001:3001
76+
shm_size: "1gb"
77+
restart: unless-stopped
78+
```
79+
80+
### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))
81+
82+
```bash
83+
docker run -d \
84+
--name=retroarch \
85+
--security-opt seccomp=unconfined `#optional` \
86+
-e PUID=1000 \
87+
-e PGID=1000 \
88+
-e TZ=Etc/UTC \
89+
-p 3000:3000 \
90+
-p 3001:3001 \
91+
-v /path/to/config:/config \
92+
--shm-size="1gb" \
93+
--restart unless-stopped \
94+
lscr.io/linuxserver/retroarch:latest
95+
```
96+
97+
## Parameters
98+
99+
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
100+
101+
### Ports (`-p`)
102+
103+
| Parameter | Function |
104+
| :----: | --- |
105+
| `3000:3000` | Retroarch desktop gui HTTP must be proxied. |
106+
| `3001:3001` | Retroarch desktop gui HTTPS. |
107+
108+
### Environment Variables (`-e`)
109+
110+
| Env | Function |
111+
| :----: | --- |
112+
| `PUID=1000` | for UserID - see below for explanation |
113+
| `PGID=1000` | for GroupID - see below for explanation |
114+
| `TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
115+
116+
### Volume Mappings (`-v`)
117+
118+
| Volume | Function |
119+
| :----: | --- |
120+
| `/config` | Users home directory in the container, stores local files and settings |
121+
122+
#### Miscellaneous Options
123+
124+
| Parameter | Function |
125+
| :-----: | --- |
126+
| `--shm-size=` | This is needed for retroarch to function. |
127+
| `--security-opt seccomp=unconfined` | For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. |
128+
129+
## Environment variables from files (Docker secrets)
130+
131+
You can set any environment variable from a file by using a special prepend `FILE__`.
132+
133+
As an example:
134+
135+
```bash
136+
-e FILE__MYVAR=/run/secrets/mysecretvariable
137+
```
138+
139+
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
140+
141+
## Umask for running applications
142+
143+
For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting.
144+
Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.
145+
146+
## User / Group Identifiers
147+
148+
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
149+
150+
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
151+
152+
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
153+
154+
```bash
155+
id your_user
156+
```
157+
158+
Example output:
159+
160+
```text
161+
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
162+
```
163+
164+
## Docker Mods
165+
166+
[![Docker Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=retroarch&query=%24.mods%5B%27retroarch%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=retroarch "view available mods for this container.") [![Docker Universal Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=universal&query=%24.mods%5B%27universal%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=universal "view available universal mods.")
167+
168+
We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.
169+
170+
## Support Info
171+
172+
* Shell access whilst the container is running:
173+
174+
```bash
175+
docker exec -it retroarch /bin/bash
176+
```
177+
178+
* To monitor the logs of the container in realtime:
179+
180+
```bash
181+
docker logs -f retroarch
182+
```
183+
184+
* Container version number:
185+
186+
```bash
187+
docker inspect -f '{{ index .Config.Labels "build_version" }}' retroarch
188+
```
189+
190+
* Image version number:
191+
192+
```bash
193+
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/retroarch:latest
194+
```
195+
196+
## Updating Info
197+
198+
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
199+
200+
Below are the instructions for updating containers:
201+
202+
### Via Docker Compose
203+
204+
* Update images:
205+
* All images:
206+
207+
```bash
208+
docker-compose pull
209+
```
210+
211+
* Single image:
212+
213+
```bash
214+
docker-compose pull retroarch
215+
```
216+
217+
* Update containers:
218+
* All containers:
219+
220+
```bash
221+
docker-compose up -d
222+
```
223+
224+
* Single container:
225+
226+
```bash
227+
docker-compose up -d retroarch
228+
```
229+
230+
* You can also remove the old dangling images:
231+
232+
```bash
233+
docker image prune
234+
```
235+
236+
### Via Docker Run
237+
238+
* Update the image:
239+
240+
```bash
241+
docker pull lscr.io/linuxserver/retroarch:latest
242+
```
243+
244+
* Stop the running container:
245+
246+
```bash
247+
docker stop retroarch
248+
```
249+
250+
* Delete the container:
251+
252+
```bash
253+
docker rm retroarch
254+
```
255+
256+
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
257+
* You can also remove the old dangling images:
258+
259+
```bash
260+
docker image prune
261+
```
262+
263+
### Image Update Notifications - Diun (Docker Image Update Notifier)
264+
265+
!!! tip
266+
267+
We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
268+
269+
## Building locally
270+
271+
If you want to make local modifications to these images for development purposes or just to customize the logic:
272+
273+
```bash
274+
git clone https://github.com/linuxserver/docker-retroarch.git
275+
cd docker-retroarch
276+
docker build \
277+
--no-cache \
278+
--pull \
279+
-t lscr.io/linuxserver/retroarch:latest .
280+
```
281+
282+
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
283+
284+
```bash
285+
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
286+
```
287+
288+
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
289+
290+
To help with development, we generate this dependency graph.
291+
292+
??? info "Init dependency graph"
293+
294+
```d2
295+
"retroarch:latest": {
296+
docker-mods
297+
base {
298+
fix-attr +\nlegacy cont-init
299+
}
300+
docker-mods -> base
301+
legacy-services
302+
custom services
303+
init-services -> legacy-services
304+
init-services -> custom services
305+
custom services -> legacy-services
306+
legacy-services -> ci-service-check
307+
init-migrations -> init-adduser
308+
init-os-end -> init-config
309+
init-selkies-end -> init-config
310+
init-config -> init-config-end
311+
init-crontab-config -> init-config-end
312+
init-config -> init-crontab-config
313+
init-mods-end -> init-custom-files
314+
init-adduser -> init-device-perms
315+
base -> init-envfile
316+
base -> init-migrations
317+
init-config-end -> init-mods
318+
init-mods-package-install -> init-mods-end
319+
init-mods -> init-mods-package-install
320+
init-selkies -> init-nginx
321+
init-adduser -> init-os-end
322+
init-device-perms -> init-os-end
323+
init-envfile -> init-os-end
324+
init-os-end -> init-selkies
325+
init-nginx -> init-selkies-config
326+
init-video -> init-selkies-end
327+
init-custom-files -> init-services
328+
init-selkies-config -> init-video
329+
init-services -> svc-cron
330+
svc-cron -> legacy-services
331+
init-services -> svc-de
332+
svc-nginx -> svc-de
333+
svc-selkies -> svc-de
334+
svc-xorg -> svc-de
335+
svc-de -> legacy-services
336+
init-services -> svc-docker
337+
svc-de -> svc-docker
338+
svc-docker -> legacy-services
339+
init-services -> svc-nginx
340+
svc-nginx -> legacy-services
341+
init-services -> svc-pulseaudio
342+
svc-pulseaudio -> legacy-services
343+
init-services -> svc-selkies
344+
svc-nginx -> svc-selkies
345+
svc-pulseaudio -> svc-selkies
346+
svc-xorg -> svc-selkies
347+
svc-selkies -> legacy-services
348+
init-services -> svc-xorg
349+
svc-xorg -> legacy-services
350+
}
351+
Base Images: {
352+
"baseimage-selkies:ubuntunoble" <- "baseimage-ubuntu:noble"
353+
}
354+
"retroarch:latest" <- Base Images
355+
```
356+
357+
## Versions
358+
359+
* **25.05.25:** - Initial Version.

0 commit comments

Comments
 (0)