2026-08-09 18:24:28 -06:00
2026-10-06 19:34:24 +02:00
2026-08-09 18:13:26 -06:00
2026-08-09 18:24:28 -06:00
2026-08-10 17:24:08 -06:00
2026-10-06 13:36:33 +00:00
2025-05-17 18:56:34 +04:00
2020-11-07 14:49:52 +01:00
2025-04-28 17:49:54 +04:00
2022-12-07 18:14:49 +01:00
2020-11-07 14:49:52 +01:00
2026-08-09 18:13:26 -06:00
2020-11-07 14:49:52 +01:00
2020-11-07 14:49:52 +01:00
2026-08-09 18:13:26 -06:00
2020-11-07 14:49:52 +01:00
2026-08-09 18:13:31 -06:00
2026-08-10 17:02:37 -06:00
2026-08-10 17:02:37 -06:00
2020-11-18 15:32:27 +01:00
2026-08-10 21:53:49 -06:00
2020-11-07 14:49:52 +01:00
2026-10-06 19:34:24 +02:00

Build Status

Akkounts

This app allows Kosmos/LDAP users to manage their accounts, including credentials, invites, donations, etc..

Development

Quick Start

The easiest way to get a working development setup is using Docker Compose like so:

  1. Make sure Docker Compose is installed and Docker is running (included in Docker Desktop)
  2. Run docker compose up --build and wait until all services have started (389ds might take an extra minute to be ready). This will take a while when running for the first time, so you might want to do something else in the meantime.

On the first start, the ldap-init service creates the 389ds back-end, and the web container then seeds the LDAP directory and the databases automatically. On every start, web also applies any pending database migrations.

After these steps, you should have a working Rails app with a handful of test users running on http://localhost:3000. Log in with username "admin" and password "admin is admin". All users listed on http://localhost:3000/admin/users have the password "user is user".

Rails app

Note: when using Docker Compose, prefix the following commands with docker-compose run web.

Installing dependencies:

bundle install
bun install

Migrating the local database (after schema changes):

bundle exec rails db:migrate

Running the dev server, and auto-building CSS files on change (automatic with Docker Compose):

bin/dev

Running the background workers (requires Redis) (automatic with Docker Compose):

bundle exec sidekiq -C config/sidekiq.yml

Running the test suite:

bundle exec rspec

Running the test suite with Docker Compose requires overriding the Rails environment:

docker-compose exec -e "RAILS_ENV=test" web rspec

Docker Compose

Services/containers are configured in docker-compose.yml.

You can run services selectively, for example if you want to run the Rails app and test suite on the host machine. Just add the service names of the containers you want to run to the up command, like so:

docker-compose up ldap redis

LDAP server

On first start, the ldap-init service creates the dirsrv back-end automatically, and the web container then seeds it with development entries. To do either step manually (for example, after changing the setup), run:

docker compose exec ldap dsconf localhost backend create --suffix="dc=kosmos,dc=org" --be-name="dev"
docker compose run --rm web bin/rails ldap:setup

The setup task will first delete any existing entries in the directory tree ("dc=kosmos,dc=org"), and then create our development entries.

Note that all 389ds data is stored in the 389ds-data volume. So if you want to start over with a fresh installation, delete both that volume as well as the container.

To reset the development environment completely, remove all volumes plus the generated database files and the first-run marker, then start over:

docker compose down -v
rm -f db/*.sqlite3 tmp/.setup-complete
docker compose up --build

Garage / remoteStorage

remoteStorage accounts use the garage S3-compatible object store. On first start, Garage automatically configures a single-node cluster and creates the remotestorage bucket together with a dev-key1 access key (secret 1234567890123456), so no manual setup is required.

If you want to run remoteStorage accounts locally, the garage container is started by default when using Docker Compose. To run just the remoteStorage stack:

  • docker compose up web redis garage liquor-cabinet

The S3 API is available at http://localhost:3900 (region garage). If you want to start over with a fresh storage, delete the garage-data volume as well as the container.

Accessing remoteStorage from another machine

remoteStorage clients force HTTPS for any host except localhost, and browsers block plain-HTTP requests to a LAN IP as mixed content. To connect to the dev remoteStorage from a browser on another machine (including production apps such as Inspektor), forward the ports over SSH and connect as localhost:

ssh -N -L 3000:localhost:3000 -L 4567:localhost:4567 <user>@<dev-host>

Then use <user>@localhost:3000 as the remoteStorage address in the client. WeFinger discovery and storage requests are served through the forwarded ports, so no TLS setup is needed.

Adding npm modules to use with Stimulus controllers

The following command downloads the specified npm module to vendor/javascript and adds an entry for it to config/importmap.rb.

bin/importmap pin bech32 --download

Solargraph

Solargraph is a Ruby language server, which you may use with your editor to add features like auto-completion and syntax validation. You can add inline documentation for bundled gems with this command:

bundle exec yard gems

Documentation

Rails

Front-end

Testing

LDAP / Auth

Asynchronous jobs/workers

Feature Flags

License

GNU Affero General Public License v3.0

S
Description
Signup and account management app for Kosmos/LDAP Accounts
https://accounts.kosmos.org Readme AGPL-3.0
8.1 MiB
1 Stars 8 Watchers 0 Forks
v0.11.1
Latest
2026-08-11 03:53:54 +00:00
Languages
Ruby 53.9%
HTML 42.4%
JavaScript 1.9%
CSS 1%
TypeScript 0.6%
Other 0.1%