Skip to content

RetroAssembly RetroAssembly

Description / nameInput element
Container Registry
Container Configuration Root Path
RetroAssembly Host Port
RetroAssembly /data Path

Build Status Last Commit

Personal retro game collection cabinet in your browser. Play NES, SNES, Genesis, GBA, and more.

Port 8000
Registry ghcr.io/daemonless/retroassembly
Daemonless daemonless/retroassembly
Source arianrhodsandlot/retroassembly
Website retroassembly.com

Version Tags

Tag Description Best For
latest Upstream Binary. Built from official release. Most users — recommended.

Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions, including the security model for host vs. container privileges.

Deployment

services:
  retroassembly:
    image: "ghcr.io/daemonless/retroassembly:latest"
    container_name: retroassembly
    environment:
      - RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY=/data  # Data directory for SQLite database (default: /data)
      - RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY=/data/storage  # Directory for uploaded ROM files (default: /data/storage)
      - RETROASSEMBLY_RUN_TIME_PORT=  # HTTP port (default: 8000)
    volumes:
      - "/path/to/containers/retroassembly:/data"
    ports:
      - "8000:8000"
    # always (not unless-stopped) so FreeBSD's podman rc.d auto-starts it at boot
    restart: always
1
2
3
4
5
6
7
podman run -d --name retroassembly \
  -p 8000:8000 \
  -e RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY=/data \
  -e RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY=/data/storage \
  -e RETROASSEMBLY_RUN_TIME_PORT= \
  -v /path/to/containers/retroassembly:/data \
  ghcr.io/daemonless/retroassembly:latest
- name: Deploy retroassembly
  containers.podman.podman_container:
    name: retroassembly
    image: "ghcr.io/daemonless/retroassembly:latest"
    state: started
    restart_policy: always
    env:
      RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY: "/data"
      RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY: "/data/storage"
      RETROASSEMBLY_RUN_TIME_PORT: ""
    ports:
      - "8000:8000"
    volumes:
      - "/path/to/containers/retroassembly:/data"
1
2
3
4
5
6
# .env

DIRECTOR_PROJECT=retroassembly
RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY=/data
RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY=/data/storage
RETROASSEMBLY_RUN_TIME_PORT=
# appjail-director.yml

options:
  - virtualnet: ':<random> default'
  - nat:
services:
  retroassembly:
    name: retroassembly
    options:
      - container: 'boot args:--pull'
      - expose: '8000:8000 proto:tcp'
    oci:
      user: root
      environment:
        - RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY: !ENV '${RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY}'
        - RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY: !ENV '${RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY}'
        - RETROASSEMBLY_RUN_TIME_PORT: !ENV '${RETROASSEMBLY_RUN_TIME_PORT}'
    volumes:
      - RETROASSEMBLY_DATA_PATH: /data
volumes:
  RETROASSEMBLY_DATA_PATH:
    device: '/path/to/containers/retroassembly'
1
2
3
4
5
6
# Makejail

ARG tag=latest

OPTION overwrite=force
OPTION from=ghcr.io/daemonless/retroassembly:${tag}
appjail oci run -Pd \
  -o overwrite=force \
  -o container="args:--pull" \
  -o virtualnet=":<random> default" \
  -o nat \
  -o expose="8000:8000 proto:tcp" \
  -e RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY=/data \
  -e RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY=/data/storage \
  -e RETROASSEMBLY_RUN_TIME_PORT= \
  -o fstab="/path/to/containers/retroassembly /data <pseudofs>" \
  ghcr.io/daemonless/retroassembly:latest retroassembly

Access at: http://localhost:8000

Interactive Configuration

Parameters

Environment Variables

Variable Default Description
RETROASSEMBLY_RUN_TIME_DATA_DIRECTORY /data Data directory for SQLite database (default: /data)
RETROASSEMBLY_RUN_TIME_STORAGE_DIRECTORY /data/storage Directory for uploaded ROM files (default: /data/storage)
RETROASSEMBLY_RUN_TIME_PORT `` HTTP port (default: 8000)

Volumes

Path Description
/data Database and uploaded ROM storage

Ports

Port Protocol Description
8000 TCP Web UI

Implementation Details

  • Architectures: amd64
  • User: bsd (UID/GID set via PUID/PGID). Defaults to 1000:1000.
  • Base: Built on ghcr.io/daemonless/base (FreeBSD 15.1).

Need help? Join our Discord community.