Gateway Troubleshooting & FAQ

Welcome to the unified troubleshooting and FAQ resource for AR.IO Gateway operators. Use the quick lookup table below for fast answers, or browse the detailed sections for in-depth guidance.

Quick Lookup

Below is a quick summary of what you should check when troubleshooting your gateway. Find more detailed information in the sections below.

← Swipe to see more →
IssueWhat to Check
My release number is wrong

Pull the latest github updates and make sure you are on the main branch

Gateway appears offline on Viewblock or ar://gateways

Probably fine, but verify that your gateway is still running.

'/ar-io/observer/reports/current' just says "report pending"

Normal behavior, wait for the report to complete.

Observer error "Cannot read properties of undefined"

Normal behavior, Observer is checking for data not implemented yet.

Observing my gateway shows failures

Check AR_IO_WALLET and ARNS_ROOT_HOST settings.

Updated .env settings not reflected on gatewayRebuild your gateway after editing .env file.
Out of disk space error

Check for inode exhaustion and delete files if necessary.

Can't load ArNS names

Check ARNS_ROOT_HOST setting in .env file, and DNS records.

"Your connection is not private" errorGenerate or renew SSL certificates.
404/Nginx error when accessing domain

Check Nginx settings and restart Nginx if necessary.

502 error from NginxCheck for errors in your gateway.
Trouble generating SSL certificates

Ensure TXT records have propagated and follow certbot instructions.

← Swipe to see more →

General Troubleshooting

My Gateway Seems to be Running but...

My release number doesn't match the latest version, or includes "-pre"

If your release number when you go to <your-gateway>/ar-io/info is lower than the current release, you simply need to upgrade your gateway in order to reach the latest release.

If your release number includes the suffix "-pre" it means you are running your gateway from the development branch of the github repository, instead of the main branch. The development branch is used for staging work that the engineering team is in the middle of. Because of this, it can be much less stable than the main branch used for production and can cause significant issues.

Ensure that you are running the latest release, from the main branch, by running the below commands in your terminal:

sudo docker-compose down --rmi all

git checkout main

git pull

sudo docker-compose up -d

If this doesn't resolve the issue, you can also try a more extreme method of clearing out the incorrect docker images:

sudo docker-compose down

sudo docker system prune -a

sudo docker-compose up -d
It appears offline on Viewblock or ar://gateways

Viewblock and ar://gateways use a very simple ping method for determining if a gateway is "up". There are plenty of reasons why this ping may fail while the gateway is running perfectly, so showing as down is not cause for concern. Just verify that your gateway is still running, and wait. Your gateway will show as up again soon.

< gateway >/ar-io/observer/reports/current just says "report pending"

This is normal. Your Observer is working to generate a report and that report will be displayed once it is complete.

My Observer is showing me the error "error: Error reading interaction: Cannot read properties of undefined"

This is not an issue with your observer. The short explanation is that your Observer is looking for tasks assigned to it by the AR.IO network contract, but there isnt anything there. You can safely ignore this error message.

Observing my gateway shows failures

When observing a gateway, there are two main pass/fail tests. "Ownership" and "ArNS Assessment"

  • Ownership: This tests to see if the value set in your gateway AR_IO_WALLET value (in .env) matches the wallet used to join the AR.IO Network. If they don't match, update the value in your .env file and restart your gateway.

  • ArNS Assessment: This tests to see if a gateway is able to resolve ArNS names correctly. The first thing you should check is if you have the ARNS_ROOT_HOST value set in your .env file. If not, set the value and restart your gateway. If this value is set, check to make sure you have current DNS records and SSL certificates for wildcard subdomains on your gateway.

I updated my .env settings, but nothing changed on my gateway

Once you edit your .env file, you need to "rebuild" your gateway for the changes to take effect. As of release 3, every time you start your gateway with docker-compose it is automatically rebuilt. So all you need to do is shut your gateway down and restart it.

I am getting an out of disk space error, but I still have open storage space on my computer

The most likely cause of this is inode exhaustion. Test this by running the command:

df -i

If one of the lines in the output says 100%, you have run out of inodes and so your filesystem is not capable of creating new files, even if you have available space. The solution is to delete files from your data folder in order to free up inodes.

This was a common issue prior to release #3, when Redis caching was introduced to reduce the number of small files created. If you are using an older version of the gateway, consider upgrading to mitigate the risk of inode exhaustion.

I can't load ArNS names

The first thing you should check if your gateway is not resolving ArNS names is that you have ARNS_ROOT_HOST set in your .env file. If not, set it to your domain name used for the gateway. For example, ARNS_ROOT_HOST=arweave.dev.

Once this value is set, restart your gateway for the changes to take effect.

If that doesn't resolve the issue, check your dns records. You need to have a wildcard subdomain ( *.< your-domain > ) set with your domain registrar so that ArNS names will actually point at your gateway. You can set this record, and generate an SSL certificate for it, in the same way you set the records for your primary domain.

When I try to access my gateway in a browser I get a "Your connection is not private" error

This error message means that your SSL certificates have expired. You need to renew your certificates by running the same certbot command you used when you initially started your gateway:

sudo certbot certonly --manual --preferred-challenges dns --email <your-email-address> -d <your-domain>.com -d '*.<your-domain>.com'

Certbot SSL certificates expire after 90 days, and you will need to rerun this command to renew every time. If you provide an email address, you will receive an email letting you know when it is time to renew.

I set my gateway up, but when I go to my domain I get a 404/Nginx error

If you navigate to your domain and see a 404 error from Nginx (the reverse proxy server used in the setup guide) it means that your domain is correctly pointed at the machine running your gateway, but you have not properly configured your Nginx settings (or your gateway is not running).

The Set up Networking section of the setup guide has detailed instructions on configuring your Nginx server. If all else fails, try restarting Nginx, that usually clears any issues with the server clinging to old configurations.

sudo service nginx restart
When I visit my domain I see a 502 error from Nginx

A 502 error from Nginx means that Nginx is working correctly, but it is receiving an error from your gateway when it tries to forward traffic.

I am having trouble generating my SSL certificates

When using the manual certbot command provided in the setup guide:

sudo certbot certonly --manual --preferred-challenges dns --email <your-email-address> -d <your-domain>.com -d '*.<your-domain>.com'

You need to be sure that you are waiting after creating your TXT records for them to completely propagate. You can check propagation using a tool like dnschecker.org.

If you continue to have issues, you can check the official certbot instructions guide.

My gateway was working, but it just stopped
  • Visit your gateway in a browser and see if your SSL certs are expired. This is the most common issue causing sudden stops in proper operation.
I updated my SSL certs, but it still shows as bad in a browser
  • Try restarting nginx, it sometimes has trouble looking at the new certs without a restart.
My gateway won't resolve ArNS names
  • Make sure ARNS_ROOT_HOST is properly set in your .env file. Updating this requires restarting your gateway.
  • Make sure you have a DNS record set for *.<your-gateway-domain>. Since ArNS names are served as subdomains, you need to make sure all subdomains are pointed at your gateway.
  • If your gateway is attempting to resolve the name, but times out, it's most likely a CU issue.
I see an error in my logs, but everything appears to be working
  • AR.IO gateways are very robust, they can handle temporary errors gracefully and not affect normal operation. You should only be concerned if the error is consistent or it is causing your gateway to not function properly.
I was selected as an observer, but my logs say a report was not saved
  • Observers generate and submit their reports at specific times throughout the epoch. This is to ensure a healthy network throughout the entire epoch, not just at the start.
  • Your observer wallet must match the observer wallet associated with your gateway in the AR.IO contract. You can check this by navigating to your gateway in ar://gateways.
I see an error in my logs that says <h"... is not valid JSON
  • This happens when a request to a CU fails, and your gateway receives an html failure message instead of the expected JSON response. This will normally clear up on its own after congestion on that CU dies down, but if it is persistent try switching to a different CU.
My gateway logs just changed, instead of importing blocks I see "polling for block"
  • This is normal. It means you have reached the current Arweave block and need to wait for more before you can index them.
Error resolving name with resolver Promise timed out
  • This is normal. If a gateway fails to resolve an arns name within 3 seconds, it will fall back to a trusted gateway (arweave.net by default) to help resolve the name.
My gateway failed an epoch
  • There are many reasons a gateway could fail an epoch. Following these steps is usually enough to identify and correct the issue:
    • Try to visit your gateway in a browser and see if your SSL certs are bad
    • Try to resolve an ArNS name on your gateway. If it fails to resolve, check the console and your gateway logs for errors
    • Look at the observation reports that failed your gateway, they will list the reason for failure

Troubleshooting Failed Epochs

Overview

The ARIO Network provides several tools to help troubleshoot problems with a gateway. The most powerful among these is the Observer.

The Observer, which is a component of every gateway joined to the ARIO Network, checks all gateways in the network to ensure that they are functioning properly, and returning the correct data. The Observer then creates a report of the results of these checks, including the reasons why a gateway might have failed the checks.

If a gateway fails the checks from more than half of the prescribed observers, the gateway is marked as failed for the epoch, and does not receive any rewards for that epoch.

The first step in troubleshooting a failed gateway is always to attempt to resolve data on that gateway in a browser, but if that does not make the issue clear, the Observer report can be used to diagnose the problem.

Manual Observation

Manual observations may be run on a gateway at any time buy using the Network Portal. This allows operators (or anyone with an interest in the gateway's performance) to check the gateway's performance at any time. To run a manual observation:

  1. Navigate to the Network Portal
  2. Select the gateway you are interested in from the list of gateways
  3. Click on the "Observe" button in the top right corner of the page.
Diagram
  1. Click on the "Run Observation" button in the bottom right corner of the page.
Diagram

Two randomly selected ArNS names will be entered automatically in the "ArNS names" field to the left of the "Run Observation" button. These can be changed, or additional ArNS names can be added to the list before running the observation.

The Manual observation will run the same checks as the observer, and will display the results on the right side of the page.

Diagram

Accessing the Observer Report

The simplest way to access an observer report is via the Network Portal, following the steps below:

  1. Navigate to the Network Portal
  2. Select the gateway you are interested in from the list of gateways
  3. In the Observation window, select the epoch you are interested in. This will display a list of the observers that failed the gateway for that epoch.
  4. Click on the "View Report" button to the right any observer on that list. This will display the entire report that observer generated.
Diagram
  1. Locate the gateway you are interested in in the report, and click on that row. This will display the report for that gateway.

Understanding the Observer Report

The observer report will display a list of checked ArNS names, and a reason if the gateway failed to return the correct data for that name. There are several reasons why a gateway might fail to return the correct data for an ArNS name. Below is a list of the most common reasons, and how to resolve them.

Timeout awaiting 'socket', or Timeout awaiting 'connect'

Diagram
Diagram

This failure means that the observer was unable to connect to the gateway when it tried to check the ArNS name. There are lots of reasons why this might happen, many of them unrelated to the gateway itself. If an observer report has a small number of these failures, among a larger number of successful checks, it is unlikely to be an issue with the gateway.

If this failure occurs persistently for a large number, or all ArNS names checked, it likely means that the observer is having trouble connecting to the gateway at all. You can verify this by:

  • Attempting to connect to the gateway in a browser
  • Running manual observations on the gateway using the Network Portal
  • Using tools like curl or ping to check the gateway's connectivity

If these methods consistently fail to connect to the gateway, it is likely that the gateway is not properly configured or powered on. If this is the case:

  • Check Docker and the gateway's logs to see if the gateway is on.
  • Ensure that the SSL certificates are valid for the gateway's domain.
  • Check DNS records for the gateway's domain, misconfigured or conflicting DNS records can cause connectivity issues.

Some gateway operators who run their gateways on their personal home networks have also reported issues with their ISP blocking, throttling, or otherwise delaying traffic to a gateway. If none of the above steps resolve the issue, it may be worth checking with your ISP to see if they are blocking or throttling traffic to the gateway.

Using Grafana can also provide a visual representation of the gateway's ArNS resolution times. If this is consistently high (above 10 seconds), it is likely that the gateway is not properly configured to resolve ArNS names. Ensure that the gateway is operating on the latest Release.

certificate has expired

Diagram

This failure means that the gateway's SSL certificate has expired. Obtaining a new SSL certificate and updating the gateway's reverse proxy (nginx, etc) configuration to use the new certificate is the only solution to this issue.

dataHashDigest mismatch

Diagram

This failure means that the gateway did respond to a resolution request, but the data it returned did not match the data that was expected. This could be due to a number of reasons, including:

  • Cached data was returned by the gateway that doesnt match the most current data on the network.
  • The gateway is configured to operate on testnet or devnet. Gateways joined to the ARIO Network MUST operate on mainnet in order to pass observation checks.
  • The gateway is intentionally returning fraudulent data.

A gateway will not return fraudulent data unless that operator intentionally rewrote the gateway's code to do so, and a major purpose of the Observation and Incentive Protocol is to catch and prevent this behavior. A gateway may return mistaken data on occasion, usually due to a cache mismatch between the gateway and the observer's authority (usually arweavae.net). This is a relatively rare occurrence, and should only be considered an issue if it occurs persistently. If most or all of the ArNS names checked are failing for this reason, it is likely that the gateway is not operating on mainnet.

Response code 502 (Bad Gateway)

Diagram

This failure means that the observer was able to connect to the gateway's network, but the reverse proxy returned a 502 error. This is almost always a reverse proxy issue. Ensure that the gateway's reverse proxy is running, and that it is configured to forward requests to the gateway.

Testing the validity of the reverse proxy's configuration file (sudo nginx -t on Nginx) may provide more information about the issue, and restarting the reverse proxy (sudo nginx -s reload) often resolves the issue if there are no problems with the configuration file.

It is also possible that the gateway itself is not running at all. Check Docker and the gateway's logs to see if the gateway is on.

Response code 503 (Service Unavailable)

Diagram

This failure means that the observer was able to connect to the gateway's network, but the reverse proxy was unable to forward the request to the gateway. It differs from the 502 error in that the reverse proxy is likely able to see that the gateway is running, but is unable to communicate with it. This is often a temporary issue, caused by the gateway not being able to handle a heavy load of requests, or the gateway being in the process of restarting. If this failure occurs once or twice in a report, it is likely a temporary issue and should not be considered an issue with the gateway. However, when this failure occurs persistently, particularly for every ArNS name checked on the report, it is likely that the gateway may have crashed.

Manually restarting the gateway can likely resolve the issue.

connect EHOSTUNREACH

Diagram

This failure means that the observer was unable to connect to the gateway at all. The connection was either refused, or the gateway was not able to find a target based on the domain name's DNS records.

This is almost always an issue with DNS records or local network configuration. Ensure that the gateway domain has correct DNS records, and that the local network is set up to allow connections. Checking logs from the local network's reverse proxy (nginx, etc) may provide more information about the issue.

getaddrinfo ENOTFOUND

Diagram

This is another DNS related issue. Likely, the gateway does not have a valid DNS record either for the top level domain or the required wildcard subdomain. Having this failure occur once or twice in a report could mean that the DNS server being used by the observer is having temporary issues and should not be considered an issue with the gateway. However, when this failure occurs persistently, particularly for every ArNS name checked on the report, it is likely that the gateway's DNS records are not set, or are misconfigured.

Hostname/IP does not match certificate's altnames: Host: <gateway-domain>. is not in the cert's altnames: DNS:<gateway-domain>

Diagram

This failure means that the observer's SSL certificate does not match the gateway's domain name. This is almost always an issue with the gateway's SSL certificate. This most likely occurred because the gateway's operator did not update the gateway's SSL certificate when the gateway's domain name was changed. Obtaining a new SSL certificate and updating the gateway's reverse proxy configuration to use the new certificate is the only solution to this issue.

write EPROTO <connection-id>:error:<error-code>:SSL routines:ssl3_read_bytes:tlsv1 unrecognized name:<path-to-openssl-source>:SSL alert number 112

Diagram

This failure almost always means that the gateway operator did not properly obtain SSL certificates for the gateway's wildcard subdomain. Obtaining a new SSL certificate and updating the gateway's reverse proxy configuration to use the new certificate is the only solution to this issue.


FAQ

Why was my reward different this epoch?

Show answer
  • Gateway protocol rewards are calculated as 0.1% of the protocol balance (0.05% after August 2025) split between all gateways in the network. A change in the protocol balance or the number of gateways in the network between epochs will result in the reward for an individual gateway changing.

  • The Observer rewards are separate from protocol rewards, and if your gateway is selected as an observer for an epoch, assuming it performs its duties well, it will receive additional rewards

I have a high stake on my gateway, why am I not an observer?

Show answer

The observer selection process uses a weighted random selection method that considers multiple factors beyond just stake:

  • Stake Weight (SW): Ratio of your total staked ARIO tokens (including delegated stake) to the network minimum
  • Tenure Weight (TW): How long your gateway has been part of the network (capped at 4 after 2 years)
  • Gateway Performance Ratio Weight (GPRW): Ratio of epochs where you correctly resolved names vs total participation
  • Observer Performance Ratio Weight (OPRW): Ratio of epochs where you successfully submitted reports vs total observer periods

A composite weight (CW) is calculated as: CW = SW × TW × GPRW × OPRW

Up to 50 gateways are chosen as observers per epoch. If there are more than 50 gateways, selection is randomized based on these normalized weights. Even with a high stake, other factors like performance and tenure affect your chances of being selected.

I withdrew my stake, but now I have less

Show answer
  • There is a 90 day locking period when withdrawing stake, either from delegated stake or operator stake on your gateway. This locking period can be skipped, for a fee. The fee starts at 50% of the withdrawal amount, and goes down over time. If you selected instant withdrawal, you paid the fee to skip the locking period.

Why Can't I withdraw my stake?

Show answer
  • The minimum operator stake for gateways (10,000 ARIO) cannot be instantly withdrawn, it is subject to the full 90 day locking period, and withdrawal can only be started by removing your gateway from the network.

I would like to move my node to a new server - how?

Show answer
  • If possible, leave your original server running while you prepare the new one
  • Set up the new server following the same steps you used to set up the original server
    • This includes setting up SSL certificates for the new server
  • You must use the same gateway wallet when setting up the new server
  • The observer wallet may be changed at any point, but requires extra steps. It is recommended you use the original observer wallet as well
  • Once the new server is set up, change your DNS A records to point at the new server
  • After your DNS records are set and you have verified your gateway is operating correctly, shut down the original server
  • No changes need to be made in the network contract or on ar://gateways

Can I change my nodes FQDN?

Show answer
  • Yes
  • Configure your new domain to point at your gateway, including setting up SSL certificates
  • Update your NGINX (or other reverse proxy) server to recognize the new domain. This usually requires a restart of NGINX
  • Update the ARNS_ROOT_HOST variable in your .env and restart the gateway
  • Using ar://gateways, update your gateway settings to change the FQDN in the contract
  • Your gateway is now using the new domain name for normal operation.