Update README.md

This commit is contained in:
2026-04-09 16:27:45 +00:00
parent c87b5f0304
commit 03496884d5

View File

@@ -1,7 +1,7 @@
# jama 💬
# rosterchirp 💬
### *just another messaging app*
A modern, self-hosted team messaging Progressive Web App (PWA) built for small to medium teams. jama runs entirely in a single Docker container with no external database dependencies — all data is stored locally using SQLite.
A modern, self-hosted team messaging Progressive Web App (PWA) built for small to medium teams. rosterchirp runs entirely in a single Docker container with no external database dependencies — all data is stored locally using SQLite.
---
@@ -112,8 +112,8 @@ All builds use `build.sh`. No host Node.js installation is required.
### 1. Clone the repository
```bash
git clone https://your-gitea/youruser/jama.git
cd jama
git clone https://your-gitea/youruser/rosterchirp.git
cd rosterchirp
```
### 2. Build the Docker image
@@ -135,7 +135,7 @@ At minimum, change `ADMIN_EMAIL`, `ADMIN_PASS`, and `JWT_SECRET`.
```bash
docker compose up -d
docker compose logs -f jama
docker compose logs -f rosterchirp
```
### 5. Log in
@@ -146,13 +146,13 @@ Open `http://your-server:3000`, log in with your `ADMIN_EMAIL` and `ADMIN_PASS`,
## HTTPS & SSL
jama does not manage SSL itself. Use **Caddy** as a reverse proxy.
rosterchirp does not manage SSL itself. Use **Caddy** as a reverse proxy.
### Caddyfile
```
chat.yourdomain.com {
reverse_proxy jama:3000
reverse_proxy rosterchirp:3000
}
```
@@ -161,25 +161,25 @@ chat.yourdomain.com {
```yaml
version: '3.8'
services:
jama:
image: jama:${JAMA_VERSION:-latest}
container_name: jama
rosterchirp:
image: rosterchirp:${rosterchirp_VERSION:-latest}
container_name: rosterchirp
restart: unless-stopped
expose:
- "3000"
environment:
- NODE_ENV=production
- ADMIN_NAME=${ADMIN_NAME:-Admin User}
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@jama.local}
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@rosterchirp.local}
- ADMIN_PASS=${ADMIN_PASS:-Admin@1234}
- USER_PASS=${USER_PASS:-user@1234}
- ADMPW_RESET=${ADMPW_RESET:-false}
- JWT_SECRET=${JWT_SECRET:-changeme}
- APP_NAME=${APP_NAME:-jama}
- JAMA_VERSION=${JAMA_VERSION:-latest}
- APP_NAME=${APP_NAME:-rosterchirp}
- rosterchirp_VERSION=${rosterchirp_VERSION:-latest}
volumes:
- jama_db:/app/data
- jama_uploads:/app/uploads
- rosterchirp_db:/app/data
- rosterchirp_uploads:/app/uploads
caddy:
image: caddy:alpine
@@ -194,11 +194,11 @@ services:
- caddy_data:/data
- caddy_certs:/config
depends_on:
- jama
- rosterchirp
volumes:
jama_db:
jama_uploads:
rosterchirp_db:
rosterchirp_uploads:
caddy_data:
caddy_certs:
```
@@ -209,16 +209,16 @@ volumes:
| Variable | Default | Description |
|---|---|---|
| `JAMA_VERSION` | `latest` | Docker image tag to run |
| `rosterchirp_VERSION` | `latest` | Docker image tag to run |
| `TZ` | `UTC` | Container timezone (e.g. `America/Toronto`) |
| `ADMIN_NAME` | `Admin User` | Display name of the default admin account |
| `ADMIN_EMAIL` | `admin@jama.local` | Login email for the default admin account |
| `ADMIN_EMAIL` | `admin@rosterchirp.local` | Login email for the default admin account |
| `ADMIN_PASS` | `Admin@1234` | Initial password for the default admin account |
| `USER_PASS` | `user@1234` | Default temporary password for bulk-imported users when no password is specified in CSV |
| `ADMPW_RESET` | `false` | If `true`, resets the **admin** password to `ADMIN_PASS` on every restart. Emergency access recovery only. Shows a warning banner when active. |
| `JWT_SECRET` | *(insecure default)* | Secret used to sign auth tokens. **Must be changed in production.** |
| `PORT` | `3000` | Host port to bind (without Caddy) |
| `APP_NAME` | `jama` | Initial application name (can also be changed in Settings UI) |
| `APP_NAME` | `rosterchirp` | Initial application name (can also be changed in Settings UI) |
| `DEFCHAT_NAME` | `General Chat` | Name of the default public group created on first run |
> `ADMIN_EMAIL` and `ADMIN_PASS` are only used on the **first run**. Once the database exists they are ignored — unless `ADMPW_RESET=true`.
@@ -226,7 +226,7 @@ volumes:
### Example `.env`
```env
JAMA_VERSION=1.0.0
rosterchirp_VERSION=1.0.0
TZ=America/Toronto
ADMIN_NAME=Your Name
@@ -239,7 +239,7 @@ ADMPW_RESET=false
JWT_SECRET=replace-this-with-a-long-random-string-at-least-32-chars
PORT=3000
APP_NAME=jama
APP_NAME=rosterchirp
DEFCHAT_NAME=General Chat
```
@@ -330,23 +330,23 @@ Users can access the guide at any time via **User menu → Help**.
| Volume | Container path | Contents |
|---|---|---|
| `jama_db` | `/app/data` | SQLite database (`jama.db`), `help.md` |
| `jama_uploads` | `/app/uploads` | Avatars, logos, PWA icons, message images |
| `rosterchirp_db` | `/app/data` | SQLite database (`rosterchirp.db`), `help.md` |
| `rosterchirp_uploads` | `/app/uploads` | Avatars, logos, PWA icons, message images |
### Backup
```bash
# Backup database
docker run --rm \
-v jama_db:/data \
-v rosterchirp_db:/data \
-v $(pwd):/backup alpine \
tar czf /backup/jama_db_$(date +%Y%m%d).tar.gz -C /data .
tar czf /backup/rosterchirp_db_$(date +%Y%m%d).tar.gz -C /data .
# Backup uploads
docker run --rm \
-v jama_uploads:/data \
-v rosterchirp_uploads:/data \
-v $(pwd):/backup alpine \
tar czf /backup/jama_uploads_$(date +%Y%m%d).tar.gz -C /data .
tar czf /backup/rosterchirp_uploads_$(date +%Y%m%d).tar.gz -C /data .
```
---
@@ -356,11 +356,11 @@ docker run --rm \
```bash
# Upgrade
./build.sh 1.1.0
# Set JAMA_VERSION=1.1.0 in .env
# Set rosterchirp_VERSION=1.1.0 in .env
docker compose up -d
# Rollback
# Set JAMA_VERSION=1.0.0 in .env
# Set rosterchirp_VERSION=1.0.0 in .env
docker compose up -d
```