<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ampr.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KN6DWI</id>
	<title>44Net Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ampr.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KN6DWI"/>
	<link rel="alternate" type="text/html" href="https://wiki.ampr.org/wiki/Special:Contributions/KN6DWI"/>
	<updated>2026-10-13T11:48:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3125</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3125"/>
		<updated>2026-10-08T22:37:38Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Describe how to connect using DroidStar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; is not recommended, but it can still be used. It will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a 44Net Connect split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt; The &amp;lt;code&amp;gt;/opt/allstarlink&amp;lt;/code&amp;gt; directory is not automatically created. Make it with &amp;lt;code&amp;gt;sudo mkdir /opt/allstarlink&amp;lt;/code&amp;gt; before placing the file there.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing these files, make the script executable by running &amp;lt;code&amp;gt;sudo chmod +x /opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;, then enable the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit with &amp;lt;code&amp;gt;sudo systemctl enable asl-st-routing-service --now&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Step 5: Verify functionality ==&lt;br /&gt;
=== asl-node-auth-check ===&lt;br /&gt;
AllStarLink comes with the &amp;lt;code&amp;gt;asl-node-auth-check&amp;lt;/code&amp;gt; utility that automatically evaluates your connection and registration status. It must be run as superuser. SSH into your ASL3 node and run &amp;lt;code&amp;gt;sudo asl-node-auth-check&amp;lt;/code&amp;gt;. If there are no errors, your node is correctly registered. Warnings should be addressed if possible. &lt;br /&gt;
&lt;br /&gt;
Split tunnel users may see a warning that their node is not perceived as registered, but this is acceptable as long as the node functionality is not impaired. Node functionality will be assessed in the next section by connecting with a VoIP app. If the split tunnel or firewall are incorrectly configured, there may be HTTP connection errors. &lt;br /&gt;
&lt;br /&gt;
=== VoIP: Droidstar===&lt;br /&gt;
Connectivity can be verified by connecting to your AllStarLink node with a VoIP app. People with android phones can use Droidstar with the following steps: &lt;br /&gt;
&lt;br /&gt;
# Install DroidStar from the Google Play store &lt;br /&gt;
# Obtain your node&#039;s password from [https://www.allstarlink.org/portal/nodes.php the AllStarLink portal]&lt;br /&gt;
# Go to DroidStar settings, and configure your callsign and ASL password. &lt;br /&gt;
# Go to the Hosts tab and add a line that says &amp;lt;code&amp;gt;IAX &amp;lt;node number&amp;gt; wt&amp;lt;/code&amp;gt;. &lt;br /&gt;
# Go to the Main tab, select IAX using the drop-down menu at the top, and select your node number using the drop-down menu under the mode menu. Press connect, and it should connect in a few seconds. &lt;br /&gt;
&lt;br /&gt;
If connection is successful, the button will change to &amp;quot;Connected&amp;quot; and through your client you&#039;ll hear the node announce your connection. &lt;br /&gt;
If DroidStar remains &amp;quot;Connecting&amp;quot; for more than 30 seconds, you probably have a configuration issue.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
AllStarLink has a [https://allstarlink.github.io/user-guide/troubleshooting/ troubleshooting guide]. This section includes additional troubleshooting tools, and does not reiterate any of the officially recommended methods. &lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3124</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3124"/>
		<updated>2026-10-08T18:25:28Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Described usagee of asl-node-auth-check&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; is not recommended, but it can still be used. It will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a 44Net Connect split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt; The &amp;lt;code&amp;gt;/opt/allstarlink&amp;lt;/code&amp;gt; directory is not automatically created. Make it with &amp;lt;code&amp;gt;sudo mkdir /opt/allstarlink&amp;lt;/code&amp;gt; before placing the file there.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing these files, make the script executable by running &amp;lt;code&amp;gt;sudo chmod +x /opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;, then enable the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit with &amp;lt;code&amp;gt;sudo systemctl enable asl-st-routing-service --now&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Step 5: Verify functionality ==&lt;br /&gt;
=== asl-node-auth-check ===&lt;br /&gt;
AllStarLink comes with the &amp;lt;code&amp;gt;asl-node-auth-check&amp;lt;/code&amp;gt; utility that automatically evaluates your connection and registration status. It must be run as superuser. SSH into your ASL3 node and run &amp;lt;code&amp;gt;sudo asl-node-auth-check&amp;lt;/code&amp;gt;. If there are no errors, your node is correctly registered. Warnings should be addressed if possible. &lt;br /&gt;
&lt;br /&gt;
Split tunnel users may see a warning that their node is not perceived as registered, but this is acceptable as long as the node functionality is not impaired. Node functionality will be assessed in the next section by connecting with a VoIP app. If the split tunnel or firewall are incorrectly configured, there may be HTTP connection errors. &lt;br /&gt;
&lt;br /&gt;
=== VoIP app ===&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
AllStarLink has a [https://allstarlink.github.io/user-guide/troubleshooting/ troubleshooting guide]. This section includes additional troubleshooting tools, and does not reiterate any of the officially recommended methods. &lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3123</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3123"/>
		<updated>2026-10-08T18:03:27Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created verify and troubleshooting sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; is not recommended, but it can still be used. It will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a 44Net Connect split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt; The &amp;lt;code&amp;gt;/opt/allstarlink&amp;lt;/code&amp;gt; directory is not automatically created. Make it with &amp;lt;code&amp;gt;sudo mkdir /opt/allstarlink&amp;lt;/code&amp;gt; before placing the file there.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing these files, make the script executable by running &amp;lt;code&amp;gt;sudo chmod +x /opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;, then enable the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit with &amp;lt;code&amp;gt;sudo systemctl enable asl-st-routing-service --now&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
== Step 5: Verify functionality ==&lt;br /&gt;
=== asl-node-auth-check ===&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
AllStarLink has a [https://allstarlink.github.io/user-guide/troubleshooting/ troubleshooting guide]. This section includes additional troubleshooting tools, and does not reiterate any of the officially recommended methods. &lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3122</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3122"/>
		<updated>2026-10-08T00:50:30Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Phrasing edit to callout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; is not recommended, but it can still be used. It will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a 44Net Connect split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt; The &amp;lt;code&amp;gt;/opt/allstarlink&amp;lt;/code&amp;gt; directory is not automatically created. Make it with &amp;lt;code&amp;gt;sudo mkdir /opt/allstarlink&amp;lt;/code&amp;gt; before placing the file there.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing these files, make the script executable by running &amp;lt;code&amp;gt;sudo chmod +x /opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;, then enable the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit with &amp;lt;code&amp;gt;sudo systemctl enable asl-st-routing-service --now&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3121</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3121"/>
		<updated>2026-10-08T00:14:25Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Specified 44Net Connect split tunnel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a 44Net Connect split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt; The &amp;lt;code&amp;gt;/opt/allstarlink&amp;lt;/code&amp;gt; directory is not automatically created. Make it with &amp;lt;code&amp;gt;sudo mkdir /opt/allstarlink&amp;lt;/code&amp;gt; before placing the file there.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing these files, make the script executable by running &amp;lt;code&amp;gt;sudo chmod +x /opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;, then enable the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit with &amp;lt;code&amp;gt;sudo systemctl enable asl-st-routing-service --now&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3120</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3120"/>
		<updated>2026-10-08T00:05:49Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instruct users to make the script executable and enable the systemd unit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt; The &amp;lt;code&amp;gt;/opt/allstarlink&amp;lt;/code&amp;gt; directory is not automatically created. Make it with &amp;lt;code&amp;gt;sudo mkdir /opt/allstarlink&amp;lt;/code&amp;gt; before placing the file there.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing these files, make the script executable by running &amp;lt;code&amp;gt;sudo chmod +x /opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;, then enable the &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit with &amp;lt;code&amp;gt;sudo systemctl enable asl-st-routing-service --now&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3119</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3119"/>
		<updated>2026-10-07T23:59:44Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Included systemd unit and accompanying script for split tunnel configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Maintains rules that route traffic to AllStarLink domains through the 44Net split tunnel&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Before=asterisk.service allmon3.service&lt;br /&gt;
&lt;br /&gt;
# Change this to the name of your split tunnel service&lt;br /&gt;
Requires=wg-quick@wg0-st.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=exec&lt;br /&gt;
&lt;br /&gt;
# Make sure you copy the script to this path exactly, or change the path here&lt;br /&gt;
ExecStart=/opt/allstarlink/st-routing-watchdog.sh&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit depends on the following script being placed in &amp;lt;code&amp;gt;/opt/allstarlink/st-routing-watchdog.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Change this if you use a different routing table for your WireGuard interface&lt;br /&gt;
WG_TABLE=51820&lt;br /&gt;
&lt;br /&gt;
# Initialize variables&lt;br /&gt;
REGISTER_IPS=&amp;quot;&amp;quot;&lt;br /&gt;
STATS_IP=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
del_rules () {&lt;br /&gt;
ip rule del to $1 lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule del to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$1&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup () {&lt;br /&gt;
echo &#039;Received $1, cleaning up rules and exiting.&#039;&lt;br /&gt;
del_rules &amp;quot;$2&amp;quot; &amp;quot;$3&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
while&lt;br /&gt;
# Note that there are multiple IPs for register.allstarlink.org&lt;br /&gt;
REGISTER_IPS_NEW=$(dig +short register.allstarlink.org)&lt;br /&gt;
STATS_IP_NEW=$(dig +short stats.allstarlink.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$REGISTER_IPS_NEW&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Ensure records are not null&lt;br /&gt;
if [[ $REGISTER_IPS_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for register.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
if [[ $STATS_IP_NEW == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
echo &amp;quot;DNS resolution error for stats.allstarlink.org&amp;quot;&lt;br /&gt;
exit 2&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Fetch TTLs for DNS A records&lt;br /&gt;
REGISTER_TTL=$(dig register.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
STATS_TTL=$(dig stats.allstarlink.org | grep &amp;quot;ANSWER SECTION&amp;quot; -A1 | awk &#039;NR==2{print $2}&#039;)&lt;br /&gt;
echo &amp;quot;register.allstarlink.org resolves to  $REGISTER_IP_NEW&amp;quot;&lt;br /&gt;
echo &amp;quot;stats.allstarlink.org resolves to     $STATS_IP_NEW&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;TTL of register.allstarlink.org:      $REGISTER_TTL&amp;quot;&lt;br /&gt;
echo &amp;quot;TTL of stats.allstarlink.org:         $STATS_TTL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Use smaller of the two TTLs&lt;br /&gt;
if (( REGISTER_TTL &amp;gt; STATS_TTL )); then&lt;br /&gt;
FINAL_TTL=$STATS_TTL&lt;br /&gt;
else&lt;br /&gt;
FINAL_TTL=$REGISTER_TTL&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# If new IPs don&#039;t match old IPs, replace rules.&lt;br /&gt;
if [[ $REGISTER_IPS == $REGISTER_IPS_NEW &amp;amp;&amp;amp; $STATS_IP == $STATS_IP_NEW ]]; then&lt;br /&gt;
echo &amp;quot;IPs have not changed. Rules will not be updated.&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;IPs have changed. Updating rules.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create routing rules&lt;br /&gt;
# Putting this before deletion of old rules to prevent race condition routing leakage.&lt;br /&gt;
# This while loop to read each line from REGISTER_IPS_NEW is from&lt;br /&gt;
# https://superuser.com/questions/284187/how-to-iterate-over-lines-in-a-variable-in-bash&lt;br /&gt;
while IFS= read -r line || [[ -n $line ]]; do&lt;br /&gt;
ip rule add to $line lookup $WG_TABLE&lt;br /&gt;
done &amp;lt; &amp;lt;(printf &#039;%s&#039; &amp;quot;$REGISTER_IPS_NEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
ip rule add to $STATS_IP_NEW lookup $WG_TABLE&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t try to delete old rules on first iteration bc they don&#039;t exist yet&lt;br /&gt;
if [[ $REGISTER_IP != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
REGISTER_IPS=$REGISTER_IPS_NEW&lt;br /&gt;
STATS_IP=$STATS_IP_NEW&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
# Delete routes when program is stopped&lt;br /&gt;
# TODO: Invoke cleanup function here to clean up all register rules&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGINT, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGINT&lt;br /&gt;
&lt;br /&gt;
trap &#039;echo &amp;quot;Received SIGTERM, cleaning up rules and exiting.&amp;quot;; \&lt;br /&gt;
del_rules $STATS_IP $REGISTER_IPS&#039; SIGTERM&lt;br /&gt;
&lt;br /&gt;
# Sleep for duration of TTL&lt;br /&gt;
echo &amp;quot;Sleeping for $FINAL_TTL seconds&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
sleep $FINAL_TTL&lt;br /&gt;
&lt;br /&gt;
do true; done&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3117</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3117"/>
		<updated>2026-10-02T23:13:46Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Described necessary systemd unit (but not included yet bc the unit is WIP)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS. The following &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit will do this. Place it in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3116</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3116"/>
		<updated>2026-10-02T00:02:24Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Discuss special considerations for split tunnel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel Single Device Tunnel tutorials list], and follow the quick start tutorial for your distribution.&lt;br /&gt;
&lt;br /&gt;
=== Optional: Split Tunnel ===&lt;br /&gt;
There are special considerations for operating a split tunnel on a device with AllStarLink. Nodes register with the central coordination server and report statistics by contacting &amp;lt;code&amp;gt;register.allstarlink.org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stats.allstarlink.org&amp;lt;/code&amp;gt;. For the node to be registered with your static 44Net IP, these communications must go out through your VPN tunnel, which by by default they will not. These domains don&#039;t have static IPs, so you&#039;ll need to deploy a watchdog service to create and update routing rules based on the DNS records.&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3115</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3115"/>
		<updated>2026-10-01T22:58:23Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added permanent flags and reminder to reload firewall to firewalld section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2 --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp --permanent &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp --permanent&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve added your services or ports, don&#039;t forget to reload your firewall:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo firewall-cmd --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3114</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3114"/>
		<updated>2026-10-01T22:37:11Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Fix link formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [https://allstarlink.github.io/basics/portal/ instructions for the sign up process]. They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3113</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3113"/>
		<updated>2026-10-01T22:09:45Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Tell user that rules can be created before the WG interface&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These rules can be entered before the 44Net Connect WireGuard interface is actually created, but they won&#039;t work until a WireGuard interface is created with exactly the same name. The WireGuard interface will be named after the config file used to create it, so &amp;lt;code&amp;gt;wg0.conf&amp;lt;/code&amp;gt; would create the interface &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3112</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3112"/>
		<updated>2026-10-01T18:59:47Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote instructions for firewall rule configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
=== firewalld ===&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions. Your 44Net Connect zone must have the &amp;lt;code&amp;gt;iax2&amp;lt;/code&amp;gt; service added for AllStar to function. If you&#039;re accepting EchoLink connections, the &amp;lt;code&amp;gt;echolink&amp;lt;/code&amp;gt; service must also be added. That can be done with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039;&amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service iax2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-service echolink&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users of the non-appliance version should open &amp;lt;code&amp;gt;UDP 4560-4580&amp;lt;/code&amp;gt; for IAX2, and &amp;lt;code&amp;gt;5198-5199&amp;lt;/code&amp;gt; for EchoLink. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 4560-4580/udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo firewall-cmd --zone &amp;lt;your zone here&amp;gt; --add-port 5189-5199/udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw ===&lt;br /&gt;
{{Info|Note|&amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; is the recommended firewall software for devices with 44Net Connect software, because its abstraction of zones makes secure configuration easier to set up and understand. &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; can still be used, but it will be more involved due to lacking zones. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; rules allowing IAX2 and EchoLink can be entered as follows:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IAX2:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 4560-4580 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Echolink:&#039;&#039;&#039; &amp;lt;code&amp;gt;sudo ufw allow in on &amp;lt;44net wireguard interface&amp;gt; to any port 5189-5199 proto udp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3111</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3111"/>
		<updated>2026-09-30T23:35:39Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Started section on configuring firewall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
{{Info|Warn|When using a 44Net Connect tunnel with AllStarLink and &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;, don&#039;t put the 44Net WireGuard interface in the &amp;lt;code&amp;gt;allstarlink&amp;lt;/code&amp;gt; zone provided by the appliance. This will make your web management interface publicly available on the internet. Instead, create a 44Net zone, and add the requisite services to that zone.}}&lt;br /&gt;
&lt;br /&gt;
For security, the firewall should be configured before bringing up the VPN tunnel. The AllStarLink manual has [https://allstarlink.github.io/adv-topics/44net-connect/ a page about 44Net Connect] with recommendations for firewall configuration. If you installed one of the appliance packages, it comes with custom &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt; service definitions.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3110</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3110"/>
		<updated>2026-09-30T23:08:19Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Mentioned how to add ASL3 appliance to existing Pi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.] This guide is primarily for flashing a fresh image on your Pi. If you want to add an ASL3 appliance to an existing Pi, follow the steps for the Debian appliance.&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Talk:AllStarLink&amp;diff=3109</id>
		<title>Talk:AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Talk:AllStarLink&amp;diff=3109"/>
		<updated>2026-09-30T23:07:01Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves primarily to index AllStarLink&#039;s guides. They&#039;re very good, but indexed rather weirdly. There&#039;s no central index page, but they can be accessed from the sidebar on https://allstarlink.github.io/.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3108</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3108"/>
		<updated>2026-09-30T22:58:38Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added links to Pi and Debian guides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes the same, and additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation, which lets you preload Wi-Fi configuration. It also supports managing the Pi&#039;s serial port at &amp;lt;code&amp;gt;/dev/serial0&amp;lt;/code&amp;gt;, as well as using the GPIO pins for PTT triggering. The Pi image keeps logs and temp files only in memory to reduce writes to the SD card. &lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Appliance === &lt;br /&gt;
To install the Raspberry Pi ASL3 appliance, see the [https://allstarlink.github.io/install/pi-appliance/pi-detailed/ ASL3 guide to setting up the Pi appliance.]&lt;br /&gt;
&lt;br /&gt;
=== Debian PC or Appliance ===&lt;br /&gt;
To install ASL3 on Debian, via any of &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt;, or a non-appliance Debian install (&amp;lt;code&amp;gt;asl3&amp;lt;/code&amp;gt;), follow [https://allstarlink.github.io/install/debian/install/ the ASL3 Debian install guide.] It covers all three methods, and notes each point where the installation methods diverge.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3095</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3095"/>
		<updated>2026-09-30T19:07:52Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Started ASL installation instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install AllStarLink ==&lt;br /&gt;
AllStarLink3 can be installed on Debian or Raspberry Pi OS. The &amp;lt;code&amp;gt;asl3-appliance&amp;lt;/code&amp;gt; package is available for Debian 13 (trixie). It includes Asterisk, app_rpt, and Allmon3. The &amp;lt;code&amp;gt;asl3-appliance-pc&amp;lt;/code&amp;gt; package includes additional functionality for mDNS broadcasts and swapfile management. The ASL3 appliance for Raspberry Pi OS can be installed with the Raspberry Pi Imager for ease of installation. &lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure firewall ==&lt;br /&gt;
== Step 4: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3094</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3094"/>
		<updated>2026-09-30T18:23:44Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added default IAX port&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later. The default is &amp;lt;code&amp;gt;4569&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Create a server ==&lt;br /&gt;
== Step 3: Create a node ==&lt;br /&gt;
== Step 4: Install AllStarLink ==&lt;br /&gt;
== Step 5: Configure firewall ==&lt;br /&gt;
== Step 6: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3093</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3093"/>
		<updated>2026-09-30T18:23:02Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instruct users to read the AllStarLink sign up documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for AllStarLink ==&lt;br /&gt;
Follow AllStarLink&#039;s [instructions for the sign up process](https://allstarlink.github.io/basics/portal/). They&#039;ll guide you through signing up for an account, registering a server, and registering a node. This will allocate a node number to you, or a set of node numbers if you choose to immediately extend your node number as suggested. &lt;br /&gt;
&lt;br /&gt;
During registration, United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
Take note of the IAX port you select when creating your server. This can be changed later, but the portal setting must line up with your firewall settings later.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Create a server ==&lt;br /&gt;
== Step 3: Create a node ==&lt;br /&gt;
== Step 4: Install AllStarLink ==&lt;br /&gt;
== Step 5: Configure firewall ==&lt;br /&gt;
== Step 6: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3092</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=3092"/>
		<updated>2026-09-30T18:04:13Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote instructions for signing up for allstar portal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for an AllStar Account ==&lt;br /&gt;
Go to the [https://www.allstarlink.org/register/index.php AllStarLink registration page] and follow their instructions to register. United States amateur radio operators will need an &#039;&#039;&#039;official copy&#039;&#039;&#039; of their license, obtained by [https://wireless2.fcc.gov/UlsEntry/licManager/login.jsp logging in to the FCC website] with their FRN. The publicly available reference copy is not sufficient. After signing up, wait for your account to be verified, which should take at most 24 hours.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Create a server ==&lt;br /&gt;
== Step 3: Create a node ==&lt;br /&gt;
== Step 4: Install AllStarLink ==&lt;br /&gt;
== Step 5: Configure firewall ==&lt;br /&gt;
== Step 6: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2988</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2988"/>
		<updated>2026-09-29T19:04:53Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added footnote with link to ASL3 repository&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source&amp;lt;ref&amp;gt;The ASL3 source is [https://github.com/AllStarLink/ASL3 available on GitHub], though installing from source is not recommended.&amp;lt;/ref&amp;gt; internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for an AllStar Account ==&lt;br /&gt;
== Step 2: Create a server ==&lt;br /&gt;
== Step 3: Create a node ==&lt;br /&gt;
== Step 4: Install AllStarLink ==&lt;br /&gt;
== Step 5: Configure firewall ==&lt;br /&gt;
== Step 6: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2987</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2987"/>
		<updated>2026-09-29T18:59:24Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added section headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Sign up for an AllStar Account ==&lt;br /&gt;
== Step 2: Create a server ==&lt;br /&gt;
== Step 3: Create a node ==&lt;br /&gt;
== Step 4: Install AllStarLink ==&lt;br /&gt;
== Step 5: Configure firewall ==&lt;br /&gt;
== Step 6: Enable 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2981</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2981"/>
		<updated>2026-09-28T23:32:17Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Fixed typo in category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2980</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2980"/>
		<updated>2026-09-28T23:32:01Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Added categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2979</id>
		<title>AllStarLink</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=AllStarLink&amp;diff=2979"/>
		<updated>2026-09-28T23:31:32Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AllStarLink is an open source internet repeater linking system that uses the Asterisk PBX software internally, and provides a web interface for management. It can be used both for connecting repeaters to the internet and for creating reflectors that internet-linked repeaters can connect to. An AllStarLink installation consists of multiple pieces of software: The Asterisk PBX, the app_rpt application made by AllStarLink, and the Allmon3 web interface.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start&amp;diff=2945</id>
		<title>44Net Connect/Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=44Net_Connect/Quick_Start&amp;diff=2945"/>
		<updated>2026-09-28T17:47:40Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Copied over callouts from redundant page to be merged with this one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{DISPLAYTITLE:44Net Connect Quick Start}}&lt;br /&gt;
&lt;br /&gt;
Use this guide to quickly set up your first 44Net Connect tunnel and get your device participating on the Internet as a native 44Net host.&lt;br /&gt;
&lt;br /&gt;
=== What you need ===&lt;br /&gt;
&lt;br /&gt;
* A 44Net Portal account&lt;br /&gt;
* A verified amateur radio callsign&lt;br /&gt;
* A device capable of running WireGuard&lt;br /&gt;
* Some sort of Internet access&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t set up your Portal account or verified your callsign yet, see [[GetStarted|44Net: Get Started]] for instructions. For a partial list of supported devices and device-specific tutorials, see [[44Net Connect/Supported Platforms|Supported Platforms]].&lt;br /&gt;
&lt;br /&gt;
== Create your Connect tunnel ==&lt;br /&gt;
{{Info|Tip|The Connect dashboard is where you will manage your tunnels, view your assigned 44Net addresses, and access your WireGuard configurations. Consider bookmarking the dashboard for easy access.}}&lt;br /&gt;
&lt;br /&gt;
{{Info|Note|The Connect dashboard is separate from the Portal dashboard. You will use your Portal account credentials to log in, but the two dashboards have different functions. The Portal dashboard is for managing your account, verifying your callsign, and accessing support resources, while the Connect dashboard is specifically for managing your WireGuard tunnels and configurations. You will need to log in to both dashboards at different times depending on what you want to do.}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 1: Sign in to 44Net Connect ===&lt;br /&gt;
{{StepImage|file=Click to Log In.png}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
* Visit [https://connect.44net.cloud The 44Net Connect dashboard].&lt;br /&gt;
* Click the “Log In to Get Started” button.&lt;br /&gt;
* Sign in with your 44Net Portal account credentials.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 2: Create your first tunnel ===&lt;br /&gt;
{{StepImage|file=Create Tunnel.png}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
* On the dashboard page, click the “Create Tunnel” button.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 3: Choose region and node ===&lt;br /&gt;
{{StepImage|file=Choose Region and Node.png}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
* In the list of regions, click the region closest to you.&lt;br /&gt;
* Nodes available in that region will appear.&lt;br /&gt;
* Click a node to select it as your endpoint.&lt;br /&gt;
&lt;br /&gt;
You can change endpoints later if needed.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 4: Name your tunnel ===&lt;br /&gt;
{{StepImage|file=Name Tunnel.png}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
* Enter a name for your tunnel (e.g. “Home Laptop” or “Raspberry Pi”)&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 5: Save your new tunnel ===&lt;br /&gt;
{{StepImage|file=Complete Tunnel Creation.png}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
* Check or uncheck the option to receive tunnel details via email.&lt;br /&gt;
* Click the “Create Tunnel” button.&lt;br /&gt;
* Review the confirmation dialog and click “Save Changes” to proceed.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configure your WireGuard client ==&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 6: Get your configuration ===&lt;br /&gt;
{{StepImage|file=Copy Configuration.png|width=260px}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
* Scroll down to find your tunnel configuration.&lt;br /&gt;
* Click the “Copy to Clipboard” button to copy the configuration text.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 7: Create a new tunnel ===&lt;br /&gt;
{{StepImage|file=Paste Configuration.png|width=260px}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
==== Windows or macOS: ====&lt;br /&gt;
* Open your WireGuard client.&lt;br /&gt;
* Click the “+ Add Tunnel“ button to add a new tunnel.&lt;br /&gt;
* Delete the default template text and paste in your configuration.&lt;br /&gt;
* Give your tunnel a name in the “Name” field.&lt;br /&gt;
* Click the “Save” button.&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
* Create a new file for your WireGuard configuration, e.g. &amp;lt;code&amp;gt;/etc/wireguard/wg0.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Paste the configuration text into the file and save it.&lt;br /&gt;
&lt;br /&gt;
==== Other platforms ====&lt;br /&gt;
* Use the configuration text with your platform’s WireGuard implementation. Refer to your platform’s documentation for details on how to set up a WireGuard tunnel.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Activate and connect ==&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 8: Activate your tunnel ===&lt;br /&gt;
{{StepImage|file=Activate.png|width=260px}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
==== Windows or macOS: ====&lt;br /&gt;
* In your WireGuard client, select the tunnel you just created.&lt;br /&gt;
* Click the “Activate” button to start the tunnel.&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
* Run the command &amp;lt;code&amp;gt;wg-quick up wg0&amp;lt;/code&amp;gt; (replace &amp;lt;code&amp;gt;wg0&amp;lt;/code&amp;gt; with the name of your configuration file if different).&lt;br /&gt;
&lt;br /&gt;
==== Other platforms ====&lt;br /&gt;
* Use your platform’s method for starting the WireGuard tunnel. Refer to your platform’s documentation for details.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Step|&lt;br /&gt;
=== Step 9: Confirm handshake ===&lt;br /&gt;
{{StepImage|file=Confirm.png|width=260px}}&lt;br /&gt;
{{StepText|&lt;br /&gt;
==== Windows or macOS: ====&lt;br /&gt;
* In your WireGuard client, look for the “Handshake” field in your tunnel status.&lt;br /&gt;
* If the handshake is successful, you should see a recent timestamp indicating the last successful handshake with the Connect endpoint.&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
* Run the command &amp;lt;code&amp;gt;wg&amp;lt;/code&amp;gt; to check the status of your WireGuard interfaces.&lt;br /&gt;
* Look for the interface corresponding to your Connect tunnel and check the “latest handshake” timestamp.&lt;br /&gt;
&lt;br /&gt;
==== Other platforms ====&lt;br /&gt;
* Use your platform’s method for checking WireGuard tunnel status and confirm that the handshake with the Connect endpoint is successful.&lt;br /&gt;
&lt;br /&gt;
==== In the Connect dashboard ====&lt;br /&gt;
* Your tunnel status should show as “Active” with a green indicator.&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Once the tunnel is active, your system operates as a native 44Net host. Inbound and outbound traffic is routed through the Connect endpoint, giving your device a direct connection to the Internet.&lt;br /&gt;
&lt;br /&gt;
Your device is now reachable on the Internet at its 44Net IP address.&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:How-To]]&lt;br /&gt;
[[Category:Participation Methods]]&lt;br /&gt;
[[Category:44Net Connect]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2942</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2942"/>
		<updated>2026-09-15T23:07:17Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Provide possible explanation for permission denied publickey&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page], decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
Log into Forgejo and go to the Forgejo home page. Click the plus button at the top right, and click &amp;quot;New Repository.&amp;quot; Fill in the details (specifics don&#039;t matter, since this is a test), and if the repository is successfully created, move on to the next step. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_create_repo.png]]&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over HTTP ===&lt;br /&gt;
Copy the HTTP URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. It should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or similar, you may have a configuration issue, and should proceed to the troubleshooting section. &lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over SSH ===&lt;br /&gt;
Copy the SSH URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. Just like before, it should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or &amp;quot;Permission denied: pubkey,&amp;quot; you may have a configuration issue, and should proceed to the troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
After cloning the repository, make a commit and push it to the remote repository with the following steps:&lt;br /&gt;
# Create or modify a file in the repository&#039;s folder&lt;br /&gt;
# Add your changes with &amp;lt;code&amp;gt;git add &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Commit your changes with &amp;lt;code&amp;gt;git commit -m &amp;lt;message&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Push to the remote repository with &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The push command should proceed through enumerating objects, counting objects, delta compression, compressing objects, and writing objects, then finish. If it throws an error (any line starting with &amp;lt;code&amp;gt;fatal&amp;lt;/code&amp;gt;), then you may have a configuration issue and should consult the troubleshooting section. If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re getting &amp;lt;code&amp;gt;Permission denied (publickey)&amp;lt;/code&amp;gt;, you may be attempting to SSH into the &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port rather than the Forgejo port.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2941</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2941"/>
		<updated>2026-09-15T23:05:06Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Removed extraneous link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page], decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
Log into Forgejo and go to the Forgejo home page. Click the plus button at the top right, and click &amp;quot;New Repository.&amp;quot; Fill in the details (specifics don&#039;t matter, since this is a test), and if the repository is successfully created, move on to the next step. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_create_repo.png]]&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over HTTP ===&lt;br /&gt;
Copy the HTTP URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. It should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or similar, you may have a configuration issue, and should proceed to the troubleshooting section. &lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over SSH ===&lt;br /&gt;
Copy the SSH URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. Just like before, it should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or &amp;quot;Permission denied: pubkey,&amp;quot; you may have a configuration issue, and should proceed to the troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
After cloning the repository, make a commit and push it to the remote repository with the following steps:&lt;br /&gt;
# Create or modify a file in the repository&#039;s folder&lt;br /&gt;
# Add your changes with &amp;lt;code&amp;gt;git add &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Commit your changes with &amp;lt;code&amp;gt;git commit -m &amp;lt;message&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Push to the remote repository with &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The push command should proceed through enumerating objects, counting objects, delta compression, compressing objects, and writing objects, then finish. If it throws an error (any line starting with &amp;lt;code&amp;gt;fatal&amp;lt;/code&amp;gt;), then you may have a configuration issue and should consult the troubleshooting section. If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2940</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2940"/>
		<updated>2026-09-15T21:52:04Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote instructions for pushing commit to remote&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
Log into Forgejo and go to the Forgejo home page. Click the plus button at the top right, and click &amp;quot;New Repository.&amp;quot; Fill in the details (specifics don&#039;t matter, since this is a test), and if the repository is successfully created, move on to the next step. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_create_repo.png]]&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over HTTP ===&lt;br /&gt;
Copy the HTTP URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. It should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or similar, you may have a configuration issue, and should proceed to the troubleshooting section. &lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over SSH ===&lt;br /&gt;
Copy the SSH URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. Just like before, it should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or &amp;quot;Permission denied: pubkey,&amp;quot; you may have a configuration issue, and should proceed to the troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
After cloning the repository, make a commit and push it to the remote repository with the following steps:&lt;br /&gt;
# Create or modify a file in the repository&#039;s folder&lt;br /&gt;
# Add your changes with &amp;lt;code&amp;gt;git add &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Commit your changes with &amp;lt;code&amp;gt;git commit -m &amp;lt;message&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Push to the remote repository with &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The push command should proceed through enumerating objects, counting objects, delta compression, compressing objects, and writing objects, then finish. If it throws an error (any line starting with &amp;lt;code&amp;gt;fatal&amp;lt;/code&amp;gt;), then you may have a configuration issue and should consult the troubleshooting section. If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2939</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2939"/>
		<updated>2026-09-15T19:07:57Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instruct users on creating a repository&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
Log into Forgejo and go to the Forgejo home page. Click the plus button at the top right, and click &amp;quot;New Repository.&amp;quot; Fill in the details (specifics don&#039;t matter, since this is a test), and if the repository is successfully created, move on to the next step. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_create_repo.png]]&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over HTTP ===&lt;br /&gt;
Copy the HTTP URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. It should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or similar, you may have a configuration issue, and should proceed to the troubleshooting section. &lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over SSH ===&lt;br /&gt;
Copy the SSH URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. Just like before, it should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or &amp;quot;Permission denied: pubkey,&amp;quot; you may have a configuration issue, and should proceed to the troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Forgejo_create_repo.png&amp;diff=2938</id>
		<title>File:Forgejo create repo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Forgejo_create_repo.png&amp;diff=2938"/>
		<updated>2026-09-15T18:41:18Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the Forgejo homepage. The create button and the new repository button are highlighted by red rectangles.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the Forgejo homepage. The create button and the new repository button are highlighted by red rectangles.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2937</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2937"/>
		<updated>2026-09-15T18:27:26Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Split repo cloning into two sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over HTTP ===&lt;br /&gt;
Copy the HTTP URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. It should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or similar, you may have a configuration issue, and should proceed to the troubleshooting section. &lt;br /&gt;
&lt;br /&gt;
=== Clone the repository over SSH ===&lt;br /&gt;
Copy the SSH URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. Just like before, it should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or &amp;quot;Permission denied: pubkey,&amp;quot; you may have a configuration issue, and should proceed to the troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2936</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2936"/>
		<updated>2026-09-15T18:26:55Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Described steps for cloning repository&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository ===&lt;br /&gt;
Copy the HTTP URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. It should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or similar, you may have a configuration issue, and should proceed to the troubleshooting section. &lt;br /&gt;
&lt;br /&gt;
Copy the SSH URL from Forgejo, go to your terminal, and run &amp;lt;code&amp;gt;git clone &amp;lt;URL&amp;gt;&amp;lt;/code&amp;gt;. Just like before, it should go through &amp;quot;Enumerating objects,&amp;quot; &amp;quot;Counting objects,&amp;quot; and &amp;quot;Compressing objects&amp;quot; before finishing. &lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
If the clone completes without error, delete the folder and move on to cloning via SSH. If you get some error such as &amp;quot;Repository not found&amp;quot; or &amp;quot;Permission denied: pubkey,&amp;quot; you may have a configuration issue, and should proceed to the troubleshooting section.&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2935</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2935"/>
		<updated>2026-09-14T23:24:23Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Insert repo clone URL screenshots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository ===&lt;br /&gt;
* Clone the repository using HTTP&lt;br /&gt;
[[File:forgejo_clone_http.png| A screenshot of the HTTP git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
* Clone the repository using SSH&lt;br /&gt;
[[File:forgejo_clone_ssh.png| A screenshot of the SSH git clone URL on a forgejo repository. The repository being cloned is KN6DWI/torment-nexus.git.]]&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Forgejo_clone_ssh.png&amp;diff=2934</id>
		<title>File:Forgejo clone ssh.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Forgejo_clone_ssh.png&amp;diff=2934"/>
		<updated>2026-09-14T23:23:58Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the SSH git clone URL on a forgejo repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the SSH git clone URL on a forgejo repository.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=File:Forgejo_clone_http.png&amp;diff=2933</id>
		<title>File:Forgejo clone http.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=File:Forgejo_clone_http.png&amp;diff=2933"/>
		<updated>2026-09-14T23:18:19Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: A screenshot of the HTTP git clone URL on a forgejo repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of the HTTP git clone URL on a forgejo repository.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2932</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2932"/>
		<updated>2026-09-14T23:13:27Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations.&lt;br /&gt;
=== Create a repository using the web UI ===&lt;br /&gt;
&lt;br /&gt;
=== Clone the repository ===&lt;br /&gt;
* Clone the repository using HTTP&lt;br /&gt;
* Clone the repository using SSH&lt;br /&gt;
&lt;br /&gt;
=== Make a commit and push it to the remote repository ===&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2931</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2931"/>
		<updated>2026-09-14T22:47:50Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Wrote troubleshooting instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations:&lt;br /&gt;
* Create a repository using the web UI &lt;br /&gt;
* Clone the repository using HTTP&lt;br /&gt;
* Clone the repository using SSH&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Forgejo web UI ===&lt;br /&gt;
* Make sure you&#039;re accessing the correct port. Unless you specify the port, your browser will default to port 80 for HTTP or port 443 for HTTPS. The default port for the web UI is 3000. &lt;br /&gt;
* Use &amp;lt;code&amp;gt;systemctl status &amp;lt;name of unit&amp;gt;&amp;lt;/code&amp;gt; to make sure your 44Net Connect tunnel is up. The name of the tunnel&#039;s &amp;lt;code&amp;gt;systemd&amp;lt;/code&amp;gt; unit should be &amp;lt;code&amp;gt;wg-quick@&amp;lt;name of config file&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you&#039;re using Docker, make sure your port mappings are correct. Those can be viewed by running &amp;lt;code&amp;gt;sudo docker ps -a&amp;lt;/code&amp;gt; to list all containers. Containers created using Docker compose can have their port mappings viewed in their compose file. &lt;br /&gt;
* If you&#039;re not using Docker, ensure your device firewall has the correct ports open. &amp;lt;code&amp;gt;firewall-cmd&amp;lt;/code&amp;gt; users should also make sure their 44Net Connect WireGuard interface is in the correct zone. &lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t clone repository over SSH ===&lt;br /&gt;
Forgejo does not operate on the same SSH port as your system&#039;s &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; server. The default port for Forgejo SSH is 222. Unless you change this to 22 (and move your &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt; port somewhere else), you&#039;ll have to specify the correct port when cloning the repository. For example, &amp;lt;code&amp;gt;git clone ssh://git@yoursite.org:&amp;lt;port here&amp;gt;/username/repository&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2930</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2930"/>
		<updated>2026-09-14T22:30:53Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instruct user on test operations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
Make sure your Forgejo instance is working by testing a few operations:&lt;br /&gt;
* Create a repository using the web UI &lt;br /&gt;
* Clone the repository using HTTP&lt;br /&gt;
* Clone the repository using SSH&lt;br /&gt;
* Make a commit on your local repository and push it to the remote repository&lt;br /&gt;
&lt;br /&gt;
If these are all working, you should be good to go!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2929</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2929"/>
		<updated>2026-09-14T22:28:11Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Edited title to specify device firewall rather than network firewall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your device firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2928</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2928"/>
		<updated>2026-09-14T22:22:41Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instruct people to find the single device tunnel tutorial for their OS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Forgejo instance. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2927</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2927"/>
		<updated>2026-09-11T01:43:41Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instruct users on opening Forgejo ports in their firewall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. Make sure you complete initial setup before moving to the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your firewall ==&lt;br /&gt;
If you installed using Docker or Docker Compose, and want to use nonstandard ports, change the Docker port mappings. You will not need to open the ports in your firewall, because Docker port mappings are done via an &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; chain that takes precedence over user-configured rules. This means ports mapped using Docker will be immediately publicly accessible once you enable your 44Net Connect tunnel, so don&#039;t enable it until you&#039;ve completed initial setup. &lt;br /&gt;
&lt;br /&gt;
If you installed Forgejo from a binary, the ports used for the web UI are not editable from the web UI. Instead, edit the config file at &amp;lt;code&amp;gt;/etc/forgejo/app.ini&amp;lt;/code&amp;gt;, and change the &amp;lt;code&amp;gt;HTTP_PORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SSH_PORT&amp;lt;/code&amp;gt; lines. Then, open the corresponding ports in your firewall. The default ports are 3000 for the web UI, and 222 for SSH. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2926</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2926"/>
		<updated>2026-09-10T23:50:19Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Tell users they can&amp;#039;t put the web UI and Forgejo SSH on the same port&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. &lt;br /&gt;
&lt;br /&gt;
If you&#039;re installing with Docker or Docker Compose, and want to use nonstandard ports, changing the Docker port mappings may be easier than directly editing the Forgejo configuration. &lt;br /&gt;
Forgejo&#039;s ports are not configurable via the web UI, for Docker installations you must get a shell in the container with &amp;lt;code&amp;gt;sudo docker exec -it &amp;lt;container name&amp;gt; /bin/bash&amp;lt;/code&amp;gt; and edit the config file at &amp;lt;code&amp;gt;/data/gitea/conf/app.ini&amp;lt;/code&amp;gt;. Note that you cannot put the web UI on the same port as Forgejo&#039;s SSH access.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your firewall ==&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2925</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2925"/>
		<updated>2026-09-10T23:36:38Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Describe editing Docker port mappings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions. &lt;br /&gt;
&lt;br /&gt;
If you&#039;re installing with Docker or Docker Compose, and want to use nonstandard ports, changing the Docker port mappings may be easier than directly editing the Forgejo configuration. &lt;br /&gt;
Forgejo&#039;s ports are not configurable via the web UI, for Docker installations you must get a shell in the container with &amp;lt;code&amp;gt;sudo docker exec -it &amp;lt;container name&amp;gt; /bin/bash&amp;lt;/code&amp;gt; and edit the config file at &amp;lt;code&amp;gt;/data/gitea/conf/app.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your firewall ==&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2923</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2923"/>
		<updated>2026-09-10T00:37:57Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Instructed users to check for package manager packages first, otherwise install binary manually or use docker.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
Go to the [https://codeberg.org/forgejo-contrib/delightful-forgejo#packaging delightful forgejo] repository and check whether Forgejo has been packaged for your operating system or distribution. If so, install using your package manager. Otherwise, go to the [https://forgejo.org/docs/latest/admin/installation/ Forgejo installation page](https://forgejo.org/releases/) , decide whether you&#039;re going to install from binary or from a docker container, and follow the corresponding instructions.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your firewall ==&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Direwolf&amp;diff=2922</id>
		<title>Direwolf</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Direwolf&amp;diff=2922"/>
		<updated>2026-09-10T00:25:04Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Mentioned AGW clients in intro paragraph&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Direwolf is a piece of software used to decode and encode {{Term|APRS}} packets, commonly called a terminal node controller (TNC). A computer running Direwolf can be paired with a transceiver to transmit, receive, and digipeat APRS packets on the air. It can be used on its own or with a KISS or AGW client. This is a tutorial on setting up Direwolf for remote access via a 44Net Connect tunnel. &lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* 44Net Portal account&lt;br /&gt;
* Verified callsign&lt;br /&gt;
* 44Net Connect tunnel configuration file (for your Direwolf device)&lt;br /&gt;
* Either a client with a static IP or another 44Net Connect tunnel configuration file for your client&lt;br /&gt;
&lt;br /&gt;
== Security and Limitations ==&lt;br /&gt;
Neither Direwolf or the KISS protocol directly support any kind of authentication. Though some AGW clients such as Xastir support password protection, Direwolf does not support configuring a password for its AGW interface.&amp;lt;ref name=&amp;quot;agw-groupsio&amp;quot;&amp;gt;[https://groups.io/g/direwolf/topic/password_in_agw_interface/34951469 Password in agw interface - Direwolf Groups.io]&amp;lt;/ref&amp;gt; Securing Direwolf against unauthorized access is done via IP whitelisting in this guide, so providing access to people without access to a static IP (through 44Net or otherwise) is out of scope.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install and configure Direwolf ==&lt;br /&gt;
Consult the [https://github.com/wb2osz/direwolf Direwolf README] for installation instructions. The instructions state that the &amp;lt;code&amp;gt;direwolf.conf&amp;lt;/code&amp;gt; file will be automatically created in your home directory, but this is not always the case. If the config file is not automatically created, a working Linux configuration can be found in [https://n3emc.com/aprs-digipeater-and-igate-with-direwolf/ N3EMC&#039;s digipeater tutorial].&lt;br /&gt;
&lt;br /&gt;
=== Configure sound card ===&lt;br /&gt;
Next, plug in your USB sound card if you&#039;re using one. (This section applies whether you&#039;re using a USB sound card or a built-in one.) then open a terminal and run &amp;lt;code&amp;gt;arecord -l&amp;lt;/code&amp;gt; to list your audio devices. The output will look like this: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
**** List of CAPTURE Hardware Devices ****&lt;br /&gt;
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]&lt;br /&gt;
Subdevices: 0/1&lt;br /&gt;
Subdevice #0: subdevice #0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Record the card number (in this case card 1) and the device number (in this case card 2). Edit the line in &amp;lt;code&amp;gt;direwolf.conf&amp;lt;/code&amp;gt; that starts with &amp;lt;code&amp;gt;ADEVICE&amp;lt;/code&amp;gt;. By default, the line might look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ADEVICE plughw:0,0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the first number with your card number, and the second with your device number. For our example with card 1 and device 0, the line should now look like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ADEVICE plughw:1,0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure callsign ===&lt;br /&gt;
Go to the configuration line beginning with &amp;lt;code&amp;gt;MYCALL&amp;lt;/code&amp;gt; and fill in your callsign there. It may optionally be followed by a Sub-Station Identifier (SSID), which consists of a dash and a number. These are commonly used to differentiate multiple pieces of equipment owned by the same person. N3EMC says that &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; is commonly used for digipeaters and iGates, so a person with the callsign &amp;lt;code&amp;gt;N0CALL&amp;lt;/code&amp;gt; may write the config line like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MYCALL N0CALL-10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure iGate login ===&lt;br /&gt;
To enable iGate functionality, you must configure your iGate server and login. The server is configured using the line starting with &amp;lt;code&amp;gt;IGSERVER&amp;lt;/code&amp;gt;. Select your server from the following:&amp;lt;ref&amp;gt;https://www.aprs-is.net/APRSServers.aspx&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Worldwide:     &amp;lt;code&amp;gt;rotate.aprs2.net&amp;lt;/code&amp;gt;&lt;br /&gt;
* North America: &amp;lt;code&amp;gt;noam.aprs2.net&amp;lt;/code&amp;gt;&lt;br /&gt;
* South America: &amp;lt;code&amp;gt;soam.aprs2.net&amp;lt;/code&amp;gt;&lt;br /&gt;
* Europe/Africa: &amp;lt;code&amp;gt;euro.aprs2.net&amp;lt;/code&amp;gt;&lt;br /&gt;
* Asia:          &amp;lt;code&amp;gt;asia.aprs2.net&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oceania:       &amp;lt;code&amp;gt;aunz.aprs2.net&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, North American users should have the config line &amp;lt;code&amp;gt;IGSERVER noam.aprs2.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Configure your firewall ==&lt;br /&gt;
For security purposes, it&#039;s important to configure your firewall &#039;&#039;before&#039;&#039; exposing your device to the internet. &lt;br /&gt;
Install your firewall of choice, and open port 8000 for an AGW client, and 8001 for the KISS client. Ensure other ports are closed, unless you have services that you want to be accessible. See [[Firewalling Basics]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
Set up a single device tunnel on the machine that will host your Direwolf server. Go to the [https://wiki.ampr.org/wiki/44Net_Connect/Single_Device_Tunnel#Tutorials list of single device tunnel tutorials] and follow the one for your operating system. Before starting the tunnel, you&#039;ll need to modify your configuration. Modify the &amp;lt;code&amp;gt;AllowedIPs&amp;lt;/code&amp;gt; line so that it contains only the static IPs of your clients, each followed by &amp;lt;code&amp;gt;/32&amp;lt;/code&amp;gt; to indicate that this is a single IP rather than a subnet. This is the method by which access to your Direwolf instance is controlled. Example: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;AllowedIPs = 44.27.133.290/32&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4: Set up client ==&lt;br /&gt;
Install a KISS or AGW client of your choice, such as [https://github.com/vash909/PyttiAPRS PyttiAPRS] or [https://github.com/Xastir/Xastir Xastir], and point it at the 44Net IPv4 address of the device running Direwolf. You can obtain this address from the &amp;lt;code&amp;gt;[Interface]&amp;lt;/code&amp;gt; section of that device&#039;s WireGuard config, or you can run the &amp;lt;code&amp;gt;ifconfig&amp;lt;/code&amp;gt; command on that device and look for the WireGuard interface. If it asks for port configuration, use port 8000 for AGW and port 8001 for KISS.&lt;br /&gt;
&lt;br /&gt;
== Step 5: Verify IP whitelist configuration ==&lt;br /&gt;
To verify that the WireGuard configuration is correctly blocking access from unauthorized parties, try connecting to Direwolf from an IP address that&#039;s not whitelisted. If your typical connection method uses another 44Net Connect tunnel on the client device, try turning it off. If you&#039;ve whitelisted a static IP tied to your current network, you could go to a cafe and use their internet. Use &amp;lt;code&amp;gt;curl connect.44net.cloud/myip&amp;lt;/code&amp;gt; to verify that your IP has changed, then attempt to connect. You should &#039;&#039;not&#039;&#039; be able to connect from a non-whitelisted IP. If you are able to connect, your WireGuard {{Term|AllowedIPs}} may not be correctly configured.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Can&#039;t connect to Direwolf ===&lt;br /&gt;
* Ensure that ports 8000 and 8001 are open in your firewall. &lt;br /&gt;
* If you are unsure whether your client is behind a firewall whose egress filtering is preventing connection, you can open listeners on ports 8000 and 8001 to see if your connection is making it there at all. &lt;br /&gt;
** This will require closing Direwolf for the duration of the test. &lt;br /&gt;
** Open a listener with &amp;lt;code&amp;gt;netcat&amp;lt;/code&amp;gt; using the following command: &amp;lt;code&amp;gt;nc -l -p &amp;lt;port&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** After opening the listeners on ports 8000 and 8001, attempt to connect with your client. If the listeners don&#039;t show any activity, your connection attempt is not making it to the server.&lt;br /&gt;
&lt;br /&gt;
=== Direwolf isn&#039;t receiving any packets ===&lt;br /&gt;
* Check your physical connections between the radio and sound card.&lt;br /&gt;
* Make sure your radio&#039;s audio and RF gain are adjusted so that Direwolf is receiving sound at the correct level. (Direwolf will warn you about audio that&#039;s too loud, but not too quiet.) &lt;br /&gt;
* Make sure receive tone squelch is disabled on your radio, and that it&#039;s tuned to the correct frequency. &lt;br /&gt;
* It can be helpful to use a second radio for troubleshooting, either to monitor the APRS frequency for when packets should appear, or to send test packets. &lt;br /&gt;
&lt;br /&gt;
== References == &lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other References ===&lt;br /&gt;
* [https://github.com/wb2osz/direwolf/tree/master/doc Direwolf documentation]&lt;br /&gt;
* [https://themodernham.com/easy-aprs-igate-and-digipeater-setup-with-direwolf/ Easy APRS iGate and Digipeater Setup with Direwolf - themodernham]&lt;br /&gt;
* [https://n3emc.com/aprs-digipeater-and-igate-with-direwolf/ APRS Digitpeater and iGate with Direwolf]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;br /&gt;
[[Category:How-To]]&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2921</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2921"/>
		<updated>2026-09-10T00:23:17Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created more headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
&lt;br /&gt;
== Step 2: Open Forgejo ports in your firewall ==&lt;br /&gt;
&lt;br /&gt;
== Step 3: Set up 44Net Connect tunnel ==&lt;br /&gt;
&lt;br /&gt;
== Step 4: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2920</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2920"/>
		<updated>2026-09-10T00:08:34Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Created sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Forgejo ==&lt;br /&gt;
&lt;br /&gt;
== Step X: Validate Forgejo functionality ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
	<entry>
		<id>https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2918</id>
		<title>Forgejo</title>
		<link rel="alternate" type="text/html" href="https://wiki.ampr.org/w/index.php?title=Forgejo&amp;diff=2918"/>
		<updated>2026-09-09T23:27:22Z</updated>

		<summary type="html">&lt;p&gt;KN6DWI: Described changing SSH to nonstandard port&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forgejo is an open source {{Term|git forge}} that aims to implement {{Term|federation}} using the [https://activitypub.rocks/ ActivityPub] protocol. It can be self-hosted to provide code collaboration services similar to GitHub, such as remote git repositories, issue tracking, and pull/merge requests. &lt;br /&gt;
&lt;br /&gt;
== Step 0 (Optional): Change your SSH to a nonstandard port ==&lt;br /&gt;
Git forges provide the ability to interact via HTTP or SSH. If you want users to interact with your Forgejo instance using the standard SSH port, and you have an existing SSH server on the same device, you must move your regular SSH server to another port. Forgejo supports SSH over other ports, but all of your users will have to specify that port in their &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; commands or configure it in their &amp;lt;code&amp;gt;~/.ssh/ssh_config&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
To change your SSH port, edit &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;, uncomment the line starting with &amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt;, and change the number to something other than 22. Open the corresponding port in your firewall. For more information on firewall configuration, see [[Firewalling Basics]].&lt;/div&gt;</summary>
		<author><name>KN6DWI</name></author>
	</entry>
</feed>