6 Blackout mode
vvvomit edited this page 2026-10-31 01:59:25 +03:30
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

فارسی · Home · Setup guide

Blackout mode: installing without international internet

When the international internet is cut, a normal install fails: the playbook, its Ansible roles, the container images, Docker and the server's own packages all come from abroad. In blackout mode interzone gets every one of them from mirrors inside the country instead.

Follow the Setup guide as usual; this page covers the parts that differ.

1. Choose blackout on the Server step

Under Downloads, move to Network situation and choose Blackout: in-country mirrors only with →.

Choosing blackout mode

Every download source below it now points at an in-country mirror:

The mirrors filled in

What Default mirror
The playbook (git) https://itsjustadream.g0th.ir/spantaleev/matrix-docker-ansible-deploy
Ansible roles (git) https://itsjustadream.g0th.ir/
Container images mechatok.g0th.ir/
Docker Engine packages https://infamous.g0th.ir/docker
The server's OS packages https://infamous.g0th.ir
Python packages (PyPI, for Ansible) https://infamous.g0th.ir/pypi/simple

Each field's help lists the other known mirrors in Iran (Hostbaran, Abrha, ArvanCloud, IranServer, MobinHost, FamaServer and more), with which Linux versions each one carries. You don't have to pick: during the deploy, interzone checks the chosen mirrors against your server's Linux version and the images it needs, and if one falls short, it switches to a known mirror that has everything, says so in the log and saves it.

2. Test the mirrors

Press ctrl+t on the Server step to test every source from your computer:

Testing every source

The Mirrors screen (in the menu, or interzone mirrors in a terminal) checks every known mirror for what it actually carries, not only whether it answers. Package mirrors must have updates less than two weeks old.

The Mirrors screen

Its third tab, Images, checks that every container image your setup needs can be pulled through the registry mirror. It asks your server, and needs the playbook downloaded first: after the first deploy, or ./interzone apply --save-only.

3. Certificates: not Let's Encrypt

Let's Encrypt has to reach your server from abroad, so it fails during a blackout. Under HTTPS certificates choose:

  • My own certificate if you have one (for instance from a provider inside the country). Give the paths to the certificate and key files on your computer, or
  • Self-signed. interzone makes one. Browsers and apps will warn that it isn't trusted until each device trusts it, so this is best for a small group.

When the internet comes back you can switch to Let's Encrypt and run Update the server.

4. Federation

Servers abroad can't reach yours during a blackout, nor yours them, but servers inside the country can. Leave federation on, or under Networking › Federate only with list the servers you want to talk to.

5. No internet at all: the offline bundle

If the computer you run interzone on can't reach even the mirrors, make a bundle somewhere that has internet:

./interzone bundle -o interzone-bundle.tar.gz

It holds the playbook with every Ansible role, Ansible's Python packages and interzone itself. Copy it over, then:

tar xzf interzone-bundle.tar.gz
./interzone-bundle/interzone unbundle interzone-bundle
./interzone-bundle/interzone

Container images aren't in the bundle: the server still needs a registry mirror it can reach (the Container registry mirror field).

6. When the mirrors are down too: IPFS

If the in-country mirrors can't be reached either, other interzone servers can supply everything over IPFS, a network where any server that has a file can pass it on. Under Network situation choose IPFS: from interzone's swarm. The git and registry fields disappear: the playbook, roles, packages and every container image come from the swarm.

You must also answer Share what this server downloads:

  • Yes keeps IPFS running on your server after the deploy, so other servers can fetch from it. It listens on TCP port 4001 (open it in your firewall), and the swarm's members can see that your server holds Matrix software.
  • No only downloads; IPFS stops after each deploy.

The deploy then installs IPFS on the server, joins interzone's private swarm, finds the newest publish and checks its signature before using anything. ctrl+t checks that the publish and the swarm's entry node can be reached. Let's Encrypt still needs the international internet (step 3).

A bundle made with IPFS chosen also carries IPFS itself, so a server with no internet at all can join the swarm.

Hosting without a homeserver

You can help the swarm without running Matrix at all. Choose Host in the menu, switch on the parts to host (the container images, about 12 GB; the OS, Docker and Python packages, 3.7 GB; the playbook and its roles in git, 50 MB; interzone and IPFS themselves, 230 MB), then pick this machine or a Linux server over SSH, and press enter. While it hosts, the same screen shows its peers, how much of each part has arrived, traffic, what it gave the swarm, disk use and when it checks next. The machine then keeps the newest signed copy and shares it. It checks for a new one every hour on its own, so interzone doesn't need to stay open. As with sharing above, it listens on TCP port 4001 and the swarm can see that it holds Matrix software.

To stop, open Host again with the same machine's details in the form. ctrl+x stops sharing: the node stays off, even after a reboot, keeps what it downloaded, and enter starts it again. ctrl+d removes it, after asking: the node and everything it downloaded are deleted and the disk space is free again. A Matrix server on the same machine keeps running. On the server itself, this does the same as ctrl+x:

sudo systemctl disable --now interzone-ipfs-follow.timer interzone-ipfs