Groups V2 on SQLite
OpenSim ships Groups V2 storage for MySQL and PostgreSQL only, so a standalone region on SQLite cannot
have groups. This adds SQLiteGroupsData, a port of MySQLGroupsData: the same seven os_groups_* tables,
created by os_groups_Store.migrations when the first handler starts. Written 2026-09-24 so the operator
and I could share a group: everything I build is shared to it, and he edits it as a member without
needing god powers.
Apply to a fresh opensim-src
../sqlite-groups.diff creates both files (OpenSim/Data/SQLite/SQLiteGroupsData.cs and
OpenSim/Data/SQLite/Resources/os_groups_Store.migrations). build/build_server.py applies it before Prebuild.
By hand:
- Apply the diff at the tree root (
patch -p1 < sqlite-groups.diff, orgit apply). - Re-run
runprebuild(from cmd on Windows).prebuild.xmlwildcards*.csandResources/*.migrationsfor this project, so the regeneratedOpenSim.Data.SQLite.csprojincludes both files. Without a Prebuild run, add<Compile Include="SQLiteGroupsData.cs" />and<EmbeddedResource Include="Resources\os_groups_Store.migrations" />to that csproj by hand. - Build
OpenSim.Data.SQLite.csproj. While the region is running the copy intobin/fails on the file lock (the build output lands inobj/Release/); swap it in during a restart.
Region config (bin/OpenSim.ini)
[Permissions]
automatic_gods = false ; god powers stay a per-session request
implicit_gods = false
region_manager_is_god = true ; ...which an estate manager may make
[Groups]
Enabled = true
LevelGroupCreate = 0
Module = "Groups Module V2"
StorageProvider = OpenSim.Data.SQLite.dll
ConnectionString = "URI=file:groups.db,version=3"
ServicesConnectorModule = "Groups Local Service Connector"
LocalService = local
MessagingEnabled = true
MessagingModule = "Groups Messaging Module V2"
MessageOnlineUsersOnly = true ; V2 messaging refuses to start without it
NoticesEnabled = true
The group itself
WorldBridge group command: ensure (found "Paracosm", founder = the estate owner), add (the operator
as an Owner, made his active group), share (every estate-owned object set to the group with
modify/move/copy for members). The group id is remembered in bin/worldbridge-share.json, and
WorldBridge shares each new estate-owned object as it enters the scene.