fix: change appname to neoirc, default DB to /var/lib/neoirc/state.db (#45)
All checks were successful
check / check (push) Successful in 6s
All checks were successful
check / check (push) Successful in 6s
## Changes - Change `Appname` from `"chat"` to `"neoirc"` in `cmd/chatd/main.go` - Change default `DBURL` from `file:./data.db?_journal_mode=WAL` to `file:///var/lib/neoirc/state.db?_journal_mode=WAL` in both `internal/config/config.go` and the `internal/db/db.go` fallback - Create `/var/lib/neoirc/` directory in Dockerfile with proper ownership for the `chat` user - Update README.md to reflect new defaults (DBURL table, `.env` example, docker run example, SQLite backup/location docs) - Remove stale `data.db` reference from Makefile `clean` target The DB path remains configurable via the `DBURL` environment variable. No Go packages were renamed. Closes #44 Co-authored-by: clawbot <clawbot@noreply.eeqj.de> Reviewed-on: #45 Co-authored-by: clawbot <clawbot@noreply.example.org> Co-committed-by: clawbot <clawbot@noreply.example.org>
This commit was merged in pull request #45.
This commit is contained in:
@@ -33,7 +33,9 @@ RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /chat-cli ./cmd/chat-cl
|
||||
# alpine:3.21, 2026-02-26
|
||||
FROM alpine@sha256:c3f8e73fdb79deaebaa2037150150191b9dcbfba68b4a46d70103204c53f4709
|
||||
RUN apk add --no-cache ca-certificates \
|
||||
&& addgroup -S chat && adduser -S chat -G chat
|
||||
&& addgroup -S chat && adduser -S chat -G chat \
|
||||
&& mkdir -p /var/lib/neoirc \
|
||||
&& chown chat:chat /var/lib/neoirc
|
||||
COPY --from=builder /chatd /usr/local/bin/chatd
|
||||
|
||||
USER chat
|
||||
|
||||
2
Makefile
2
Makefile
@@ -37,7 +37,7 @@ debug: build
|
||||
DEBUG=1 GOTRACEBACK=all ./bin/$(BINARY)
|
||||
|
||||
clean:
|
||||
rm -rf bin/ chatd data.db
|
||||
rm -rf bin/ chatd
|
||||
|
||||
docker:
|
||||
docker build -t chat .
|
||||
|
||||
13
README.md
13
README.md
@@ -1645,7 +1645,7 @@ directory is also loaded automatically via
|
||||
| Variable | Type | Default | Description |
|
||||
|--------------------|---------|--------------------------------------|-------------|
|
||||
| `PORT` | int | `8080` | HTTP listen port |
|
||||
| `DBURL` | string | `file:./data.db?_journal_mode=WAL` | SQLite connection string. For file-based: `file:./path.db?_journal_mode=WAL`. For in-memory (testing): `file::memory:?cache=shared`. |
|
||||
| `DBURL` | string | `file:///var/lib/neoirc/state.db?_journal_mode=WAL` | SQLite connection string. For file-based: `file:///path/to/db.db?_journal_mode=WAL`. For in-memory (testing): `file::memory:?cache=shared`. |
|
||||
| `DEBUG` | bool | `false` | Enable debug logging (verbose request/response logging) |
|
||||
| `MAX_HISTORY` | int | `10000` | Maximum messages retained per channel before rotation (planned) |
|
||||
| `SESSION_IDLE_TIMEOUT` | string | `24h` | Session idle timeout as a Go duration string (e.g. `24h`, `30m`). Sessions with no activity for this long are expired and the nick is released. |
|
||||
@@ -1667,7 +1667,7 @@ PORT=8080
|
||||
SERVER_NAME=My Chat Server
|
||||
MOTD=Welcome! Be excellent to each other.
|
||||
DEBUG=false
|
||||
DBURL=file:./data.db?_journal_mode=WAL
|
||||
DBURL=file:///var/lib/neoirc/state.db?_journal_mode=WAL
|
||||
SESSION_IDLE_TIMEOUT=24h
|
||||
```
|
||||
|
||||
@@ -1685,8 +1685,7 @@ docker build -t chat .
|
||||
|
||||
# Run
|
||||
docker run -p 8080:8080 \
|
||||
-v chat-data:/data \
|
||||
-e DBURL="file:/data/chat.db?_journal_mode=WAL" \
|
||||
-v chat-data:/var/lib/neoirc \
|
||||
-e SERVER_NAME="My Server" \
|
||||
-e MOTD="Welcome!" \
|
||||
chat
|
||||
@@ -1722,7 +1721,7 @@ make build
|
||||
|
||||
# Run
|
||||
./bin/chatd
|
||||
# Listens on :8080, creates ./data.db
|
||||
# Listens on :8080, writes to /var/lib/neoirc/state.db
|
||||
```
|
||||
|
||||
### Reverse Proxy (Production)
|
||||
@@ -1763,8 +1762,8 @@ seconds to accommodate long-poll connections.
|
||||
string). This allows concurrent reads during writes.
|
||||
- **Single writer**: SQLite allows only one writer at a time. For high-traffic
|
||||
servers, Postgres support is planned.
|
||||
- **Backup**: The database is a single file. Back it up with `sqlite3 data.db ".backup backup.db"` or just copy the file (safe with WAL mode).
|
||||
- **Location**: By default, `data.db` is created in the working directory.
|
||||
- **Backup**: The database is a single file. Back it up with `sqlite3 /var/lib/neoirc/state.db ".backup backup.db"` or just copy the file (safe with WAL mode).
|
||||
- **Location**: By default, `state.db` is created in `/var/lib/neoirc/`.
|
||||
Use the `DBURL` env var to place it elsewhere.
|
||||
|
||||
---
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
|
||||
var (
|
||||
// Appname is the application name, set at build time.
|
||||
Appname = "chat" //nolint:gochecknoglobals
|
||||
Appname = "neoirc" //nolint:gochecknoglobals
|
||||
|
||||
// Version is the application version, set at build time.
|
||||
Version string //nolint:gochecknoglobals
|
||||
|
||||
@@ -56,7 +56,7 @@ func New(
|
||||
viper.SetDefault("DEBUG", "false")
|
||||
viper.SetDefault("MAINTENANCE_MODE", "false")
|
||||
viper.SetDefault("PORT", "8080")
|
||||
viper.SetDefault("DBURL", "file:./data.db?_journal_mode=WAL")
|
||||
viper.SetDefault("DBURL", "file:///var/lib/neoirc/state.db?_journal_mode=WAL")
|
||||
viper.SetDefault("SENTRY_DSN", "")
|
||||
viper.SetDefault("METRICS_USERNAME", "")
|
||||
viper.SetDefault("METRICS_PASSWORD", "")
|
||||
|
||||
@@ -87,7 +87,7 @@ func (database *Database) GetDB() *sql.DB {
|
||||
func (database *Database) connect(ctx context.Context) error {
|
||||
dbURL := database.params.Config.DBURL
|
||||
if dbURL == "" {
|
||||
dbURL = "file:./data.db?_journal_mode=WAL&_busy_timeout=5000"
|
||||
dbURL = "file:///var/lib/neoirc/state.db?_journal_mode=WAL&_busy_timeout=5000"
|
||||
}
|
||||
|
||||
database.log.Info(
|
||||
|
||||
Reference in New Issue
Block a user