<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Strk</id>
	<title>OSGeo - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Strk"/>
	<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/wiki/Special:Contributions/Strk"/>
	<updated>2026-07-05T13:32:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:LDAP&amp;diff=136190</id>
		<title>SAC:LDAP</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:LDAP&amp;diff=136190"/>
		<updated>2026-07-05T08:00:38Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* User registration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OSGeo endevours to offer a &amp;quot;single signon&amp;quot; for OSGeo services. User help is available in [[Osgeo Userid Help]].&lt;br /&gt;
&lt;br /&gt;
It is currently used for [[Subversion]], [[Trac Instances|Trac]], [[SAC_Service_Status#Web|Drupal]], [[SAC_Service_Status#QGIS|QGIS services]] (hub.qgis.org and plugins.qgis.org), www.osgeo.org, [[SAC:Gitea|Gitea]], [[SAC_Service_Status#Nextcloud_nextcloud.osgeo.org|Nextcloud]], [[SAC:MatrixSynapse|Matrix-Synapse]] and shell access (opt-in).  &lt;br /&gt;
&lt;br /&gt;
A staged migration to internal LDAP for [[SAC_Service_Status#Wiki|mediawiki]] was initiated in 2021. Other [[SAC_Service_Status|services]] may be possible in the future.  &lt;br /&gt;
&lt;br /&gt;
LDAP management is the responsibility of [[SAC]] (the System Administration Committee).&lt;br /&gt;
&lt;br /&gt;
= LDAP Server (OpenLDAP) =&lt;br /&gt;
&lt;br /&gt;
The userid database is kept in LDAP on ldap.osgeo.org ([[SAC_Service_Status#Secure|secure vm]]).&lt;br /&gt;
It is served by OpenLDAP ([http://www.openldap.org/doc/admin/ OpenLDAP Admin Guide]).&lt;br /&gt;
&lt;br /&gt;
The ldap daemon can manipulated as 'root' user with,&lt;br /&gt;
 $ service slapd [start|stop|restart]&lt;br /&gt;
&lt;br /&gt;
We have moved to OLC:&lt;br /&gt;
&lt;br /&gt;
http://www.zytrax.com/books/ldap/ch6/slapd-config.html#intro&lt;br /&gt;
&lt;br /&gt;
So config file is in:&lt;br /&gt;
 /etc/ldap/slapd.d/cn-config # should be modified with ldapmodify&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IP access filter is set by via  ufw firewall configs store in ansible:&lt;br /&gt;
refer to [https://gitea.osgeo.org/sac/ansible-deployment/src/branch/master/deployment/roles/osgeo9/tasks/host-setup.yml#L180 OSGeo9 host for details]&lt;br /&gt;
&lt;br /&gt;
== LDAP structure ==&lt;br /&gt;
&lt;br /&gt;
Currently ldap structure is pretty basic.  The purpose for keeping this structure simple is to allow for a more complex structure to be evolved as ldap becomes increasingly integrated into the full osgeo systems structure.&lt;br /&gt;
&lt;br /&gt;
*dc=osgeo,dc=org&lt;br /&gt;
**cn=Manager&lt;br /&gt;
**ou=people &lt;br /&gt;
***Separate entity for each user&lt;br /&gt;
*:uid=login,ou=people,dc=osgeo,dc=org&lt;br /&gt;
*:objectClass=inetOrgPerson&lt;br /&gt;
*:cn=firstName lastName&lt;br /&gt;
*:sn=lastName&lt;br /&gt;
*:uid=login&lt;br /&gt;
*:mail=email@address&lt;br /&gt;
*:userPassword={md5}YPTyViiMKhiuWKEmFUOKLA==&lt;br /&gt;
*:Also contains posixAccount and shadowAccount fields if this account is login enabled.&lt;br /&gt;
**ou=projects,dc=osgeo,dc=org&lt;br /&gt;
*:objectClass=organizationalUnit&lt;br /&gt;
*:ou=project&lt;br /&gt;
*:description=separate entity for each osgeo project with list of members&lt;br /&gt;
***Separate entity for each project group&lt;br /&gt;
*:cn=admin,ou=projects,dc=osgeo,dc=org&lt;br /&gt;
*:objectClass=groupOfNames&lt;br /&gt;
*:cn=admin&lt;br /&gt;
*:description=osgeo sysadmin group&lt;br /&gt;
**ou=svn&lt;br /&gt;
*:objectClass=organizationalUnit&lt;br /&gt;
*:ou=svn&lt;br /&gt;
*:description=separate entity for each repository with list of members with commit rights&lt;br /&gt;
***separate entity for each svn group (for example FDO)&lt;br /&gt;
*:cn=fdo,ou=svn,dc=osgeo,dc=org&lt;br /&gt;
*:objectClass=groupOfNames&lt;br /&gt;
*:cn=fdo&lt;br /&gt;
*:member= dn of member&lt;br /&gt;
**ou=Shell (parent for &amp;quot;login&amp;quot; groups)&lt;br /&gt;
*:description=NextUID:nnnnn (the next unix uidNumber value to assign)&lt;br /&gt;
***cn=telascience,ou=Shell,dc=osgeo,dc=org (list of all userids with telascience login access)&lt;br /&gt;
*:uniqueMember=dn of member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example ldif file'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   version: 1&lt;br /&gt;
&lt;br /&gt;
   dn: dc=osgeo,dc=org&lt;br /&gt;
   objectClass: dcObject&lt;br /&gt;
   objectClass: organization&lt;br /&gt;
   description: OSGeo ldap dit&lt;br /&gt;
   o: OSGeo&lt;br /&gt;
   dc: osgeo&lt;br /&gt;
&lt;br /&gt;
   dn: cn=Manager,dc=osgeo,dc=org&lt;br /&gt;
   objectClass: organizationalRole&lt;br /&gt;
   cn: Manager&lt;br /&gt;
&lt;br /&gt;
   dn: ou=people,dc=osgeo,dc=org&lt;br /&gt;
   ou: people&lt;br /&gt;
   description: all users of osgeo&lt;br /&gt;
   objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
   dn: uid=jsmith,ou=people,dc=osgeo,dc=org&lt;br /&gt;
   objectClass: inetOrgPerson&lt;br /&gt;
   uid: jsmith&lt;br /&gt;
   cn: Jon Smith&lt;br /&gt;
   sn: Smith &lt;br /&gt;
   givenName: Jon&lt;br /&gt;
   mail: jsmith@somewhere.com&lt;br /&gt;
   userPassword: {md5}5Or4zfzGqo3jh/6iIUgKcA==&lt;br /&gt;
&lt;br /&gt;
   dn: uid=jbrown,ou=people,dc=osgeo,dc=org&lt;br /&gt;
   objectClass: inetOrgPerson&lt;br /&gt;
   uid: jbrown&lt;br /&gt;
   cn: Jane Brown&lt;br /&gt;
   sn: Brown&lt;br /&gt;
   givenName: Jane &lt;br /&gt;
   mail: jbrown@someotherplace.com&lt;br /&gt;
   userPassword: {md5}1iWhTyvkK2m4Uuar+Dp/IA==&lt;br /&gt;
&lt;br /&gt;
   dn: ou=projects,dc=osgeo,dc=org&lt;br /&gt;
   ou: projects&lt;br /&gt;
   description: separate entity for each osgeo project with list of members&lt;br /&gt;
   objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
   dn: cn=admin,ou=projects,dc=osgeo,dc=org&lt;br /&gt;
   cn: admin&lt;br /&gt;
   description: osgeo sysadmin group&lt;br /&gt;
   objectClass: groupOfNames&lt;br /&gt;
   member: uid=jbrown,ou=people,dc=osgeo,dc=org&lt;br /&gt;
   member: uid=jsmith,ou=people,dc=osgeo,dc=org&lt;br /&gt;
&lt;br /&gt;
   dn: ou=svn,dc=osgeo,dc=org&lt;br /&gt;
   ou: svn&lt;br /&gt;
   description: separate entity for for each repository.list of members with commit rights&lt;br /&gt;
   objectClass: organizationalUnit&lt;br /&gt;
&lt;br /&gt;
   dn: cn=fdo,ou=svn,dc=osgeo,dc=org&lt;br /&gt;
   objectClass: groupOfNames&lt;br /&gt;
   cn: fdo&lt;br /&gt;
   member: uid=jsmith,ou=people,dc=osgeo,dc=org&lt;br /&gt;
   member: uid=jbrown,ou=people,dc=osgeo,dc=org&lt;br /&gt;
&lt;br /&gt;
   dn: cn=gdal,ou=svn,dc=osgeo,dc=org&lt;br /&gt;
   cn: gdal&lt;br /&gt;
   objectClass: groupOfNames&lt;br /&gt;
   objectClass: top&lt;br /&gt;
   member: uid=jbrown,ou=people,dc=osgeo,dc=org&lt;br /&gt;
   member: uid=jsmith,ou=people,dc=osgeo,dc=org&lt;br /&gt;
&lt;br /&gt;
   dn: cn=mapbender,ou=svn,dc=osgeo,dc=org&lt;br /&gt;
   objectClass: groupOfNames&lt;br /&gt;
   cn: mapbender&lt;br /&gt;
   member: uid=jsmith,ou=people,dc=osgeo,dc=org&lt;br /&gt;
&lt;br /&gt;
   dn: cn=mapguide,ou=svn,dc=osgeo,dc=org&lt;br /&gt;
   objectClass: groupOfNames&lt;br /&gt;
   cn: mapguide&lt;br /&gt;
   member: uid=jbrown,ou=people,dc=osgeo,dc=org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= LDAP Clients =&lt;br /&gt;
&lt;br /&gt;
== Web interface ==&lt;br /&gt;
&lt;br /&gt;
The LDAP web admin tools were initially written by Frank Warmerdam and subsequently improved by Sandro Santilli.&lt;br /&gt;
They are written in python and can currently be found in /usr/lib/cgi-bin on the &amp;quot;old-web&amp;quot; container on OSGeo7 (ie. id.osgeo.org).&lt;br /&gt;
From may 12, 2016, cgi-bin scripts are managed with a local git repository (&amp;lt;code&amp;gt;/usr/lib/cgi-bin/.git&amp;lt;/code&amp;gt;). A clone of the git repository is published as a [https://git.osgeo.org/gitea/sac/web-cgi-bin private repository] (you will get a 404 unless you are part of the SAC team) on the [[SAC:Gitea]] service.&lt;br /&gt;
 &lt;br /&gt;
The scripts read the LDAP manager password from a credentials file that will need to be updated anytime the master LDAP manager password is changed.&lt;br /&gt;
&lt;br /&gt;
Some public notes on OSGeo userids available at:&lt;br /&gt;
&lt;br /&gt;
  http://www.osgeo.org/osgeo_userid&lt;br /&gt;
&lt;br /&gt;
=== User registration ===&lt;br /&gt;
&lt;br /&gt;
The main entry point for OSGeo users is the registration form:&lt;br /&gt;
&lt;br /&gt;
 https://id.osgeo.org/ldap/create&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': as of June 2016 the public user registration form may require entering a &amp;quot;mantra&amp;quot; (a pseudo-secret passphrase).&lt;br /&gt;
&lt;br /&gt;
Already registered trusted users can find out what the mantra is and how to share on https://gitea.osgeo.org/sac/userid-mantra/wiki (requires login and access grant, otherwise the page will appear as 404).&lt;br /&gt;
&lt;br /&gt;
The procedure to update the mantra is documented in [[SAC:Updating_Mantra]]&lt;br /&gt;
&lt;br /&gt;
=== User edit ===&lt;br /&gt;
&lt;br /&gt;
To edit an individual userid use /ldap/edit (ldap_user_edit.py). If you add ?userid=''osgeo_userid'' you can edit someone elses ldap entry as long as you are in the admins group. &lt;br /&gt;
&lt;br /&gt;
  https://id.osgeo.org/ldap/edit&lt;br /&gt;
  https://id.osgeo.org/ldap/edit?userid=osgeotest123&lt;br /&gt;
&lt;br /&gt;
=== Password reset ===&lt;br /&gt;
&lt;br /&gt;
Users can request a password reset using this form:&lt;br /&gt;
&lt;br /&gt;
  https://id.osgeo.org/ldap/reset&lt;br /&gt;
&lt;br /&gt;
=== Users lookup ===&lt;br /&gt;
&lt;br /&gt;
Administrators can login to this special ldap search tool, and will see email address, and will have a link to edit the LDAP entries.  You need to be in the cn=admin,ou=projects listing. &lt;br /&gt;
&lt;br /&gt;
  https://id.osgeo.org/ldap/admin/search&lt;br /&gt;
&lt;br /&gt;
There is also a non-admin version of the search, but will not show email nor links to edit:&lt;br /&gt;
&lt;br /&gt;
  https://id.osgeo.org/ldap/search&lt;br /&gt;
&lt;br /&gt;
=== Groups management ===&lt;br /&gt;
&lt;br /&gt;
SVN and other groups can be administered with the group editor.  You need to either be in the group being viewed/modified or in the cn=admin,ou=projects group in order to edit a group. &lt;br /&gt;
&lt;br /&gt;
Edit GDAL commit list:&lt;br /&gt;
  https://id.osgeo.org/ldap/group?group=gdal&lt;br /&gt;
&lt;br /&gt;
Edit Admins list:&lt;br /&gt;
  https://id.osgeo.org/ldap/group?group=admin&amp;amp;ou=projects&lt;br /&gt;
&lt;br /&gt;
=== Shell group management ===&lt;br /&gt;
&lt;br /&gt;
To edit the list of people who have shell access to the various projects servers, including the download server use the following url.  You have to be in the group already, or in the Admins group in order to add and remove people.  Adding someone will add the required posixAccount and related attributes to the users LDAP entry. &lt;br /&gt;
&lt;br /&gt;
  https://id.osgeo.org/ldap/shell&lt;br /&gt;
&lt;br /&gt;
The ldap_shell.py script can also operate on other groups used for shell access using the group attribute.  Currently the only other group is the sac group used for shell access on the core services VMs at OSU OSL.&lt;br /&gt;
&lt;br /&gt;
  https://id.osgeo.org/ldap/shell?group=sac&lt;br /&gt;
&lt;br /&gt;
== Command line interface ==&lt;br /&gt;
&lt;br /&gt;
The commandline interface can be used by any of the OSGeo machines but not from outside the network.&lt;br /&gt;
The tools are from the ''ldap-utils'' debian package. &lt;br /&gt;
&lt;br /&gt;
All ``ldap-utils`` commands will use systemwide or user-specific files for default configuration so things like LDAP Base (-b dc=osgeo,dc=org) and LDAP URI (-H ldaps://ldap.osgeo.org) need not be specified on each commandline from properly configured machines (grep URI /etc/ldap/ldap.conf; grep BASE /etc/ldap/ldap.conf).&lt;br /&gt;
&lt;br /&gt;
=== Editing the LDAP database users and groups ===&lt;br /&gt;
&lt;br /&gt;
Editing LDAP database requires an admin password or root access to secure container. The -W switch asks for a password prompt (known by [[SAC:Primary Administrators]]).&lt;br /&gt;
&lt;br /&gt;
Loading an ldif file into an ldap directory:&lt;br /&gt;
&lt;br /&gt;
   $ ldapadd -a -W -x -D &amp;quot;cn=Manager,dc=osgeo,dc=org&amp;quot; -f fileName.ldif&lt;br /&gt;
&lt;br /&gt;
Deleting an account (by uid) from the database through &amp;quot;ldapdelete&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
   $ uid=&amp;quot;account-to-be-deleted&amp;quot; ldapdelete -W -D cn=Manager,dc=osgeo,dc=org -x &amp;quot;uid=${uid},ou=People,dc=osgeo,dc=org&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Deleting an account (by uid) from the database through an ad-hoc script from the &amp;quot;''www.osgeo.org''&amp;quot; machine:&lt;br /&gt;
   $ /osgeo/tools/ldap/ldap_delete_user &amp;quot;account-to-be-deleted&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Resetting a user password:&lt;br /&gt;
&lt;br /&gt;
   $ uid=&amp;quot;account-to-be-reset&amp;quot; ldappasswd -S -W -D cn=Manager,dc=osgeo,dc=org -x &amp;quot;uid=${uid},ou=People,dc=osgeo,dc=org&amp;quot;&lt;br /&gt;
   # Or from the &amp;quot;www.osgeo.org&amp;quot; machine, run:&lt;br /&gt;
   $ /osgeo/tools/ldap/ldap_reset_user_password &amp;quot;account-to-be-reset&amp;quot;&lt;br /&gt;
   # A new random password will be sent to the user. Asks for confirmation.&lt;br /&gt;
&lt;br /&gt;
Modifying the email of a user:&lt;br /&gt;
&lt;br /&gt;
Create a file ''change_mail.ldif'' with the following contents&lt;br /&gt;
&lt;br /&gt;
   dn: uid=&amp;lt;osgeoid&amp;gt;,ou=People,dc=example,dc=com&lt;br /&gt;
   changetype: modify&lt;br /&gt;
   replace: mail&lt;br /&gt;
   mail: newmail@newmail.new&lt;br /&gt;
&lt;br /&gt;
Execute the command&lt;br /&gt;
&lt;br /&gt;
   $ ldapmodify -v -W -D cn=Manager,dc=osgeo,dc=org -f /path/to/change_mail.ldif&lt;br /&gt;
   # Remove the created `.ldif`&lt;br /&gt;
   rm /path/to/change_mail.ldif&lt;br /&gt;
&lt;br /&gt;
=== Editing the LDAP database config ===&lt;br /&gt;
&lt;br /&gt;
Increasing default page limit -&lt;br /&gt;
&lt;br /&gt;
 $ ssh root@osgeo9-secure&lt;br /&gt;
 $ ldapmodify -H ldapi:/// -Y EXTERNAL -f modify_max_page_limit.ldif&lt;br /&gt;
 $ systemctl restart slapd&lt;br /&gt;
 $ ldapsearch  -H ldapi:/// -Y EXTERNAL -b cn=config | grep olcSizeLimit #to confirm change&lt;br /&gt;
&lt;br /&gt;
Where modify_max_page_limit.ldif looks something like&lt;br /&gt;
&lt;br /&gt;
   dn: olcDatabase={-1}frontend,cn=config&lt;br /&gt;
   changetype: modify&lt;br /&gt;
   replace: olcSizeLimit&lt;br /&gt;
   olcSizeLimit: 500&lt;br /&gt;
&lt;br /&gt;
=== Querying the LDAP database ===&lt;br /&gt;
&lt;br /&gt;
The ldapsearch command is used to query a LDAP database.&lt;br /&gt;
&lt;br /&gt;
This command dumps the first 500 entries of the ldap database.  Note that secure-dev on osgeo4 has limit set to 40000 for easier pull by admins. refer to modify section for instructions how to set the limits.&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -x&lt;br /&gt;
&lt;br /&gt;
Refine your search based on the LDAP structure listed above.&lt;br /&gt;
&lt;br /&gt;
Example: list all SVN groups (override BASE to limit the ou to svn, then search for objects with the right objectClass).&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -s one -b ou=svn,dc=osgeo,dc=org -x &amp;quot;objectClass=groupOfNames&amp;quot; | grep ^cn&lt;br /&gt;
&lt;br /&gt;
Example: list all entries created after April 1st 2016:&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -x &amp;quot;createTimestamp&amp;gt;=20160401100000Z&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: list all entries created in 2019:&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -x '(&amp;amp;(createTimestamp&amp;gt;=20190101000000Z)(!(createTimestamp&amp;gt;=20200101000000Z)))'&lt;br /&gt;
&lt;br /&gt;
The fields to be shown in the output can be specified as additional parameters, like:&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -x &amp;quot;uid=strk&amp;quot; createtimestamp modifytimestamp&lt;br /&gt;
&lt;br /&gt;
Find the email addresses of all members in the GRASS GIS core group:&lt;br /&gt;
  $ ldapsearch -x '(|'`ldapsearch -x 'cn=grass' | grep ^member | sed 's/.* uid=\([^,]*\),.*/(uid=\1)/' | tr -d '\n'`')' | grep ^mail | sed 's/^mail: //'&lt;br /&gt;
&lt;br /&gt;
Find the email addresses of all members in the GRASS GIS core group and store as CSV file (ID, name, email):&lt;br /&gt;
  $ ldapsearch -x '(|'`ldapsearch -x 'cn=grass' | grep ^member | sed 's/.* uid=\([^,]*\),.*/(uid=\1)/' | tr -d '\n'`')' | \&lt;br /&gt;
               grep '^u: /\n|/'| sed 's/^cn: //' | sed 's/^sn: //' | sed 's/^mail: //' | sed 's/^cn:: //' | sed 's/^sn:: //' \&lt;br /&gt;
               | tr '\n' ',' | tr '|' '\n' | sed 's+,,$++g'&lt;br /&gt;
&lt;br /&gt;
If you are on a server that is whitelisted to query osgeo, but the ldap.conf is not setup, you migh need to explicitly specify the host like so&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -x &amp;quot;uid=robe&amp;quot; -b &amp;quot;dc=osgeo,dc=org&amp;quot;  -H ldaps://ldap.osgeo.org &lt;br /&gt;
&lt;br /&gt;
If you get an error you can debug source with:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $ ldapsearch -x &amp;quot;uid=robe&amp;quot; -b &amp;quot;dc=osgeo,dc=org&amp;quot;  -H ldaps://ldap.osgeo.org -d 1&lt;br /&gt;
For more complex queries, see http://www.ldapexplorer.com/en/manual/109010000-ldap-filter-syntax.htm&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Web-based users creation and editing can be monitored looking at the '/var/log/apache2/www_access.log' files on 'www.osgeo.org'.&lt;br /&gt;
&lt;br /&gt;
A cronjob on [[TracsvnVM]] is setup to run hourly ('/etc/cron.hourly/check_excessive_new_ldap_users')&lt;br /&gt;
and report to the [https://lists.osgeo.org/mailman/listinfo/sac SAC mailing list] if more than a given max users are created in that timespam (check the script for details). The scripts to generate the reports are again on 'trac.osgeo.org' machine under '/osgeo/tools/ldap', where a git repository exists.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;sudo&amp;quot; unavailable to LDAP-authenticated users on Debian7. See:&lt;br /&gt;
*:https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/926350 and&lt;br /&gt;
*:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=579647&lt;br /&gt;
** Short form: &amp;quot;libgnutls&amp;quot; in Debian7 is linked against &amp;quot;libgcrypt&amp;quot; which refuses to work in setuid-binaries  - like &amp;quot;sudo&amp;quot;.&lt;br /&gt;
** Solution: Rebuild &amp;quot;libgnutls&amp;quot; using &amp;quot;libnettle&amp;quot; instead of &amp;quot;libgcrypt&amp;quot;:&lt;br /&gt;
*** aptitude install libhogweed2 libnettle4 nettle-dev libp11-kit-dev&lt;br /&gt;
*** apt-get remove libgnutls-dev&lt;br /&gt;
*** apt-get source gnutls26&lt;br /&gt;
*** # remove --with-libgcrypt from the debian/rules file&lt;br /&gt;
*** # build using this command:&lt;br /&gt;
*** debuild -i -uc -us -b&lt;br /&gt;
** Functional GnuTLS packages available on &amp;quot;secure&amp;quot; in /home/martin/GnuTLS.Deb/&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;sudo&amp;quot; unavailable to LDAP-authenticated users on Debian6 with backports. See:&lt;br /&gt;
*:http://lists.osgeo.org/pipermail/sac/2012-October/004120.html&lt;br /&gt;
** Solution:&lt;br /&gt;
 &amp;lt;hostname&amp;gt;:~# cat /etc/apt/preferences.d/sudo.pref &lt;br /&gt;
 Package: sudo&lt;br /&gt;
 Pin: version 1.7.4*&lt;br /&gt;
 Pin-Priority: 1000&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Heisenbridge&amp;diff=136142</id>
		<title>SAC:Heisenbridge</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Heisenbridge&amp;diff=136142"/>
		<updated>2026-06-29T05:31:50Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://github.com/hifi/heisenbridge Heisenbridge] is an IRC &amp;lt;-&amp;gt; Matrix bridge that we are running on an [[SAC_Service_Status#matrix|LXC container]]&lt;br /&gt;
hosted on [[SAC Service Status#osgeo3|osgeo3]] machine and administered by the [[SAC|OSGeo System Administration Committee]].&lt;br /&gt;
&lt;br /&gt;
The bridge registers as an app service with the OSGeo [[SAC:MatrixSynapse]] homeserver.&lt;br /&gt;
&lt;br /&gt;
The configuration and install of the bridge is driven by Ansible (restricted access): https://git.osgeo.org/gitea/sac/ansible-deployment&lt;br /&gt;
&lt;br /&gt;
At time of writing this the running Heisenbridge version is 1.14.6&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
Only the admin user can interact with the bridge bot, the current allowed&lt;br /&gt;
user is set via an HEISENBRIDGE_OWNER_MXID variable in ansible, and is&lt;br /&gt;
currently set to @strk:osgeo.org - the bot supports &amp;quot;help&amp;quot; commands to&lt;br /&gt;
figure how to do things.&lt;br /&gt;
&lt;br /&gt;
== Bridging IRC channels ==&lt;br /&gt;
&lt;br /&gt;
Bridging IRC channels with Matrix rooms is a manual operation that is done by interacting with a bot Matrix user.&lt;br /&gt;
&lt;br /&gt;
The relevant command is PLUMB (try: `plumb --help`)&lt;br /&gt;
&lt;br /&gt;
=== Topic Sync ===&lt;br /&gt;
&lt;br /&gt;
If you want to maintain the Matrix room description matching the IRC channel topic,&lt;br /&gt;
it can be done interacting with the bot in the IRC network specific room (ie: `#OSGeo &amp;lt;-&amp;gt; libera.chat`)&lt;br /&gt;
using the ROOM command, like the following:&lt;br /&gt;
&lt;br /&gt;
  room #&amp;lt;channelname&amp;gt; topic --sync any&lt;br /&gt;
&lt;br /&gt;
For help:&lt;br /&gt;
&lt;br /&gt;
  room #&amp;lt;channelname&amp;gt; topic --help&lt;br /&gt;
&lt;br /&gt;
If you set sync mode to &amp;quot;any&amp;quot; (or matrix?) changes in Matrix room&lt;br /&gt;
description will be propagated to changes in the IRC topic, but this is&lt;br /&gt;
only possible if you grant operator status to the bot user in libera.chat&lt;br /&gt;
&lt;br /&gt;
To simplify things it is possible to grant auto-op to the bridge user.&lt;br /&gt;
Bridge user on libera.chat is registered as &amp;quot;osgeo-matrix&amp;quot;, and you can grant it auto-op on IRC channels with:&lt;br /&gt;
&lt;br /&gt;
     /msg ChanServ flags #&amp;lt;channelname&amp;gt; osgeo-matrix +O&lt;br /&gt;
&lt;br /&gt;
Granting operator status to the bot allows automatic synchronization of&lt;br /&gt;
the IRC channel topic with the Matrix Room description, but at the same&lt;br /&gt;
time would let the bot kick nicks out of the room (a narrower permission&lt;br /&gt;
to just change the topic would probably be better).&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Dronie&amp;diff=136141</id>
		<title>Dronie</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Dronie&amp;diff=136141"/>
		<updated>2026-06-28T04:56:37Z</updated>

		<summary type="html">&lt;p&gt;Strk: Dronie was dismissed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''WARNING'''': this service was DISMISSED and replaced by [[Woodie]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dronie is an  instance of the [http://drone.io Drone CI] server that runs in an LXD container in [[Osgeo7]] and provides build services for software hosted on the [[SAC:Gitea|Gitea service]].&lt;br /&gt;
&lt;br /&gt;
It can be accessed via https://dronie.osgeo.org/ (login with your [[SAC:LDAP|OSGeo Userid]])&lt;br /&gt;
&lt;br /&gt;
= Files location and configuration =&lt;br /&gt;
&lt;br /&gt;
The setup and setup for dronie agents is detailed in - [https://git.osgeo.org/gitea/sac/osgeo7/wiki/Dronie-Server-container Dronie Server container]&lt;br /&gt;
&lt;br /&gt;
It runs in a docker image currently drone/drone:2 for the server and drone/agent:latest for the agent.&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
Starting and stopping the server is done via scripts found in /var/lib/drone/drone-server-config and coming from a git repository published (privately) on https://gitea.osgeo.org/sac/drone-server-config&lt;br /&gt;
&lt;br /&gt;
Data is in an sql lite database.&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
At the moment [[User:robe|Regina Obe]] (creator of the container) and [[User:strk|Sandro Santilli]] are admin users, although from the web UI this seems to provide no useful settings.&lt;br /&gt;
&lt;br /&gt;
= Drone agents =&lt;br /&gt;
&lt;br /&gt;
The CI service relies on people to donate agents (build slaves).                  &lt;br /&gt;
As of 2019 there are 3 known such slaves:                                                       &lt;br /&gt;
                                                       &lt;br /&gt;
 - &amp;lt;del&amp;gt;One on [[User:Robe|Regina Obe]] host (host.postgis.net)  (debbie-docker lxd container) IP 209.208.108.14&amp;lt;/del&amp;gt;         &lt;br /&gt;
 - &amp;lt;del&amp;gt;One on [[User:Robe|Regina Obe]] winnie.postgis.net (ianna VM) with IP 50.78.240.108&amp;lt;/del&amp;gt;&lt;br /&gt;
 - &amp;lt;del&amp;gt;One on [[User:Robe|Regina Obe]] h.pcorp.us (docker-debian lxd container) with IP 209.208.26.115&amp;lt;/del&amp;gt;  &lt;br /&gt;
 - One on [[osgeo7]] dronie.osgeo.org (A slave docker image running on same container as Dronie Server) &lt;br /&gt;
 - One on [[osgeo4]] dronie-client container&lt;br /&gt;
 - One on [[osgeo3]] dronie-client container&lt;br /&gt;
 - One on [[osgeo9]] dronie-client container&lt;br /&gt;
&lt;br /&gt;
A list of known agents can be fetched from the server with this command:&lt;br /&gt;
&lt;br /&gt;
  zgrep ' path=&amp;quot;/ws/broker&amp;quot;' /var/log/drone.log*  | sed 's/.* ip=//;s/ .*//' | sort -u&lt;br /&gt;
&lt;br /&gt;
                                                                                                    &lt;br /&gt;
Running an agent is a matter of running a docker container.                                         &lt;br /&gt;
Scripts to run the docker with appropriate configuration are                                        &lt;br /&gt;
currently stored in a private repository under Gitea:                                                &lt;br /&gt;
                                                                                                   &lt;br /&gt;
  https://gitea.osgeo.org/sac/drone-agent-config&lt;br /&gt;
&lt;br /&gt;
Those willing to setup an agent please put in a [https://trac.osgeo.org/osgeo SAC Ticket]&lt;br /&gt;
&lt;br /&gt;
[[Category:DismissedServices]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=136140</id>
		<title>SAC:Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=136140"/>
		<updated>2026-06-28T04:51:02Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Continuous integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Gitea is an instance of the [https://gitea.io/ Go Git Service] that runs on [[TracSVN]] as part of the [[SAC:Git Service|OSGeo Git Services]].&lt;br /&gt;
&lt;br /&gt;
It can be accessed via https://gitea.osgeo.org/ (login with your [[SAC:LDAP|OSGeo Userid]]).&lt;br /&gt;
Runs in staging at https://gitea.staging.osgeo.org.&lt;br /&gt;
&lt;br /&gt;
Until September 2025 it was accessible also as https://git.osgeo.org/gitea/ - it should still be for backward compatibility&lt;br /&gt;
&lt;br /&gt;
= Files location and configuration =&lt;br /&gt;
&lt;br /&gt;
It is installed in &amp;lt;code&amp;gt;/home/git/gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its configuration is in the ''custom/'' subdir and controlled via ansible.&lt;br /&gt;
&lt;br /&gt;
Repositories are in &amp;lt;code&amp;gt;/home/git/gitea-repositories&amp;lt;/code&amp;gt; and all files are created as readable for any user in the ''git'' group.&lt;br /&gt;
Apache running user (''www-data'') is made part of the group to allow for browsing ''gitea-managed'' repositories via existing [[Trac_Instances|trac instances]].&lt;br /&gt;
&lt;br /&gt;
Attachment and session data are in &amp;lt;code&amp;gt;/home/git/gitea/data&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is configured to use [[SAC:LDAP|LDAP]] for authentication and ''PostgreSQL'' as the backend, see the configuration for access parameters.&lt;br /&gt;
&lt;br /&gt;
Backups are currently automated for the database and data directory via scripts in &amp;lt;code&amp;gt;/osgeo/backup/&amp;lt;/code&amp;gt; (start from &amp;lt;code&amp;gt;/osgeo/backup/bacula_before.sh&amp;lt;/code&amp;gt;). No repositories are backed up (what's a distributed code version control system worth otherwise?:). Refer to [[SAC:Backups]] for other backup info.&lt;br /&gt;
&lt;br /&gt;
It listens on IP &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; and TCP port &amp;lt;code&amp;gt;3001&amp;lt;/code&amp;gt; via HTTP. Apache is configured to deal with HTTPS and act as a proxy.&lt;br /&gt;
See [[TracSVN]] for info about the apache configuration.&lt;br /&gt;
&lt;br /&gt;
Gitea is built to be composed by a single binary.&lt;br /&gt;
See https://gitea.io/ for more info.&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
At the moment [[User:Strk|Sandro Santilli]] (promoter of the initiative) and Martin Spott have admin privileges from the web UI.&lt;br /&gt;
[[User:Robe|Regina Obe]] and [[Jeff McKenna]] are willing to help.&lt;br /&gt;
&lt;br /&gt;
Server configuration is done via https://gitea.osgeo.org/sac/ansible-deployment&lt;br /&gt;
 (requires login and authorization to see)&lt;br /&gt;
&lt;br /&gt;
As of 2025 we're debating whether to switch to [[Forgejo]] instead&lt;br /&gt;
&lt;br /&gt;
== Starting and stopping the service ==&lt;br /&gt;
&lt;br /&gt;
The service is managed via systemctl:&lt;br /&gt;
&lt;br /&gt;
  - systemctl start gitea&lt;br /&gt;
  - systemctl stop gitea&lt;br /&gt;
  - systemctl restart gitea&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
Upgrading Gitea can be done with Ansible, just changing a variable,&lt;br /&gt;
see https://gitea.osgeo.org/sac/ansible-deployment/src/branch/master/deployment/roles/gitea&lt;br /&gt;
&lt;br /&gt;
Upgrades are best conducted first in staging.&lt;br /&gt;
&lt;br /&gt;
= Continuous integration =&lt;br /&gt;
&lt;br /&gt;
A CI server is associated to the hosting service,&lt;br /&gt;
see [[Woodie]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=136139</id>
		<title>SAC:Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=136139"/>
		<updated>2026-06-28T04:49:19Z</updated>

		<summary type="html">&lt;p&gt;Strk: add upgrading section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Gitea is an instance of the [https://gitea.io/ Go Git Service] that runs on [[TracSVN]] as part of the [[SAC:Git Service|OSGeo Git Services]].&lt;br /&gt;
&lt;br /&gt;
It can be accessed via https://gitea.osgeo.org/ (login with your [[SAC:LDAP|OSGeo Userid]]).&lt;br /&gt;
Runs in staging at https://gitea.staging.osgeo.org.&lt;br /&gt;
&lt;br /&gt;
Until September 2025 it was accessible also as https://git.osgeo.org/gitea/ - it should still be for backward compatibility&lt;br /&gt;
&lt;br /&gt;
= Files location and configuration =&lt;br /&gt;
&lt;br /&gt;
It is installed in &amp;lt;code&amp;gt;/home/git/gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its configuration is in the ''custom/'' subdir and controlled via ansible.&lt;br /&gt;
&lt;br /&gt;
Repositories are in &amp;lt;code&amp;gt;/home/git/gitea-repositories&amp;lt;/code&amp;gt; and all files are created as readable for any user in the ''git'' group.&lt;br /&gt;
Apache running user (''www-data'') is made part of the group to allow for browsing ''gitea-managed'' repositories via existing [[Trac_Instances|trac instances]].&lt;br /&gt;
&lt;br /&gt;
Attachment and session data are in &amp;lt;code&amp;gt;/home/git/gitea/data&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is configured to use [[SAC:LDAP|LDAP]] for authentication and ''PostgreSQL'' as the backend, see the configuration for access parameters.&lt;br /&gt;
&lt;br /&gt;
Backups are currently automated for the database and data directory via scripts in &amp;lt;code&amp;gt;/osgeo/backup/&amp;lt;/code&amp;gt; (start from &amp;lt;code&amp;gt;/osgeo/backup/bacula_before.sh&amp;lt;/code&amp;gt;). No repositories are backed up (what's a distributed code version control system worth otherwise?:). Refer to [[SAC:Backups]] for other backup info.&lt;br /&gt;
&lt;br /&gt;
It listens on IP &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; and TCP port &amp;lt;code&amp;gt;3001&amp;lt;/code&amp;gt; via HTTP. Apache is configured to deal with HTTPS and act as a proxy.&lt;br /&gt;
See [[TracSVN]] for info about the apache configuration.&lt;br /&gt;
&lt;br /&gt;
Gitea is built to be composed by a single binary.&lt;br /&gt;
See https://gitea.io/ for more info.&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
At the moment [[User:Strk|Sandro Santilli]] (promoter of the initiative) and Martin Spott have admin privileges from the web UI.&lt;br /&gt;
[[User:Robe|Regina Obe]] and [[Jeff McKenna]] are willing to help.&lt;br /&gt;
&lt;br /&gt;
Server configuration is done via https://gitea.osgeo.org/sac/ansible-deployment&lt;br /&gt;
 (requires login and authorization to see)&lt;br /&gt;
&lt;br /&gt;
As of 2025 we're debating whether to switch to [[Forgejo]] instead&lt;br /&gt;
&lt;br /&gt;
== Starting and stopping the service ==&lt;br /&gt;
&lt;br /&gt;
The service is managed via systemctl:&lt;br /&gt;
&lt;br /&gt;
  - systemctl start gitea&lt;br /&gt;
  - systemctl stop gitea&lt;br /&gt;
  - systemctl restart gitea&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
Upgrading Gitea can be done with Ansible, just changing a variable,&lt;br /&gt;
see https://gitea.osgeo.org/sac/ansible-deployment/src/branch/master/deployment/roles/gitea&lt;br /&gt;
&lt;br /&gt;
Upgrades are best conducted first in staging.&lt;br /&gt;
&lt;br /&gt;
= Continuous integration =&lt;br /&gt;
&lt;br /&gt;
A CI server is associated to the hosting service,&lt;br /&gt;
see [[Dronie]] and [[Woodie]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136093</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136093"/>
		<updated>2026-06-15T17:34:12Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LLM-based Chat Assistant =&lt;br /&gt;
&lt;br /&gt;
Experimental LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
The bot connects Matrix chat to an LLM agent and local MCP tools for OSGeo-specific search, wiki lookup, document search, and web/time/weather utilities.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#lounge:osgeo.org&lt;br /&gt;
#library:osgeo.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix identifier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@llm-assitant:matrix.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bot responds when mentioned, or when a line starts with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc&lt;br /&gt;
bot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc search the OSGeo wiki for board elections&lt;br /&gt;
bot what is GeoNode?&lt;br /&gt;
@llm-assitant:matrix.org find OSGeo documents about map projections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage notes ==&lt;br /&gt;
&lt;br /&gt;
The assistant is experimental. It may make mistakes, especially for operational or infrastructure-critical questions. Verify important answers before acting on them.&lt;br /&gt;
&lt;br /&gt;
Do not send secrets, passwords, API keys, private tokens, or sensitive credentials to the bot.&lt;br /&gt;
&lt;br /&gt;
Tool calls may be visible in chat logs. This is normal. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
== OSGeo Knowledge tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[Osgeo-knowledge-base]].&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve full page content&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
== OSGeo Library tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[osgeo-library]] through the &amp;lt;code&amp;gt;doclibrary&amp;lt;/code&amp;gt; MCP server.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Runtime path: &amp;lt;code&amp;gt;/home/ominiverdi/github/opencode-chat-bridge&amp;lt;/code&amp;gt;&lt;br /&gt;
* Running process: &amp;lt;code&amp;gt;bun connectors/matrix.ts&amp;lt;/code&amp;gt;&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
&lt;br /&gt;
Language model: &amp;lt;code&amp;gt;opencode/big-pickle&amp;lt;/code&amp;gt;, may change. Ask the bot for current model information.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
'''Main contact:''' ominiverdi, Lorenzo Becchi, or SAC channel.&lt;br /&gt;
&lt;br /&gt;
All the processes are currently run with &amp;quot;ominiverdi&amp;quot; user permissions, this should be changed ASAP.&lt;br /&gt;
&lt;br /&gt;
The starting process is invoked from directory /home/ominiverdi/github/opencode-chat-bridge using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bun connectors/matrix.ts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
&lt;br /&gt;
Check the bridge process on Gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;bun connectors/matrix.ts&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check active MCP processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;mcp|osgeo-knowledge|osgeo-library&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136092</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136092"/>
		<updated>2026-06-15T17:33:55Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# LLM-based Chat Assistant    [rev:136087 2026-06-15T14:53:27Z]&lt;br /&gt;
&lt;br /&gt;
# LLM-based Chat Assistant    [rev:136081 2026-06-15T13:04:20Z]&lt;br /&gt;
&lt;br /&gt;
# LLM-based Chat Assistant    [rev:136049 2026-06-13T11:04:16Z]&lt;br /&gt;
&lt;br /&gt;
# LLM-based Chat Assistant    [rev:136031 2026-06-05T18:26:29Z]&lt;br /&gt;
&lt;br /&gt;
= LLM-based Chat Assistant =&lt;br /&gt;
&lt;br /&gt;
Experimental LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
The bot connects Matrix chat to an LLM agent and local MCP tools for OSGeo-specific search, wiki lookup, document search, and web/time/weather utilities.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#lounge:osgeo.org&lt;br /&gt;
#library:osgeo.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix identifier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@llm-assitant:matrix.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bot responds when mentioned, or when a line starts with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc&lt;br /&gt;
bot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc search the OSGeo wiki for board elections&lt;br /&gt;
bot what is GeoNode?&lt;br /&gt;
@llm-assitant:matrix.org find OSGeo documents about map projections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage notes ==&lt;br /&gt;
&lt;br /&gt;
The assistant is experimental. It may make mistakes, especially for operational or infrastructure-critical questions. Verify important answers before acting on them.&lt;br /&gt;
&lt;br /&gt;
Do not send secrets, passwords, API keys, private tokens, or sensitive credentials to the bot.&lt;br /&gt;
&lt;br /&gt;
Tool calls may be visible in chat logs. This is normal. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
== OSGeo Knowledge tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[Osgeo-knowledge-base]].&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve full page content&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
== OSGeo Library tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[osgeo-library]] through the &amp;lt;code&amp;gt;doclibrary&amp;lt;/code&amp;gt; MCP server.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Runtime path: &amp;lt;code&amp;gt;/home/ominiverdi/github/opencode-chat-bridge&amp;lt;/code&amp;gt;&lt;br /&gt;
* Running process: &amp;lt;code&amp;gt;bun connectors/matrix.ts&amp;lt;/code&amp;gt;&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
&lt;br /&gt;
Language model: &amp;lt;code&amp;gt;opencode/big-pickle&amp;lt;/code&amp;gt;, may change. Ask the bot for current model information.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
'''Main contact:''' ominiverdi, Lorenzo Becchi, or SAC channel.&lt;br /&gt;
&lt;br /&gt;
All the processes are currently run with &amp;quot;ominiverdi&amp;quot; user permissions, this should be changed ASAP.&lt;br /&gt;
&lt;br /&gt;
The starting process is invoked from directory /home/ominiverdi/github/opencode-chat-bridge using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bun connectors/matrix.ts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
&lt;br /&gt;
Check the bridge process on Gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;bun connectors/matrix.ts&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check active MCP processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;mcp|osgeo-knowledge|osgeo-library&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136087</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136087"/>
		<updated>2026-06-15T14:53:27Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# LLM-based Chat Assistant    [rev:136081 2026-06-15T13:04:20Z]&lt;br /&gt;
&lt;br /&gt;
# LLM-based Chat Assistant    [rev:136049 2026-06-13T11:04:16Z]&lt;br /&gt;
&lt;br /&gt;
# LLM-based Chat Assistant    [rev:136031 2026-06-05T18:26:29Z]&lt;br /&gt;
&lt;br /&gt;
= LLM-based Chat Assistant =&lt;br /&gt;
&lt;br /&gt;
Experimental LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
The bot connects Matrix chat to an LLM agent and local MCP tools for OSGeo-specific search, wiki lookup, document search, and web/time/weather utilities.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#lounge:osgeo.org&lt;br /&gt;
#library:osgeo.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix identifier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@llm-assitant:matrix.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bot responds when mentioned, or when a line starts with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc&lt;br /&gt;
bot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc search the OSGeo wiki for board elections&lt;br /&gt;
bot what is GeoNode?&lt;br /&gt;
@llm-assitant:matrix.org find OSGeo documents about map projections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage notes ==&lt;br /&gt;
&lt;br /&gt;
The assistant is experimental. It may make mistakes, especially for operational or infrastructure-critical questions. Verify important answers before acting on them.&lt;br /&gt;
&lt;br /&gt;
Do not send secrets, passwords, API keys, private tokens, or sensitive credentials to the bot.&lt;br /&gt;
&lt;br /&gt;
Tool calls may be visible in chat logs. This is normal. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
== OSGeo Knowledge tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[Osgeo-knowledge-base]].&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve full page content&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
== OSGeo Library tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[osgeo-library]] through the &amp;lt;code&amp;gt;doclibrary&amp;lt;/code&amp;gt; MCP server.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Runtime path: &amp;lt;code&amp;gt;/home/ominiverdi/github/opencode-chat-bridge&amp;lt;/code&amp;gt;&lt;br /&gt;
* Running process: &amp;lt;code&amp;gt;bun connectors/matrix.ts&amp;lt;/code&amp;gt;&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
&lt;br /&gt;
Language model: &amp;lt;code&amp;gt;opencode/big-pickle&amp;lt;/code&amp;gt;, may change. Ask the bot for current model information.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
'''Main contact:''' ominiverdi, Lorenzo Becchi, or SAC channel.&lt;br /&gt;
&lt;br /&gt;
All the processes are currently run with &amp;quot;ominiverdi&amp;quot; user permissions, this should be changed ASAP.&lt;br /&gt;
&lt;br /&gt;
The starting process is invoked from directory /home/ominiverdi/github/opencode-chat-bridge using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bun connectors/matrix.ts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
&lt;br /&gt;
Check the bridge process on Gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;bun connectors/matrix.ts&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check active MCP processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;mcp|osgeo-knowledge|osgeo-library&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136081</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136081"/>
		<updated>2026-06-15T13:04:20Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# LLM-based Chat Assistant    [rev:136049 2026-06-13T11:04:16Z]&lt;br /&gt;
&lt;br /&gt;
# LLM-based Chat Assistant    [rev:136031 2026-06-05T18:26:29Z]&lt;br /&gt;
&lt;br /&gt;
= LLM-based Chat Assistant =&lt;br /&gt;
&lt;br /&gt;
Experimental LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
The bot connects Matrix chat to an LLM agent and local MCP tools for OSGeo-specific search, wiki lookup, document search, and web/time/weather utilities.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#lounge:osgeo.org&lt;br /&gt;
#library:osgeo.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix identifier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@llm-assitant:matrix.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bot responds when mentioned, or when a line starts with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc&lt;br /&gt;
bot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc search the OSGeo wiki for board elections&lt;br /&gt;
bot what is GeoNode?&lt;br /&gt;
@llm-assitant:matrix.org find OSGeo documents about map projections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage notes ==&lt;br /&gt;
&lt;br /&gt;
The assistant is experimental. It may make mistakes, especially for operational or infrastructure-critical questions. Verify important answers before acting on them.&lt;br /&gt;
&lt;br /&gt;
Do not send secrets, passwords, API keys, private tokens, or sensitive credentials to the bot.&lt;br /&gt;
&lt;br /&gt;
Tool calls may be visible in chat logs. This is normal. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
== OSGeo Knowledge tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[Osgeo-knowledge-base]].&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve full page content&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
== OSGeo Library tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[osgeo-library]] through the &amp;lt;code&amp;gt;doclibrary&amp;lt;/code&amp;gt; MCP server.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Runtime path: &amp;lt;code&amp;gt;/home/ominiverdi/github/opencode-chat-bridge&amp;lt;/code&amp;gt;&lt;br /&gt;
* Running process: &amp;lt;code&amp;gt;bun connectors/matrix.ts&amp;lt;/code&amp;gt;&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
&lt;br /&gt;
Language model: &amp;lt;code&amp;gt;opencode/big-pickle&amp;lt;/code&amp;gt;, may change. Ask the bot for current model information.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
'''Main contact:''' ominiverdi, Lorenzo Becchi, or SAC channel.&lt;br /&gt;
&lt;br /&gt;
All the processes are currently run with &amp;quot;ominiverdi&amp;quot; user permissions.&lt;br /&gt;
&lt;br /&gt;
The starting process is invoked from directory /home/ominiverdi/github/opencode-chat-bridge using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bun connectors/matrix.ts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
&lt;br /&gt;
Check the bridge process on Gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;bun connectors/matrix.ts&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check active MCP processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;mcp|osgeo-knowledge|osgeo-library&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136049</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136049"/>
		<updated>2026-06-13T11:04:16Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# LLM-based Chat Assistant    [rev:136031 2026-06-05T18:26:29Z]&lt;br /&gt;
&lt;br /&gt;
= LLM-based Chat Assistant =&lt;br /&gt;
&lt;br /&gt;
Experimental LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
The bot connects Matrix chat to an LLM agent and local MCP tools for OSGeo-specific search, wiki lookup, document search, and web/time/weather utilities.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#lounge:osgeo.org&lt;br /&gt;
#library:osgeo.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrix identifier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@llm-assitant:matrix.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bot responds when mentioned, or when a line starts with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc&lt;br /&gt;
bot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!oc search the OSGeo wiki for board elections&lt;br /&gt;
bot what is GeoNode?&lt;br /&gt;
@llm-assitant:matrix.org find OSGeo documents about map projections&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage notes ==&lt;br /&gt;
&lt;br /&gt;
The assistant is experimental. It may make mistakes, especially for operational or infrastructure-critical questions. Verify important answers before acting on them.&lt;br /&gt;
&lt;br /&gt;
Do not send secrets, passwords, API keys, private tokens, or sensitive credentials to the bot.&lt;br /&gt;
&lt;br /&gt;
Tool calls may be visible in chat logs. This is normal. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
== OSGeo Knowledge tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[Osgeo-knowledge-base]].&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve full page content&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
== OSGeo Library tools ==&lt;br /&gt;
&lt;br /&gt;
These tools query [[osgeo-library]] through the &amp;lt;code&amp;gt;doclibrary&amp;lt;/code&amp;gt; MCP server.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;doclibrary_get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Runtime path: &amp;lt;code&amp;gt;/home/ominiverdi/github/opencode-chat-bridge&amp;lt;/code&amp;gt;&lt;br /&gt;
* Running process: &amp;lt;code&amp;gt;bun connectors/matrix.ts&amp;lt;/code&amp;gt;&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
&lt;br /&gt;
Language model: &amp;lt;code&amp;gt;opencode/big-pickle&amp;lt;/code&amp;gt;, may change. Ask the bot for current model information.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
'''Main contact:''' ominiverdi, Lorenzo Becchi, or SAC channel.&lt;br /&gt;
&lt;br /&gt;
All the processes are currently run with &amp;quot;ominiverdi&amp;quot; user permissions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
&lt;br /&gt;
Check the bridge process on Gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;bun connectors/matrix.ts&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check active MCP processes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgrep -af &amp;quot;mcp|osgeo-knowledge|osgeo-library&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Discourse&amp;diff=136048</id>
		<title>SAC:Discourse</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Discourse&amp;diff=136048"/>
		<updated>2026-06-13T11:00:31Z</updated>

		<summary type="html">&lt;p&gt;Strk: simplify the procmail snippet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# SAC:Discourse    [rev:134263 2025-09-20T09:40:58Z]&lt;br /&gt;
&lt;br /&gt;
OSGeo hosts a [https://discourse.org/ Discourse] server accessible at https://discourse.osgeo.org&lt;br /&gt;
&lt;br /&gt;
The service runs in a set of Docker containers inside an LXD VM hosted on [[SAC Service Status#osgeo9|osgeo9]] machine and administered by the [[SAC|OSGeo System Administration Committee]].&lt;br /&gt;
&lt;br /&gt;
Gory details are in private https://gitea.osgeo.org/sac/discourse/wiki/discourse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Sign up ==&lt;br /&gt;
&lt;br /&gt;
It current allows OSGeo LDAP, OSGeo Gitea, GitHub, and local sign up methods&lt;br /&gt;
&lt;br /&gt;
== Organizing nofication emails ==&lt;br /&gt;
&lt;br /&gt;
Discourse sends emails with headers that can help you filter and organize them, these look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    List-ID: OSGeo Discourse | Testing &amp;lt;testing.discourse.osgeo.org&amp;gt;&lt;br /&gt;
    X-Discourse-Post-Id: 446250&lt;br /&gt;
    X-Discourse-Topic-Id: 154115&lt;br /&gt;
    X-Discourse-Category: Testing&lt;br /&gt;
    X-Discourse-Sender: robe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example procmail snippet that use those headers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Generic OSGeo Discourse filtering&lt;br /&gt;
  :0&lt;br /&gt;
  * ^List-ID: postgis\.discourse\.osgeo\.org&amp;gt;&lt;br /&gt;
  postgis-discourse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Deploy =&lt;br /&gt;
&lt;br /&gt;
The deploy was done following upstream instructions here:&lt;br /&gt;
https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md#6-install-discourse&lt;br /&gt;
&lt;br /&gt;
Those instruction imply an interactive session, but at the end of the process we are left with a couple of docker containers:&lt;br /&gt;
&lt;br /&gt;
   - import&lt;br /&gt;
   - mail-receiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
All administrative tasks are done via the web interface.&lt;br /&gt;
&lt;br /&gt;
Some seem to require intervention on host files ( ie: receiver.yml ?).&lt;br /&gt;
&lt;br /&gt;
We should put more configuration into ansible, see https://trac.osgeo.org/osgeo/ticket/3424&lt;br /&gt;
&lt;br /&gt;
== Mail gateway ==&lt;br /&gt;
&lt;br /&gt;
Discourse sends mail using lists.osgeo.org as the SMTP server (see '''DISCOURSE_SMTP_ADDRESS''' in ''/var/discourse/containers/app.yml'') and `discourse.osgeo.org` as the domain name.&lt;br /&gt;
&lt;br /&gt;
Receives mail on its own, via an MX record for discourse.osgeo.org (but see https://trac.osgeo.org/osgeo/ticket/3068 for an issue about that).&lt;br /&gt;
&lt;br /&gt;
The incoming mail is received via a network forward on the LXD host of port 25 for the public IP address 140.211.15.5 to the '''discourse''' VM container which in turn proxies it to the `mail-receiver' docker container. This setup has an unwanted side-effect of making the mails sent from other containers on the same LXD host as Discourse appear as coming from a private IP address, which in turn may trigger a rejection due to SPF not allowing that. See https://trac.osgeo.org/osgeo/ticket/3395#comment:31&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
Known issues about the Discourse service can be found here:&lt;br /&gt;
https://trac.osgeo.org/osgeo/query?component=SysAdmin%2FDiscourse&amp;amp;status=!closed&lt;br /&gt;
&lt;br /&gt;
== Mailing list migration ==&lt;br /&gt;
&lt;br /&gt;
Some of mailman mailing lists have been migrated to Discourse.&lt;br /&gt;
&lt;br /&gt;
Details on how to ask for migration of your list are here https://discourse.osgeo.org/docs?topic=6765&lt;br /&gt;
&lt;br /&gt;
== Theming ==&lt;br /&gt;
&lt;br /&gt;
We tweak the login form CSS a little in order to fix the LDAP button background, the labels, and to tweak the display order of the options.&lt;br /&gt;
&lt;br /&gt;
This is done from https://discourse.osgeo.org/admin/customize/themes/1/common/scss/edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.btn.ldap {&lt;br /&gt;
    background-color: #fff;&lt;br /&gt;
    order: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.ldap:hover {&lt;br /&gt;
    background-color: var( --primary-medium );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.ldap span.btn-social-title {&lt;br /&gt;
    visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.ldap span.btn-social-title:before {&lt;br /&gt;
    visibility: visible;&lt;br /&gt;
    content: 'Log in with OSGeo UserID (LDAP)';&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.oidc {&lt;br /&gt;
    order: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.oidc span.btn-social-title {&lt;br /&gt;
    visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.oidc span.btn-social-title:before {&lt;br /&gt;
    visibility: visible;&lt;br /&gt;
    content: 'Log in with OSGeo Gitea';&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.passkey-login-button {&lt;br /&gt;
    order: 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.github {&lt;br /&gt;
    order: 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Discourse&amp;diff=136047</id>
		<title>SAC:Discourse</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Discourse&amp;diff=136047"/>
		<updated>2026-06-13T06:59:21Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# SAC:Discourse    [rev:134263 2025-09-20T09:40:58Z]&lt;br /&gt;
&lt;br /&gt;
OSGeo hosts a [https://discourse.org/ Discourse] server accessible at https://discourse.osgeo.org&lt;br /&gt;
&lt;br /&gt;
The service runs in a set of Docker containers inside an LXD VM hosted on [[SAC Service Status#osgeo9|osgeo9]] machine and administered by the [[SAC|OSGeo System Administration Committee]].&lt;br /&gt;
&lt;br /&gt;
Gory details are in private https://gitea.osgeo.org/sac/discourse/wiki/discourse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Sign up ==&lt;br /&gt;
&lt;br /&gt;
It current allows OSGeo LDAP, OSGeo Gitea, GitHub, and local sign up methods&lt;br /&gt;
&lt;br /&gt;
== Organizing nofication emails ==&lt;br /&gt;
&lt;br /&gt;
Discourse sends emails with headers that can help you filter and organize them, these look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    List-ID: OSGeo Discourse | Testing &amp;lt;testing.discourse.osgeo.org&amp;gt;&lt;br /&gt;
    X-Discourse-Post-Id: 446250&lt;br /&gt;
    X-Discourse-Topic-Id: 154115&lt;br /&gt;
    X-Discourse-Category: Testing&lt;br /&gt;
    X-Discourse-Sender: robe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example procmail snippet that use those headers to detect Discourse mails, clean them from the noise they can produce and organize them in a mailman folder named after the category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Generic OSGeo Discourse filtering&lt;br /&gt;
  :0&lt;br /&gt;
  * ^List-ID: .*\.discourse\.osgeo\.org&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    :0 c&lt;br /&gt;
    .osgeo-discourse-orig/&lt;br /&gt;
&lt;br /&gt;
    :0 fb&lt;br /&gt;
    | sed -e '/Content-Type: text\/plain/,/^----/ s/\\\(.\)/\1/g; s/&amp;amp;quot;/&amp;quot;/g; s/&amp;amp;nbsp;/ /g; s/&amp;amp;lt;/&amp;lt;/g; s/&amp;amp;gt;/&amp;gt;/g; s/&amp;amp;#39;/'&amp;quot;'&amp;quot;'/g;'&lt;br /&gt;
&lt;br /&gt;
    :0&lt;br /&gt;
    * ^List-ID: OSGeo [^&amp;lt;]+ &amp;lt;\/[^\.]+&lt;br /&gt;
    .osgeo-discourse-$MATCH/&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Deploy =&lt;br /&gt;
&lt;br /&gt;
The deploy was done following upstream instructions here:&lt;br /&gt;
https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md#6-install-discourse&lt;br /&gt;
&lt;br /&gt;
Those instruction imply an interactive session, but at the end of the process we are left with a couple of docker containers:&lt;br /&gt;
&lt;br /&gt;
   - import&lt;br /&gt;
   - mail-receiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
All administrative tasks are done via the web interface.&lt;br /&gt;
&lt;br /&gt;
Some seem to require intervention on host files ( ie: receiver.yml ?).&lt;br /&gt;
&lt;br /&gt;
We should put more configuration into ansible, see https://trac.osgeo.org/osgeo/ticket/3424&lt;br /&gt;
&lt;br /&gt;
== Mail gateway ==&lt;br /&gt;
&lt;br /&gt;
Discourse sends mail using lists.osgeo.org as the SMTP server (see '''DISCOURSE_SMTP_ADDRESS''' in ''/var/discourse/containers/app.yml'') and `discourse.osgeo.org` as the domain name.&lt;br /&gt;
&lt;br /&gt;
Receives mail on its own, via an MX record for discourse.osgeo.org (but see https://trac.osgeo.org/osgeo/ticket/3068 for an issue about that).&lt;br /&gt;
&lt;br /&gt;
The incoming mail is received via a network forward on the LXD host of port 25 for the public IP address 140.211.15.5 to the '''discourse''' VM container which in turn proxies it to the `mail-receiver' docker container. This setup has an unwanted side-effect of making the mails sent from other containers on the same LXD host as Discourse appear as coming from a private IP address, which in turn may trigger a rejection due to SPF not allowing that. See https://trac.osgeo.org/osgeo/ticket/3395#comment:31&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
Known issues about the Discourse service can be found here:&lt;br /&gt;
https://trac.osgeo.org/osgeo/query?component=SysAdmin%2FDiscourse&amp;amp;status=!closed&lt;br /&gt;
&lt;br /&gt;
== Mailing list migration ==&lt;br /&gt;
&lt;br /&gt;
Some of mailman mailing lists have been migrated to Discourse.&lt;br /&gt;
&lt;br /&gt;
Details on how to ask for migration of your list are here https://discourse.osgeo.org/docs?topic=6765&lt;br /&gt;
&lt;br /&gt;
== Theming ==&lt;br /&gt;
&lt;br /&gt;
We tweak the login form CSS a little in order to fix the LDAP button background, the labels, and to tweak the display order of the options.&lt;br /&gt;
&lt;br /&gt;
This is done from https://discourse.osgeo.org/admin/customize/themes/1/common/scss/edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.btn.ldap {&lt;br /&gt;
    background-color: #fff;&lt;br /&gt;
    order: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.ldap:hover {&lt;br /&gt;
    background-color: var( --primary-medium );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.ldap span.btn-social-title {&lt;br /&gt;
    visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.ldap span.btn-social-title:before {&lt;br /&gt;
    visibility: visible;&lt;br /&gt;
    content: 'Log in with OSGeo UserID (LDAP)';&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.oidc {&lt;br /&gt;
    order: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.oidc span.btn-social-title {&lt;br /&gt;
    visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.oidc span.btn-social-title:before {&lt;br /&gt;
    visibility: visible;&lt;br /&gt;
    content: 'Log in with OSGeo Gitea';&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.passkey-login-button {&lt;br /&gt;
    order: 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.btn.github {&lt;br /&gt;
    order: 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136025</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136025"/>
		<updated>2026-06-05T17:48:59Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* OSGeo Knowledge Base */ cross linking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OSGeo Knowledge Base =&lt;br /&gt;
&lt;br /&gt;
Automated OSGeo wiki, WordPress, and Planet content sync and processing service running on [[Gallery_Container]].&lt;br /&gt;
&lt;br /&gt;
* GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
* Local path: &amp;lt;code&amp;gt;/home/ominiverdi/github/osgeo-knowledge&amp;lt;/code&amp;gt;&lt;br /&gt;
* Database: PostgreSQL on [[Gallery Container|Gallery]]&lt;br /&gt;
&lt;br /&gt;
== Scheduled jobs ==&lt;br /&gt;
&lt;br /&gt;
Verified in the &amp;lt;code&amp;gt;ominiverdi&amp;lt;/code&amp;gt; crontab on &amp;lt;code&amp;gt;osgeo7-gallery&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15 */6 * * * wiki_sync.py --days 2&lt;br /&gt;
0 3 * * * wordpress_sync.py --days 14&lt;br /&gt;
30 */4 * * * planet_sync.py --all&lt;br /&gt;
0 * * * * process_chunks.py --limit 100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Summary:&lt;br /&gt;
&lt;br /&gt;
* Wiki sync: every 6 hours&lt;br /&gt;
* WordPress sync: daily&lt;br /&gt;
* Planet OSGeo sync: every 4 hours&lt;br /&gt;
* Chunk processing: hourly&lt;br /&gt;
&lt;br /&gt;
== MCP server ==&lt;br /&gt;
&lt;br /&gt;
The MCP tools are provided by the &amp;lt;code&amp;gt;osgeo-knowledge&amp;lt;/code&amp;gt; MCP server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/ominiverdi/github/osgeo-knowledge/venv/bin/python -m osgeo_knowledge.servers.mcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the [[LLM-based_Chat_Assistant|Matrix chat bridge]], these tools appear with the &amp;lt;code&amp;gt;osgeo-knowledge_&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
== MCP tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Search LLM-generated page summaries and keywords. This is the main high-level search tool.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[osgeo-knowledge_search_content]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Search raw page content chunks with full-text matching and highlights.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[osgeo-knowledge_search_entities]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Search extracted entities such as people, projects, organizations, conferences, and locations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[osgeo-knowledge_get_entity_relationships]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Query relationships between extracted entities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[osgeo-knowledge_get_page]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retrieve full content for a specific page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[osgeo-knowledge_get_wiki_stats]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Show database statistics and sync status.&lt;br /&gt;
&lt;br /&gt;
== Related services ==&lt;br /&gt;
&lt;br /&gt;
* [[LLM-based Chat Assistant]]&lt;br /&gt;
* [[OSGeo-Knowledge-Embedding-Server]]&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi, Lorenzo Becchi, or SAC channel.&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=OSGeo-Knowledge-Embedding-Server&amp;diff=136011</id>
		<title>OSGeo-Knowledge-Embedding-Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=OSGeo-Knowledge-Embedding-Server&amp;diff=136011"/>
		<updated>2026-06-05T17:00:48Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
Only listens to localhost device, port: 8094, Model: bge-m3-Q8_0.gguf&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136010</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136010"/>
		<updated>2026-06-05T17:00:04Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base&lt;br /&gt;
&lt;br /&gt;
Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
Deploy of: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
&lt;br /&gt;
Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Category:AI-Services&amp;diff=136009</id>
		<title>Category:AI-Services</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Category:AI-Services&amp;diff=136009"/>
		<updated>2026-06-05T16:58:14Z</updated>

		<summary type="html">&lt;p&gt;Strk: Created page with &amp;quot;Services associated with AI (LLM kind)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Services associated with AI (LLM kind)&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=136008</id>
		<title>Osgeo-library</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=136008"/>
		<updated>2026-06-05T16:57:44Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;osgeo-library&lt;br /&gt;
&lt;br /&gt;
PDF figure/table/equation extraction and semantic search&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
* GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
* CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136007</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136007"/>
		<updated>2026-06-05T16:57:28Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Ask a question, prefixing your question with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; or mentioning &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;;&lt;br /&gt;
the bot will respond, possibly local OSGeo services. Tool calls may be visible in chat logs using the pattern:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-knowledge-base]] MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve a full page by title&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-library]] / doclibrary MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136006</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136006"/>
		<updated>2026-06-05T16:57:19Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base&lt;br /&gt;
&lt;br /&gt;
Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
&lt;br /&gt;
Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=OSGeo-Knowledge-Embedding-Server&amp;diff=136005</id>
		<title>OSGeo-Knowledge-Embedding-Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=OSGeo-Knowledge-Embedding-Server&amp;diff=136005"/>
		<updated>2026-06-05T16:57:03Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;br /&gt;
[[Category:AI-Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136004</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=136004"/>
		<updated>2026-06-05T16:56:32Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Ask a question, prefixing your question with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; or mentioning &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;;&lt;br /&gt;
the bot will respond, possibly local OSGeo services. Tool calls may be visible in chat logs using the pattern:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-knowledge-base]] MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve a full page by title&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-library]] / doclibrary MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=136003</id>
		<title>Osgeo-library</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=136003"/>
		<updated>2026-06-05T16:56:24Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;osgeo-library&lt;br /&gt;
&lt;br /&gt;
PDF figure/table/equation extraction and semantic search&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
* GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
* CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136002</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136002"/>
		<updated>2026-06-05T16:56:03Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base&lt;br /&gt;
&lt;br /&gt;
Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
&lt;br /&gt;
Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=136001</id>
		<title>Gallery Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=136001"/>
		<updated>2026-06-05T16:55:31Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications.&lt;br /&gt;
Gallery is a container on [[SAC_Service_Status#osgeo7|osgeo7]] host.&lt;br /&gt;
&lt;br /&gt;
'''Resources:''' 8 vCPUs, 12GB RAM&lt;br /&gt;
'''System services:''' nginx, redis, PostgreSQL 17, turnserver, php-fpm&lt;br /&gt;
&lt;br /&gt;
'''Brian's services (darkblueb):'''&lt;br /&gt;
* GalleryVM media library&lt;br /&gt;
* llamafile experiments&lt;br /&gt;
* photoprism configuration&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' darkblueb (Brian Hamlin) or SAC channel&lt;br /&gt;
&lt;br /&gt;
'''Lorenzo's services (ominiverdi):'''&lt;br /&gt;
* [[LLM-based Chat Assistant]]&lt;br /&gt;
* [[Osgeo-library]]&lt;br /&gt;
* [[Osgeo-knowledge-base]]&lt;br /&gt;
* [[BG3-M3-Embedding-Server]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136000</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=136000"/>
		<updated>2026-06-05T16:55:08Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base&lt;br /&gt;
&lt;br /&gt;
Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
&lt;br /&gt;
Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Service]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=OSGeo-Knowledge-Embedding-Server&amp;diff=135999</id>
		<title>OSGeo-Knowledge-Embedding-Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=OSGeo-Knowledge-Embedding-Server&amp;diff=135999"/>
		<updated>2026-06-05T16:54:58Z</updated>

		<summary type="html">&lt;p&gt;Strk: Created page with &amp;quot;* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp ** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf  Runs in Gallery_Container  The embeddin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Service]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=135998</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=135998"/>
		<updated>2026-06-05T16:54:49Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base&lt;br /&gt;
&lt;br /&gt;
Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
&lt;br /&gt;
Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Service]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135997</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135997"/>
		<updated>2026-06-05T16:13:25Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Ask a question, prefixing your question with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; or mentioning &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;;&lt;br /&gt;
the bot will respond, possibly local OSGeo services. Tool calls may be visible in chat logs using the pattern:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-knowledge-base]] MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve a full page by title&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-library]] / doclibrary MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=135996</id>
		<title>Osgeo-library</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=135996"/>
		<updated>2026-06-05T16:12:36Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;osgeo-library&lt;br /&gt;
&lt;br /&gt;
PDF figure/table/equation extraction and semantic search&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
* GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
* CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=135995</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=135995"/>
		<updated>2026-06-05T16:11:47Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base&lt;br /&gt;
&lt;br /&gt;
Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
Runs in [[Gallery_Container]]&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
&lt;br /&gt;
Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135994</id>
		<title>Gallery Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135994"/>
		<updated>2026-06-05T16:11:16Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications.&lt;br /&gt;
Gallery is a container on [[SAC_Service_Status#osgeo7|osgeo7]] host.&lt;br /&gt;
&lt;br /&gt;
'''Resources:''' 8 vCPUs, 12GB RAM&lt;br /&gt;
'''System services:''' nginx, redis, PostgreSQL 17, turnserver, php-fpm&lt;br /&gt;
&lt;br /&gt;
'''Brian's services (darkblueb):'''&lt;br /&gt;
* GalleryVM media library&lt;br /&gt;
* llamafile experiments&lt;br /&gt;
* photoprism configuration&lt;br /&gt;
&lt;br /&gt;
'''Lorenzo's services (ominiverdi):'''&lt;br /&gt;
* [[LLM-based Chat Assistant]]&lt;br /&gt;
* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
* [[Osgeo-library]]&lt;br /&gt;
* [[Osgeo-knowledge-base]]&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' darkblueb (Brian Hamlin), ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=135993</id>
		<title>Osgeo-library</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=135993"/>
		<updated>2026-06-05T16:10:32Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;osgeo-library''' - PDF figure/table/equation extraction and semantic search&lt;br /&gt;
&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
** CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=135992</id>
		<title>Osgeo-knowledge-base</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-knowledge-base&amp;diff=135992"/>
		<updated>2026-06-05T16:10:02Z</updated>

		<summary type="html">&lt;p&gt;Strk: Created page with &amp;quot;OSGeo Knowledge Base - Automated wiki/WordPress/Planet content sync and processing      GitHub: https://github.com/ominiverdi/osgeo-knowledge     Cron: wiki (6h), WordPress (d...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base - Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
    GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
    Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135991</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135991"/>
		<updated>2026-06-05T16:09:37Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Ask a question, prefixing your question with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; or mentioning &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;;&lt;br /&gt;
the bot will respond, possibly using &amp;quot;tools&amp;quot;, when it does, it prints the name of the tool too, among these:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;[osgeo-knowledge_search_content]&amp;lt;/code&amp;gt; -- TODO link to the corresponding service&lt;br /&gt;
* &amp;lt;code&amp;gt;[osgeo-knowledge_search_wiki]&amp;lt;/code&amp;gt; -- TODO link to the corresponding service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... lorenzo ...&lt;br /&gt;
&lt;br /&gt;
'''AI chat / MCP integration:'''&lt;br /&gt;
&lt;br /&gt;
The chat assistant uses MCP servers to query local OSGeo services. Tool calls may be visible in chat logs using the pattern:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-knowledge-base]] MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve a full page by title&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-library]] / doclibrary MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135990</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135990"/>
		<updated>2026-06-05T16:08:53Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Ask a question, prefixing your question with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; or mentioning &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;;&lt;br /&gt;
the bot will respond, possibly using &amp;quot;tools&amp;quot;, when it does, it prints the name of the tool too, among these:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;[osgeo-knowledge_search_content]&amp;lt;/code&amp;gt; -- TODO link to the corresponding service&lt;br /&gt;
* &amp;lt;code&amp;gt;[osgeo-knowledge_search_wiki]&amp;lt;/code&amp;gt; -- TODO link to the corresponding service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... lorenzo ...&lt;br /&gt;
&lt;br /&gt;
'''AI chat / MCP integration:'''&lt;br /&gt;
&lt;br /&gt;
The chat assistant uses MCP servers to query local OSGeo services. Tool calls may be visible in chat logs using the pattern:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_content]&lt;br /&gt;
&amp;gt; query=spam, limit=10 [osgeo-knowledge_search_wiki]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prefix identifies the MCP server, and the suffix identifies the tool.&lt;br /&gt;
&lt;br /&gt;
'''osgeo-knowledge MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_wiki&amp;lt;/code&amp;gt; - Search AI-generated summaries and keywords&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_content&amp;lt;/code&amp;gt; - Search raw page content chunks&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_search_entities&amp;lt;/code&amp;gt; - Search people, projects, organizations, events&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_entity_relationships&amp;lt;/code&amp;gt; - Query entity relationships&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_page&amp;lt;/code&amp;gt; - Retrieve a full page by title&lt;br /&gt;
* &amp;lt;code&amp;gt;osgeo-knowledge_get_wiki_stats&amp;lt;/code&amp;gt; - Show database and sync statistics&lt;br /&gt;
&lt;br /&gt;
'''[[osgeo-library]] / doclibrary MCP tools:'''&lt;br /&gt;
* &amp;lt;code&amp;gt;search_documents&amp;lt;/code&amp;gt; - Semantic search over document text and visual elements&lt;br /&gt;
* &amp;lt;code&amp;gt;search_visual_elements&amp;lt;/code&amp;gt; - Search figures, tables, equations, charts, and diagrams&lt;br /&gt;
* &amp;lt;code&amp;gt;list_elements&amp;lt;/code&amp;gt; - Browse document elements without semantic search&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_details&amp;lt;/code&amp;gt; - Retrieve metadata for a visual element&lt;br /&gt;
* &amp;lt;code&amp;gt;get_element_image&amp;lt;/code&amp;gt; - Retrieve a cropped element image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_page_image&amp;lt;/code&amp;gt; - Retrieve a full page image&lt;br /&gt;
* &amp;lt;code&amp;gt;get_document_info&amp;lt;/code&amp;gt; - Show document metadata&lt;br /&gt;
* &amp;lt;code&amp;gt;find_document&amp;lt;/code&amp;gt; - Find a document by name or query&lt;br /&gt;
* &amp;lt;code&amp;gt;list_documents&amp;lt;/code&amp;gt; - List indexed documents&lt;br /&gt;
* &amp;lt;code&amp;gt;get_library_status&amp;lt;/code&amp;gt; - Check document library service status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=135989</id>
		<title>Osgeo-library</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Osgeo-library&amp;diff=135989"/>
		<updated>2026-06-05T16:08:41Z</updated>

		<summary type="html">&lt;p&gt;Strk: Created page with &amp;quot;OSGeo Knowledge Base - Automated wiki/WordPress/Planet content sync and processing      GitHub: https://github.com/ominiverdi/osgeo-knowledge     Cron: wiki (6h), WordPress (d...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OSGeo Knowledge Base - Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
&lt;br /&gt;
    GitHub: https://github.com/ominiverdi/osgeo-knowledge&lt;br /&gt;
    Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135987</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135987"/>
		<updated>2026-06-05T16:02:15Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Ask a question, prefixing your question with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt; or mentioning &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;;&lt;br /&gt;
the bot will respond, possibly using &amp;quot;tools&amp;quot;, when it does, it prints the name of the tool too, among these:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;[osgeo-knowledge_search_content]&amp;lt;/code&amp;gt; -- TODO link to the corresponding service&lt;br /&gt;
* &amp;lt;code&amp;gt;[osgeo-knowledge_search_wiki]&amp;lt;/code&amp;gt; -- TODO link to the corresponding service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135983</id>
		<title>Gallery Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135983"/>
		<updated>2026-06-05T15:21:23Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications.&lt;br /&gt;
Gallery is a container on [[SAC_Service_Status#osgeo7|osgeo7]] host.&lt;br /&gt;
&lt;br /&gt;
'''Resources:''' 8 vCPUs, 12GB RAM&lt;br /&gt;
'''System services:''' nginx, redis, PostgreSQL 17, turnserver, php-fpm&lt;br /&gt;
&lt;br /&gt;
'''Brian's services (darkblueb):'''&lt;br /&gt;
* GalleryVM media library&lt;br /&gt;
* llamafile experiments&lt;br /&gt;
* photoprism configuration&lt;br /&gt;
&lt;br /&gt;
'''Lorenzo's services (ominiverdi):'''&lt;br /&gt;
* [[LLM-based Chat Assistant]]&lt;br /&gt;
* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
* '''osgeo-library''' - PDF figure/table/equation extraction and semantic search&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
** CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;br /&gt;
* '''osgeo_wiki_bot''' - Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo_wiki_bot&lt;br /&gt;
** Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' darkblueb (Brian Hamlin), ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135982</id>
		<title>Gallery Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135982"/>
		<updated>2026-06-05T14:34:05Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications.&lt;br /&gt;
Gallery is a container on [[OSGeo7]] host.&lt;br /&gt;
&lt;br /&gt;
'''Resources:''' 8 vCPUs, 12GB RAM&lt;br /&gt;
'''System services:''' nginx, redis, PostgreSQL 17, turnserver, php-fpm&lt;br /&gt;
&lt;br /&gt;
'''Brian's services (darkblueb):'''&lt;br /&gt;
* GalleryVM media library&lt;br /&gt;
* llamafile experiments&lt;br /&gt;
* photoprism configuration&lt;br /&gt;
&lt;br /&gt;
'''Lorenzo's services (ominiverdi):'''&lt;br /&gt;
* [[LLM-based Chat Assistant]]&lt;br /&gt;
* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
* '''osgeo-library''' - PDF figure/table/equation extraction and semantic search&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
** CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;br /&gt;
* '''osgeo_wiki_bot''' - Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo_wiki_bot&lt;br /&gt;
** Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' darkblueb (Brian Hamlin), ominiverdi (Lorenzo Becchi) or SAC channel&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135981</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135981"/>
		<updated>2026-06-05T14:32:01Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Access */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135980</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135980"/>
		<updated>2026-06-05T14:31:24Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery_Container|Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135979</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135979"/>
		<updated>2026-06-05T14:30:21Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: [[SAC_Service_Status#osgeo7|osgeo7]]&lt;br /&gt;
* Container: [[Gallery]]&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135978</id>
		<title>Gallery Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135978"/>
		<updated>2026-06-05T14:28:41Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications.&lt;br /&gt;
Gallery is a container on [[OSGeo7]] host.&lt;br /&gt;
&lt;br /&gt;
'''Resources:''' 8 vCPUs, 12GB RAM&lt;br /&gt;
'''System services:''' nginx, redis, PostgreSQL 17, turnserver, php-fpm&lt;br /&gt;
&lt;br /&gt;
'''Brian's services (darkblueb):'''&lt;br /&gt;
* GalleryVM media library&lt;br /&gt;
* llamafile experiments&lt;br /&gt;
* photoprism configuration&lt;br /&gt;
&lt;br /&gt;
'''Lorenzo's services (ominiverdi):'''&lt;br /&gt;
* [[LLM-based Chat Assistant]]&lt;br /&gt;
* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
* '''osgeo-library''' - PDF figure/table/equation extraction and semantic search&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
** CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;br /&gt;
* '''osgeo_wiki_bot''' - Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo_wiki_bot&lt;br /&gt;
** Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' darkblueb (Brian Hamlin), ominiverdi (Lorenzo Becchi) or SAC channel&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135977</id>
		<title>Gallery Container</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Gallery_Container&amp;diff=135977"/>
		<updated>2026-06-05T14:27:28Z</updated>

		<summary type="html">&lt;p&gt;Strk: Created page with &amp;quot;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications. Gallery is a container on OSGeo7 host.  '''Resources:''' 8 vCPUs, 12GB RAM '''Syst...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debian 12 (bookworm) container for AI/ML services, media, and experimental applications.&lt;br /&gt;
Gallery is a container on [[OSGeo7]] host.&lt;br /&gt;
&lt;br /&gt;
'''Resources:''' 8 vCPUs, 12GB RAM&lt;br /&gt;
'''System services:''' nginx, redis, PostgreSQL 17, turnserver, php-fpm&lt;br /&gt;
&lt;br /&gt;
'''Brian's services (darkblueb):'''&lt;br /&gt;
* GalleryVM media library&lt;br /&gt;
* llamafile experiments&lt;br /&gt;
* photoprism configuration&lt;br /&gt;
&lt;br /&gt;
'''Lorenzo's services (ominiverdi):'''&lt;br /&gt;
* '''matrix-llmagent''' - Matrix chat bot with LLM integration (uses OpenRouter API)&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/matrix-llmagent&lt;br /&gt;
* '''BGE-M3 Embedding Server''' - Semantic search embeddings via llama.cpp&lt;br /&gt;
** Port: 8094 (localhost only), Model: bge-m3-Q8_0.gguf&lt;br /&gt;
* '''osgeo-library''' - PDF figure/table/equation extraction and semantic search&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo-library&lt;br /&gt;
** CLI command: &amp;lt;code&amp;gt;osgeo-library&amp;lt;/code&amp;gt; (as ominiverdi user)&lt;br /&gt;
* '''osgeo_wiki_bot''' - Automated wiki/WordPress/Planet content sync and processing&lt;br /&gt;
** GitHub: https://github.com/ominiverdi/osgeo_wiki_bot&lt;br /&gt;
** Cron: wiki (6h), WordPress (daily), Planet (4h), chunk processing (hourly)&lt;br /&gt;
&lt;br /&gt;
The embedding model running on osgeo7-gallery is BGE-M3 (bge-m3-Q8_0.gguf), a multilingual model from BAAI supporting 100+ languages. It produces 1024-dimensional vectors and runs via llama-server on port 8094 (localhost only). The Q8_0 quantization keeps it light: 606 MB on disk, ~457 MB RAM, ~12ms per query.&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' darkblueb (Brian Hamlin), ominiverdi (Lorenzo Becchi) or SAC channel&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC_Service_Status&amp;diff=135976</id>
		<title>SAC Service Status</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC_Service_Status&amp;diff=135976"/>
		<updated>2026-06-05T14:26:53Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* gallery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infrastructure of OSGeo System Administration Committee ([[SAC]])&lt;br /&gt;
&lt;br /&gt;
For emergency plans see: [[SAC:Admin and Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Servers at OSL =&lt;br /&gt;
[[OSL | Open Source Labs]] - 6 physical machines that are lxd hosts containing ''x'' virtual machines/containers. 1 is currently shutdown&lt;br /&gt;
&lt;br /&gt;
history:&lt;br /&gt;
* 7 physical machines of which 5 ar lxd hosts containing ''x'' virtual machines/containers.&lt;br /&gt;
* As part of migration of data center 2025)&lt;br /&gt;
** 2 machines: [[SAC_Service_Status#Backup_.28osgeo5.29| backup]], [[SAC_Service_Status#osgeo3|osgeo3]] are historical servers.&lt;br /&gt;
&lt;br /&gt;
== Logging into Physical Machines ==&lt;br /&gt;
&lt;br /&gt;
Currently we do not have physical machines under LDAP control.&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All [[SAC#Members|SAC administrators]] have LDAP auth to the OSL Machines. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;del&amp;gt;To ssh into a server using your LDAP account, you can do the following replacing '''your_osgeo_login''' with your OSGeo login and '''vmname''' with the vm name of the server at OSL.&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;del&amp;gt;ssh '''your_osgeo_login'''@'''servername'''.osgeo.osuosl.org&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;del&amp;gt;When prompted for password, use your OSGeo Login password.&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;del&amp;gt;[[SAC:Primary Administrators]] also have ssh key access in case LDAP is down and that will also apply to the physical machines. Worst case scenario use the information on [[OSL | Open Source Labs]] to file a ticket (SAC members only). Direct connection to virtual machines is by appending it's vm alias to .osgeo.osuosl.org.&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging into LXD Hosts ==&lt;br /&gt;
&lt;br /&gt;
[[SAC_Service_Status#osgeo4|osgeo4]], [[SAC_Service_Status#osgeo7|osgeo7]], [[SAC_Service_Status#osgeo8|osgeo8]], and [[SAC_Service_Status#osgeo9|osgeo9]] are all Ubuntu servers running LXD. &lt;br /&gt;
LXD is a management system for LXC containers and QEMU VMS. LXD has a [https://www.youtube.com/channel/UCuP6xPt0WTeZu32CkQPpbvA channel] that covers its features. &lt;br /&gt;
&lt;br /&gt;
To directly access the host, you go thru port 2222&lt;br /&gt;
&lt;br /&gt;
   ssh tech_dev@''server_name''.osgeo.osuosl.org -p 2222&lt;br /&gt;
&lt;br /&gt;
Only [[SAC:Primary Administrators]] have their ssh key installed under that account.  In order to access via KVM of these in event servers do not come up on a reboot, you need to go thru OSU OSL OpenVPN. To get an OpenVPN account, you need to put in a support ticket to support@osuosl.org.  In order to qualify for an OpenVPN account, you need to be an OSGeo SAC administrator. You will also need to install [https://openvpn.net/community-downloads/ OpenVPN client]) to use your OpenVPN account.&lt;br /&gt;
&lt;br /&gt;
Each host on the private KVM side is named https://'''osgeo8'''.osuosl.oob -- where replace '''osgeo8''' with the relevant host. The .oob is the private network, so doesn't work unless you are connected to via OpenVPN.&lt;br /&gt;
&lt;br /&gt;
The browser interface is sometimes clunky, so you might want to use  '''ipmitool''' installable on linux/unix or wsl using relevant package manager. KVM passwords are stored in [https://git.osgeo.org/gitea/sac/password-store SAC password-store].&lt;br /&gt;
&lt;br /&gt;
A convenient block to add to your ~/.ssh/config to easily login to osgeo's LXD/Incus hosts follows: &lt;br /&gt;
&lt;br /&gt;
    Host osgeo?&lt;br /&gt;
      User tech_dev&lt;br /&gt;
      HostName %h.osgeo.osuosl.org&lt;br /&gt;
      Port 2222&lt;br /&gt;
&lt;br /&gt;
Then you would be able to log into those hosts with commands like:&lt;br /&gt;
&lt;br /&gt;
    ssh osgeo7&lt;br /&gt;
&lt;br /&gt;
== Logging into LXD/Incus Containers and VMs ==&lt;br /&gt;
&lt;br /&gt;
A convenient block to add to your ~/.ssh/config to easily login to osgeo's LXD hosted containers and vms is the following:&lt;br /&gt;
&lt;br /&gt;
   # This stanza is only needed if you have an IdentityFile configured below.&lt;br /&gt;
   # The IdentityFile from a target host is not automatically applied to the hop host, so we need to make it explicit:&lt;br /&gt;
   Host hop.*.osgeo.org&lt;br /&gt;
     IdentityFile &amp;quot;path/to/your/private/key&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   Host osgeo*-*&lt;br /&gt;
     ProxyCommand ssh yourusername@hop.$(sed -e &amp;quot;s/-.*//&amp;quot; &amp;lt;&amp;lt;&amp;lt; &amp;quot;%h&amp;quot;).osgeo.org -W $(sed -e &amp;quot;s/^osgeo[^-*]-//&amp;quot; &amp;lt;&amp;lt;&amp;lt; &amp;quot;%h&amp;quot;):%p&lt;br /&gt;
     # this is only needed if you you use different private keys for different servers&lt;br /&gt;
     IdentityFile &amp;quot;path/to/your/private/key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then you'll be able to access a LXC Container or QEMU VM on machine `osgeo9` with:&lt;br /&gt;
&lt;br /&gt;
   ssh yourusername@osgeo9-matrix&lt;br /&gt;
&lt;br /&gt;
And one on machine `osgeo7` with:&lt;br /&gt;
&lt;br /&gt;
   ssh yourusername@osgeo7-download&lt;br /&gt;
&lt;br /&gt;
Note you still need to know where each LXC host is hosted... See successive sections to know what's on which machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Troubleshooting:''' In case of &amp;quot;Permission denied (publickey).&amp;quot; after an update to a modern openSSH version, it might well be that your ssh key (RSH key) is disabled in your client in favour of more modern cyphers.&lt;br /&gt;
&lt;br /&gt;
Ugly workaround: add one line `PubkeyAcceptedKeyTypes ...` in `.ssh/config`, to re-enable RSA keys for now (consider to generate a new key):&lt;br /&gt;
&lt;br /&gt;
  vim .ssh/config&lt;br /&gt;
  ...&lt;br /&gt;
  Host *&lt;br /&gt;
     ...&lt;br /&gt;
     PubkeyAcceptedKeyTypes +ssh-rsa&lt;br /&gt;
&lt;br /&gt;
... but better read e.g. [https://dev.to/bowmanjd/upgrade-ssh-client-keys-and-remote-servers-after-fedora-33-s-new-crypto-policy-47ag here]!&lt;br /&gt;
== osgeo 6 ==&lt;br /&gt;
This was reformated March 2026 to be incus host&lt;br /&gt;
See  [[osgeo6]]&lt;br /&gt;
&lt;br /&gt;
=== services running on osgeo6 ===&lt;br /&gt;
==== hop ====&lt;br /&gt;
&lt;br /&gt;
hop.osgeo6.osgeo.org  - this is the jump host to access the instances on osgeo6&lt;br /&gt;
&lt;br /&gt;
==== nginx ====&lt;br /&gt;
Proxies all http and https traffic to instances on this host&lt;br /&gt;
&lt;br /&gt;
==== secure (LDAP )  ====&lt;br /&gt;
[https://git.osgeo.org/gitea/sac/osgeo9/wiki/secure-container secure] -- ldap.osgeo.org [[SAC:LDAP]] used for ldap service (a rebuild of old secure.osgeo.osuosl.org) now on Debian 11&lt;br /&gt;
Moved from osgeo9 &lt;br /&gt;
* ldap.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== ldap-web ====&lt;br /&gt;
&lt;br /&gt;
Currently housing https://id.osgeo.org/ for LDAP management.&lt;br /&gt;
Deployed via ansible&lt;br /&gt;
Moved from osgeo9&lt;br /&gt;
&lt;br /&gt;
* id.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== jitsi ====&lt;br /&gt;
&lt;br /&gt;
See [[SAC:Jitsi]] (for video meetings) - moved from osgeo9&lt;br /&gt;
https://meet.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== wordpress ====&lt;br /&gt;
&lt;br /&gt;
See [[SAC:Wordpress]]&lt;br /&gt;
www.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== pretalx  ====&lt;br /&gt;
Ubuntu 20.04 with OSGeo LDAP and Docker installed.  pretalx software runs in Docker.&lt;br /&gt;
https://talks.osgeo.org - for OSGeo Talk collection and voting See [[Pretalx]]&lt;br /&gt;
&lt;br /&gt;
==== weblate ====&lt;br /&gt;
'''Container Name:''' weblate (for doc translation)&lt;br /&gt;
&lt;br /&gt;
Houses: https://weblate.osgeo.org  (for document translation to different languages)&lt;br /&gt;
&lt;br /&gt;
For further details refer to [[SAC:Weblate]]&lt;br /&gt;
&lt;br /&gt;
== osgeo 8 ==&lt;br /&gt;
Server added April 2021, donated by OpenStreetMap project.&lt;br /&gt;
&lt;br /&gt;
Likely machine: https://web.archive.org/web/20191112203036/https://hardware.openstreetmap.org/servers/stormfly-01.openstreetmap.org/&lt;br /&gt;
&lt;br /&gt;
LXD host&lt;br /&gt;
&lt;br /&gt;
[[osgeo8|Configuration Details]]&lt;br /&gt;
&lt;br /&gt;
=== Services running on osgeo8 ===&lt;br /&gt;
&lt;br /&gt;
==== hop ====&lt;br /&gt;
hop.osgeo8.osgeo.org - jump host for accessing containers/vms on osgeo8&lt;br /&gt;
&lt;br /&gt;
==== nginx ====&lt;br /&gt;
http, https Proxy for all containers on osgeo8 and also provides mirror proxy for download.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== download8 ====&lt;br /&gt;
&lt;br /&gt;
Replica of download that is on osgeo7.&lt;br /&gt;
Mirrors download and home folders from osgeo7. &lt;br /&gt;
https://download-cache.osgeo.org&lt;br /&gt;
&lt;br /&gt;
See [[Download Server]]&lt;br /&gt;
&lt;br /&gt;
==== geoserver-cite ====&lt;br /&gt;
Houses OGC site certification for geoserver https://cite.geoserver.org&lt;br /&gt;
&lt;br /&gt;
==== grass-wiki ====&lt;br /&gt;
&lt;br /&gt;
See [[SAC:GrassWiki]]&lt;br /&gt;
&lt;br /&gt;
==== grass ====&lt;br /&gt;
https://grass.osgeo.org upgraded to Bullseye debian 11.&lt;br /&gt;
&lt;br /&gt;
GRASS GIS server&lt;br /&gt;
&lt;br /&gt;
Current DNS name: grass.osgeo.org&lt;br /&gt;
&lt;br /&gt;
Debian 11 Bullseye&lt;br /&gt;
&lt;br /&gt;
Web: Apache + Hugo (generated through cronjob from https://github.com/OSGeo/grass-website/), see https://github.com/OSGeo/grass-addons/tree/grass8/utils/cronjobs_osgeo_lxd&lt;br /&gt;
&lt;br /&gt;
`unattended-upgrades` for automatic installation of security upgrades is installed and running&lt;br /&gt;
&lt;br /&gt;
ssh: reachable via jumphost.&lt;br /&gt;
&lt;br /&gt;
==== meshcentral ====&lt;br /&gt;
https://remote.osgeo.org&lt;br /&gt;
This is a remoting tool currently setup to test livecd vms via a web browser.&lt;br /&gt;
&lt;br /&gt;
4 VMS currently set up on osgeo8 accessible from this. Currently based on livecd 16rc1 snapshots, with wm install script run.&lt;br /&gt;
&lt;br /&gt;
==== woodie-server ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[Woodie]]&lt;br /&gt;
&lt;br /&gt;
== osgeo 9 ==&lt;br /&gt;
Server added April 2021, donated by OpenStreetMap project.&lt;br /&gt;
&lt;br /&gt;
Likely machine: https://web.archive.org/web/20191112203042/https://hardware.openstreetmap.org/servers/stormfly-02.openstreetmap.org/&lt;br /&gt;
&lt;br /&gt;
Is an LXD host.  Also Stores lxd images used by other lxd hosts.&lt;br /&gt;
&lt;br /&gt;
[[osgeo9|Configuration Details]]&lt;br /&gt;
&lt;br /&gt;
=== Services running on osgeo9 ===&lt;br /&gt;
==== hop ====&lt;br /&gt;
hop.osgeo9.osgeo.org. For LDAP users allows them to hop thru to get to other containers.&lt;br /&gt;
&lt;br /&gt;
==== nextcloud  ====&lt;br /&gt;
https://nextcloud.osgeo.org&lt;br /&gt;
&lt;br /&gt;
Ubuntu 22.04 LXD/nginx/postgresql 14 container for document sharing similar to dropbox/google drive - nextcloud.lxd - https://nextcloud.osgeo.org [https://git.osgeo.org/gitea/sac/osgeo9/wiki/Nextcloud-container Nextcloud Setup]&lt;br /&gt;
&lt;br /&gt;
home of https://nextcloud.osgeo.org&lt;br /&gt;
This server does not use ssh osgeo-ldap as it was the first container built.  However nextcloud.osgeo.org does authenticate with osgeo ldap.&lt;br /&gt;
&lt;br /&gt;
TODO: add special page for this&lt;br /&gt;
&lt;br /&gt;
==== nginx ====&lt;br /&gt;
nginx (for web proxy of traffic of osgeo9 containers) additional mirror proxy for download.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== adventure (WIP)====&lt;br /&gt;
https://adventure.osgeo.org runs https://github.com/thecodingmachine/workadventure software&lt;br /&gt;
&lt;br /&gt;
==== dronie-client ====&lt;br /&gt;
a ci bot for dronie.osgeo.org which is used for git.osgeo.org/gitea ci jobs&lt;br /&gt;
&lt;br /&gt;
==== limesurvey ====&lt;br /&gt;
Debian 10, PostgreSQL 13, PHP 8 with ldap/ssh. https://limesurvey.osgeo.org &lt;br /&gt;
Setup detailed on [https://git.osgeo.org/gitea/sac/osgeo3/wiki/limesurvey-container limesurvey container]&lt;br /&gt;
&lt;br /&gt;
==== mail ====&lt;br /&gt;
mailman: lists.osgeo.org&lt;br /&gt;
mail.osgeo.org&lt;br /&gt;
tilechache web: tilecache.osgeo.org&lt;br /&gt;
mailserver: postfix&lt;br /&gt;
&lt;br /&gt;
==== matrix ====&lt;br /&gt;
'''Container Name:''' matrix - lxd container with ldap/ssh.&lt;br /&gt;
Hosts [[Matrix]] homeserver ([[SAC:MatrixSynapse]]) and IRC bridges ([[SAC:Heisenbridge]])&lt;br /&gt;
&lt;br /&gt;
https://gitea.osgeo.org/sac/osgeo9/wiki/matrix-container for full detail on how the container is setup&lt;br /&gt;
&lt;br /&gt;
==== pixelfed ====&lt;br /&gt;
&lt;br /&gt;
SHUT OFF (both container and website) cause of lack of interest.  Container is still there.&lt;br /&gt;
[[Pixelfed]] instance reachable on https://photo.osgeo.org to house community photos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== peertube ====&lt;br /&gt;
&lt;br /&gt;
[[Peertube]] instance reachable on https://video.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== geo-docs container ====&lt;br /&gt;
&lt;br /&gt;
Houses:&lt;br /&gt;
* https://blog.geoserver.org&lt;br /&gt;
* https://geos.osgeo.org&lt;br /&gt;
* https://geotools.org&lt;br /&gt;
* https://geowebcache.osgeo.org&lt;br /&gt;
* https://lastools.osgeo.org&lt;br /&gt;
* https://planet.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== wiki ====&lt;br /&gt;
&lt;br /&gt;
See [[OSGeo Wiki]]&lt;br /&gt;
&lt;br /&gt;
==== mail ====&lt;br /&gt;
&lt;br /&gt;
Hosts: lists.osgeo.org, mail.osgeo.org and a few other services.&lt;br /&gt;
See [[Mail server]] for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== osgeo 10 ==&lt;br /&gt;
Server added March 2026, donated by OSUOSL.&lt;br /&gt;
This is an incus host &lt;br /&gt;
&lt;br /&gt;
[[osgeo10|Configuration Details]]&lt;br /&gt;
&lt;br /&gt;
=== Services running on osgeo10 ===&lt;br /&gt;
==== hop ====&lt;br /&gt;
hop.osgeo10.osgeo.org. For LDAP users allows them to hop thru to get to other instances on this machine.&lt;br /&gt;
&lt;br /&gt;
==== nginx ====&lt;br /&gt;
Acts as nginx proxy to all sites on instances of this server&lt;br /&gt;
&lt;br /&gt;
==== discourse ====&lt;br /&gt;
&lt;br /&gt;
See [[SAC:Discourse]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== woodie-client-vm ====&lt;br /&gt;
&lt;br /&gt;
Separate agent for woodie-server, this one is a true VM rather than container.&lt;br /&gt;
&lt;br /&gt;
== osgeo 7 ==&lt;br /&gt;
&lt;br /&gt;
Server added June 2018. Intended to replace [[SAC_Service_Status#osgeo3|osgeo3]] and old osgeo4 (before reformat).&lt;br /&gt;
See [[Osgeo7]] for configuration details.&lt;br /&gt;
&lt;br /&gt;
[https://git.osgeo.org/gitea/sac/osgeo7/wiki/_pages Container setup of all the osgeo7 servers is located in https://git.osgeo.org/gitea/sac/osgeo7/wiki/_pages] &lt;br /&gt;
&lt;br /&gt;
Running LXD 3 snap based container management -- LXD version 3.17 as of 2019-09-15&lt;br /&gt;
&lt;br /&gt;
=== Accessing osgeo7 containers via ssh ===&lt;br /&gt;
&lt;br /&gt;
Only the download.osgeo.org is directly exposed ssh via port 22.  To access the other containers, you can tunnel thru &lt;br /&gt;
download.osgeo.org -- You need to be in the shell group to be able to access download and the other servers.  If you are not already put in a [https://trac.osgeo.org/osgeo/newticket SAC Ticket Request].  You also need to have your public key registered. To do so edit your profile [https://id.osgeo.org/ldap/edit]  (and put in your public key)&lt;br /&gt;
&lt;br /&gt;
A convenient block to add to your own `.ssh/config` file follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Host osgeo7-*&lt;br /&gt;
   ProxyCommand ssh your_osgeo_id@hop.osgeo7.osgeo.org -W $(sed -e &amp;quot;s/^osgeo7-//;s/$/.lxd/&amp;quot; &amp;lt;&amp;lt;&amp;lt; &amp;quot;%h&amp;quot;):%p&lt;br /&gt;
   IdentityFile &amp;quot;path/to/your/private/key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
With the above in place, you can connect to any container using:&lt;br /&gt;
&lt;br /&gt;
  ssh your_id@osgeo7-&amp;lt;container_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Troubleshooting:''' In case of &amp;quot;Permission denied (publickey).&amp;quot; after an update to a modern openSSH version, it might well be that your ssh key (RSH key) is disabled in your client in favour of more modern cyphers.&lt;br /&gt;
&lt;br /&gt;
Ugly workaround: add one line `PubkeyAcceptedKeyTypes ...` in `.ssh/config`, to re-enable RSA keys for now (consider to generate a new key):&lt;br /&gt;
&lt;br /&gt;
  vim .ssh/config&lt;br /&gt;
  ...&lt;br /&gt;
  Host *&lt;br /&gt;
     ...&lt;br /&gt;
     PubkeyAcceptedKeyTypes +ssh-rsa&lt;br /&gt;
&lt;br /&gt;
... but better read e.g. [https://dev.to/bowmanjd/upgrade-ssh-client-keys-and-remote-servers-after-fedora-33-s-new-crypto-policy-47ag here]!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Services on osgeo7 ===&lt;br /&gt;
&lt;br /&gt;
==== Monitor ====&lt;br /&gt;
&lt;br /&gt;
debian10 lxd container with ldap/ssh. https://monitor.osgeo.org (houses grafana dashboard (for all servers) and prometheus server for &amp;lt;del&amp;gt;[[SAC_Service_Status#osgeo3|osgeo3]]&amp;lt;del&amp;gt; containers and pulls basic container metrics using node exporters pulled via prometheus servers. Requirs ldap to log into the web console.&lt;br /&gt;
&lt;br /&gt;
Configuring servers for monitoring is detailed [https://git.osgeo.org/gitea/sac/prometheus-config Git Prometheus Config]&lt;br /&gt;
&lt;br /&gt;
==== Download ====&lt;br /&gt;
&lt;br /&gt;
See [[Download Server]]&lt;br /&gt;
&lt;br /&gt;
==== dronie-client-osgeo3 ====&lt;br /&gt;
STOPPED See [https://trac.osgeo.org/osgeo/ticket/3415 #3415]&lt;br /&gt;
Its a copy of dronie-client that was on [[SAC_Service_Status#osgeo3|osgeo3]] which has been shutdown&lt;br /&gt;
This is a debian 10 lxd container running docker. Currently has just one running docker osgeo-drone-agent to serve as a client for dronie-server (dronie.osgeo.org running on osgeo7) &lt;br /&gt;
&lt;br /&gt;
==== gallery ====&lt;br /&gt;
&lt;br /&gt;
See [[Gallery Container]]&lt;br /&gt;
&lt;br /&gt;
==== live ====&lt;br /&gt;
Home of [http://live.osgeo.org live.osgeo.org] ; &lt;br /&gt;
Running Ubuntu 24.04.3 LTS with OSGeo LDAP SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== mapserver ====&lt;br /&gt;
&lt;br /&gt;
See [[MapServer_at_osgeo7]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== nexus (repo.osgeo.org, docker.osgeo.org)  ====&lt;br /&gt;
See [[SAC:Repo]] this is a debian 10 lxd container running docker 19.  &lt;br /&gt;
It currently has one docker container running within it called nexus -- exposed as repo.osgeo.org on nginx.&lt;br /&gt;
&lt;br /&gt;
Also exposed as project dockers for pushing images:  postgis-docker.osgeo.org, geoserver-docker.osgeo.org, geos-docker.osgeo.org, sac-docker.osgeo.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== nginx  ====&lt;br /&gt;
Proxy that routes all http/https traffic for the other containers (can be accessed via osgeo7 host lxc or ubuntu@osgeo7-nginx if your key is installed on ubuntu user).&lt;br /&gt;
The nginx container holds the letsencrypt https SSL certs for all the containers and handles the renewal of the letsencrypt certs using certbot renew cronjob.&lt;br /&gt;
Prometheus server to collect all monitoring logs from OSGeo7 &amp;lt;del&amp;gt;(only accessible by [[SAC_Service_Status#osgeo3|osgeo3]]), these get queried via monitor.osgeo.org (running on [[SAC_Service_Status#osgeo3|osgeo3]]) via grafana server.&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== tracsvn (trac, svn, git) ====&lt;br /&gt;
&lt;br /&gt;
Home of [[Trac]], [[SAC:Git Service|Git]] and [[Subversion]] services.&lt;br /&gt;
&lt;br /&gt;
See [[TracSVN]] for full details.&lt;br /&gt;
&lt;br /&gt;
==== photoprism ====&lt;br /&gt;
Picture gallery. Syncs with https://nextcloud.osgeo.org&lt;br /&gt;
But pictures are shown here https://photoprism.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== old-wiki (stopped) ====&lt;br /&gt;
This used to be housed on [[SAC_Service_Status#osgeo3|osgeo3]], and was moved 2019-09-14 to osgeo7 as old-wiki container.&lt;br /&gt;
wiki.osgeo.org moved back to [[SAC_Service_Status#osgeo3|osgeo3]] on 2020-05-22 and in wiki container. The wiki container is a complete rebuild with files and database restored and upgraded.&lt;br /&gt;
Refer to the [[SAC_Service_Status#osgeo3|osgeo3]] section for more details. &lt;br /&gt;
&lt;br /&gt;
[https://git.osgeo.org/gitea/sac/osgeo7/wiki/old-wiki-container old wiki container] -- used for wiki service (it is an lxd2pc created image of wiki.osgeo.osuosl.org VM that was on [[SAC_Service_Status#osgeo3|osgeo3]])&lt;br /&gt;
&lt;br /&gt;
See [[OSGeo Wiki]]&lt;br /&gt;
&lt;br /&gt;
==== nextcloud-ubuntu (stopped) ====&lt;br /&gt;
Moved to osgeo9&lt;br /&gt;
&lt;br /&gt;
==== dronie-server ====&lt;br /&gt;
&lt;br /&gt;
See [[Dronie]]&lt;br /&gt;
&lt;br /&gt;
==== old-projects (stopped) ====&lt;br /&gt;
-- this is the old projects.osgeo.osuosl.org migrated from osgeo4 as an lxd container, so more or less the same as it was before, with the exception that all the websites are now proxied thru the nginx container.  Websites on it are community-review.foss4g.org and spatialreference.org&lt;br /&gt;
&lt;br /&gt;
To access you need to go thru download.osgeo.org -&amp;gt; old-projects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== old-web (stopped) ====&lt;br /&gt;
The old web.osgeo.osuosl.org (was on [[SAC_Service_Status#osgeo3|osgeo3]]) &lt;br /&gt;
&lt;br /&gt;
* mapguide.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== old-webextra ====&lt;br /&gt;
This is a replica of webextra.osgeo.osuosl.org that was hosted on [[SAC_Service_Status#osgeo3|osgeo3]]&lt;br /&gt;
&lt;br /&gt;
Started move on November 29th 2019 and completed December 8th, 2019&lt;br /&gt;
* foss4g.org&lt;br /&gt;
* europe.foss4g.org&lt;br /&gt;
* video.foss4g.org&lt;br /&gt;
* planet.osgeo.org&lt;br /&gt;
* various old foss4g.org years&lt;br /&gt;
* &amp;lt;del&amp;gt;live.osgeo.org&amp;lt;/del&amp;gt; moved to dedicated container&lt;br /&gt;
* journal.osgeo.org (not sure what this is for, should be retired?)&lt;br /&gt;
* &amp;lt;del&amp;gt;vmap0.tiles.osgeo.org&amp;lt;/del&amp;gt; #removed site&lt;br /&gt;
&lt;br /&gt;
Information from webextra on [[SAC_Service_Status#osgeo3|osgeo3]]&lt;br /&gt;
&lt;br /&gt;
** Retired December 8th, 2019 -- and moved to osgeo7 as container old-webextra&lt;br /&gt;
&lt;br /&gt;
* See [[WebExtraVM]] for full details (server: http://webextra.osgeo.osuosl.org)&lt;br /&gt;
* hosts http://planet.osgeo.org, http://mum03.mapserver.org, http://live.osgeo.org&lt;br /&gt;
* http://foss4g.org (main portal) and archive of old sites 2006-2014&lt;br /&gt;
* http://conference.osgeo.org - [[Conference System]] (also: [[SAC:Setup_OCS]])&lt;br /&gt;
* http://journal.osgeo.org / osgeo.org/ojs - [[Journal System]]&lt;br /&gt;
* Redirects for many chapter and other urls handled via /etc/httpd/conf.d/rewrite.conf&lt;br /&gt;
&lt;br /&gt;
==== pycsw ====&lt;br /&gt;
'''Container Name:''' pycsw &lt;br /&gt;
&lt;br /&gt;
* https://demo.pycsw.org&lt;br /&gt;
* '''OGC CSW Reference Implementation and Server demo'''&lt;br /&gt;
* deployment setup at https://github.com/geopython/demo.pycsw.org&lt;br /&gt;
* running hourly teardown/setup cron via docker-compose&lt;br /&gt;
* migrated from [[AdhocVM#Existing_services_hosted_on_the_Ad-hoc_VM:|Adhoc VM]] thanks to [https://trac.osgeo.org/osgeo/ticket/2452 SAC] (May 2020)&lt;br /&gt;
&lt;br /&gt;
=== osgeo7 decommissioned containers ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;del&amp;gt;old-adhoc&amp;lt;/del&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
'''SHUTOFF as of 2022-01-29'''&lt;br /&gt;
&lt;br /&gt;
[[AdhocVM|old-adhoc]] -- this is the old adhoc.osgeo.osuosl.org migrated 2019-05-08 from osgeo4 as an lxd container.  &lt;br /&gt;
Used by osgeo-live for there test docs and by grass for earthquake, and mapserver for demo.&lt;br /&gt;
Note that there is a new live (container that osgeo-live will more to), there is also a mapserver container (which mapserver have started to move their demo to)&lt;br /&gt;
&lt;br /&gt;
To access via ssh you should go thru download.osgeo.org -&amp;gt; old-adhoc.lxd&lt;br /&gt;
It is accessible via https://adhoc.osgeo.org and http://adhoc.osgeo.osuosl.org&lt;br /&gt;
&lt;br /&gt;
* VM used for projects for various adhoc purposes.  Risks to system stability that would be unacceptable on the Projects VM may be ok here. &lt;br /&gt;
* See [[AdhocVM]] for full details, and some notes on services running here.&lt;br /&gt;
* eg http://adhoc.osgeo.osuosl.org/livedvd/docs/en/quickstart/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== osgeo4 ==&lt;br /&gt;
&lt;br /&gt;
osgeo4 is a real server managed by OSUOSL - can be access via ssh tech_dev@osgeo4.osgeo.osuosl.org -p 2222  (only people with their access keys installed can log in and doesn't allow password access) - password for tech_dev is in the secure container (on osgeo7) / access folder.&lt;br /&gt;
&lt;br /&gt;
In August 2019 the server had new power supply put in and replacement disks.  It was reformatted with Ubuntu 18.04.3 to serve as secondary LXD host to osgeo7&lt;br /&gt;
zfsutils-linux was installed so lxd can use zfs for storage.&lt;br /&gt;
&lt;br /&gt;
=== sshing into osgeo4 containers ===&lt;br /&gt;
Note that all the containers are closed off from direct ssh access except for the hop.osgeo4.osgeo.org.  To access the other containers, you need to hop through hop.&lt;br /&gt;
hop container has port 22 open but requires ssh access so users who’ve been granted rights can hop thru it to other containers using hop.osgeo4.osgeo.org as name.&lt;br /&gt;
&lt;br /&gt;
A convenient block to add to your own .ssh/config file follows where your_id could be your osgeo id or a local account on that container&lt;br /&gt;
&lt;br /&gt;
 Host osgeo4-*&lt;br /&gt;
   ProxyCommand ssh your_osgeo_id@hop.osgeo4.osgeo.org -W $(sed -e &amp;quot;s/^osgeo4-//;s/$/.lxd/&amp;quot; &amp;lt;&amp;lt;&amp;lt; &amp;quot;%h&amp;quot;):%p&lt;br /&gt;
   IdentityFile &amp;quot;path/to/your/private/key&amp;quot;&lt;br /&gt;
   User your_id&lt;br /&gt;
&lt;br /&gt;
Then to access say the wordpress-dev container, you'd do the below&lt;br /&gt;
&lt;br /&gt;
 ssh osgeo4-wordpress-dev&lt;br /&gt;
&lt;br /&gt;
=== osgeo4 baremetal features ===&lt;br /&gt;
It's makeup is as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Item !! Settings&lt;br /&gt;
|-&lt;br /&gt;
| Disks || 6 1.8 TB drives&lt;br /&gt;
|-&lt;br /&gt;
| Memory || 48 GB&lt;br /&gt;
|-&lt;br /&gt;
| CPUs || 8 Intel(R) Xeon(R) CPU E5540  @ 2.53GHz (8192kb cache)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt;lsblk -i&lt;br /&gt;
NAME           MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT&lt;br /&gt;
sda              8:0    0  1.8T  0 disk  &lt;br /&gt;
|-sda1           8:1    0  953M  0 part  &lt;br /&gt;
| `-md0          9:0    0  952M  0 raid1 /boot&lt;br /&gt;
`-sda2           8:2    0 46.6G  0 part  &lt;br /&gt;
  `-md1          9:1    0 46.5G  0 raid1 &lt;br /&gt;
	|-lvm-root 253:0    0 37.3G  0 lvm   /&lt;br /&gt;
	`-lvm-swap 253:1    0  7.5G  0 lvm   [SWAP]&lt;br /&gt;
sdb              8:16   0  1.8T  0 disk  &lt;br /&gt;
|-sdb1           8:17   0  953M  0 part  &lt;br /&gt;
| `-md0          9:0    0  952M  0 raid1 /boot&lt;br /&gt;
`-sdb2           8:18   0 46.6G  0 part  &lt;br /&gt;
  `-md1          9:1    0 46.5G  0 raid1 &lt;br /&gt;
	|-lvm-root 253:0    0 37.3G  0 lvm   /&lt;br /&gt;
	`-lvm-swap 253:1    0  7.5G  0 lvm   [SWAP]&lt;br /&gt;
sdc              8:32   0  1.8T  0 disk  &lt;br /&gt;
sdd              8:48   0  1.8T  0 disk  &lt;br /&gt;
sde              8:64   0  1.8T  0 disk  &lt;br /&gt;
sdf              8:80   0  1.8T  0 disk &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdc,sdd,sde,sdf  form a zfs osgeo4_lxd partition (sdc,sdd) mirrors sde,sdf for total lxd capacity of 3.62 TB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nightly backups of osgeo7, and osgeo4 containers are kept here and named &amp;lt;container&amp;gt;-backup and be kept in a stopped state.&lt;br /&gt;
&lt;br /&gt;
=== Services running on osgeo4 ===&lt;br /&gt;
&lt;br /&gt;
==== hop ====&lt;br /&gt;
'''Container Name:''' hop - this is the only container with direct ssh access via ssh hop.osgeo4.osgeo.org. To get to other containers, you need to hop thru this one. Requires ssh key access&lt;br /&gt;
&lt;br /&gt;
==== ansible-dev ====&lt;br /&gt;
'''Container Name:''' ansible-dev, has ansible 2.9.27 installed and all plugins needed to manage OSGeo ansible infrastructure.&lt;br /&gt;
DEPRECATED, use `ansible-dev`&lt;br /&gt;
&lt;br /&gt;
==== ansible-control ====&lt;br /&gt;
'''Container Name:''' ansible-control, can be used to deploy OSGeo ansible infrastructure. Replaces `ansible-dev`&lt;br /&gt;
&lt;br /&gt;
==== osgeo4-nginx ====&lt;br /&gt;
'''Container Name:''' osgeo4-nginx -&amp;gt;&amp;gt; all web traffick from other containers on osgeo4 get proxied thru here&lt;br /&gt;
&lt;br /&gt;
==== old-web-staging  ====&lt;br /&gt;
'''Container Name:''' old-web-staging - used primarily for experimenting with changes to id.osgeo.org (old-web on osgeo7) like testing out OS and software upgrade etc, changes to LDAP forms and registration, before applying to id.osgeo.org. - https://id.staging.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== pretalx-staging ====&lt;br /&gt;
'''Container Name:''' pretalx-staging - used primarily for experimenting with changes to talks.osgeo.org (pretalx on [[SAC_Service_Status#osgeo9|osgeo9]]) like testing out Docker builds and software upgrade etc, before applying to talks.osgeo.org. - https://talks.staging.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== wordpress-dev  ====&lt;br /&gt;
'''Container Name:''' wordpress-dev - used primarily for osgeo.org main website development - https://staging.www.osgeo.org, https://dev.www.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== wiki-dev  ====&lt;br /&gt;
'''Container Name:''' wiki-dev - used primarily for experimenting with changes to wiki.osgeo.org like testing out OS and software upgrade etc before appying to wiki.osgeo.org. - https://dev.wiki.osgeo.org&lt;br /&gt;
&lt;br /&gt;
==== wiki-staging  ====&lt;br /&gt;
'''Container Name:''' wiki-staging - used primarily for upgrade changes to wiki.osgeo.org like testing out OS and software upgrade etc before applying to wiki.osgeo.org. - https://staging.wiki.osgeo.org.  The construction of this container is managed by sac ansible-deployment.&lt;br /&gt;
&lt;br /&gt;
==== tracsvn-dev  ====&lt;br /&gt;
'''Container Name:''' tracsvn-dev - This is a 2019-09-05 lxd2pc image of tracsvn.osgeo.osuosl.org (now on osgeo7 as tracsvn) used primarily for experimenting like testing out OS, git and software upgrade etc before appying to production. -- https://dev.git.osgeo.org, https://dev.tracsvn.osgeo.org Has the following sites: https://dev.trac.osgeo.org, https://dev.git.osgeo.org/gitea, https://dev.svn.osgeo.org.&lt;br /&gt;
&lt;br /&gt;
It was upgraded to Debian 11 on 2024-08-21.&lt;br /&gt;
&lt;br /&gt;
==== dronie-client  ====&lt;br /&gt;
'''Container Name:''' dronie-client - This is a debian 10 machine, with OSGeo LDAP authentication and a drone-agent docker running.  To be used with https://dronie.osgeo.org&lt;br /&gt;
&lt;br /&gt;
= Cloud Hosted Servers and other external under SAC Control =&lt;br /&gt;
&lt;br /&gt;
== Future Hosting Plans for Windows / Mac Building ==&lt;br /&gt;
&lt;br /&gt;
[[SAC_Shared_Building_Services|SAC Shared Building Services]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Atlantic.net ==&lt;br /&gt;
&lt;br /&gt;
* host.postgis.net -p 2222 is an LXD Ubuntu 18.04 16GB RAM/ 6 vCPU, 350GB data, 250GB block storage&lt;br /&gt;
* Currenlty running two lxd containers:&lt;br /&gt;
    debbie: debian 10 postgis.net, planet.postgis.net, debbie.postgis.net (jenkins build bot)  &lt;br /&gt;
    debbie-docker.host.postgis.net - runs docker and serves as a 1.0 agent for dronie.osgeo.org&lt;br /&gt;
&lt;br /&gt;
= QGIS off OSGeo =&lt;br /&gt;
Services on separated machines rented and managed by the QGIS project at hetzner&lt;br /&gt;
&lt;br /&gt;
* website including documentation http://www.qgis.org&lt;br /&gt;
* website building, documentation building, debian/ubuntu nightlies, plugins.qgis.org&lt;br /&gt;
* issues.qgis.org: redmine&lt;br /&gt;
&lt;br /&gt;
= Historical servers (not more in use) =&lt;br /&gt;
&lt;br /&gt;
- [[Telascience Blades (Historical)]]&lt;br /&gt;
&lt;br /&gt;
== web18a.osgeo.osuosl.org ==&lt;br /&gt;
NO LONGER USED - turned off&lt;br /&gt;
'''2019-09-03 Production services www.osgeo.org, 2018.foss4g.org moved to wordpress container on [[osgeo7]]&lt;br /&gt;
Staging services (staging.www.osgeo.org, dev.www.osgeo.org move to wordpress-dev container on [[osgeo4]]&lt;br /&gt;
Grass wordpress is disabled as grass decided to go with another solution, so have grass container on osgeo7'''&lt;br /&gt;
(Cloud hosted server on OSUOSL hardware (not ours) )&lt;br /&gt;
* Debian 9.3 4GB server, host name: web18a.osgeo.osuosl.org require ssh key to log in.&lt;br /&gt;
* Hosts wordpress sites staging.www.osgeo.org,www.osgeo.org, staging.grass.osgeo.org, foss4g2018.osgeo.org&lt;br /&gt;
* Setup details on [https://git.osgeo.org/gitea/osgeo/www_apache_configs/wiki/Web18a-setup Web18a setup]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OSGeo funtoo ==&lt;br /&gt;
&lt;br /&gt;
For lxd experimentation it's an lxd container running other lxd containers and provided by funtoo.org.&lt;br /&gt;
&lt;br /&gt;
OSGeo is paying funtoo via treasurer at osgeo.org.&lt;br /&gt;
&lt;br /&gt;
* [https://git.osgeo.org/gitea/sac/osgeo_funtoo OSGeo Funtoo] osgeo.host.funtoo.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* funtoo LXDs currently running:&lt;br /&gt;
** &amp;lt;del&amp;gt;[https://limesurvey.osgeo.org LimeSurvey] -this may be in future migrated to osgeo7 or osgeo3&amp;lt;/del&amp;gt;&lt;br /&gt;
Migrated to [[SAC_Service_Status#osgeo3|osgeo3]]  2020-11-28 -- see [[https://trac.osgeo.org/osgeo/ticket/2362|#2362]]&lt;br /&gt;
&lt;br /&gt;
== osgeo3 ==&lt;br /&gt;
&lt;br /&gt;
osgeo3 physical server refer to [[osgeo3|Configuration Details]] for hardware specs. It was used to run production, but moderately risky things. Refer to [[SAC:Old-osgeo3]] for past history before osgeo3 was rebuilt.&lt;br /&gt;
osgeo3 was a hosted by OSUOSL - No longer accessible &amp;lt;del&amp;gt;can be accessed via ssh tech_dev@osgeo3.osgeo.osuosl.org -p 2222  (only people with their access keys installed can log in and doesn't allow password access) - password for tech_dev is in the secure container (on osgeo7) / access folder.&amp;lt;del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup (osgeo5) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;del&amp;gt;Backup now runs on dedicated hardware&amp;lt;del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;Provides Rsync backups of download.osgeo.org&amp;lt;del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;Provides Bacula backups of various VMs.&amp;lt;del&amp;gt;&lt;br /&gt;
* See [[SAC:Backups]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135975</id>
		<title>LLM-based Chat Assistant</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=LLM-based_Chat_Assistant&amp;diff=135975"/>
		<updated>2026-06-05T14:09:28Z</updated>

		<summary type="html">&lt;p&gt;Strk: Create LLM-based Chat Assistant page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An LLM-based chat assistant bot available in the [[Matrix|OSGeo Matrix space]].&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
&lt;br /&gt;
The bot is available in the [[Matrix]] room &amp;lt;code&amp;gt;#lounge:osgeo.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its Matrix identifier is &amp;lt;code&amp;gt;@llm-assitant:matrix.org&amp;lt;/code&amp;gt;.&lt;br /&gt;
The bot responds when mentioned (@llm-assitant:matrix.org) or when a line starts with &amp;lt;code&amp;gt;!oc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
* Host: OSGeo7&lt;br /&gt;
* Container: Gallery&lt;br /&gt;
* Maintainer: [[User:Ominiverdi]]&lt;br /&gt;
* Source: https://github.com/ominiverdi/opencode-chat-bridge&lt;br /&gt;
* Language model: opencode/big-pickle (may change — ask the bot for current info)&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=134801</id>
		<title>SAC:Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=134801"/>
		<updated>2025-11-20T13:39:22Z</updated>

		<summary type="html">&lt;p&gt;Strk: /* Administration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Gitea is an instance of the [https://gitea.io/ Go Git Service] that runs on [[TracSVN]] as part of the [[SAC:Git Service|OSGeo Git Services]].&lt;br /&gt;
&lt;br /&gt;
It can be accessed via https://gitea.osgeo.org/ (login with your [[SAC:LDAP|OSGeo Userid]])&lt;br /&gt;
&lt;br /&gt;
Until September 2025 it was accessible also as https://git.osgeo.org/gitea/ - it should still be for backward compatibility&lt;br /&gt;
&lt;br /&gt;
= Files location and configuration =&lt;br /&gt;
&lt;br /&gt;
It is installed in &amp;lt;code&amp;gt;/home/git/gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its configuration is in the ''custom/'' subdir and controlled via ansible.&lt;br /&gt;
&lt;br /&gt;
Repositories are in &amp;lt;code&amp;gt;/home/git/gitea-repositories&amp;lt;/code&amp;gt; and all files are created as readable for any user in the ''git'' group.&lt;br /&gt;
Apache running user (''www-data'') is made part of the group to allow for browsing ''gitea-managed'' repositories via existing [[Trac_Instances|trac instances]].&lt;br /&gt;
&lt;br /&gt;
Attachment and session data are in &amp;lt;code&amp;gt;/home/git/gitea/data&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is configured to use [[SAC:LDAP|LDAP]] for authentication and ''PostgreSQL'' as the backend, see the configuration for access parameters.&lt;br /&gt;
&lt;br /&gt;
Backups are currently automated for the database and data directory via scripts in &amp;lt;code&amp;gt;/osgeo/backup/&amp;lt;/code&amp;gt; (start from &amp;lt;code&amp;gt;/osgeo/backup/bacula_before.sh&amp;lt;/code&amp;gt;). No repositories are backed up (what's a distributed code version control system worth otherwise?:). Refer to [[SAC:Backups]] for other backup info.&lt;br /&gt;
&lt;br /&gt;
It listens on IP &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; and TCP port &amp;lt;code&amp;gt;3001&amp;lt;/code&amp;gt; via HTTP. Apache is configured to deal with HTTPS and act as a proxy.&lt;br /&gt;
See [[TracSVN]] for info about the apache configuration.&lt;br /&gt;
&lt;br /&gt;
Gitea is built to be composed by a single binary.&lt;br /&gt;
See https://gitea.io/ for more info.&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
At the moment [[User:Strk|Sandro Santilli]] (promoter of the initiative) and Martin Spott have admin privileges from the web UI.&lt;br /&gt;
[[User:Robe|Regina Obe]] and [[Jeff McKenna]] are willing to help.&lt;br /&gt;
&lt;br /&gt;
Server configuration is done via https://gitea.osgeo.org/sac/ansible-deployment&lt;br /&gt;
 (requires login and authorization to see)&lt;br /&gt;
&lt;br /&gt;
As of 2025 we're debating whether to switch to [[Forgejo]] instead&lt;br /&gt;
&lt;br /&gt;
== Starting and stopping the service ==&lt;br /&gt;
&lt;br /&gt;
The service is managed via systemctl:&lt;br /&gt;
&lt;br /&gt;
  - systemctl start gitea&lt;br /&gt;
  - systemctl stop gitea&lt;br /&gt;
  - systemctl restart gitea&lt;br /&gt;
&lt;br /&gt;
= Continuous integration =&lt;br /&gt;
&lt;br /&gt;
A CI server is associated to the hosting service,&lt;br /&gt;
see [[Dronie]] and [[Woodie]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=134800</id>
		<title>SAC:Gitea</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=SAC:Gitea&amp;diff=134800"/>
		<updated>2025-11-20T13:37:40Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Gitea is an instance of the [https://gitea.io/ Go Git Service] that runs on [[TracSVN]] as part of the [[SAC:Git Service|OSGeo Git Services]].&lt;br /&gt;
&lt;br /&gt;
It can be accessed via https://gitea.osgeo.org/ (login with your [[SAC:LDAP|OSGeo Userid]])&lt;br /&gt;
&lt;br /&gt;
Until September 2025 it was accessible also as https://git.osgeo.org/gitea/ - it should still be for backward compatibility&lt;br /&gt;
&lt;br /&gt;
= Files location and configuration =&lt;br /&gt;
&lt;br /&gt;
It is installed in &amp;lt;code&amp;gt;/home/git/gitea&amp;lt;/code&amp;gt;.&lt;br /&gt;
Its configuration is in the ''custom/'' subdir and controlled via ansible.&lt;br /&gt;
&lt;br /&gt;
Repositories are in &amp;lt;code&amp;gt;/home/git/gitea-repositories&amp;lt;/code&amp;gt; and all files are created as readable for any user in the ''git'' group.&lt;br /&gt;
Apache running user (''www-data'') is made part of the group to allow for browsing ''gitea-managed'' repositories via existing [[Trac_Instances|trac instances]].&lt;br /&gt;
&lt;br /&gt;
Attachment and session data are in &amp;lt;code&amp;gt;/home/git/gitea/data&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is configured to use [[SAC:LDAP|LDAP]] for authentication and ''PostgreSQL'' as the backend, see the configuration for access parameters.&lt;br /&gt;
&lt;br /&gt;
Backups are currently automated for the database and data directory via scripts in &amp;lt;code&amp;gt;/osgeo/backup/&amp;lt;/code&amp;gt; (start from &amp;lt;code&amp;gt;/osgeo/backup/bacula_before.sh&amp;lt;/code&amp;gt;). No repositories are backed up (what's a distributed code version control system worth otherwise?:). Refer to [[SAC:Backups]] for other backup info.&lt;br /&gt;
&lt;br /&gt;
It listens on IP &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; and TCP port &amp;lt;code&amp;gt;3001&amp;lt;/code&amp;gt; via HTTP. Apache is configured to deal with HTTPS and act as a proxy.&lt;br /&gt;
See [[TracSVN]] for info about the apache configuration.&lt;br /&gt;
&lt;br /&gt;
Gitea is built to be composed by a single binary.&lt;br /&gt;
See https://gitea.io/ for more info.&lt;br /&gt;
&lt;br /&gt;
= Administration =&lt;br /&gt;
&lt;br /&gt;
At the moment [[User:Strk|Sandro Santilli]] (promoter of the initiative) and Martin Spott have admin privileges from the web UI.&lt;br /&gt;
[[User:Robe|Regina Obe]] and [[Jeff McKenna]] are willing to help.&lt;br /&gt;
&lt;br /&gt;
Server configuration is done via https://gitea.osgeo.org/sac/ansible-deployment&lt;br /&gt;
 (requires login and authorization to see)&lt;br /&gt;
&lt;br /&gt;
== Starting and stopping the service ==&lt;br /&gt;
&lt;br /&gt;
The service is managed via systemctl:&lt;br /&gt;
&lt;br /&gt;
  - systemctl start gitea&lt;br /&gt;
  - systemctl stop gitea&lt;br /&gt;
  - systemctl restart gitea&lt;br /&gt;
&lt;br /&gt;
= Continuous integration =&lt;br /&gt;
&lt;br /&gt;
A CI server is associated to the hosting service,&lt;br /&gt;
see [[Dronie]] and [[Woodie]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]]&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Forgejo&amp;diff=134799</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Forgejo&amp;diff=134799"/>
		<updated>2025-11-20T13:37:13Z</updated>

		<summary type="html">&lt;p&gt;Strk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo was [https://forgejo.org/2022-12-15-hello-forgejo/ created] in October 2022 after a for profit company took over the [[SAC:Gitea|Gitea]] project. It exists under the umbrella of a non-profit organization, Codeberg e.V. and is developed in the interest of the general public. &lt;br /&gt;
&lt;br /&gt;
Comparison with Gitea, as seen by Forgejo: https://forgejo.org/compare-to-gitea/&lt;br /&gt;
&lt;br /&gt;
As of 2025 SAC is [https://trac.osgeo.org/osgeo/ticket/3414 debating] whether we should switch the [[SAC:Git Service|OSGeo Git Services]] over.&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Forgejo&amp;diff=134798</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Forgejo&amp;diff=134798"/>
		<updated>2025-11-20T13:35:30Z</updated>

		<summary type="html">&lt;p&gt;Strk: Created page with &amp;quot;Forgejo was [https://forgejo.org/2022-12-15-hello-forgejo/ created] in October 2022 after a for profit company took over the Gitea project. It exists under the umbrella of...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo was [https://forgejo.org/2022-12-15-hello-forgejo/ created] in October 2022 after a for profit company took over the [[Gitea]] project. It exists under the umbrella of a non-profit organization, Codeberg e.V. and is developed in the interest of the general public. &lt;br /&gt;
&lt;br /&gt;
Comparison with Gitea, as seen by Forgejo: https://forgejo.org/compare-to-gitea/&lt;br /&gt;
&lt;br /&gt;
As of 2025 SAC is [https://trac.osgeo.org/osgeo/ticket/3414 debating] whether we should switch the [[OSGeo Git Service]] over.&lt;/div&gt;</summary>
		<author><name>Strk</name></author>
	</entry>
</feed>