first test

This commit is contained in:
2026-01-03 11:28:21 -05:00
commit e52f8750b8
6 changed files with 152 additions and 0 deletions

11
CloudronManifest.json Normal file
View File

@@ -0,0 +1,11 @@
{
"title": "Romm",
"version": "0.1.0",
"healthCheckPath": "/",
"httpPort": 3000,
"addons": {
"localstorage": {},
"postgresql": {}
},
"manifestVersion": 2
}

86
Dockerfile Normal file
View File

@@ -0,0 +1,86 @@
FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
RUN mkdir -p /app/code
WORKDIR /app/code
ARG VERSION=4.5.0
# Prevent interactive prompts during installation
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
make \
gcc \
g++ \
libmariadb3 \
libmariadb-dev \
libpq-dev \
libffi-dev \
musl-dev \
curl \
ca-certificates \
libmagic-dev \
7zip \
tzdata \
libbz2-dev \
libssl-dev \
libreadline-dev \
libsqlite3-dev \
zlib1g-dev \
liblzma-dev \
libncurses5-dev \
libncursesw5-dev \
unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Clone release
RUN wget https://github.com/rommapp/romm/archive/refs/tags/$VERSION.zip && \
unzip $VERSION.zip -d /app/code && rm $VERSION.zip
# Install nvm
ENV NVM_DIR="/root/.nvm"
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \
&& . "$NVM_DIR/nvm.sh" \
&& nvm install 18.20.8 \
&& nvm use 18.20.8 \
&& nvm alias default 18.20.8
ENV PATH="$NVM_DIR/versions/node/v18.20.8/bin:$PATH"
# Build and install RAHasher (optional for RA hashes)
RUN git clone --recursive --branch 1.8.1 --depth 1 https://github.com/RetroAchievements/RALibretro.git /tmp/RALibretro
WORKDIR /tmp/RALibretro
RUN sed -i '22a #include <ctime>' ./src/Util.h \
&& sed -i '6a #include <unistd.h>' \
./src/libchdr/deps/zlib-1.3.1/gzlib.c \
./src/libchdr/deps/zlib-1.3.1/gzread.c \
./src/libchdr/deps/zlib-1.3.1/gzwrite.c \
&& make HAVE_CHD=1 -f ./Makefile.RAHasher \
&& cp ./bin64/RAHasher /usr/bin/RAHasher
RUN rm -rf /tmp/RALibretro
# Install frontend dependencies
COPY frontend/package.json /app/code/frontend/
WORKDIR /app/code/frontend
RUN npm install
# Install uv for the non-root user
COPY --from=ghcr.io/astral-sh/uv:0.7.19 /uv /uvx /usr/local/bin/
# Install Python
RUN uv python install 3.13
# Copy project files (including pyproject.toml and uv.lock)
COPY pyproject.toml uv.lock* .python-version /app/code/
# Install Python dependencies
RUN uv sync --all-extras
ENV PATH="/app/code/.venv/bin:${PATH}"
COPY start.sh /app/pkg/
CMD [ "/app/pkg/start.sh" ]

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

31
start.sh Executable file
View File

@@ -0,0 +1,31 @@
#!/bin/bash
set -eu
mkdir -p /app/data/library /app/data/config /app/data/assets /app/data/resources
# ensure that data directory is owned by 'cloudron' user
chown -R cloudron:cloudron /app/data
cd /app/data
if [ ! -f /app/data/.env ]; then
## Write new .env to import on restarts of the app
ROMM_AUTH_GEN=$(/usr/bin/openssl rand -hex 32)
cat >/app/data/.env <<EOL
ROMM_DB_DRIVER=postgresql
DB_HOST=${CLOUDRON_POSTGRESQL_HOST}
DB_PORT=${CLOUDRON_POSTGRESQL_PORT}
DB_NAME=${CLOUDRON_POSTGRESQL_DATABASE}
DB_USER=${CLOUDRON_POSTGRESQL_USERNAME}
DB_PASSWD=${CLOUDRON_POSTGRESQL_PASSWORD}
ROMM_AUTH_SECRET_KEY=${ROMM_AUTH_GEN}
IGDB_CLIENT_ID=
IGDB_CLIENT_SECRET=
MOBYGAMES_API_KEY=
STEAMGRIDDB_API_KEY=
EOL
source /app/data/.env
echo "==> Starting supervisor"
exec /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf --nodaemon -i Romm

12
supervisor/backend.conf Normal file
View File

@@ -0,0 +1,12 @@
[program:backend]
priority=5
directory=/app/code/backend
environment=HOME=/app/code
command=uv run python main.py
user=cloudron
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

12
supervisor/frontend.conf Normal file
View File

@@ -0,0 +1,12 @@
[program:backend]
priority=5
directory=/app/code/frontend
environment=HOME=/app/code
command=npm run prod
user=cloudron
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0