Reticulum Manual 90/128
Git Configuration Parameters
Repositories created through rngit store metadata in Git configuration:
• repository.rngit.type - Either fork or mirror
• repository.rngit.upstream.source - The source URL used during creation
• repository.rngit.upstream.sync - Unix timestamp of last successful sync for mirrors
These parameters are used by the sync system and can be queried using standard Git commands:
$ git config --get repository.rngit.type
mirror
$ git config --get repository.rngit.upstream.source
https://github.com/user/upstream
$ git config --get repository.rngit.upstream.sync
1716230400
Repository Structure
The rngit node organizes repositories into groups. Each group is a directory containing bare Git repositories. The repository path format is group_name/repo_name. For example, a repository at /var/git/public/myrepo would be accessible as public/myrepo via the URL rns://DESTINATION_HASH/public/myrepo.
Configuration
The rngit node configuration file is located at ~/.rngit/config (or /etc/rngit/config for system-wide installations). The default configuration includes:
• Repository group paths defining where to find bare repositories
• Access permissions for groups and individual repositories
• Announce intervals for network visibility
• Optional statistics recording for repository activity
Permissions
The rngit permission system provides fine-grained access control at multiple levels: group-level, repository-level, and document-level. Permissions can be statically configured in files or dynamically generated via executable scripts.
Access permissions can be configured at the group level in the config file or per-group .allowed files, or per-repository .allowed files. The s (stats) permission allows viewing repository activity statistics, including views, fetches and pushes over time. To enable statistics recording, set record_stats = yes in the [rngit] section of the configuration file. You can also exclude specific identities from statistics by adding their hashes to stats_ignore_identities.
By default, no permissions are granted for anything! You will have to enable the permissions you require to be able to actually do something with rngit.
Permissions can be modified by editing the rngit config file, individual .allowed files on disk, or remotely using the rngit perms command.
Permission Types
The following permissions are supported:
• r (read) - Clone, fetch, and view repositories and work documents
• w (write) - Push changes and manage work documents
• rw (read/write) - Combined read and write access
• c (create) - Create, fork or mirror new repositories within a group
• s (stats) - View repository activity statistics
• rel (release) - Create and manage releases
• i (interact) - Comment on and interact with work documents
• p (propose) - Propose new work documents (without full write access)
• adm (admin) - Full access
Permission targets can be:
• all or a - Everyone
• none or n - Nobody
• A specific Reticulum identity hash
Permission Hierarchy
Permissions are resolved in the following hierarchy:
1. Repository-level permissions - Checked first, if none exists group permissions are checked
2. Group-level permissions - Used as fallback if no repository-level permissions are set
3. Admin override - Finally, potential admin rights are checked
For work documents, work document specific permissions are always checked first, and work documents have additional specific checks such as modifications only being possible by the document author.
Configuration Methods
Group-Level Configuration
Group permissions can be configured in the [access] section of the main config file:
[access]
public = r:all, w:9710b86ba12c42d1d8f30f74fe509286
internal = rw:9710b86ba12c42d1d8f30f74fe509286
collaborative = r:all, i:all, p:all, w:9710b86ba12c42d1d8f30f74fe509286