GNUNET.CONF(5)
π gnunet.conf π β GNUnet configuration file
ok bestie, this is the File Formats Manual page for gnunet.conf, section 5, and it's genuinely a whole vibe. let's get into it π«Ά
β¨ NAME β¨
gnunet.conf β GNUnet configuration file
πΈ DESCRIPTION πΈ
so like, a GNUnet setup usually has two little squads of processes: a bunch of service processes that run under a user called "gnunet", and a bunch of user-interface processes that run under your normal everyday account. two friend groups, basically.
the default hangout spot for the services config file is ~gnunet/.config/gnunet.conf. but β and this is the tea β normal users might also need read access to that file, so you might wanna instead put the service process config over in /etc/gnunet.conf. slay.
gnunet-setup(1) β which is part of gnunet-gtk β can edit this config for you, no cap.
the parts of GNUnet that run as a normal user can have config options too, and they read from $HOME/.config/gnunet.conf. that second config file is allowed to just skip any options that belong to the services. it's giving minimal effort, and honestly? valid.
the basic structure of the config file is this:
- the file is split into sections.
- every section begins with a token in square brackets. the current section ends when a new section starts, or when you hit end of file.
- a section contains a number of options of the form
"OPTION=VALUE". - whitespace surrounding the
"="token is stripped out β in other words,"OPTION = VALUE"and"OPTION=VALUE"are treated as equal. - empty lines and lines beginning with a
"#"are treated as comments. - boolean values are given as
"YES"and"NO".
almost all options are optional (iconic behaviour honestly). the tools just resort to reasonable defaults if an option isn't there. default values for all of the options live in the files in the $GNUNET_PREFIX/share/gnunet/config.d/ directory. a typical setup will work out of the box with those. see the examples section below for some common setups on top of that. π
π Variable naming conventions and data types π
boolean values for options are set via "YES" or "NO" values, without the double-quotes.
options which include "PATH" or "path" define a path on the file-system and can take additional variables in the path, such as $GNUNET_TMP.
section names, as listed more in detail below, are small letters only, enclosed by square brackets.
π GENERAL OPTIONS π
many options will be common between sections. they can be repeated under each section with different values. it's giving reusable.
the [PATHS] section is special. here it's possible to specify values for variables like "GNUNET_HOME". then, in all filenames that begin with "$GNUNET_HOME", the "$GNUNET_HOME" will be replaced with the respective value at runtime. the main use of this is to redefine "$GNUNET_HOME", which by default points to $HOME/.config/. by setting this variable, you can change the location where GNUnet stores its internal data. main character energy fr.
gnunet.conf also accepts the variable GNUNET_TMP, which we suggest you use in place of the absolute definition of /tmp. so instead of /tmp/foo you would write $GNUNET_TMP/foo. the usage of $GNUNET_TMP/foo will result in $TMPDIR/gnunet/foo, or $TMP/gnunet/foo, and finally, if TMPDIR is undefined, /tmp/gnunet/foo.
the following options are generic and shared by all services:
HOSTNAMEβ the hostname specifies the machine on which the service is running. this is usually"localhost".BINARYβ the filename that implements the service. for example"gnunet-service-ats".IMMEDIATE_STARTβ start the service always when the peer starts. set to YES for services that should always be launched, even if no other service explicitly needs them.START_ON_DEMANDβ set to YES to automatically start the service when it is requested by another service. YES for most GNUnet services.NOARMBINDβ set to YES to never have ARM bind to the respective socket. this option is mostly for debugging in situations where ARM cannot pass the pre-bound socket to the child due to interference from PREFIX-commands. this option is only effective in combination withIMMEDIATE_STARTbeing YES. NO by default.PREFIXβ PREFIX the given command (with its arguments) to the actual BINARY to be executed. useful to run certain services under special supervisors likestrace,dtrace, orvalgrind. typically used in combination withIMMEDIATE_STARTandNOARMBIND. empty by default.ACCEPT_FROMβ a semi-column separated list of IPv4 addresses that are allowed to use the service; usually127.0.0.1.ACCEPT_FROM6β a semi-column separated list of IPv6 addresses that are allowed to use the service; usually::1.UNIXPATHβ path to use for the UNIX domain socket for inter process communication with the service on POSIX systems.UNIX_MATCH_UIDβ if UNIX domain sockets are used, set this to YES if only users with the same UID are allowed to access the service.UNIX_MATCH_GIDβ if UNIX domain sockets are used, set this to YES if only users with the same GID are allowed to access the service.RUN_PER_USERβ end-users should never have to change the defaults GNUnet provides for this option.YESβ set to YES if this service should be run per-user.NOβ set to NO if this is a system service.
in the following sections, the absence of a default value is either expressed as "Default value:" followed by nothing, or the lack of this line. (mysterious. we love a little enigma π)
π§ ARM π§
PORTβ Default value:2087HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-armACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;UNIXPATHβ special case, uses user runtime dir even for per-system service.- Default value:
$GNUNET_USER_RUNTIME_DIR/gnunet-service-arm.sock
- Default value:
UNIX_MATCH_UIDβ Default value:YESUNIX_MATCH_GIDβ Default value:YESGLOBAL_POSTFIXβ in the-loption, format characters fromstrftime(3)are allowed; in theGLOBAL_POSTFIX,"{}"stands for the name of the respective service. so the following example for this option would introduce per-service logging with a new log file each day. note that only the last 3 log files are preserved. example:
-l $GNUNET_CACHE_HOME/{}-%Y-%m-%d.log
Default value:
GLOBAL_PREFIXβ Default value:START_SYSTEM_SERVICESβ if set to YES, ARM will only start services that are marked as system-level services (and we'll expect a second ARM to be run per-user to run user-level services). note that in this case you must have manually created a different configuration file with the user where at least this and theSTART_USER_SERVICESoptions differ.START_USER_SERVICESβ if set to YES, ARM will only start services that are marked as per-user services (and we'll expect a system user to run ARM to provide system-level services). per-user services enable better personalization and privilege separation and in particular ensures that personal data is stored under$HOME, which might be important in a multi-user system (or if$HOMEis encrypted and/var/is not).
note that if you have different ARM services for SYSTEM and USER, and you are not on UNIX, you need to change the PORT option for the USER ARM instances to some free port (counting down from 2085 should provide free ports).
RESOURCE_DIAGNOSTICSβ file where we should log per-service resource consumption on exit.- Default value:
resource.log
- Default value:
USERNAMEβ name of the user that will be used to provide the service.- Default value:
MAXBUFβ Default value:TIMEOUTβ Default value:DISABLEV6β Default value:BINDTOβ Default value:REJECT_FROMβ Default value:REJECT_FROM6β Default value:PREFIXβ Default value:
π¦ ATS π¦
PORTβ Default value:2098HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-atsACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;UNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-service-ats.sockUNIX_MATCH_UIDβ Default value:NOUNIX_MATCH_GIDβ Default value:YESMODEβ designated assignment mode. possible values:PROPORTIONAL,MLP,RIL.- Default value:
proportional
- Default value:
UNSPECIFIED_QUOTA_INβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:64 KiBUNSPECIFIED_QUOTA_OUTβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:64 KiBLOOPBACK_QUOTA_INβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:unlimitedLOOPBACK_QUOTA_OUTβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:unlimitedLAN_QUOTA_INβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:unlimitedLAN_QUOTA_OUTβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:unlimitedWAN_QUOTA_INβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:64 KiBWAN_QUOTA_OUTβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:64 KiBWLAN_QUOTA_INβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:1 MiBWLAN_QUOTA_OUTβ quotes in KiB or MiB per seconds. or use the word"unlimited". Default value:1 MiBBLUETOOTH_QUOTA_INβ Default value:128 KiBBLUETOOTH_QUOTA_OUTβ Default value:128 KiBPROP_PROPORTIONALITY_FACTORβ how proportional to preferences is bandwidth distribution in a network? Default value:2.001.0β fair with respect to addresses without preferences.> 1.0β the bigger, the more respect is paid to preferences.
PROP_STABILITY_FACTORβ should we stick to existing connections or prefer to switch? [1.0...2.0], lower value prefers to switch, bigger value is more tolerant.- Default value:
1.25
- Default value:
MLP_MAX_DURATIONβ maximum duration for a solution process (both LP and MILP). Default value:3 s
ok wait, don't go anywhere, bestie β there's more of this page coming π
okay bestie, we're still in the config zone and it's giving so many knobs π β¨ first up, the MLP crew:
MLP_MAX_ITERATIONSβ Maximum numbero of iterations for a solution process (only LP). Tolerated MIP Gap [0.0 .. 1.0]. Default value:0.025MLP_MAX_MIP_GAPβ Tolerated LP/MIP Gap [0.0 .. 1.0]. Default value:0.025MLP_MAX_LP_MIP_GAPβ Default value:0.025MLP_MAX_ITERATIONSβ Maximum number of iterations for a solution process. Default value:1024(yes, it shows up twice, that's literally what the page says π)MLP_COEFFICIENT_Dβ Default value:1.0MLP_COEFFICIENT_Uβ Default value:1.0MLP_COEFFICIENT_Rβ Default value:1.0MLP_MIN_BANDWIDTHβ Default value:1024MLP_MIN_CONNECTIONSβ Default value:4MLP_DUMP_PROBLEM_ALLβ Dump all problems to disk. Default value:YESMLP_DUMP_SOLUTION_ALLβ Dump all solution to disk. Default value:YESMLP_GLPK_VERBOSEβ Print GLPK output. Default value:YESMLP_DUMP_PROBLEM_ON_FAILβ Dump all problems to disk. Default value:YESMLP_DUMP_SOLUTION_ON_FAILβ Dump all solution to disk. Default value:YES
and now the RIL era, no cap:
RIL_STEP_TIME_MINβ Default value:500 msRIL_STEP_TIME_MAXβ Default value:1000 msRIL_ALGORITHMβ Possible values:SARSAorQ-LEARNING. Default value:Q-LEARNINGRIL_DISCOUNT_BETAβ Default value:0.7RIL_GRADIENT_STEP_SIZEβ Default value:0.3RIL_TRACE_DECAYβ Default value:0.2RIL_EXPLORE_RATIOβ Default value:0.1RIL_GLOBAL_REWARD_SHAREβ Default value:1
π AUCTION π
(empty β no options listed, just vibes β¨)
π CADET π
IMMEDIATE_STARTβ Default value:YESSTART_ON_DEMANDβ Default value:YESPORTβ Default value:2096HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-cadetPREFIXβ (empty β no default listed)ACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;UNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-service-cadet.sockUNIX_MATCH_UIDβ Default value:NOUNIX_MATCH_GIDβ Default value:YESREFRESH_CONNECTION_TIMEβ How often do we send KEEPALIVE messages on connections to keep them from timing out? Default value:5 minDROP_PERCENTβ Percentage of packets CADET is artificially dropping. Used for testing only! (no default listed)ID_ANNOUNCE_TIMEβ How frequently do we usually announce our presence in the DHT? Default value:1 hCONNECT_TIMEOUTβ Default value:30 sDHT_REPLICATION_LEVELβ What is the replication level we give to the DHT when announcing our existence? Usually there is no need to change this. Default value:3MAX_TUNNELSβ Not implemented Default value:1000MAX_CONNECTIONSβ Not implemented, replaced byMAX_ROUTESin NEW CADET! Default value:1000MAX_ROUTESβ How many routes do we participate in at most? Should be smaller thanMAX_MSGS_QUEUE. Default value:5000MAX_MSGS_QUEUEβ Not implemented Default value:10000MAX_PEERSβ Not implemented Default value:1000RATCHET_TIMEβ How often do we advance the ratchet even if there is not any traffic? Default value:1 hRATCHET_MESSAGESβ How often do we advance the ratched if there is traffic? Default value:64
π COMMUNICATOR-UNIX π
UNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-communicator-unix.sock
π CONSENSUS π
START_ON_DEMANDβ Default value:YESPORTβ Default value:2103HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-consensusACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;UNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-service-consensus.sockUNIX_MATCH_UIDβ Default value:YESUNIX_MATCH_GIDβ Default value:YES
π CORE π
START_ON_DEMANDβ Default value:YESPORTβ Default value:2092HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-coreACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;UNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-service-core.sockUNIX_MATCH_UIDβ Default value:NOUNIX_MATCH_GIDβ Default value:YESDISABLE_SOCKET_FORWARDINGβ Default value:NOUSERNAMEβ (empty β no default listed)MAXBUFβ (empty β no default listed)TIMEOUTβ (empty β no default listed)DISABLEV6β (empty β no default listed)BINDTOβ (empty β no default listed)REJECT_FROMβ (empty β no default listed)REJECT_FROM6β (empty β no default listed)PREFIXβ (empty β no default listed)USE_EPHEMERAL_KEYSβ Default value:YESThis MUST be set toYESin production, only set toNOfor testing for performance (testbed/cluster-scale use!).
π DATACACHE-POSTGRES π
CONFIGβ Default value:postgres:///gnunet
π DATASTORE π
START_ON_DEMANDβ Default value:YESUNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-service-datastore.sockUNIX_MATCH_UIDβ Default value:NOUNIX_MATCH_GIDβ Default value:YESPORTβ Default value:2093HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-datastoreACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;QUOTAβ Default value:5 GBBLOOMFILTERβ Default value:$GNUNET_DATA_HOME/datastore/bloomfilterDATABASEβ Default value:sqliteDISABLE_SOCKET_FORWARDINGβ Default value:NO
π DATASTORE-SQLITE π
FILENAMEβ Default value:$GNUNET_DATA_HOME/datastore/sqlite.db
π DATASTORE-POSTGRES π
CONFIGβ Default value:postgres:///gnunet
π DATASTORE-MYSQL π
DATABASEβ Default value:gnunetCONFIGβ Default value:~/.my.cnfUSERβ Default value:gnunetPASSWORDβ (empty β no default listed)HOSTβ Default value:localhostPORTβ Default value:3306
π DATASTORE-HEAP π
HASHMAPSIZEβ Default value:1024
π DHT π
IMMEDIATE_STARTboolean β Default value:YESSTART_ON_DEMANDboolean β Default value:YESPORTinteger β Default value:2095HOSTNAMEstring β Default value:localhostBINARYstring β Default value:gnunet-service-dhtACCEPT_FROMstring β Default value:127.0.0.1;ACCEPT_FROM6string β Default value:::1;BUCKET_SIZEinteger β Default value:4UNIXPATHpath β Default value:$GNUNET_RUNTIME_DIR/gnunet-service-dht.sockUNIX_MATCH_UIDboolean β Default value:NOUNIX_MATCH_GIDboolean β Default value:YESDISABLE_SOCKET_FORWARDINGboolean β Default value:NOUSERNAMEβ=MAXBUFβ=TIMEOUTβ=DISABLEV6β=BINDTOβ=REJECT_FROMβ=REJECT_FROM6β=PREFIXβ=CACHE_RESULTSβYES# Should the DHT cache results that we are routing in the DATACACHE as well?DISABLE_TRY_CONNECTβNO# Special option to disable DHT calling 'try_connect' (for testing)
π DHTCACHE π
DATABASEβ Default value:heapQUOTAβ Default value:50 MBDISABLE_BF_RCboolean β Disable RC-file for Bloom filter? (for benchmarking with limited IO availability) Default value:NO
π EXIT π
(empty β no options listed)
π FS π
(empty β no options listed)
π GNS π
(empty β no options listed)
π HOSTLIST π
(empty β no options listed)
π IDENTITY π
(empty β no options listed)
π NAMECACHE π
(empty β no options listed)
π NAMESTORE π
(empty β no options listed)
π NAT-AUTO π
(empty β no options listed)
π NAT π
(empty β no options listed)
π NSE π
(empty β no options listed)
π PEERINFO π
(empty β no options listed)
π PEERSTORE π
(empty β no options listed)
π PT π
(empty β no options listed)
π REGEX π
(empty β no options listed)
π RESOLVER π
(empty β no options listed)
π REST π
UNIXPATHβ Default value:$GNUNET_USER_RUNTIME_DIR/gnunet-service-rest.sockBINARYβ Default value:gnunet-rest-serverBIND_TOβ Default value:127.0.0.1BIND_TO6β Default value:::1REST_PORTβ Default value:7776REST_ALLOW_HEADERSβ Default value:Authorization,Accept,Content-TypeREST_ALLOW_ORIGINβ Default value:*REST_ALLOW_CREDENTIALSβ Default value:true
π REVOCATION π
(empty β no options listed)
π SCALARPRODUCT π
(empty β no options listed)
π SECRETSHARING π
(empty β no options listed)
π SET π
(empty β no options listed)
π STATISTICS π
(empty β no options listed)
π TEMPLATE π
(empty β no options listed)
π TESTBED-LOGGER π
(empty β no options listed)
π TESTBED π
(empty β no options listed)
π TESTING π
(empty β no options listed)
π TOPOLOGY π
IMMEDIATE_STARTβ Default value:YESNOARMBINDβ Default value:YESMINIMUM-FRIENDSβ Default value:0FRIENDS-ONLYβ Default value:NOTARGET-CONNECTION-COUNTβ Default value:16FRIENDSβ Default value:$GNUNET_CONFIG_HOME/topology/friends.txtBINARYβ Default value:gnunet-daemon-topology
π TRANSPORT π
(empty β no options listed)
π UTIL π
(empty β no options listed)
π VPN π
START_ON_DEMANDβ Default value:YESPORTβ Default value:2105HOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-vpnACCEPT_FROMβ Default value:127.0.0.1;ACCEPT_FROM6β Default value:::1;UNIXPATHβ Default value:$GNUNET_RUNTIME_DIR/gnunet-service-vpn.sockUNIX_MATCH_UIDβ Default value:NOUNIX_MATCH_GIDβ Default value:YESIPV6ADDRβ Default value:1234::1IPV6PREFIXβ Default value:32IPV4ADDRβ Default value:10.11.10.1IPV4MASKβ Default value:255.255.0.0VIRTDNSβ Default value:10.11.10.2VIRTDNS6β Default value:1234::17IFNAMEβ Default value:vpn-gnunet
π ZONEMASTER π
START_ON_DEMANDβ Default value:YESIMMEDIATE_STARTβ Default value:YESHOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-zonemasterUNIXPATHβ Default value:$GNUNET_USER_RUNTIME_DIR/gnunet-service-zonemaster.sockPORTβ Default value:2123UNIX_MATCH_UIDβ Do we require users that want to access GNS to run this process (usually not a good idea)? Default value:NOUNIX_MATCH_GIDβ Do we require users that want to access GNS to be in the 'gnunet' group? Default value:NOMAX_PARALLEL_BACKGROUND_QUERIESβ How many queries is GNS allowed to perform in the background at the same time? Default value:1000ZONE_PUBLISH_TIME_WINDOWβ How frequently do we try to publish our full zone? Default value:4 hUSE_CACHEβ Using caching or always ask DHT? Default value:YESPREFIXβ (empty β no default listed)
π ZONEMASTER-MONITOR π
START_ON_DEMANDβ Default value:YESIMMEDIATE_STARTβ Default value:YESHOSTNAMEβ Default value:localhostBINARYβ Default value:gnunet-service-zonemaster-monitorUNIXPATHβ Default value:$GNUNET_USER_RUNTIME_DIR/gnunet-service-zonemaster-monitor.sockPORTβ Default value:2124UNIX_MATCH_UIDβ Do we require users that want to access GNS to run this process (usually not a good idea)? Default value:NOUNIX_MATCH_GIDβ Do we require users that want to access GNS to be in the 'gnunet' group? Default value:NO
π EXAMPLES π
okay so this example is the lil starter pack: it uses a server with a known peer list to get you going. Most of y'all are behind an IPv4 firewall, so NAT is on. Please remember to swap your IP for your actual external address, bestie. π
[hostlist]
OPTIONS = -b -e
[nat]
BEHIND_NAT = YES
ENABLE_UPNP = YES
DISABLEV6 = YES
EXTERNAL_ADDRESS = 157.166.249.10
[arm]
START_SYSTEM_SERVICES = YES
START_USER_SERVICES = NO
π FILES π
~gnunet/.config/gnunet.confβ GNUnet system-user configuration file$HOME/.config/gnunet.confβ User specific GNUnet configuration file/etc/gnunet.confβ Systemwide GNUnet configuration file$GNUNET_PREFIX/share/gnunet/config.d/β GNUnet configuration directory with all default option values
π SEE ALSO π
okay bestie, you made it to the end, let's get you some more reading material because you're clearly a scholar π
env(1)β for when you want to vibe-check the environment variables, iykyk πΈgnunet-arm(1)β the ARM service, aka the one who actually starts and stops all your GNUnet services πgnunet-setup(1)β the config wizard, for when hand-editing this file is giving too much πstrftime(3)β because a bunch of the time/date formats in this config speak strftime, no cap β¨
The full documentation for gnunet is maintained as a Texinfo manual. So like, this page? It's a vibe, but it's not the whole lore π
If the info(1) and gnunet programs are properly installed at your site, this command:
info gnunet
should give you access to the complete handbook πβ¨
and this one:
info gnunet-c-tutorial
will give you access to a tutorial for developers π§ (yes, you too can become a GNUnet dev, main character energy fr fr)
Depending on your installation, this information is also available in gnunet(7) and gnunet-c-tutorial(7) β so peek there too if the info command is ghosting you π«Ά
π BUGS π
Found something cursed? Not me pretending I didn't see it β please actually tell the devs! π
Report bugs by using https://bugs.gnunet.org or by sending electronic mail to β¨gnunet-developers@gnu.orgβ© π
ngl, bug reports are literally a love language. Don't be shy, they want to hear from you π
and that's a wrap on GNUNET.CONF(5) bestie!! π This page came from the Debian project, dated October 26, 2018, and it's the GNUNET.CONF(5) manual page in all its glory π go forth, edit your config, and slay β¨π
π
π¦ where this page comes from
- alpine 3.24: gnunet-doc 0.27.0-r0 Β· AGPL-3.0-only
- debian bookworm: gnunet 0.19.3-2 Β· AGPL-3.0-or-later
- debian trixie: gnunet 0.20.0-7 Β· AGPL-3.0-or-later
- opensuse-leap 16.0: gnunet 0.23.1-bp160.1.18 Β· AGPL-3.0-or-later
- opensuse-leap 16.0: gnunet 0.23.1-bp160.1.18 Β· AGPL-3.0-or-later
- opensuse-leap 16.0: gnunet 0.23.1-bp160.1.18 Β· AGPL-3.0-or-later
- opensuse-leap 16.0: gnunet 0.23.1-bp160.1.18 Β· AGPL-3.0-or-later
- ubuntu jammy: gnunet 0.15.3-4 Β· AGPL-3.0-or-later
- ubuntu noble: gnunet 0.20.0-4.1build3 Β· AGPL-3.0-or-later
- ubuntu questing: gnunet 0.20.0-7
- ubuntu resolute: gnunet 0.20.0-8 Β· AGPL-3.0-or-later
- ubuntu stonking: gnunet 0.20.0-9 Β· AGPL-3.0-or-later
- π the page's license: GPL3.0-or-later OR FDL1.3-or-later
- Copyright (C) 2012-2015,2018,2019 GNUnet e.V
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms