App Submission: The Lounge (#2412)
Co-authored-by: Alexander L. <lackner.alex@gmail.com>
This commit is contained in:
parent
c9c630a3aa
commit
58549456cd
0
thelounge/data/.gitkeep
Normal file
0
thelounge/data/.gitkeep
Normal file
16
thelounge/docker-compose.yml
Normal file
16
thelounge/docker-compose.yml
Normal 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
58
thelounge/hooks/pre-start
Executable 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
32
thelounge/umbrel-app.yml
Normal 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
|
||||
Loading…
Reference in New Issue
Block a user