App Submission: The Lounge (#2412)

Co-authored-by: Alexander L. <lackner.alex@gmail.com>
This commit is contained in:
Oren 2025-05-13 16:13:05 +03:00 committed by GitHub
parent c9c630a3aa
commit 58549456cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 106 additions and 0 deletions

0
thelounge/data/.gitkeep Normal file
View File

View File

@ -0,0 +1,16 @@
version: "3.7"
services:
app_proxy:
environment:
APP_HOST: thelounge_web_1
APP_PORT: 9000
PROXY_AUTH_ADD: "false"
web:
image: ghcr.io/thelounge/thelounge:v4.4.3@sha256:c0565787e0c44951df4ea77840519a41cfe6a4ec040bf1bda928a91866cc3e5e
user: "1000:1000"
restart: on-failure
stop_grace_period: 1m
volumes:
- ${APP_DATA_DIR}/data:/var/opt/thelounge

58
thelounge/hooks/pre-start Executable file
View File

@ -0,0 +1,58 @@
#!/usr/bin/env bash
set -euo pipefail
# The purpose of this pre-start hook is to add thelounge user
APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")"
# sentinel file to check if user was already initialised
USER_SENTINEL="${APP_DATA_DIR}/.user_created"
# user name and email
USER_NAME="umbrel"
# max number of tries and sleep time between them (60 seconds)
MAX_TRIES=12
SLEEP_SECS=5
# ──────────────────────────────────────────────────────────────
# Skip bootstrap entirely if user already initialised
# ──────────────────────────────────────────────────────────────
if [[ -f "$USER_SENTINEL" ]]; then
echo "thelounge: user already initialised - skipping bootstrap."
exit 0
fi
# ──────────────────────────────────────────────────────────────
# Bring the web service up so that everything is ready to run
# ──────────────────────────────────────────────────────────────
echo "thelounge: starting full stack to run migrations…"
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" \
up -d --wait --wait-timeout 90 web
# ──────────────────────────────────────────────────────────────
# Retry until the user is created (max 60 s)
# This should succeed first try
# But including a retry loop for robustness
# ──────────────────────────────────────────────────────────────
echo "thelounge: ensuring user exists…"
for ((try=1; try<=MAX_TRIES; try++)); do
if "${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" exec -T web thelounge add "${USER_NAME}" --password "${APP_PASSWORD}" \ ; then
touch "$USER_SENTINEL"
echo "thelounge: user ready."
break
fi
echo " Attempt $try/$MAX_TRIES failed - retrying in ${SLEEP_SECS}s…"
sleep "$SLEEP_SECS"
done
if [[ ! -f "$USER_SENTINEL" ]]; then
echo "thelounge ERROR: could not create user after $MAX_TRIES attempts."
exit 1
fi
# ──────────────────────────────────────────────────────────────
# Bring down all containers and let umbrelOS start them fresh
# ──────────────────────────────────────────────────────────────
echo "thelounge: bootstrap finished - stopping stack for clean start…"
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" stop

32
thelounge/umbrel-app.yml Normal file
View File

@ -0,0 +1,32 @@
manifestVersion: 1.1
id: thelounge
category: social
name: The Lounge
version: "4.4.3"
tagline: Modern web IRC client designed for self-hosting
description: >-
The Lounge is a modern, open-source, web-based IRC (Internet Relay Chat) client that offers persistent connectivity, allowing users to remain connected to IRC servers even while offline, and provides a responsive interface compatible with desktops, smartphones, and tablets.
It brings IRC into the 21st century with features like push notifications, link previews, and file uploads, and supports multiple user accounts, enabling server sharing among friends or team members.
The Lounge can be installed on a continuously running server for optimal performance, granting users access through their browsers or mobile devices.
It offers both private mode, combining the functionalities of a bouncer and a client for a modern chat experience, and public mode, allowing open chat access without registration.
developer: The Lounge Team
website: https://thelounge.chat
dependencies: []
repo: https://github.com/thelounge/thelounge
support: https://github.com/thelounge/thelounge/issues
port: 9003
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
path: ""
defaultUsername: "umbrel"
deterministicPassword: true
submitter: oren-z0
submission: https://github.com/getumbrel/umbrel-apps/pull/2412