chore(ci): migrate to Gitea Actions
This commit is contained in:
@@ -113,15 +113,15 @@ docker compose exec nidus nidusctl addressbook create alice contacts
|
||||
This project uses year.month.hotfix versioning (e.g. `2026.8.0`, `2026.8.1`)
|
||||
rather than semantic versioning. Pushing a version tag (e.g. `2026.8.0`) or
|
||||
publishing a release triggers
|
||||
[`.github/workflows/docker-release.yml`](.github/workflows/docker-release.yml),
|
||||
[`.gitea/workflows/docker-release.yml`](.gitea/workflows/docker-release.yml),
|
||||
which builds and publishes a multi-arch (`linux/amd64` + `linux/arm64`)
|
||||
image to `git.arnef.de/arnef/nidus`, tagged with the version, `<year>.<month>`,
|
||||
image to `git.arnef.de/arnef/nidus`, tagged with the version, `<major>.<minor>`,
|
||||
`latest`, and the short commit SHA. It authenticates via the
|
||||
`REGISTRY_USERNAME`/`REGISTRY_PASSWORD` repository secrets.
|
||||
|
||||
A minimal standalone `docker-compose.yml` that pulls this image instead of
|
||||
building from a checkout — just fetch `config.example.yaml`, copy it to
|
||||
`config.yaml`, and adjust it to your needs:
|
||||
building from a checkout — configuration is done entirely via environment
|
||||
variables (no `config.yaml` to copy over):
|
||||
|
||||
```yaml
|
||||
services:
|
||||
@@ -182,24 +182,25 @@ grantee's own home-set alongside their own calendars — no separate account
|
||||
or extra client configuration needed.
|
||||
|
||||
Sharing grants are stored in a small SQLite database at
|
||||
`<data_dir>/nidus.db` (not in `config.yaml`) and can be managed either via
|
||||
`<data_dir>/nidus.db` (not in any config file) and can be managed either via
|
||||
the `nidusctl` CLI or the web UI's dashboard (see below):
|
||||
|
||||
```bash
|
||||
# Give bob write access to alice's "work" calendar
|
||||
go run ./tools/nidusctl -config config.yaml calendar share alice work bob write
|
||||
go run ./tools/nidusctl calendar share alice work bob write
|
||||
|
||||
# List everyone alice's "work" calendar is shared with
|
||||
go run ./tools/nidusctl -config config.yaml calendar shares alice work
|
||||
go run ./tools/nidusctl calendar shares alice work
|
||||
|
||||
# Revoke access
|
||||
go run ./tools/nidusctl -config config.yaml calendar unshare alice work bob
|
||||
go run ./tools/nidusctl calendar unshare alice work bob
|
||||
|
||||
# Address books work the same way, using "addressbook" instead of "calendar"
|
||||
go run ./tools/nidusctl -config config.yaml addressbook share alice contacts bob read
|
||||
go run ./tools/nidusctl addressbook share alice contacts bob read
|
||||
```
|
||||
|
||||
Or via `make`: `make nidusctl ARGS="calendar share alice work bob write"`.
|
||||
(Both the server and `nidusctl` resolve the data directory from the
|
||||
`NIDUS_DATA_DIR` environment variable.)
|
||||
|
||||
A calendar that `alice` shares with `bob` appears in bob's calendar
|
||||
home-set as `/cal/home/alice~work/` (i.e. `<owner>~<calendar name>`) — the
|
||||
@@ -225,18 +226,18 @@ mobile browsers:
|
||||
place via [htmx](https://htmx.org/) without a full page reload.
|
||||
- **Files** (`/web/files/`) — a browser for the same storage the WebDAV
|
||||
endpoint (`/files/`) serves: navigate folders, create new folders,
|
||||
upload files/folders (including via drag & drop), download, and delete
|
||||
files or folders. Files open **inline** in the browser when the type
|
||||
supports it (video, audio, images, PDF, …) instead of always forcing a
|
||||
download; a separate "Download" action is always available to force a
|
||||
save-as.
|
||||
upload files/folders (including via drag & drop), download, sort by name or
|
||||
date, and delete files or folders. Files open **inline** in the browser when
|
||||
the type supports it (video, audio, images, PDF, …) instead of always
|
||||
forcing a download; a separate "Download" action is always available to
|
||||
force a save-as.
|
||||
- **Contacts** (`/web/contacts/`) — browse address books, create/edit/
|
||||
delete contacts (name, organization, birthday, phone numbers, emails,
|
||||
addresses, photo), and import/export vCards (`.vcf`).
|
||||
delete contacts (first/last name, organization, birthday, phone numbers,
|
||||
emails, address, photo), and import/export vCards (`.vcf`).
|
||||
- **Calendar** (`/web/calendar`) — month and week views across all your
|
||||
own and shared calendars (including ICS/webcal subscriptions and the
|
||||
Birthdays calendar), create/edit/delete events, per-calendar colors,
|
||||
and import/export `.ics` files.
|
||||
Birthdays calendar), with a detail view for each event; create/edit/delete
|
||||
events, per-calendar colors, and import/export `.ics` files.
|
||||
- **Account** (`/web/account`) — update your display name/email and
|
||||
change your password.
|
||||
- **Logout** (`/web/logout`).
|
||||
@@ -287,7 +288,8 @@ Traefik) to terminate TLS and forward requests to the server.
|
||||
## Managing users
|
||||
|
||||
All user/calendar/address-book management is done with `nidusctl` or the
|
||||
web UI (`/web/`). Nothing is stored in `config.yaml` anymore.
|
||||
web UI (`/web/`). User and resource data lives in `nidus.db`, not in a
|
||||
config file.
|
||||
|
||||
```bash
|
||||
# Users
|
||||
@@ -314,15 +316,10 @@ nidusctl addressbook unshare <owner> <book> <user>
|
||||
nidusctl addressbook shares <owner> <book>
|
||||
```
|
||||
|
||||
Password are prompted for interactively (masked, double-entry) when
|
||||
Passwords are prompted for interactively (masked, double-entry) when
|
||||
`--password` is omitted. The web UI (`/web/`) also lets a logged-in user
|
||||
create/delete their own calendars, address books, and ICS/webcal subscriptions
|
||||
from the dashboard.
|
||||
|
||||
> **Upgrading from an older version?** The `users:` section in
|
||||
> `config.yaml` is no longer read. Recreate your users with
|
||||
> `nidusctl user create` (and their calendars/address books) — there is no
|
||||
> automatic migration from the old config format.
|
||||
create/delete their own calendars, address books, and ICS/webcal
|
||||
subscriptions from the dashboard.
|
||||
|
||||
---
|
||||
|
||||
@@ -333,19 +330,22 @@ nidus/
|
||||
├── cmd/server/ # main entrypoint
|
||||
├── internal/
|
||||
│ ├── auth/ # HTTP Basic Auth middleware (DAV endpoints)
|
||||
│ ├── caldav/ # CalDAV backend
|
||||
│ ├── birthdays/ # compute a virtual Birthday calendar from contacts
|
||||
│ ├── caldav/ # CalDAV backend (incl. ICS subscriptions & Birthdays)
|
||||
│ ├── carddav/ # CardDAV backend
|
||||
│ ├── config/ # YAML config loader
|
||||
│ ├── config/ # configuration loader (environment variables)
|
||||
│ ├── db/ # SQLite store (users, calendars, shares, sessions)
|
||||
│ ├── icalfix/ # iCalendar (RFC 5545) parsing/fixing helpers
|
||||
│ ├── icssub/ # remote ICS/webcal subscription fetcher
|
||||
│ ├── store/ # filesystem storage layer
|
||||
│ ├── web/ # web UI (templ, dashboard, share mgmt, sessions)
|
||||
│ │ └── templates/ # templ templates (+ generated *_templ.go)
|
||||
│ └── webdav/ # WebDAV file handler
|
||||
├── internal/web/ # web UI (templ, dashboard, share mgmt, sessions)
|
||||
│ └── templates/ # templ templates (+ generated *_templ.go)
|
||||
├── cmd/nidusctl/ # admin CLI (users, calendars, address books, sharing)
|
||||
├── tools/nidusctl/ # admin CLI (users, calendars, address books, sharing)
|
||||
├── tools/migrate/ # data directory migration tool
|
||||
├── tools/hashpwd/ # standalone bcrypt password generator
|
||||
├── web/ # front-end assets: Tailwind input/config, static/
|
||||
│ └── static/ # compiled app.css + htmx.min.js (embedded into the binary)
|
||||
├── tools/migrate/ # data directory migration tool
|
||||
├── config.example.yaml # sample configuration (copy to config.yaml)
|
||||
├── Dockerfile
|
||||
├── docker-compose.yaml
|
||||
└── Makefile
|
||||
@@ -370,4 +370,3 @@ the help of AI coding assistants (e.g. GitHub Copilot). Changes are
|
||||
reviewed and tested where practical, but not every part of the codebase
|
||||
has been fully reviewed yet — use accordingly, especially before relying
|
||||
on this in security-sensitive environments.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user